vaapisink: don't resize a 'foreign' X-window.
authorHolger Kaelberer <holger.k@elberer.de>
Tue, 7 Feb 2012 14:23:22 +0000 (15:23 +0100)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Mon, 2 Apr 2012 11:33:55 +0000 (13:33 +0200)
Don't forcibly resize foreign X windows. The user is responsible for
their size and vaapisink shall not change this.

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
NEWS
gst/vaapi/gstvaapisink.c

diff --git a/NEWS b/NEWS
index 292a1b7..a3f4ee6 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,7 @@ Copyright (C) 2011-2012 Intel Corporation
 Copyright (C) 2011 Collabora
 
 Version 0.3.7 - DD.Apr.2012
+* Don't forcibly resize user provided X windows (Holger Kaelberer)
 * Recalculate render rect only if caps are negotiated (Holger Kaelberer)
 
 Version 0.3.6 - 02.Apr.2012
index 6ae5f2a..027fcb2 100644 (file)
@@ -471,8 +471,12 @@ gst_vaapisink_set_caps(GstBaseSink *base_sink, GstCaps *caps)
         return FALSE;
 
     gst_vaapi_display_get_size(sink->display, &display_width, &display_height);
-    if (sink->fullscreen ||
-        video_width > display_width || video_height > display_height) {
+    if (sink->foreign_window) {
+        win_width  = sink->window_width;
+        win_height = sink->window_height;
+    }
+    else if (sink->fullscreen ||
+             video_width > display_width || video_height > display_height) {
         win_width  = display_width;
         win_height = display_height;
     }
@@ -481,8 +485,10 @@ gst_vaapisink_set_caps(GstBaseSink *base_sink, GstCaps *caps)
         win_height = video_height;
     }
 
-    if (sink->window)
-        gst_vaapi_window_set_size(sink->window, win_width, win_height);
+    if (sink->window) {
+        if (!sink->foreign_window || sink->fullscreen)
+            gst_vaapi_window_set_size(sink->window, win_width, win_height);
+    }
     else {
         gst_vaapi_display_lock(sink->display);
         gst_x_overlay_prepare_xwindow_id(GST_X_OVERLAY(sink));