[cogl/cogl-1.18] mir: only allow to set foreign surfaces with hardware buffer



commit 77e28d4a772c369777a344a6b07a22851be6ddf0
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Thu Nov 20 07:18:26 2014 +0100

    mir: only allow to set foreign surfaces with hardware buffer
    
    And return a CoglBool accordingly.

 cogl/cogl-onscreen.h              |    4 +++-
 cogl/winsys/cogl-winsys-egl-mir.c |   12 +++++++++---
 2 files changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/cogl/cogl-onscreen.h b/cogl/cogl-onscreen.h
index 990a716..99a9365 100644
--- a/cogl/cogl-onscreen.h
+++ b/cogl/cogl-onscreen.h
@@ -282,10 +282,12 @@ cogl_mir_onscreen_get_surface (CoglOnscreen *onscreen);
  *
  * This function must be called before @onscreen is allocated.
  *
+ * Returns: whether @surface has been marked as been set as surface or not.
+ *
  * Since: 1.18
  * Stability: unstable
  */
-void
+CoglBool
 cogl_mir_onscreen_set_foreign_surface (CoglOnscreen *onscreen,
                                        struct MirSurface *surface);
 #endif /* COGL_HAS_EGL_PLATFORM_MIR_SUPPORT */
diff --git a/cogl/winsys/cogl-winsys-egl-mir.c b/cogl/winsys/cogl-winsys-egl-mir.c
index 5173727..c958cfc 100644
--- a/cogl/winsys/cogl-winsys-egl-mir.c
+++ b/cogl/winsys/cogl-winsys-egl-mir.c
@@ -658,17 +658,23 @@ cogl_mir_renderer_get_connection (CoglRenderer *renderer)
   return NULL;
 }
 
-void
+CoglBool
 cogl_mir_onscreen_set_foreign_surface (CoglOnscreen *onscreen,
                                        MirSurface *surface)
 {
   CoglFramebuffer *fb;
-  _COGL_RETURN_IF_FAIL (mir_surface_is_valid (surface));
+  MirSurfaceParameters parameters;
+
+  _COGL_RETURN_VAL_IF_FAIL (mir_surface_is_valid (surface), FALSE);
 
   fb = COGL_FRAMEBUFFER (onscreen);
-  _COGL_RETURN_IF_FAIL (!fb->allocated);
+  _COGL_RETURN_VAL_IF_FAIL (!fb->allocated, FALSE);
+
+  mir_surface_get_parameters (surface, &parameters);
+  _COGL_RETURN_VAL_IF_FAIL (parameters.buffer_usage == mir_buffer_usage_hardware, FALSE);
 
   onscreen->foreign_surface = surface;
+  return TRUE;
 }
 
 MirSurface *


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]