On Wed, Feb 25, 2015 at 01:42:13PM +0100, Jonny Lamb wrote:
> ---
>  clients/nested-client.c   | 22 ++++++++++++++++++----
>  clients/simple-egl.c      | 22 ++++++++++++++++++----
>  clients/subsurfaces.c     | 22 +++++++++++++++++++---
>  clients/window.c          | 22 ++++++++++++++++++----
>  tests/buffer-count-test.c | 25 ++++++++++++++++++++-----
>  5 files changed, 93 insertions(+), 20 deletions(-)
> 
> diff --git a/clients/nested-client.c b/clients/nested-client.c
> index 9f373b1..1c04266 100644
> --- a/clients/nested-client.c
> +++ b/clients/nested-client.c
> @@ -241,6 +241,7 @@ static const struct wl_registry_listener 
> registry_listener = {
>  
>  #ifdef EGL_EXT_platform_base
>  static PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = NULL;
> +static PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC create_platform_window = 
> NULL;
>  #endif
>  
>  #ifndef EGL_PLATFORM_WAYLAND_KHR
> @@ -297,6 +298,8 @@ nested_client_create(void)
>           || strstr(extensions, "EGL_KHR_platform_wayland")) {
>               get_platform_display =
>                       (void *) eglGetProcAddress("eglGetPlatformDisplayEXT");
> +             create_platform_window =
> +                     (void *) 
> eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT");
>       } else {
>               fprintf(stderr, "error: no wayland egl support\n");
>               return NULL;
> @@ -339,10 +342,21 @@ nested_client_create(void)
>       client->native = wl_egl_window_create(client->surface,
>                                             client->width, client->height);
>  
> -     client->egl_surface =
> -             eglCreateWindowSurface(client->egl_display,
> -                                    client->egl_config,
> -                                    client->native, NULL);
> +#ifdef EGL_EXT_platform_base
> +     if (create_platform_window) {
> +             client->egl_surface =
> +                     create_platform_window(client->egl_display,
> +                                            client->egl_config,
> +                                            client->native, NULL);
> +     } else {
> +#endif
> +             client->egl_surface =
> +                     eglCreateWindowSurface(client->egl_display,
> +                                            client->egl_config,
> +                                            client->native, NULL);
> +#ifdef EGL_EXT_platform_base
> +     }
> +#endif

Since this pattern of code is repeating several places, perhaps having
it in a helper function or macro might be more maintainable longer term?

If you make that change and revise the patchset, everything else looks
fine to me.

Bryce
  
>       eglMakeCurrent(client->egl_display, client->egl_surface,
>                      client->egl_surface, client->egl_context);
> diff --git a/clients/simple-egl.c b/clients/simple-egl.c
> index 20c3f27..8ac71b6 100644
> --- a/clients/simple-egl.c
> +++ b/clients/simple-egl.c
> @@ -127,6 +127,7 @@ static int running = 1;
>  
>  #ifdef EGL_EXT_platform_base
>  static PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = NULL;
> +static PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC create_platform_window = 
> NULL;
>  #endif
>  
>  #ifndef EGL_PLATFORM_WAYLAND_KHR
> @@ -166,6 +167,8 @@ init_egl(struct display *display, struct window *window)
>           || strstr(extensions, "EGL_KHR_platform_wayland")) {
>               get_platform_display =
>                       (void *) eglGetProcAddress("eglGetPlatformDisplayEXT");
> +             create_platform_window =
> +                     (void *) 
> eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT");
>       } else {
>               fprintf(stderr, "error: no wayland egl support\n");
>               exit(1);
> @@ -409,10 +412,21 @@ create_surface(struct window *window)
>               wl_egl_window_create(window->surface,
>                                    window->geometry.width,
>                                    window->geometry.height);
> -     window->egl_surface =
> -             eglCreateWindowSurface(display->egl.dpy,
> -                                    display->egl.conf,
> -                                    window->native, NULL);
> +#ifdef EGL_EXT_platform_base
> +     if (create_platform_window) {
> +             window->egl_surface =
> +                     create_platform_window(display->egl.dpy,
> +                                            display->egl.conf,
> +                                            window->native, NULL);
> +     } else {
> +#endif
> +             window->egl_surface =
> +                     eglCreateWindowSurface(display->egl.dpy,
> +                                            display->egl.conf,
> +                                            window->native, NULL);
> +#ifdef EGL_EXT_platform_base
> +     }
> +#endif
>  
>       if (display->shell) {
>               create_xdg_surface(window, display);
> diff --git a/clients/subsurfaces.c b/clients/subsurfaces.c
> index fedc1bf..ae6c90e 100644
> --- a/clients/subsurfaces.c
> +++ b/clients/subsurfaces.c
> @@ -192,6 +192,7 @@ egl_print_config_info(struct egl_state *egl)
>  
>  #ifdef EGL_EXT_platform_base
>  static PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = NULL;
> +static PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC create_platform_window = 
> NULL;
>  #endif
>  
>  #ifndef EGL_PLATFORM_WAYLAND_KHR
> @@ -230,6 +231,8 @@ egl_state_create(struct wl_display *display)
>           || strstr(extensions, "EGL_KHR_platform_wayland")) {
>               get_platform_display =
>                       (void *) eglGetProcAddress("eglGetPlatformDisplayEXT");
> +             create_platform_window =
> +                     (void *) 
> eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT");
>       } else {
>               fprintf(stderr, "error: no wayland egl support\n");
>               exit(1);
> @@ -452,9 +455,22 @@ triangle_create_egl_surface(struct triangle *tri, int 
> width, int height)
>  
>       tri->wl_surface = widget_get_wl_surface(tri->widget);
>       tri->egl_window = wl_egl_window_create(tri->wl_surface, width, height);
> -     tri->egl_surface = eglCreateWindowSurface(tri->egl->dpy,
> -                                               tri->egl->conf,
> -                                               tri->egl_window, NULL);
> +
> +#ifdef EGL_EXT_platform_base
> +     if (create_platform_window) {
> +             tri->egl_surface =
> +                     create_platform_window(tri->egl->dpy,
> +                                            tri->egl->conf,
> +                                            tri->egl_window, NULL);
> +     } else {
> +#endif
> +             tri->egl_surface =
> +                     eglCreateWindowSurface(tri->egl->dpy,
> +                                            tri->egl->conf,
> +                                            tri->egl_window, NULL);
> +#ifdef EGL_EXT_platform_base
> +     }
> +#endif
>  
>       ret = eglMakeCurrent(tri->egl->dpy, tri->egl_surface,
>                            tri->egl_surface, tri->egl->ctx);
> diff --git a/clients/window.c b/clients/window.c
> index dcff578..4b95399 100644
> --- a/clients/window.c
> +++ b/clients/window.c
> @@ -639,10 +639,21 @@ egl_window_surface_create(struct display *display,
>                                                  rectangle->width,
>                                                  rectangle->height);
>  
> -     surface->egl_surface = eglCreateWindowSurface(display->dpy,
> -                                                   display->argb_config,
> -                                                   surface->egl_window,
> -                                                   NULL);
> +#ifdef EGL_EXT_platform_base
> +     if (create_platform_window) {
> +             surface->egl_surface =
> +                     create_platform_window(display->dpy,
> +                                            display->argb_config,
> +                                            surface->egl_window, NULL);
> +     } else {
> +#endif
> +             surface->egl_surface =
> +                     eglCreateWindowSurface(display->dpy,
> +                                            display->argb_config,
> +                                            surface->egl_window, NULL);
> +#ifdef EGL_EXT_platform_base
> +     }
> +#endif
>  
>       surface->cairo_surface =
>               cairo_gl_surface_create_for_egl(display->argb_device,
> @@ -5351,6 +5362,7 @@ static const struct wl_registry_listener 
> registry_listener = {
>  
>  #ifdef EGL_EXT_platform_base
>  static PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = NULL;
> +static PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC create_platform_window = 
> NULL;
>  #endif
>  
>  #ifndef EGL_PLATFORM_WAYLAND_KHR
> @@ -5400,6 +5412,8 @@ init_egl(struct display *d)
>           || strstr(extensions, "EGL_KHR_platform_wayland")) {
>               get_platform_display =
>                       (void *) eglGetProcAddress("eglGetPlatformDisplayEXT");
> +             create_platform_window =
> +                     (void *) 
> eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT");
>       } else {
>               fprintf(stderr, "error: no wayland egl support\n");
>               return -1;
> diff --git a/tests/buffer-count-test.c b/tests/buffer-count-test.c
> index 06f0db3..529d450 100644
> --- a/tests/buffer-count-test.c
> +++ b/tests/buffer-count-test.c
> @@ -44,6 +44,7 @@ struct test_data {
>  
>  #ifdef EGL_EXT_platform_base
>  static PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = NULL;
> +static PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC create_platform_window = 
> NULL;
>  #endif
>  
>  static int
> @@ -80,6 +81,8 @@ init_egl(struct test_data *test_data)
>           || strstr(extensions, "EGL_KHR_platform_wayland")) {
>               get_platform_display =
>                       (void *) eglGetProcAddress("eglGetPlatformDisplayEXT");
> +             create_platform_window =
> +                     (void *) 
> eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT");
>       } else {
>               fprintf(stderr, "error: no wayland egl support\n");
>               return -1;
> @@ -120,11 +123,23 @@ init_egl(struct test_data *test_data)
>               wl_egl_window_create(surface->wl_surface,
>                                    surface->width,
>                                    surface->height);
> -     test_data->egl_surface =
> -             eglCreateWindowSurface(test_data->egl_dpy,
> -                                    test_data->egl_conf,
> -                                    (EGLNativeWindowType) native_window,
> -                                    NULL);
> +
> +#ifdef EGL_EXT_platform_base
> +     if (create_platform_window) {
> +             test_data->egl_surface =
> +                     create_platform_window(test_data->egl_dpy,
> +                                            test_data->egl_conf,
> +                                            (void *) native_window, NULL);
> +     } else {
> +#endif
> +             test_data->egl_surface =
> +                     eglCreateWindowSurface(test_data->egl_dpy,
> +                                            test_data->egl_conf,
> +                                            (EGLNativeWindowType) 
> native_window,
> +                                            NULL);
> +#ifdef EGL_EXT_platform_base
> +     }
> +#endif
>  
>       ret = eglMakeCurrent(test_data->egl_dpy, test_data->egl_surface,
>                            test_data->egl_surface, test_data->egl_ctx);
> -- 
> 2.1.4
> 
> _______________________________________________
> wayland-devel mailing list
> [email protected]
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to