sys/ximage/gstximagesrc.c: Free allocated Damage memory before closing our connection...
authorJan Schmidt <thaytan@mad.scientist.com>
Tue, 12 Feb 2008 11:09:08 +0000 (11:09 +0000)
committerJan Schmidt <thaytan@mad.scientist.com>
Tue, 12 Feb 2008 11:09:08 +0000 (11:09 +0000)
Original commit message from CVS:
* sys/ximage/gstximagesrc.c:
Free allocated Damage memory before closing our connection to the
X server. Fixes: #515706

ChangeLog
sys/ximage/gstximagesrc.c

index cd48db4..84f7a5c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-02-12  Jan Schmidt  <jan.schmidt@sun.com>
+
+       * sys/ximage/gstximagesrc.c:
+       Free allocated Damage memory before closing our connection to the
+       X server. Fixes: #515706
+
 2008-02-12  Sebastian Dröge  <slomo@circular-chaos.org>
 
        * ext/jpeg/gstsmokeenc.c: (gst_smokeenc_chain):
index c5ed9c2..89b5838 100644 (file)
@@ -206,6 +206,9 @@ gst_ximage_src_start (GstBaseSrc * basesrc)
   s->last_frame_no = -1;
 #ifdef HAVE_XDAMAGE
   s->last_ximage = NULL;
+  s->damage = None;
+  s->damage_copy_gc = None;
+  s->damage_region = None;
 #endif
   return gst_ximage_src_open_display (s, s->display_name);
 }
@@ -219,6 +222,22 @@ gst_ximage_src_stop (GstBaseSrc * basesrc)
 
   if (src->xcontext) {
     g_mutex_lock (src->x_lock);
+
+#ifdef HAVE_XDAMAGE
+    if (src->damage_copy_gc != None) {
+      XFreeGC (src->xcontext->disp, src->damage_copy_gc);
+      src->damage_copy_gc = None;
+    }
+    if (src->damage_region != None) {
+      XFixesDestroyRegion (src->xcontext->disp, src->damage_region);
+      src->damage_region = None;
+    }
+    if (src->damage != None) {
+      XDamageDestroy (src->xcontext->disp, src->damage);
+      src->damage = None;
+    }
+#endif
+
     ximageutil_xcontext_clear (src->xcontext);
     src->xcontext = NULL;
     g_mutex_unlock (src->x_lock);