[cogl] display: always ensure we have an onscreen_template



commit 476ff37fa682d127228ad90c11aaa614744acab8
Author: Robert Bragg <robert linux intel com>
Date:   Sun Aug 21 21:21:34 2011 +0100

    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 <neil linux intel com>

 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 b45560e..0eefee8 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 35230fc..86eaa4d 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 b50af55..80e262c 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



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