diff options
author | Robert Bragg <robert@linux.intel.com> | 2011-02-25 11:29:08 +0000 |
---|---|---|
committer | Robert Bragg <robert@linux.intel.com> | 2011-05-05 14:46:01 +0100 |
commit | dc7383b7148abe4bd0736042aafe3981e8313b31 (patch) | |
tree | e6d1ab3a1aa50e85c494274e81181f7710784e9b /cogl/cogl-display.c | |
parent | d52e3f0cc2360febbbebf70262d2cf65dd46a8f3 (diff) | |
download | cogl-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.c | 14 |
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 |