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

Emil Velikov emil.l.velikov at gmail.com
Fri Jan 8 04:00:24 PST 2016


Hi Frank,

On 6 January 2016 at 21:56, Frank Henigman <fjhenigman at google.com> wrote:
> 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;
If we remove the default statement the compiler will shout loudly at
us. Just initialize wc_platform here ?

>      }
> +    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
Worth using the enum here ? (same goes for patch 2)

-Emil


More information about the waffle mailing list