d3dvideosink: don't create new internal windows if we already have one
authorAndoni Morales Alastruey <ylatuya@gmail.com>
Thu, 14 Jun 2012 22:58:43 +0000 (00:58 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Fri, 15 Jun 2012 08:17:03 +0000 (10:17 +0200)
sys/d3dvideosink/d3dvideosink.c

index 53d3044..d86b3e3 100644 (file)
@@ -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);