summaryrefslogtreecommitdiff
path: root/composite/compinit.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2010-06-21 16:33:55 +1000
committerKeith Packard <keithp@keithp.com>2010-06-22 11:41:20 -0700
commit82d41ada993d8cbdcdfea878d1a5b031afe4e593 (patch)
treea4ffc248b9aca8b221ef8aa9c9549bb248be3a21 /composite/compinit.c
parentc6bc52cb6663138d1273447cb7661fa6e958f539 (diff)
composite: fix freeing of old pixmap until after move/resize/cbw (bug 28345)
The fixes for the composite reallocation failure, were freeing the oldpixmap straight after reallocating the new one, however this led to some wierd effects in e16 compositing, and I think in a few other places. This patch moves the freeing of the pixmap into the post wrapped stage. I'm not sure if we are actually better off breaking ABI and adding another callback from the ConfigureWindow to composite to make sure the old pixmap is always freed, but this should be satisfactory as we should always hit one of the freeing paths or else its a bug in the DIX. bug: https://bugs.freedesktop.org/show_bug.cgi?id=28435 Reported-by: Andrew Randrianasulu <randrik@mail.ru> Signed-off-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'composite/compinit.c')
-rw-r--r--composite/compinit.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/composite/compinit.c b/composite/compinit.c
index 1b2cd8ff6..5db9f0282 100644
--- a/composite/compinit.c
+++ b/composite/compinit.c
@@ -66,6 +66,9 @@ compCloseScreen (int index, ScreenPtr pScreen)
pScreen->ChangeWindowAttributes = cs->ChangeWindowAttributes;
pScreen->ReparentWindow = cs->ReparentWindow;
pScreen->ConfigNotify = cs->ConfigNotify;
+ pScreen->MoveWindow = cs->MoveWindow;
+ pScreen->ResizeWindow = cs->ResizeWindow;
+ pScreen->ChangeBorderWidth = cs->ChangeBorderWidth;
pScreen->ClipNotify = cs->ClipNotify;
pScreen->UnrealizeWindow = cs->UnrealizeWindow;
@@ -366,6 +369,15 @@ compScreenInit (ScreenPtr pScreen)
cs->ConfigNotify = pScreen->ConfigNotify;
pScreen->ConfigNotify = compConfigNotify;
+ cs->MoveWindow = pScreen->MoveWindow;
+ pScreen->MoveWindow = compMoveWindow;
+
+ cs->ResizeWindow = pScreen->ResizeWindow;
+ pScreen->ResizeWindow = compResizeWindow;
+
+ cs->ChangeBorderWidth = pScreen->ChangeBorderWidth;
+ pScreen->ChangeBorderWidth = compChangeBorderWidth;
+
cs->ReparentWindow = pScreen->ReparentWindow;
pScreen->ReparentWindow = compReparentWindow;