diff options
author | Michel Dänzer <daenzer@vmware.com> | 2010-03-10 18:26:25 +0100 |
---|---|---|
committer | Michel Dänzer <daenzer@vmware.com> | 2010-03-10 18:26:25 +0100 |
commit | 766d90f1a201d8fd19e49df14d712efbb82223b4 (patch) | |
tree | 5916177ac795c81af6dd6d7d58e1716f804fa058 /src/gallium/state_trackers/xorg/xorg_driver.c | |
parent | ffd625d4aaf145eb28fc76617e95ffc3fdfd54cc (diff) |
st/xorg: Work around cursor reference counting bugs in older X servers.
Could result in use of freed memory and consequently random crashes, e.g. on
screen resize.
(cherry picked from commit 21c91b410a2a2cbf8eb677e59e3322f86320f2b0)
Conflicts:
src/gallium/state_trackers/xorg/xorg_tracker.h
Diffstat (limited to 'src/gallium/state_trackers/xorg/xorg_driver.c')
-rw-r--r-- | src/gallium/state_trackers/xorg/xorg_driver.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c index 8fb6e5a96d..d7c67463d2 100644 --- a/src/gallium/state_trackers/xorg/xorg_driver.c +++ b/src/gallium/state_trackers/xorg/xorg_driver.c @@ -922,6 +922,11 @@ drv_close_screen(int scrnIndex, ScreenPtr pScreen) drv_leave_vt(scrnIndex, 0); } + if (ms->cursor) { + FreeCursor(ms->cursor, None); + ms->cursor = NULL; + } + if (cust && cust->winsys_screen_close) cust->winsys_screen_close(cust); |