platform: remove global variables

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
dev
Jonny Lamb 10 years ago committed by Pekka Paalanen
parent 0e2ab36df7
commit 759fbf4d0f
  1. 55
      shared/platform.h

@ -45,35 +45,33 @@ typedef void (*PFNEGLGETPLATFORMDISPLAYEXTPROC) (void);
typedef void (*PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC) (void);
#endif
static PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display_ext = NULL;
static PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC create_platform_window_surface_ext = NULL;
static inline void
weston_platform_get_egl_proc_addresses(void)
static inline void *
weston_platform_get_egl_proc_address(const char *address)
{
if (!get_platform_display_ext) {
const char *extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
if (strstr(extensions, "EGL_EXT_platform_wayland")
|| strstr(extensions, "EGL_KHR_platform_wayland")) {
get_platform_display_ext =
(void *) eglGetProcAddress("eglGetPlatformDisplayEXT");
create_platform_window_surface_ext =
(void *) eglGetProcAddress("eglCreatePlatformWindowSurfaceEXT");
}
const char *extensions = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
if (strstr(extensions, "EGL_EXT_platform_wayland")
|| strstr(extensions, "EGL_KHR_platform_wayland")) {
return (void *) eglGetProcAddress(address);
}
return NULL;
}
static inline EGLDisplay
weston_platform_get_egl_display(EGLenum platform, void *native_display,
const EGLint *attrib_list)
{
if (!get_platform_display_ext)
weston_platform_get_egl_proc_addresses();
static PFNEGLGETPLATFORMDISPLAYEXTPROC get_platform_display = NULL;
if (get_platform_display_ext)
return get_platform_display_ext(platform,
native_display, attrib_list);
if (!get_platform_display) {
get_platform_display = weston_platform_get_egl_proc_address(
"eglGetPlatformDisplayEXT");
}
if (get_platform_display)
return get_platform_display(platform,
native_display, attrib_list);
return eglGetDisplay((EGLNativeDisplayType) native_display);
}
@ -83,13 +81,18 @@ weston_platform_create_egl_window(EGLDisplay dpy, EGLConfig config,
void *native_window,
const EGLint *attrib_list)
{
if (!create_platform_window_surface_ext)
weston_platform_get_egl_proc_addresses();
static PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC
create_platform_window = NULL;
if (!create_platform_window) {
create_platform_window = weston_platform_get_egl_proc_address(
"eglCreatePlatformWindowSurfaceEXT");
}
if (create_platform_window_surface_ext)
return create_platform_window_surface_ext(dpy, config,
native_window,
attrib_list);
if (create_platform_window)
return create_platform_window(dpy, config,
native_window,
attrib_list);
return eglCreateWindowSurface(dpy, config,
(EGLNativeWindowType) native_window,

Loading…
Cancel
Save