From 476ff37fa682d127228ad90c11aaa614744acab8 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Sun, 21 Aug 2011 21:21:34 +0100 Subject: [PATCH] display: always ensure we have an onscreen_template If the user doesn't explicitly pass an onscreen template then instead of leaving display->onscreen_template as NULL we now instantiate a template ourselves. This simplifies winsys code that might want to refer to the template since it needn't first check for a NULL pointer. Reviewed-by: Neil Roberts --- cogl/cogl-display.c | 2 ++ cogl/winsys/cogl-winsys-egl.c | 9 +++++---- cogl/winsys/cogl-winsys-glx.c | 3 +-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/cogl/cogl-display.c b/cogl/cogl-display.c index b45560e07..0eefee82b 100644 --- a/cogl/cogl-display.c +++ b/cogl/cogl-display.c @@ -109,6 +109,8 @@ cogl_display_new (CoglRenderer *renderer, display->onscreen_template = onscreen_template; if (onscreen_template) cogl_object_ref (onscreen_template); + else + display->onscreen_template = cogl_onscreen_template_new (NULL); display->setup = FALSE; diff --git a/cogl/winsys/cogl-winsys-egl.c b/cogl/winsys/cogl-winsys-egl.c index 35230fc8b..86eaa4dd5 100644 --- a/cogl/winsys/cogl-winsys-egl.c +++ b/cogl/winsys/cogl-winsys-egl.c @@ -1005,8 +1005,7 @@ create_context (CoglDisplay *display, GError **error) g_return_val_if_fail (egl_display->egl_context == NULL, TRUE); - if (display->onscreen_template && - display->onscreen_template->swap_chain && + if (display->onscreen_template->swap_chain && display->onscreen_template->swap_chain->has_alpha) support_transparent_windows = TRUE; else @@ -1098,10 +1097,12 @@ gdl_plane_init (CoglDisplay *display, GError **error) if (rc == GDL_SUCCESS) rc = gdl_plane_set_attr (GDL_PLANE_DST_RECT, &dstRect); - /* Default to triple buffering if we don't have an onscreen template */ + /* Default to triple buffering if the swap_chain doesn't have an explicit + * length */ if (rc == GDL_SUCCESS) { - if (display->onscreen_template) + if (display->onscreen_template->swap_chain && + display->onscreen_template->swap_chain->length != -1) rc = gdl_plane_set_uint (GDL_PLANE_NUM_GFX_SURFACES, display->onscreen_template->swap_chain->length); else diff --git a/cogl/winsys/cogl-winsys-glx.c b/cogl/winsys/cogl-winsys-glx.c index b50af5562..80e262c3c 100644 --- a/cogl/winsys/cogl-winsys-glx.c +++ b/cogl/winsys/cogl-winsys-glx.c @@ -550,8 +550,7 @@ create_context (CoglDisplay *display, GError **error) g_return_val_if_fail (glx_display->glx_context == NULL, TRUE); - if (display->onscreen_template && - display->onscreen_template->swap_chain && + if (display->onscreen_template->swap_chain && display->onscreen_template->swap_chain->has_alpha) support_transparent_windows = TRUE; else