]> git.tdb.fi Git - geometrycompositor.git/commitdiff
Monitor changes to the root window pixmap
authorMikko Rasa <tdb@tdb.fi>
Mon, 14 Dec 2015 01:14:57 +0000 (03:14 +0200)
committerMikko Rasa <tdb@tdb.fi>
Mon, 14 Dec 2015 01:14:57 +0000 (03:14 +0200)
source/main.c

index 36e8d28a63f11b5f14ce7da8578c7cb78247a521..a1d0f1cf43537d0ab1162981415c5344f214b0a3 100644 (file)
@@ -816,16 +816,19 @@ void update_root_pixmap(Compositor *compositor, CompositedScreen *screen)
        unsigned long length;
        long *pixmap;
 
+       use_gl(compositor, screen);
+
+       if(screen->root_glx_pixmap)
+       {
+               glXDestroyPixmap(compositor->display, screen->root_glx_pixmap);
+               screen->root_glx_pixmap = 0;
+       }
+
        XGetWindowProperty(compositor->display, screen->root, compositor->root_pmap_atom, 0, 1, False, XA_PIXMAP,
                &prop_type, &prop_format, &length, &overflow, (unsigned char **)&pixmap);
        if(prop_type!=XA_PIXMAP || prop_format!=32)
        {
                screen->root_pixmap = 0;
-               if(screen->root_glx_pixmap)
-               {
-                       glXDestroyPixmap(compositor->display, screen->root_glx_pixmap);
-                       screen->root_glx_pixmap = 0;
-               }
                return;
        }
 
@@ -1149,14 +1152,14 @@ void process_property_event(Compositor *compositor, XPropertyEvent *event)
 {
        CompositedScreen *screen;
 
-       if(event->atom!=compositor->correction_atom)
-               return;
-
        screen = find_screen_by_root(compositor, event->window);
        if(!screen)
                return;
 
-       update_geometry_correction(compositor, screen);
+       if(event->atom==compositor->correction_atom)
+               update_geometry_correction(compositor, screen);
+       else if(event->atom==compositor->root_pmap_atom)
+               update_root_pixmap(compositor, screen);
 }
 
 void process_damage_event(Compositor *compositor, XDamageNotifyEvent *event)