summaryrefslogtreecommitdiff
path: root/cogl/winsys
diff options
context:
space:
mode:
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2014-11-20 07:18:26 +0100
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2014-11-20 07:18:26 +0100
commit77e28d4a772c369777a344a6b07a22851be6ddf0 (patch)
tree9538843f9c9eff074cc59e7f6853cd0e3f630b5f /cogl/winsys
parent8e6997db449bcc58e79f9b9219f2f24427794a7f (diff)
downloadcogl-77e28d4a772c369777a344a6b07a22851be6ddf0.tar.gz
mir: only allow to set foreign surfaces with hardware buffer
And return a CoglBool accordingly.
Diffstat (limited to 'cogl/winsys')
-rw-r--r--cogl/winsys/cogl-winsys-egl-mir.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/cogl/winsys/cogl-winsys-egl-mir.c b/cogl/winsys/cogl-winsys-egl-mir.c
index 5173727d..c958cfc6 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 *