mirror of
https://gitlab.freedesktop.org/wayland/weston
synced 2024-10-07 05:54:56 +00:00
platform: remove global variables
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
This commit is contained in:
parent
0e2ab36df7
commit
759fbf4d0f
|
@ -45,34 +45,32 @@ 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");
|
||||
}
|
||||
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,
|
||||
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,11 +81,16 @@ 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_surface_ext)
|
||||
return create_platform_window_surface_ext(dpy, config,
|
||||
if (!create_platform_window) {
|
||||
create_platform_window = weston_platform_get_egl_proc_address(
|
||||
"eglCreatePlatformWindowSurfaceEXT");
|
||||
}
|
||||
|
||||
if (create_platform_window)
|
||||
return create_platform_window(dpy, config,
|
||||
native_window,
|
||||
attrib_list);
|
||||
|
||||
|
|
Loading…
Reference in a new issue