From 6adb32adc4661c4bf044747f1cb400c4e27cc628 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Sat, 5 Feb 2005 23:01:59 +0000 Subject: [PATCH] sys/: Clear window on PAUSED->READY instead of READY->PAUSED. Stop Original commit message from CVS: * sys/ximage/ximagesink.c: (gst_ximagesink_change_state): * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xwindow_clear), (gst_xvimagesink_change_state): Clear window on PAUSED->READY instead of READY->PAUSED. Stop Xv video (and thereby regenerate Xv colourkey) in clear() so that PLAY -> READY -> PLAY works (fixes #162504). --- ChangeLog | 9 +++++++++ sys/ximage/ximagesink.c | 4 ++-- sys/xvimage/xvimagesink.c | 7 +++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index a2788c0..482ba8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2005-02-05 Ronald S. Bultje + * sys/ximage/ximagesink.c: (gst_ximagesink_change_state): + * sys/xvimage/xvimagesink.c: (gst_xvimagesink_xwindow_clear), + (gst_xvimagesink_change_state): + Clear window on PAUSED->READY instead of READY->PAUSED. Stop + Xv video (and thereby regenerate Xv colourkey) in clear() so + that PLAY -> READY -> PLAY works (fixes #162504). + +2005-02-05 Ronald S. Bultje + * sys/v4l/gstv4lmjpegsrc.c: (gst_v4lmjpegsrc_getcaps): Switch to list instead of range, since MJPEG-devices really just support decimations, not any size. diff --git a/sys/ximage/ximagesink.c b/sys/ximage/ximagesink.c index 72e3900..aeb9888 100644 --- a/sys/ximage/ximagesink.c +++ b/sys/ximage/ximagesink.c @@ -1034,8 +1034,6 @@ gst_ximagesink_change_state (GstElement * element) XSynchronize (ximagesink->xcontext->disp, ximagesink->synchronous); break; case GST_STATE_READY_TO_PAUSED: - if (ximagesink->xwindow) - gst_ximagesink_xwindow_clear (ximagesink, ximagesink->xwindow); ximagesink->time = 0; break; case GST_STATE_PAUSED_TO_PLAYING: @@ -1043,6 +1041,8 @@ gst_ximagesink_change_state (GstElement * element) case GST_STATE_PLAYING_TO_PAUSED: break; case GST_STATE_PAUSED_TO_READY: + if (ximagesink->xwindow) + gst_ximagesink_xwindow_clear (ximagesink, ximagesink->xwindow); ximagesink->framerate = 0; ximagesink->sw_scaling_failed = FALSE; GST_VIDEOSINK_WIDTH (ximagesink) = 0; diff --git a/sys/xvimage/xvimagesink.c b/sys/xvimage/xvimagesink.c index 5bdcd18..098cfc0 100644 --- a/sys/xvimage/xvimagesink.c +++ b/sys/xvimage/xvimagesink.c @@ -497,6 +497,9 @@ gst_xvimagesink_xwindow_clear (GstXvImageSink * xvimagesink, g_mutex_lock (xvimagesink->x_lock); + XvStopVideo (xvimagesink->xcontext->disp, xvimagesink->xcontext->xv_port_id, + xwindow->win); + XSetForeground (xvimagesink->xcontext->disp, xwindow->gc, xvimagesink->xcontext->black); @@ -1340,8 +1343,6 @@ gst_xvimagesink_change_state (GstElement * element) gst_xvimagesink_update_colorbalance (xvimagesink); break; case GST_STATE_READY_TO_PAUSED: - if (xvimagesink->xwindow) - gst_xvimagesink_xwindow_clear (xvimagesink, xvimagesink->xwindow); xvimagesink->time = 0; break; case GST_STATE_PAUSED_TO_PLAYING: @@ -1349,6 +1350,8 @@ gst_xvimagesink_change_state (GstElement * element) case GST_STATE_PLAYING_TO_PAUSED: break; case GST_STATE_PAUSED_TO_READY: + if (xvimagesink->xwindow) + gst_xvimagesink_xwindow_clear (xvimagesink, xvimagesink->xwindow); xvimagesink->framerate = 0; GST_VIDEOSINK_WIDTH (xvimagesink) = 0; GST_VIDEOSINK_HEIGHT (xvimagesink) = 0; -- 2.7.4