Fix cleanup functions.
--- a/src/video/x11/SDL_x11render.c Wed Jul 21 18:33:13 2010 +0530
+++ b/src/video/x11/SDL_x11render.c Wed Jul 21 18:38:40 2010 +0530
@@ -2041,6 +2041,13 @@
data->pixels = NULL;
}
#endif
+#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
+ if (renderdata->use_xrender) {
+ if (data->picture) {
+ XRenderFreePicture(renderdata->display, data->picture);
+ }
+ }
+#endif
if (data->scaling_image) {
SDL_free(data->scaling_image->data);
data->scaling_image->data = NULL;
@@ -2065,7 +2072,7 @@
XFreePixmap(data->display, data->pixmaps[i]);
}
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
- if (data->pixmap_picts[i] != None) {
+ if (data->use_xrender && data->pixmap_picts[i]) {
XRenderFreePicture(data->display, data->pixmap_picts[i]);
}
#endif
@@ -2074,17 +2081,24 @@
XFreeGC(data->display, data->gc);
}
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
- if (data->stencil_gc) {
- XFreeGC(data->display, data->stencil_gc);
- }
- if (data->stencil) {
- XFreePixmap(data->display, data->stencil);
- }
- if (data->drawable_pict) {
- XRenderFreePicture(data->display, data->drawable_pict);
- }
- if (data->xwindow_pict) {
- XRenderFreePicture(data->display, data->xwindow_pict);
+ if (data->use_xrender) {
+ if (data->stencil_gc) {
+ XFreeGC(data->display, data->stencil_gc);
+ }
+ if (data->stencil) {
+ XFreePixmap(data->display, data->stencil);
+ }
+ if (data->stencil_pict) {
+ XRenderFreePicture(data->display, data->stencil_pict);
+ }
+ if (data->xwindow_pict) {
+ XRenderFreePicture(data->display, data->xwindow_pict);
+ }
+#ifdef SDL_VIDEO_DRIVER_X11_XDAMAGE
+ if (data->use_xdamage && data->stencil_damage) {
+ XDamageDestroy(data->display, data->stencil_damage);
+ }
+#endif
}
#endif
SDL_FreeDirtyRects(&data->dirty);