sys/: Removing some useless debugs messages, correctly cleaning the image created to check xshm calls on succes, adde...

Original commit message from CVS:
2004-01-28  Julien MOUTTE <julien@moutte.net>

* sys/ximage/ximagesink.c: (gst_ximagesink_check_xshm_calls),
(gst_ximagesink_ximage_new), (gst_ximagesink_ximage_destroy),
(gst_ximagesink_ximage_put), (gst_ximagesink_xwindow_new),
(gst_ximagesink_xwindow_destroy):
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls),
(gst_xvimagesink_xvimage_new), (gst_xvimagesink_xvimage_destroy),
(gst_xvimagesink_xwindow_new), (gst_xvimagesink_xwindow_destroy),
(gst_xvimagesink_xwindow_resize), (gst_xvimagesink_get_xv_support),
(gst_xvimagesink_xcontext_get): Removing some useless debugs messages,
correctly cleaning the image created to check xshm calls on succes,
added a lot of XSync calls in X11 functions, and fixed a segfault when
no image format was defined before negotiation happened.
This commit is contained in:
Julien Moutte 2004-01-28 10:45:33 +00:00
parent ead37dc249
commit 38fdf429c6
3 changed files with 59 additions and 16 deletions

View file

@ -1,3 +1,18 @@
2004-01-28 Julien MOUTTE <julien@moutte.net>
* sys/ximage/ximagesink.c: (gst_ximagesink_check_xshm_calls),
(gst_ximagesink_ximage_new), (gst_ximagesink_ximage_destroy),
(gst_ximagesink_ximage_put), (gst_ximagesink_xwindow_new),
(gst_ximagesink_xwindow_destroy):
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls),
(gst_xvimagesink_xvimage_new), (gst_xvimagesink_xvimage_destroy),
(gst_xvimagesink_xwindow_new), (gst_xvimagesink_xwindow_destroy),
(gst_xvimagesink_xwindow_resize), (gst_xvimagesink_get_xv_support),
(gst_xvimagesink_xcontext_get): Removing some useless debugs messages,
correctly cleaning the image created to check xshm calls on succes,
added a lot of XSync calls in X11 functions, and fixed a segfault when
no image format was defined before negotiation happened.
2004-01-28 Benjamin Otte <in7y118@public.uni-hamburg.de>
* ext/alsa/gstalsa.c: (gst_alsa_query_func):

View file

@ -124,14 +124,21 @@ gst_ximagesink_check_xshm_calls (GstXContext *xcontext)
shmdt (ximage->SHMInfo.shmaddr);
shmctl (ximage->SHMInfo.shmid, IPC_RMID, 0);
g_free (ximage);
XSync(xcontext->disp, 0);
XSync (xcontext->disp, FALSE);
return FALSE;
}
else
#endif /* HAVE_XSHM */
{
return TRUE;
XShmDetach (xcontext->disp, &ximage->SHMInfo);
XDestroyImage (ximage->ximage);
shmdt (ximage->SHMInfo.shmaddr);
shmctl (ximage->SHMInfo.shmid, IPC_RMID, 0);
g_free (ximage);
XSync (xcontext->disp, FALSE);
}
#endif /* HAVE_XSHM */
return TRUE;
}
/* This function handles GstXImage creation depending on XShm availability */
@ -189,7 +196,7 @@ gst_ximagesink_ximage_new (GstXImageSink *ximagesink, gint width, gint height)
if (ximage->ximage)
{
XSync(ximagesink->xcontext->disp, 0);
XSync (ximagesink->xcontext->disp, FALSE);
}
else
{
@ -238,7 +245,7 @@ gst_ximagesink_ximage_destroy (GstXImageSink *ximagesink, GstXImage *ximage)
XDestroyImage (ximage->ximage);
}
XSync(ximagesink->xcontext->disp, 0);
XSync (ximagesink->xcontext->disp, FALSE);
g_mutex_unlock (ximagesink->x_lock);
@ -276,7 +283,7 @@ gst_ximagesink_ximage_put (GstXImageSink *ximagesink, GstXImage *ximage)
0, 0, x, y, ximage->width, ximage->height);
}
XSync(ximagesink->xcontext->disp, FALSE);
XSync (ximagesink->xcontext->disp, FALSE);
g_mutex_unlock (ximagesink->x_lock);
}
@ -302,9 +309,7 @@ gst_ximagesink_xwindow_new (GstXImageSink *ximagesink, gint width, gint height)
ximagesink->xcontext->root,
0, 0, xwindow->width, xwindow->height,
0, 0, ximagesink->xcontext->black);
XMapRaised (ximagesink->xcontext->disp, xwindow->win);
XSelectInput (ximagesink->xcontext->disp, xwindow->win, ExposureMask |
StructureNotifyMask | PointerMotionMask | KeyPressMask |
KeyReleaseMask | ButtonPressMask | ButtonReleaseMask);
@ -312,6 +317,10 @@ gst_ximagesink_xwindow_new (GstXImageSink *ximagesink, gint width, gint height)
xwindow->gc = XCreateGC (ximagesink->xcontext->disp,
xwindow->win, 0, NULL);
XMapRaised (ximagesink->xcontext->disp, xwindow->win);
XSync (ximagesink->xcontext->disp, FALSE);
g_mutex_unlock (ximagesink->x_lock);
return xwindow;
@ -335,6 +344,8 @@ gst_ximagesink_xwindow_destroy (GstXImageSink *ximagesink, GstXWindow *xwindow)
XFreeGC (ximagesink->xcontext->disp, xwindow->gc);
XSync (ximagesink->xcontext->disp, FALSE);
g_mutex_unlock (ximagesink->x_lock);
g_free (xwindow);

