blend argb windows, but just blit non-argb windows which is faster
[dana/dcompmgr.git] / window.c
index 3aa9a95..794a1e4 100644 (file)
--- a/window.c
+++ b/window.c
@@ -23,6 +23,7 @@ typedef struct {
     int              x, y, w, h, bw;
     gboolean         attr_mapped;
     gboolean         input_only;
+    gboolean         argb;
     xcb_visualid_t   visual;
     xcb_pixmap_t     pixmap;
 
@@ -253,12 +254,14 @@ window_get_geometry_reply(d_window_priv_t *w)
         w->w = rep->width;
         w->h = rep->height;
         w->bw = rep->border_width;
+        w->argb = rep->depth == 32;
         free(rep);
     }
     else {
         w->x = w->y = -1;
         w->w = w->h = 1;
         w->bw = 0;
+        w->argb = FALSE;
     }
     if (err) {
         printf("error getting geometry for window 0x%x\n", w->id);
@@ -283,6 +286,15 @@ window_is_attr_mapped(d_window_t *pubw)
     return w->attr_mapped;
 }
 
+gboolean
+window_is_argb(d_window_t *pubw)
+{
+    d_window_priv_t *w = (d_window_priv_t*)pubw;
+    if (w->waiting_geom)
+        window_get_geometry_reply(w);
+    return w->argb;
+}
+
 xcb_visualid_t
 window_get_visual(d_window_t *pubw)
 {