Ecore_X(cb): Work around (possible) xcb bug where
authordevilhorns <devilhorns@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 16 Sep 2011 14:16:09 +0000 (14:16 +0000)
committerdevilhorns <devilhorns@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Fri, 16 Sep 2011 14:16:09 +0000 (14:16 +0000)
ecore_x_screen_index_get was not returning the proper 0-based index.

NB: Fixes OpenGL with xcb.

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@63440 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_x/xcb/ecore_xcb.c

index 241aea9..182baf2 100644 (file)
@@ -1088,9 +1088,9 @@ ecore_x_display_get(void)
     * XLib and thus cannot return a real XDisplay.
     * 
     * NB: This may break EFL in some places and needs lots of testing !!! */
-   if ((gl = getenv("ECORE_X_NO_XLIB")))
+   if ((gl = getenv("ECORE_X_NO_XLIB"))) 
      return (Ecore_X_Display *)_ecore_xcb_conn;
-   else /* we can safely return an XDisplay var */
+   else /* we can safely return an XDisplay var */ 
      return (Ecore_X_Display *)_ecore_xcb_display;
 }
 
@@ -1167,13 +1167,15 @@ EAPI int
 ecore_x_screen_index_get(const Ecore_X_Screen *screen) 
 {
    xcb_screen_iterator_t iter;
+   int i = 0;
 
    iter = 
      xcb_setup_roots_iterator(xcb_get_setup((xcb_connection_t *)_ecore_xcb_conn));
    for (; iter.rem; xcb_screen_next(&iter)) 
      {
         if (iter.data == (xcb_screen_t *)screen) 
-          return iter.index;
+          return i;
+        i++;
      }
 
    return 0;