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

Reply via email to