From 39e0bf5260c9e9c3182ec8a0de2e4128a0eea7b9 Mon Sep 17 00:00:00 2001 From: Andoni Morales Alastruey Date: Fri, 15 Jun 2012 00:58:43 +0200 Subject: [PATCH] d3dvideosink: don't create new internal windows if we already have one --- sys/d3dvideosink/d3dvideosink.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sys/d3dvideosink/d3dvideosink.c b/sys/d3dvideosink/d3dvideosink.c index 53d304475a..d86b3e35d4 100644 --- a/sys/d3dvideosink/d3dvideosink.c +++ b/sys/d3dvideosink/d3dvideosink.c @@ -1372,9 +1372,11 @@ gst_d3dvideosink_prepare_window (GstD3DVideoSink * sink) } /* If the app supplied one, use it. Otherwise, go ahead - * and create (and use) our own window */ + * and create (and use) our own window, if we didn't create + * one before */ if (sink->window_handle) { - gst_d3dvideosink_set_window_for_renderer (sink); + if (!sink->is_new_window) + gst_d3dvideosink_set_window_for_renderer (sink); } else { gst_d3dvideosink_create_default_window (sink); } @@ -1412,7 +1414,9 @@ gst_d3dvideosink_change_state (GstElement * element, GstStateChange transition) case GST_STATE_CHANGE_PLAYING_TO_PAUSED: break; case GST_STATE_CHANGE_PAUSED_TO_READY: - gst_d3dvideosink_remove_window_for_renderer (sink); + if (!sink->is_new_window) { + gst_d3dvideosink_remove_window_for_renderer (sink); + } break; case GST_STATE_CHANGE_READY_TO_NULL: gst_d3dvideosink_release_direct3d (sink);