View file

@ -136,14 +136,21 @@ gst_xvimagesink_check_xshm_calls (GstXContext *xcontext)
shmdt (xvimage->SHMInfo.shmaddr);
shmctl (xvimage->SHMInfo.shmid, IPC_RMID, 0);
g_free (xvimage);
XSync(xcontext->disp, 0);
XSync (xcontext->disp, FALSE);
return FALSE;
}
else
#endif /* HAVE_XSHM */
{
return TRUE;
XShmDetach (xcontext->disp, &xvimage->SHMInfo);
XFree (xvimage->xvimage);
shmdt (xvimage->SHMInfo.shmaddr);
shmctl (xvimage->SHMInfo.shmid, IPC_RMID, 0);
g_free (xvimage);
XSync (xcontext->disp, FALSE);
}
#endif /* HAVE_XSHM */
return TRUE;
}
/* This function handles GstXvImage creation depending on XShm availability */
@ -200,7 +207,7 @@ gst_xvimagesink_xvimage_new (GstXvImageSink *xvimagesink,
if (xvimage->xvimage)
{
XSync(xvimagesink->xcontext->disp, 0);
XSync (xvimagesink->xcontext->disp, FALSE);
}
else
{
@ -250,7 +257,7 @@ gst_xvimagesink_xvimage_destroy (GstXvImageSink *xvimagesink,
XFree (xvimage->xvimage);
}
XSync(xvimagesink->xcontext->disp, 0);
XSync (xvimagesink->xcontext->disp, FALSE);
g_mutex_unlock (xvimagesink->x_lock);
@ -329,6 +336,8 @@ gst_xvimagesink_xwindow_new (GstXvImageSink *xvimagesink,
XMapRaised (xvimagesink->xcontext->disp, xwindow->win);
XSync(xvimagesink->xcontext->disp, FALSE);
g_mutex_unlock (xvimagesink->x_lock);
return xwindow;
@ -352,6 +361,8 @@ gst_xvimagesink_xwindow_destroy (GstXvImageSink *xvimagesink, GstXWindow *xwindo
XFreeGC (xvimagesink->xcontext->disp, xwindow->gc);
XSync(xvimagesink->xcontext->disp, FALSE);
g_mutex_unlock (xvimagesink->x_lock);
g_free (xwindow);
@ -374,6 +385,8 @@ gst_xvimagesink_xwindow_resize (GstXvImageSink *xvimagesink,
XResizeWindow (xvimagesink->xcontext->disp, xwindow->win,
xwindow->width, xwindow->height);
XSync(xvimagesink->xcontext->disp, FALSE);
g_mutex_unlock (xvimagesink->x_lock);
}
@ -615,6 +628,12 @@ gst_xvimagesink_get_xv_support (GstXContext *xcontext)
{
GstCaps *format_caps = NULL;
/* We set the image format of the xcontext to an existing one. Sink
connect method will override that but we need to have at least a
valid image format so that we can make our xshm calls check before
caps negotiation really happens. */
xcontext->im_format = formats[i].id;
switch (formats[i].type)
{
case XvRGB:
@ -769,13 +788,11 @@ gst_xvimagesink_xcontext_get (GstXvImageSink *xvimagesink)
{
xcontext->use_xshm = TRUE;
GST_DEBUG ("xvimagesink is using XShm extension");
g_message ("using XShm");
}
else
{
xcontext->use_xshm = FALSE;
GST_DEBUG ("xvimagesink is not using XShm extension");
g_message ("not using XShm");
}
#endif /* HAVE_XSHM */