summaryrefslogtreecommitdiff
path: root/openbox/frame.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-06-21 05:49:08 +0000
committerDana Jansens <danakj@orodu.net>2007-06-21 05:49:08 +0000
commit15cabcb16a188912f49e99885896ed7ad7a13925 (patch)
treeb7decc45d6bdbe23f367c7a3867349bb7714a902 /openbox/frame.c
parent4c5034aaebc560e1c18af597009577b842081df9 (diff)
only enable automatic composite redirection for the client windows, not the frames. maybe this will avoid screen artifacts with the crap server support
Diffstat (limited to 'openbox/frame.c')
-rw-r--r--openbox/frame.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/openbox/frame.c b/openbox/frame.c
index 0b852456..25a9214b 100644
--- a/openbox/frame.c
+++ b/openbox/frame.c
@@ -288,6 +288,12 @@ void frame_adjust_shape(ObFrame *self)
self->client->window,
ShapeBounding, ShapeSet);
+ /* shape the offscreen buffer to match the window */
+ if (self->pixmap)
+ XShapeCombineShape(ob_display, self->pixmap, ShapeBounding,
+ 0, 0, self->client->window,
+ ShapeBounding, ShapeSet);
+
num = 0;
if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
xrect[0].x = 0;
@@ -313,10 +319,6 @@ void frame_adjust_shape(ObFrame *self)
ShapeUnion, Unsorted);
}
- if (self->pixmap)
- XShapeCombineShape(ob_display, self->pixmap, ShapeBounding,
- 0, 0, self->window, ShapeBounding, ShapeSet);
-
#endif
}
@@ -923,6 +925,9 @@ void frame_grab_client(ObFrame *self)
/* reparent the client to the frame */
XReparentWindow(ob_display, self->client->window, self->window, 0, 0);
+ /* enable the offscreen composite buffer for the client window */
+ composite_enable_for_window(self->client->window);
+
/*
When reparenting the client window, it is usually not mapped yet, since
this occurs from a MapRequest. However, in the case where Openbox is
@@ -1754,7 +1759,7 @@ static void frame_get_offscreen_buffer(ObFrame *self)
frame_free_offscreen_buffer(self);
if (self->visible || frame_iconify_animating(self)) {
- self->pixmap = composite_get_window_pixmap(self->window);
+ self->pixmap = composite_get_window_pixmap(self->client->window);
/*
self->picture = composite_create_picture(self->window,
wattrib.visual,