From 391137a20e43fa8735531bf10b46a7072d72d3d7 Mon Sep 17 00:00:00 2001 From: "Reynaldo H. Verdejo Pinochet" Date: Mon, 17 Sep 2012 18:00:16 -0300 Subject: [PATCH] eglglessink: GlViewPort() should use actual surface size --- ext/eglgles/gsteglglessink.c | 12 +++++++++++- ext/eglgles/gsteglglessink.h | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ext/eglgles/gsteglglessink.c b/ext/eglgles/gsteglglessink.c index 9bb395e0de..13e90d9c01 100644 --- a/ext/eglgles/gsteglglessink.c +++ b/ext/eglgles/gsteglglessink.c @@ -1183,6 +1183,15 @@ gst_eglglessink_init_egl_surface (GstEglGlesSink * eglglessink) goto HANDLE_EGL_ERROR_LOCKED; } + /* Save surface dims */ + eglQuerySurface (eglglessink->display, eglglessink->surface, EGL_WIDTH, + &eglglessink->surface_width); + eglQuerySurface (eglglessink->display, eglglessink->surface, EGL_HEIGHT, + &eglglessink->surface_height); + + GST_INFO_OBJECT (eglglessink, "Got surface of %dx%d pixels", + eglglessink->surface_width, eglglessink->surface_height); + /* We have a surface! */ eglglessink->have_surface = TRUE; g_mutex_unlock (eglglessink->flow_lock); @@ -1509,7 +1518,8 @@ gst_eglglessink_render_and_display (GstEglGlesSink * eglglessink, * The way it is right now makes this happen only for the first buffer * though so I guess it should work */ if (gst_eglglessink_setup_vbo (eglglessink, FALSE)) { - glViewport (0, 0, w, h); + glViewport (0, 0, eglglessink->surface_width, + eglglessink->surface_height); } else { GST_ERROR_OBJECT (eglglessink, "VBO setup failed"); goto HANDLE_ERROR; diff --git a/ext/eglgles/gsteglglessink.h b/ext/eglgles/gsteglglessink.h index 6c255c08b8..7606eae424 100644 --- a/ext/eglgles/gsteglglessink.h +++ b/ext/eglgles/gsteglglessink.h @@ -159,6 +159,8 @@ struct _GstEglGlesSink gboolean force_rendering_slow; gint window_default_width; gint window_default_height; + EGLint surface_width; + EGLint surface_height; }; struct _GstEglGlesSinkClass