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;
}
{
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)