eglglessink: Update surface dimensions on every buffer
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 27 Sep 2012 12:08:22 +0000 (14:08 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 18 Oct 2012 12:35:15 +0000 (14:35 +0200)
ext/eglgles/gsteglglessink.c

index 52ae4e4..6dad020 100644 (file)
@@ -1384,6 +1384,22 @@ HANDLE_ERROR_LOCKED:
   return FALSE;
 }
 
+static void
+gst_eglglessink_update_surface_dimensions (GstEglGlesSink * eglglessink)
+{
+  /* Save surface dims */
+  eglQuerySurface (eglglessink->eglglesctx->display,
+      eglglessink->eglglesctx->surface, EGL_WIDTH,
+      &eglglessink->eglglesctx->surface_width);
+  eglQuerySurface (eglglessink->eglglesctx->display,
+      eglglessink->eglglesctx->surface, EGL_HEIGHT,
+      &eglglessink->eglglesctx->surface_height);
+
+  GST_INFO_OBJECT (eglglessink, "Got surface of %dx%d pixels",
+      eglglessink->eglglesctx->surface_width,
+      eglglessink->eglglesctx->surface_height);
+}
+
 static gboolean
 gst_eglglessink_init_egl_surface (GstEglGlesSink * eglglessink)
 {
@@ -1417,16 +1433,7 @@ gst_eglglessink_init_egl_surface (GstEglGlesSink * eglglessink)
   }
 
   /* Save surface dims */
-  eglQuerySurface (eglglessink->eglglesctx->display,
-      eglglessink->eglglesctx->surface, EGL_WIDTH,
-      &eglglessink->eglglesctx->surface_width);
-  eglQuerySurface (eglglessink->eglglesctx->display,
-      eglglessink->eglglesctx->surface, EGL_HEIGHT,
-      &eglglessink->eglglesctx->surface_height);
-
-  GST_INFO_OBJECT (eglglessink, "Got surface of %dx%d pixels",
-      eglglessink->eglglesctx->surface_width,
-      eglglessink->eglglesctx->surface_height);
+  gst_eglglessink_update_surface_dimensions (eglglessink);
 
   /* We have a surface! */
   eglglessink->have_surface = TRUE;
@@ -2002,6 +2009,9 @@ gst_eglglessink_render_and_display (GstEglGlesSink * eglglessink,
           goto HANDLE_ERROR;
       }
 
+      /* Update surface dims */
+      gst_eglglessink_update_surface_dimensions (eglglessink);
+
       /* If no one has set a display rectangle on us initialize
        * a sane default. According to the docs on the xOverlay
        * interface we are supposed to fill the overlay 100%