[Cogl] [PATCH 4/7] examples/cogl-x11-tfp.c: Wait for the window to be mapped

otaylor at redhat.com otaylor at redhat.com
Thu Jun 12 11:11:41 PDT 2014


From: "Owen W. Taylor" <otaylor at fishsoup.net>

Wait for the main window (and hence the window we create within
the main window to redirect) to be mapped and become viewable
before we try to call XCompositeNameWindowPixmap() -
XComposeNameWindowPixmap() produces a BadMatch error on a
non-viewable window.
---
 examples/cogl-x11-tfp.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/examples/cogl-x11-tfp.c b/examples/cogl-x11-tfp.c
index 91979a6..7d4d756 100644
--- a/examples/cogl-x11-tfp.c
+++ b/examples/cogl-x11-tfp.c
@@ -147,7 +147,8 @@ main (int argc, char **argv)
                                     DefaultRootWindow (xdpy),
                                     xvisinfo->visual,
                                     AllocNone);
-  mask = CWBorderPixel | CWColormap;
+  xattr.event_mask = StructureNotifyMask;
+  mask = CWBorderPixel | CWColormap | CWEventMask;
 
   xwin = XCreateWindow (xdpy,
                         DefaultRootWindow (xdpy),
@@ -179,6 +180,14 @@ main (int argc, char **argv)
 
   gc = XCreateGC (xdpy, tfp_xwin, 0, NULL);
 
+  while (TRUE)
+    {
+      XWindowEvent (xdpy, xwin, StructureNotifyMask, &xev);
+
+      if (xev.xany.type == MapNotify)
+        break;
+    }
+
   pixmap = XCompositeNameWindowPixmap (xdpy, tfp_xwin);
 
   tfp = cogl_texture_pixmap_x11_new (ctx, pixmap, TRUE, &error);
-- 
1.9.3



More information about the Cogl mailing list