[waffle] [PATCH 01/12] core: store platform type in wcore_platform

Frank Henigman fjhenigman at google.com
Wed Jan 6 11:56:30 PST 2016


Facilitates platform-specific code in core functions, like the forthcoming
wflinfo-like function.

Signed-off-by: Frank Henigman <fjhenigman at google.com>
---
 src/waffle/api/waffle_init.c     | 32 +++++++++++++++++++++-----------
 src/waffle/core/wcore_platform.h |  1 +
 2 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/src/waffle/api/waffle_init.c b/src/waffle/api/waffle_init.c
index 60091d1..3d8d350 100644
--- a/src/waffle/api/waffle_init.c
+++ b/src/waffle/api/waffle_init.c
@@ -142,43 +142,53 @@ waffle_init_parse_attrib_list(
 static struct wcore_platform*
 waffle_init_create_platform(int32_t waffle_platform)
 {
+    struct wcore_platform *wc_platform = NULL;
+
     switch (waffle_platform) {
 #ifdef WAFFLE_HAS_ANDROID
         case WAFFLE_PLATFORM_ANDROID:
-            return droid_platform_create();
+            wc_platform = droid_platform_create();
+            break;
 #endif
 #ifdef WAFFLE_HAS_CGL
         case WAFFLE_PLATFORM_CGL:
-            return cgl_platform_create();
+            wc_platform = cgl_platform_create();
+            break;
 #endif
 #ifdef WAFFLE_HAS_GLX
         case WAFFLE_PLATFORM_GLX:
-            return glx_platform_create();
+            wc_platform = glx_platform_create();
+            break;
 #endif
 #ifdef WAFFLE_HAS_WAYLAND
         case  WAFFLE_PLATFORM_WAYLAND:
-            return wayland_platform_create();
+            wc_platform = wayland_platform_create();
+            break;
 #endif
 #ifdef WAFFLE_HAS_X11_EGL
         case WAFFLE_PLATFORM_X11_EGL:
-            return xegl_platform_create();
+            wc_platform = xegl_platform_create();
+            break;
 #endif
 #ifdef WAFFLE_HAS_GBM
         case WAFFLE_PLATFORM_GBM:
-            return wgbm_platform_create();
+            wc_platform = wgbm_platform_create();
+            break;
 #endif
 #ifdef WAFFLE_HAS_WGL
         case WAFFLE_PLATFORM_WGL:
-            return wgl_platform_create();
+            wc_platform = wgl_platform_create();
+            break;
 #endif
 #ifdef WAFFLE_HAS_NACL
         case WAFFLE_PLATFORM_NACL:
-            return nacl_platform_create();
+            wc_platform = nacl_platform_create();
+            break;
 #endif
-        default:
-            assert(false);
-            return NULL;
     }
+    assert(wc_platform);
+    wc_platform->waffle_platform = waffle_platform;
+    return wc_platform;
 }
 
 WAFFLE_API bool
diff --git a/src/waffle/core/wcore_platform.h b/src/waffle/core/wcore_platform.h
index 780d07a..30d1c6c 100644
--- a/src/waffle/core/wcore_platform.h
+++ b/src/waffle/core/wcore_platform.h
@@ -139,6 +139,7 @@ struct wcore_platform_vtbl {
 
 struct wcore_platform {
     const struct wcore_platform_vtbl *vtbl;
+    int32_t waffle_platform; // WAFFLE_PLATFORM_* enum
 };
 
 static inline bool
-- 
2.6.0.rc2.230.g3dd15c0



More information about the waffle mailing list