Destroy screen pixmap on screen close.
This avoids a memory leak on server reset. Signed-off-by: Keith Packard <keithp@keithp.com> [ickle: Added comments from Keith that explain the necessity of destroying the pixmap ourselves and why chaining up in this instance is not the correct approach.] Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
6e08b0f48f
commit
e30f0338fb
11
uxa/uxa.c
11
uxa/uxa.c
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Copyright © 2001 Keith Packard
|
||||
* Copyright © 2001 Keith Packard
|
||||
*
|
||||
* Partly based on code that is Copyright © The XFree86 Project Inc.
|
||||
* Partly based on code that is Copyright © The XFree86 Project Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||
* documentation for any purpose is hereby granted without fee, provided that
|
||||
|
|
@ -385,6 +385,13 @@ static Bool uxa_close_screen(int i, ScreenPtr pScreen)
|
|||
|
||||
uxa_glyphs_fini(pScreen);
|
||||
|
||||
/* Destroy the pixmap created by miScreenInit() *before* chaining up as
|
||||
* we finalize ourselves here and so this is the last chance we have of
|
||||
* releasing our resources associated with the Pixmap. So do it first.
|
||||
*/
|
||||
(void) (*pScreen->DestroyPixmap) (pScreen->devPrivate);
|
||||
pScreen->devPrivate = NULL;
|
||||
|
||||
pScreen->CreateGC = uxa_screen->SavedCreateGC;
|
||||
pScreen->CloseScreen = uxa_screen->SavedCloseScreen;
|
||||
pScreen->GetImage = uxa_screen->SavedGetImage;
|
||||
|
|
|
|||
Loading…
Reference in New Issue