summaryrefslogtreecommitdiffstats
path: root/sys/ximage
diff options
context:
space:
mode:
authorJan Schmidt <thaytan@mad.scientist.com>2008-02-12 11:09:08 +0000
committerJan Schmidt <thaytan@mad.scientist.com>2008-02-12 11:09:08 +0000
commitababb87313294ef9f9b42c74204319657a5126e3 (patch)
tree8cec87ceb0bd153e454f073fda35cc6afc15a3b8 /sys/ximage
parenta0a9fe66fe41be48996c7751489908f76e6e50de (diff)
sys/ximage/gstximagesrc.c: Free allocated Damage memory before closing our connection to the
Original commit message from CVS: * sys/ximage/gstximagesrc.c: Free allocated Damage memory before closing our connection to the X server. Fixes: #515706
Diffstat (limited to 'sys/ximage')
-rw-r--r--sys/ximage/gstximagesrc.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/sys/ximage/gstximagesrc.c b/sys/ximage/gstximagesrc.c
index c5ed9c26..89b5838a 100644
--- a/sys/ximage/gstximagesrc.c
+++ b/sys/ximage/gstximagesrc.c
@@ -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);