1*4882a593SmuzhiyunFrom cccbc3856787adac05756f76a825ccdaea5fa3aa Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com> 3*4882a593SmuzhiyunDate: Thu, 4 May 2023 17:52:33 +0800 4*4882a593SmuzhiyunSubject: [PATCH 18/20] gl: x11: Honor render-rectangle for toplevel window 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunTested on RK3588 evb with: 7*4882a593Smuzhiyungst-launch-1.0 videotestsrc ! glimagesink render-rectangle='<100,200,300,400>' 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com> 10*4882a593Smuzhiyun--- 11*4882a593Smuzhiyun gst-libs/gst/gl/x11/gstglwindow_x11.c | 13 +++++++++++++ 12*4882a593Smuzhiyun 1 file changed, 13 insertions(+) 13*4882a593Smuzhiyun 14*4882a593Smuzhiyundiff --git a/gst-libs/gst/gl/x11/gstglwindow_x11.c b/gst-libs/gst/gl/x11/gstglwindow_x11.c 15*4882a593Smuzhiyunindex 7ee1ded..6d2293e 100644 16*4882a593Smuzhiyun--- a/gst-libs/gst/gl/x11/gstglwindow_x11.c 17*4882a593Smuzhiyun+++ b/gst-libs/gst/gl/x11/gstglwindow_x11.c 18*4882a593Smuzhiyun@@ -229,6 +229,13 @@ gst_gl_window_x11_create_window (GstGLWindowX11 * window_x11) 19*4882a593Smuzhiyun window_x11->visual_info->depth, InputOutput, 20*4882a593Smuzhiyun window_x11->visual_info->visual, mask, &win_attr); 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun+ /* Set USPosition for toplevel window */ 23*4882a593Smuzhiyun+ if (!window_x11->parent_win) { 24*4882a593Smuzhiyun+ XSizeHints hints = {0}; 25*4882a593Smuzhiyun+ hints.flags = USPosition; 26*4882a593Smuzhiyun+ XSetWMNormalHints (window_x11->device, window_x11->internal_win_id, &hints); 27*4882a593Smuzhiyun+ } 28*4882a593Smuzhiyun+ 29*4882a593Smuzhiyun gst_gl_window_x11_handle_events (GST_GL_WINDOW (window_x11), 30*4882a593Smuzhiyun window_x11->priv->handle_events); 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun@@ -408,6 +415,12 @@ _show_window (GstGLWindow * window) 33*4882a593Smuzhiyun guint width = window_x11->priv->preferred_width; 34*4882a593Smuzhiyun guint height = window_x11->priv->preferred_height; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun+ if (window_x11->priv->render_rect.w > 0 && 37*4882a593Smuzhiyun+ window_x11->priv->render_rect.h > 0) { 38*4882a593Smuzhiyun+ width = window_x11->priv->render_rect.w; 39*4882a593Smuzhiyun+ height = window_x11->priv->render_rect.h; 40*4882a593Smuzhiyun+ } 41*4882a593Smuzhiyun+ 42*4882a593Smuzhiyun if (!window_x11->visible) { 43*4882a593Smuzhiyun if (!window_x11->parent_win) { 44*4882a593Smuzhiyun XResizeWindow (window_x11->device, window_x11->internal_win_id, 45*4882a593Smuzhiyun-- 46*4882a593Smuzhiyun2.20.1 47*4882a593Smuzhiyun 48