summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Holmes <iain@src.gnome.org>2007-11-13 23:12:56 +0000
committerIain Holmes <iain@src.gnome.org>2007-11-13 23:12:56 +0000
commit4ae3e2fb224faad2d20adbe0efb5a4b52bc3bbf4 (patch)
tree2a30e3ed56afdd5f9e883aafcfbdc647218c7ce8
parent0377d0b33483bda7bc2fc95d509219858f6bb15f (diff)
downloadmetacity-4ae3e2fb224faad2d20adbe0efb5a4b52bc3bbf4.tar.gz
Get the root pixmap correctly
svn path=/branches/iains-blingtastic-bucket-o-bling/; revision=3394
-rw-r--r--src/compositor.c32
-rw-r--r--src/display.c4
-rw-r--r--src/display.h2
3 files changed, 21 insertions, 17 deletions
diff --git a/src/compositor.c b/src/compositor.c
index d74dcf45..ccbb54c5 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -516,14 +516,17 @@ root_tile (MetaScreen *screen)
XRenderPictureAttributes pa;
XRenderPictFormat *format;
int p;
- Atom background_atoms[2];
+ Atom background_atoms[3];
+ Atom pixmap_atom;
pixmap = None;
-#if 0
background_atoms[0] = display->atom_x_root_pixmap;
background_atoms[1] = display->atom_x_set_root;
- for (p = 0; p < 2; p++) {
+ background_atoms[2] = display->atom_e_set_root;
+
+ pixmap_atom = XInternAtom (display->xdisplay, "PIXMAP", False);
+ for (p = 0; p < 3; p++) {
Atom actual_type;
int actual_format;
gulong nitems, bytes_after;
@@ -533,17 +536,19 @@ root_tile (MetaScreen *screen)
background_atoms[p],
0, 4, FALSE, AnyPropertyType,
&actual_type, &actual_format,
- &nitems, &bytes_after, &prop) == Success &&
- actual_type == display->atom_pixmap &&
- actual_format == 32 &&
- nitems == 1) {
- memcpy (&pixmap, prop, 4);
- XFree (prop);
- fill = FALSE;
- break;
- }
+ &nitems, &bytes_after, &prop) == Success)
+ {
+ if (actual_type == pixmap_atom &&
+ actual_format == 32 &&
+ nitems == 1)
+ {
+ memcpy (&pixmap, prop, 4);
+ XFree (prop);
+ fill = FALSE;
+ break;
+ }
+ }
}
-#endif
if (!pixmap) {
pixmap = XCreatePixmap (display->xdisplay, screen->xroot, 1, 1,
@@ -1629,7 +1634,6 @@ meta_compositor_unmanage_screen (MetaCompositor *compositor,
g_free (info->gaussian_map);
- /* FIXME: Use correct composite mode */
XCompositeUnredirectSubwindows (display->xdisplay, screen->xroot,
CompositeRedirectManual);
meta_screen_unset_cm_selection (screen);
diff --git a/src/display.c b/src/display.c
index 0e674b27..29804a3c 100644
--- a/src/display.c
+++ b/src/display.c
@@ -344,7 +344,7 @@ meta_display_open (void)
"_NET_WM_ACTION_BELOW"
"_XROOTPMAP_ID",
"_XSETROOT_ID",
- "PIXMAP",
+ "ESETROOT_PMAP_ID"
};
Atom atoms[G_N_ELEMENTS(atom_names)];
@@ -508,7 +508,7 @@ meta_display_open (void)
display->atom_net_wm_action_below = atoms[96];
display->atom_x_root_pixmap = atoms[97];
display->atom_x_set_root = atoms[98];
- display->atom_pixmap = atoms[99];
+ display->atom_e_set_root = atoms[99];
display->prop_hooks = NULL;
meta_display_init_window_prop_hooks (display);
diff --git a/src/display.h b/src/display.h
index 6277f358..1e9fa1b2 100644
--- a/src/display.h
+++ b/src/display.h
@@ -186,7 +186,7 @@ struct _MetaDisplay
Atom atom_net_wm_user_time_window;
Atom atom_x_root_pixmap;
Atom atom_x_set_root;
- Atom atom_pixmap;
+ Atom atom_e_set_root;
/* This is the actual window from focus events,
* not the one we last set