[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