| 27 | } |
| 28 | |
| 29 | fn next_screen( |
| 30 | outer: &mut xcb_screen_iterator_t, |
| 31 | server: &Server, |
| 32 | ) -> Option<(xcb_randr_monitor_info_iterator_t, xcb_window_t)> { |
| 33 | if outer.rem == 0 { |
| 34 | return None; |
| 35 | } |
| 36 | |
| 37 | unsafe { |
| 38 | let root = (*outer.data).root; |
| 39 | |
| 40 | let cookie = xcb_randr_get_monitors_unchecked( |
| 41 | server.raw(), |
| 42 | root, |
| 43 | 1, //TODO: I don't know if this should be true or false. |
| 44 | ); |
| 45 | |
| 46 | let response = xcb_randr_get_monitors_reply(server.raw(), cookie, ptr::null_mut()); |
| 47 | |
| 48 | let inner = xcb_randr_get_monitors_monitors_iterator(response); |
| 49 | |
| 50 | libc::free(response as *mut _); |
| 51 | xcb_screen_next(outer); |
| 52 | |
| 53 | Some((inner, root)) |
| 54 | } |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | impl Iterator for DisplayIter { |