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:
Keith Packard 2010-07-01 09:56:40 -04:00 committed by Chris Wilson
parent 6e08b0f48f
commit e30f0338fb
1 changed files with 9 additions and 2 deletions

View File

@ -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;