mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-20 00:31:13 +00:00
gl/wayland: add preferred window size, and set it according to video size
The glimagesink wayland backend lacks the implementation of gst_gl_window_wayland_egl_set_preferred_size. Because of this, glimagesink windows on wayland are created with a fixed window size of 320x240. [Matthew Waters]: gst-indent sources https://bugzilla.gnome.org/show_bug.cgi?id=789384
This commit is contained in:
parent
2ace14f613
commit
08ebb8264d
2 changed files with 23 additions and 0 deletions
|
@ -57,6 +57,8 @@ static gboolean gst_gl_window_wayland_egl_open (GstGLWindow * window,
|
||||||
static guintptr gst_gl_window_wayland_egl_get_display (GstGLWindow * window);
|
static guintptr gst_gl_window_wayland_egl_get_display (GstGLWindow * window);
|
||||||
static gboolean gst_gl_window_wayland_egl_set_render_rectangle (GstGLWindow *
|
static gboolean gst_gl_window_wayland_egl_set_render_rectangle (GstGLWindow *
|
||||||
window, gint x, gint y, gint width, gint height);
|
window, gint x, gint y, gint width, gint height);
|
||||||
|
static void gst_gl_window_wayland_egl_set_preferred_size (GstGLWindow * window,
|
||||||
|
gint width, gint height);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static void
|
static void
|
||||||
|
@ -306,12 +308,16 @@ create_surfaces (GstGLWindowWaylandEGL * window_egl)
|
||||||
|
|
||||||
if (window_egl->window.window_width > 0)
|
if (window_egl->window.window_width > 0)
|
||||||
width = window_egl->window.window_width;
|
width = window_egl->window.window_width;
|
||||||
|
else if (window_egl->window.preferred_width > 0)
|
||||||
|
width = window_egl->window.preferred_width;
|
||||||
else
|
else
|
||||||
width = 320;
|
width = 320;
|
||||||
window_egl->window.window_width = width;
|
window_egl->window.window_width = width;
|
||||||
|
|
||||||
if (window_egl->window.window_height > 0)
|
if (window_egl->window.window_height > 0)
|
||||||
height = window_egl->window.window_height;
|
height = window_egl->window.window_height;
|
||||||
|
else if (window_egl->window.preferred_height > 0)
|
||||||
|
height = window_egl->window.preferred_height;
|
||||||
else
|
else
|
||||||
height = 240;
|
height = 240;
|
||||||
window_egl->window.window_height = height;
|
window_egl->window.window_height = height;
|
||||||
|
@ -344,6 +350,8 @@ gst_gl_window_wayland_egl_class_init (GstGLWindowWaylandEGLClass * klass)
|
||||||
GST_DEBUG_FUNCPTR (gst_gl_window_wayland_egl_get_display);
|
GST_DEBUG_FUNCPTR (gst_gl_window_wayland_egl_get_display);
|
||||||
window_class->set_render_rectangle =
|
window_class->set_render_rectangle =
|
||||||
GST_DEBUG_FUNCPTR (gst_gl_window_wayland_egl_set_render_rectangle);
|
GST_DEBUG_FUNCPTR (gst_gl_window_wayland_egl_set_render_rectangle);
|
||||||
|
window_class->set_preferred_size =
|
||||||
|
GST_DEBUG_FUNCPTR (gst_gl_window_wayland_egl_set_preferred_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -584,6 +592,20 @@ gst_gl_window_wayland_egl_set_render_rectangle (GstGLWindow * window,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gst_gl_window_wayland_egl_set_preferred_size (GstGLWindow * window, gint width,
|
||||||
|
gint height)
|
||||||
|
{
|
||||||
|
GstGLWindowWaylandEGL *window_egl = GST_GL_WINDOW_WAYLAND_EGL (window);
|
||||||
|
|
||||||
|
window_egl->window.preferred_width = width;
|
||||||
|
window_egl->window.preferred_height = height;
|
||||||
|
if (window_egl->window.window_height != height
|
||||||
|
|| window_egl->window.window_width != width) {
|
||||||
|
window_resize (window_egl, width, height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static guintptr
|
static guintptr
|
||||||
gst_gl_window_wayland_egl_get_display (GstGLWindow * window)
|
gst_gl_window_wayland_egl_get_display (GstGLWindow * window)
|
||||||
{
|
{
|
||||||
|
|
|
@ -72,6 +72,7 @@ struct window {
|
||||||
struct wl_callback *callback;
|
struct wl_callback *callback;
|
||||||
int fullscreen, configured;
|
int fullscreen, configured;
|
||||||
int window_width, window_height;
|
int window_width, window_height;
|
||||||
|
int preferred_width, preferred_height;
|
||||||
int window_x, window_y;
|
int window_x, window_y;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue