summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndoni Morales Alastruey <ylatuya@gmail.com>2012-06-15 00:58:43 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-06-15 10:16:41 +0200
commitb393f3576585c5bce64f7f824a548e0b6a6703bb (patch)
treebdaa22d563599289a514cc3c1b341c6c534aa08c
parent90aa81127ad03232927b1de1d58ce62b4a3d8b28 (diff)
d3dvideosink: don't create new internal windows if we already have one
-rw-r--r--sys/d3dvideosink/d3dvideosink.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/d3dvideosink/d3dvideosink.c b/sys/d3dvideosink/d3dvideosink.c
index 7d01e42f0..c80ab301b 100644
--- a/sys/d3dvideosink/d3dvideosink.c
+++ b/sys/d3dvideosink/d3dvideosink.c
@@ -1362,9 +1362,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);
}
@@ -1402,7 +1404,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);