XCB used to provide iterators for requests returning list of values. Recent versions dropped it and return arrays instead. Adapt code to use arrays unconditionally (arrays were present in earlier libxcb versions).
Signed-off-by: Mikhail Gusarov <dotted...@dottedmag.net> --- src/lib/ecore_x/xcb/ecore_xcb.c | 20 ++++++++++++-------- src/lib/ecore_x/xcb/ecore_xcb_window.c | 11 +++++++---- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/lib/ecore_x/xcb/ecore_xcb.c b/src/lib/ecore_x/xcb/ecore_xcb.c index ecf72a3..2eddca8 100644 --- a/src/lib/ecore_x/xcb/ecore_xcb.c +++ b/src/lib/ecore_x/xcb/ecore_xcb.c @@ -878,11 +878,13 @@ ecore_x_killall(Ecore_X_Window root) reply = xcb_query_tree_reply(_ecore_xcb_conn, cookie, NULL); if (reply) { - xcb_window_iterator_t iter; + xcb_window_t *wins = NULL; + int i, tree_c_len; - iter = xcb_query_tree_children_iterator(reply); - for (; iter.rem; xcb_window_next(&iter)) - xcb_kill_client(_ecore_xcb_conn, *iter.data); + wins = xcb_query_tree_children(reply); + tree_c_len = xcb_query_tree_children_length(reply); + for (i = 0; i < tree_c_len; i++) + xcb_kill_client(_ecore_xcb_conn, wins[i]); free(reply); } } @@ -973,6 +975,8 @@ _ecore_xcb_key_mask_get(xcb_keysym_t sym) xcb_key_symbols_t *symbols; xcb_keysym_t sym2; int i, j; + xcb_keycode_t *keycodes = NULL; + int mod_keys_len; const int masks[8] = { XCB_MOD_MASK_SHIFT, @@ -996,13 +1000,13 @@ _ecore_xcb_key_mask_get(xcb_keysym_t sym) return 0; } - iter = xcb_get_modifier_mapping_keycodes_iterator(reply); - - for (i = 0; iter.rem; xcb_keycode_next(&iter), i++) + keycodes = xcb_get_modifier_mapping_keycodes(reply); + mod_keys_len = xcb_get_modifier_mapping_keycodes_length(reply); + for (i = 0; i < mod_keys_len; i++) { for (j = 0; j < 8; j++) { - sym2 = xcb_key_symbols_get_keysym(symbols, *iter.data, j); + sym2 = xcb_key_symbols_get_keysym(symbols, keycodes[i], j); if (sym2 != 0) break; } if (sym2 == sym) diff --git a/src/lib/ecore_x/xcb/ecore_xcb_window.c b/src/lib/ecore_x/xcb/ecore_xcb_window.c index a9eabb3..5f1f00f 100644 --- a/src/lib/ecore_x/xcb/ecore_xcb_window.c +++ b/src/lib/ecore_x/xcb/ecore_xcb_window.c @@ -1453,6 +1453,8 @@ _ecore_x_window_at_xy_get(Ecore_X_Window base, int16_t win_y; uint16_t win_width; uint16_t win_height; + xcb_window_t *wins = NULL; + int i, tree_c_len; cookie_get_window_attributes = xcb_get_window_attributes_unchecked(_ecore_xcb_conn, base); cookie_get_geometry = xcb_get_geometry_unchecked(_ecore_xcb_conn, base); @@ -1522,18 +1524,19 @@ _ecore_x_window_at_xy_get(Ecore_X_Window base, return base; } - iter_children = xcb_query_tree_children_iterator(reply_query_tree); - for (; iter_children.rem; xcb_window_next(&iter_children)) + wins = xcb_query_tree_children(reply_query_tree); + tree_c_len = xcb_query_tree_children_length(reply_query_tree); + for(i = 0; i < tree_c_len; i++) { if (skip) { int j; for (j = 0; j < skip_num; j++) - if (*iter_children.data == skip[j]) + if (wins[i] == skip[j]) continue; } - child = _ecore_x_window_at_xy_get(*iter_children.data, win_x, win_y, x, y, skip, skip_num); + child = _ecore_x_window_at_xy_get(wins[i], win_x, win_y, x, y, skip, skip_num); if (child) { free(reply_query_tree); -- 1.6.3.3 ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel