+2004-02-17 Julien MOUTTE <julien@moutte.net>
+
+ * sys/ximage/ximagesink.c: (gst_ximagesink_ximage_new):
+ * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xvimage_new): Fix a
+ possible SHM leak if we crash. All other apps using XShm are doing
+ that.
+
2004-02-17 Julien MOUTTE <julien@moutte.net>
* sys/ximage/ximagesink.c: (gst_ximagesink_renegotiate_size),
ximage->SHMInfo.readOnly = FALSE;
XShmAttach (ximagesink->xcontext->disp, &ximage->SHMInfo);
+
+ XSync (ximagesink->xcontext->disp, FALSE);
+
+ shmctl (ximage->SHMInfo.shmid, IPC_RMID, 0);
+ ximage->SHMInfo.shmid = -1;
}
else
#endif /* HAVE_XSHM */
ximage->width, ximage->height,
ximagesink->xcontext->bpp,
ximage->width * (ximagesink->xcontext->bpp / 8));
- }
-
- if (ximage->ximage)
- {
+
XSync (ximagesink->xcontext->disp, FALSE);
}
- else
+
+ if (!ximage->ximage)
{
if (ximage->data)
g_free (ximage->data);
xvimage->SHMInfo.readOnly = FALSE;
XShmAttach (xvimagesink->xcontext->disp, &xvimage->SHMInfo);
+
+ XSync (xvimagesink->xcontext->disp, FALSE);
+
+ shmctl (xvimage->SHMInfo.shmid, IPC_RMID, 0);
+ xvimage->SHMInfo.shmid = -1;
}
else
#endif /* HAVE_XSHM */
xvimage->width, xvimage->height);
xvimage->data = g_malloc (xvimage->xvimage->data_size);
- }
-
- if (xvimage->xvimage)
- {
+
XSync (xvimagesink->xcontext->disp, FALSE);
}
- else
+
+ if (!xvimage->xvimage)
{
if (xvimage->data)
g_free (xvimage->data);