summaryrefslogtreecommitdiff
path: root/cogl/cogl-display.c
diff options
context:
space:
mode:
authorRobert Bragg <robert@linux.intel.com>2011-02-25 11:29:08 +0000
committerRobert Bragg <robert@linux.intel.com>2011-05-05 14:46:01 +0100
commitdc7383b7148abe4bd0736042aafe3981e8313b31 (patch)
treee6d1ab3a1aa50e85c494274e81181f7710784e9b /cogl/cogl-display.c
parentd52e3f0cc2360febbbebf70262d2cf65dd46a8f3 (diff)
downloadcogl-dc7383b7148abe4bd0736042aafe3981e8313b31.tar.gz
Add a vtable of indirection to the winsys code
So that we can dynamically select what winsys backend to use at runtime we need to have some indirection to how code accesses the winsys instead of simply calling _cogl_winsys* functions that would collide if we wanted to compile more than one backend into Cogl.
Diffstat (limited to 'cogl/cogl-display.c')
-rw-r--r--cogl/cogl-display.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/cogl/cogl-display.c b/cogl/cogl-display.c
index a09de181..bb792b75 100644
--- a/cogl/cogl-display.c
+++ b/cogl/cogl-display.c
@@ -32,6 +32,7 @@
#include "cogl-object.h"
#include "cogl-display-private.h"
+#include "cogl-renderer-private.h"
#include "cogl-winsys-private.h"
static void _cogl_display_free (CoglDisplay *display);
@@ -93,15 +94,26 @@ cogl_display_new (CoglRenderer *renderer,
return _cogl_display_object_new (display);
}
+static const CoglWinsysVtable *
+_cogl_display_get_winsys (CoglDisplay *display)
+{
+ return display->renderer->winsys_vtable;
+}
+
gboolean
cogl_display_setup (CoglDisplay *display,
GError **error)
{
+#ifdef COGL_HAS_FULL_WINSYS
+ const CoglWinsysVtable *winsys;
+#endif
+
if (display->setup)
return TRUE;
#ifdef COGL_HAS_FULL_WINSYS
- if (!_cogl_winsys_display_setup (display, error))
+ winsys = _cogl_display_get_winsys (display);
+ if (!winsys->display_setup (display, error))
return FALSE;
#endif