diff --git a/sys/ximage/ximagesink.c b/sys/ximage/ximagesink.c index e54df39ae9..aeac91265a 100644 --- a/sys/ximage/ximagesink.c +++ b/sys/ximage/ximagesink.c @@ -719,8 +719,6 @@ gst_ximagesink_ximage_put (GstXImageSink * ximagesink, GstXImageBuffer * ximage) } } - gst_ximagesink_xwindow_update_geometry (ximagesink, ximagesink->xwindow); - src.w = ximage->width; src.h = ximage->height; dst.w = ximagesink->xwindow->width; @@ -1079,6 +1077,10 @@ gst_ximagesink_handle_xevents (GstXImageSink * ximagesink) exposed = TRUE; break; case ConfigureNotify: + g_mutex_unlock (ximagesink->x_lock); + gst_ximagesink_xwindow_update_geometry (ximagesink, + ximagesink->xwindow); + g_mutex_lock (ximagesink->x_lock); configured = TRUE; break; default: @@ -1805,7 +1807,6 @@ gst_ximagesink_buffer_alloc (GstBaseSink * bsink, guint64 offset, guint size, } /* What is our geometry */ - gst_ximagesink_xwindow_update_geometry (ximagesink, ximagesink->xwindow); dst.w = ximagesink->xwindow->width; dst.h = ximagesink->xwindow->height; @@ -2061,6 +2062,7 @@ gst_ximagesink_expose (GstXOverlay * overlay) { GstXImageSink *ximagesink = GST_XIMAGESINK (overlay); + gst_ximagesink_xwindow_update_geometry (ximagesink, ximagesink->xwindow); gst_ximagesink_ximage_put (ximagesink, NULL); } diff --git a/sys/xvimage/xvimagesink.c b/sys/xvimage/xvimagesink.c index ffc8f67f1f..1082c99dcf 100644 --- a/sys/xvimage/xvimagesink.c +++ b/sys/xvimage/xvimagesink.c @@ -808,8 +808,6 @@ gst_xvimagesink_xvimage_put (GstXvImageSink * xvimagesink, } } - gst_xvimagesink_xwindow_update_geometry (xvimagesink, xvimagesink->xwindow); - /* We use the calculated geometry from _setcaps as a source to respect source and screen pixel aspect ratios. */ src.w = GST_VIDEO_SINK_WIDTH (xvimagesink); @@ -1266,6 +1264,10 @@ gst_xvimagesink_handle_xevents (GstXvImageSink * xvimagesink) exposed = TRUE; break; case ConfigureNotify: + g_mutex_unlock (xvimagesink->x_lock); + gst_xvimagesink_xwindow_update_geometry (xvimagesink, + xvimagesink->xwindow); + g_mutex_lock (xvimagesink->x_lock); configured = TRUE; break; default: @@ -2809,6 +2811,7 @@ gst_xvimagesink_expose (GstXOverlay * overlay) { GstXvImageSink *xvimagesink = GST_XVIMAGESINK (overlay); + gst_xvimagesink_xwindow_update_geometry (xvimagesink, xvimagesink->xwindow); gst_xvimagesink_xvimage_put (xvimagesink, NULL); }