summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHolger Kaelberer <holger.k@elberer.de>2012-02-07 15:23:22 +0100
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>2012-04-02 13:46:31 +0200
commit5d6e60c3266421676d6be78ad8308506095d145a (patch)
tree0c3c2fb28b105dbd660586aee329f1fc922eca5c
parent15f13a561eb22f29e7b3ce6d8db57d2b9e071242 (diff)
downloadgstreamer-vaapi-5d6e60c3266421676d6be78ad8308506095d145a.tar.gz
vaapisink: don't resize a 'foreign' X-window.
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>
-rw-r--r--NEWS1
-rw-r--r--gst/vaapi/gstvaapisink.c14
2 files changed, 11 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index 41251b64..3756cf66 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ Copyright (C) 2010-2011 Splitted-Desktop Systems
Copyright (C) 2011-2012 Intel Corporation
Version 0.2.12 - 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.2.11 - 07.Feb.2012
diff --git a/gst/vaapi/gstvaapisink.c b/gst/vaapi/gstvaapisink.c
index 7ce1ff5f..b63e1f17 100644
--- a/gst/vaapi/gstvaapisink.c
+++ b/gst/vaapi/gstvaapisink.c
@@ -491,8 +491,12 @@ gst_vaapisink_set_caps(GstBaseSink *base_sink, GstCaps *caps)
gst_caps_replace(&sink->caps, caps);
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;
}
@@ -501,8 +505,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));