From 4e1d7e92661bb1461b85fdbd4466905e01612dd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Camilla=20L=C3=B6wy?= Date: Thu, 7 Sep 2017 19:28:44 +0200 Subject: [PATCH] Cleanup Related to #786. --- README.md | 10 ++++- docs/compile.dox | 1 + src/egldevice_init.c | 88 ++++++++++++++++++---------------------- src/egldevice_monitor.c | 6 +-- src/egldevice_platform.h | 70 ++++++++++++++++++-------------- src/egldevice_window.c | 39 ++++++++---------- 6 files changed, 109 insertions(+), 105 deletions(-) diff --git a/README.md b/README.md index 40e9544f..507ce95f 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,9 @@ application development. It provides a simple, platform-independent API for creating windows, contexts and surfaces, reading input, handling events, etc. GLFW natively supports Windows, macOS and Linux and other Unix-like systems. -Experimental implementations for the Wayland protocol and the Mir display server -are available but not yet officially supported. +Experimental implementations for the Wayland protocol, the Mir display server +and direct rendering via EGLDevice are available but not yet officially +supported. GLFW is licensed under the [zlib/libpng license](http://www.glfw.org/license.html). @@ -91,6 +92,9 @@ GLFW itself depends only on the headers and libraries for your window system. The (experimental) Wayland backend also depends on the `extra-cmake-modules` package, which is used to generated Wayland protocol headers. +The (experimental) EGLDevice backend also depends on the `libdrm-dev` +development package. + The examples and test programs depend on a number of tiny libraries. These are located in the `deps/` directory. @@ -208,6 +212,7 @@ information on what to include when reporting a bug. - [X11] Bugfix: Incremental reading of selections was not supported (#275) - [X11] Bugfix: Selection I/O reported but did not support `COMPOUND_TEXT` - [X11] Bugfix: Latin-1 text read from selections was not converted to UTF-8 +- [Linux] Added experimental support for direct rendering via EGLDevice (#786) - [Linux] Moved to evdev for joystick input (#906,#1005) - [Linux] Bugfix: Event processing did not detect joystick disconnection (#932) - [Linux] Bugfix: The joystick device path could be truncated (#1025) @@ -282,6 +287,7 @@ skills. - David Carlier - Arturo Castro - Chi-kwan Chan + - Kamal Chandra - Ian Clarkson - Michał Cichoń - Lambert Clara diff --git a/docs/compile.dox b/docs/compile.dox index 35d65732..cc11a7ac 100644 --- a/docs/compile.dox +++ b/docs/compile.dox @@ -257,6 +257,7 @@ ramps and clipboard. The options are: - @b _GLFW_WAYLAND to use the Wayland API (experimental and incomplete) - @b _GLFW_MIR to use the Mir API (experimental and incomplete) - @b _GLFW_OSMESA to use the OSMesa API (headless and non-interactive) + - @b _GLFW_EGLDEVICE to use the EGLDevice API (experimental and incomplete) If you are building GLFW as a shared library / dynamic library / DLL then you must also define @b _GLFW_BUILD_DLL. Otherwise, you must not define it. diff --git a/src/egldevice_init.c b/src/egldevice_init.c index 1372895f..157383fe 100644 --- a/src/egldevice_init.c +++ b/src/egldevice_init.c @@ -1,5 +1,5 @@ //======================================================================== -// GLFW 3.2 EGLDevice - www.glfw.org +// GLFW 3.3 EGLDevice - www.glfw.org //------------------------------------------------------------------------ // Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. // @@ -28,44 +28,44 @@ #include -static GLFWbool initializeExtensions() +static GLFWbool initializeExtensions(void) { - _glfw.egldevice.eglQueryDevicesEXT = + _glfw.egldevice.QueryDevicesEXT = (PFNEGLQUERYDEVICESEXTPROC) - _glfw.egl.GetProcAddress("eglQueryDevicesEXT"); - _glfw.egldevice.eglQueryDeviceStringEXT = + eglGetProcAddress("eglQueryDevicesEXT"); + _glfw.egldevice.QueryDeviceStringEXT = (PFNEGLQUERYDEVICESTRINGEXTPROC) - _glfw.egl.GetProcAddress("eglQueryDeviceStringEXT"); - _glfw.egldevice.eglGetPlatformDisplayEXT = + eglGetProcAddress("eglQueryDeviceStringEXT"); + _glfw.egldevice.GetPlatformDisplayEXT = (PFNEGLGETPLATFORMDISPLAYEXTPROC) - _glfw.egl.GetProcAddress("eglGetPlatformDisplayEXT"); - _glfw.egldevice.eglGetOutputLayersEXT = + eglGetProcAddress("eglGetPlatformDisplayEXT"); + _glfw.egldevice.GetOutputLayersEXT = (PFNEGLGETOUTPUTLAYERSEXTPROC) - _glfw.egl.GetProcAddress("eglGetOutputLayersEXT"); - _glfw.egldevice.eglCreateStreamKHR = + eglGetProcAddress("eglGetOutputLayersEXT"); + _glfw.egldevice.CreateStreamKHR = (PFNEGLCREATESTREAMKHRPROC) - _glfw.egl.GetProcAddress("eglCreateStreamKHR"); - _glfw.egldevice.eglDestroyStreamKHR = + eglGetProcAddress("eglCreateStreamKHR"); + _glfw.egldevice.DestroyStreamKHR = (PFNEGLDESTROYSTREAMKHRPROC) - _glfw.egl.GetProcAddress("eglDestroyStreamKHR"); - _glfw.egldevice.eglStreamConsumerOutputEXT = + eglGetProcAddress("eglDestroyStreamKHR"); + _glfw.egldevice.StreamConsumerOutputEXT = (PFNEGLSTREAMCONSUMEROUTPUTEXTPROC) - _glfw.egl.GetProcAddress("eglStreamConsumerOutputEXT"); - _glfw.egldevice.eglCreateStreamProducerSurfaceKHR = + eglGetProcAddress("eglStreamConsumerOutputEXT"); + _glfw.egldevice.CreateStreamProducerSurfaceKHR = (PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC) - _glfw.egl.GetProcAddress("eglCreateStreamProducerSurfaceKHR"); + eglGetProcAddress("eglCreateStreamProducerSurfaceKHR"); - if(!_glfw.egldevice.eglQueryDevicesEXT || - !_glfw.egldevice.eglQueryDeviceStringEXT || - !_glfw.egldevice.eglGetPlatformDisplayEXT || - !_glfw.egldevice.eglGetOutputLayersEXT || - !_glfw.egldevice.eglCreateStreamKHR || - !_glfw.egldevice.eglDestroyStreamKHR || - !_glfw.egldevice.eglStreamConsumerOutputEXT || - !_glfw.egldevice.eglCreateStreamProducerSurfaceKHR) + if(!_glfw.egldevice.QueryDevicesEXT || + !_glfw.egldevice.QueryDeviceStringEXT || + !_glfw.egldevice.GetPlatformDisplayEXT || + !_glfw.egldevice.GetOutputLayersEXT || + !_glfw.egldevice.CreateStreamKHR || + !_glfw.egldevice.DestroyStreamKHR || + !_glfw.egldevice.StreamConsumerOutputEXT || + !_glfw.egldevice.CreateStreamProducerSurfaceKHR) { _glfwInputError(GLFW_PLATFORM_ERROR, - "EGLDevice: Missing required function(s)"); + "EGLDevice: Failed to find required EGL extension functions"); return GLFW_FALSE; } return GLFW_TRUE; @@ -90,7 +90,7 @@ static EGLDeviceEXT getEGLDevice(void) "EGLDevice: EGL_EXT_device base extensions not found"); } - if (!_glfw.egldevice.eglQueryDevicesEXT(0, NULL, &num_devs)) + if (!eglQueryDevicesEXT(0, NULL, &num_devs)) { _glfwInputError(GLFW_PLATFORM_ERROR, "EGLDevice: Falied to query EGLDevice"); @@ -98,7 +98,7 @@ static EGLDeviceEXT getEGLDevice(void) if (num_devs < 1) { _glfwInputError(GLFW_PLATFORM_ERROR, - "EGLDevice: No Devices Found"); + "EGLDevice: No devices found"); } egl_devs = calloc(sizeof(EGLDeviceEXT), num_devs); @@ -109,7 +109,7 @@ static EGLDeviceEXT getEGLDevice(void) } // Select suitable device - if (!_glfw.egldevice.eglQueryDevicesEXT(num_devs, egl_devs, &num_devs)) + if (!eglQueryDevicesEXT(num_devs, egl_devs, &num_devs)) { _glfwInputError(GLFW_PLATFORM_ERROR, "EGLDevice: Failed to query EGL devices"); @@ -119,8 +119,7 @@ static EGLDeviceEXT getEGLDevice(void) { const char* deviceExtensionString; - deviceExtensionString = - _glfw.egldevice.eglQueryDeviceStringEXT(egl_devs[i], EGL_EXTENSIONS); + deviceExtensionString = eglQueryDeviceStringEXT(egl_devs[i], EGL_EXTENSIONS); if (_glfwStringInExtensionString("EGL_EXT_device_drm", deviceExtensionString)) { @@ -134,8 +133,7 @@ static EGLDeviceEXT getEGLDevice(void) if (eglDevice == EGL_NO_DEVICE_EXT) { _glfwInputError(GLFW_PLATFORM_ERROR, - "EGLDevice: Missing required extension:" - " EGL_EXT_device_drm"); + "EGLDevice: Missing required extension EGL_EXT_device_drm"); } return eglDevice; } @@ -145,8 +143,7 @@ static int getDRMFd(EGLDeviceEXT eglDevice) int drm_fd; const char* drmName; - drmName = _glfw.egldevice.eglQueryDeviceStringEXT(eglDevice, - EGL_DRM_DEVICE_FILE_EXT); + drmName = eglQueryDeviceStringEXT(eglDevice, EGL_DRM_DEVICE_FILE_EXT); if (!drmName || (strnlen(drmName, PATH_MAX) == 0)) { _glfwInputError(GLFW_PLATFORM_ERROR, @@ -173,8 +170,7 @@ static GLFWbool initEGLDisplay(EGLDeviceEXT egl_dev, int drm_fd) EGL_NONE }; - _glfw.egl.display = - _glfw.egldevice.eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT, + _glfw.egl.display = eglGetPlatformDisplayEXT(EGL_PLATFORM_DEVICE_EXT, (void*)egl_dev, displayAttribs); if (_glfw.egl.display == EGL_NO_DISPLAY) @@ -196,8 +192,7 @@ static GLFWbool initEGLDisplay(EGLDeviceEXT egl_dev, int drm_fd) displayExtensionString)) { _glfwInputError(GLFW_PLATFORM_ERROR, - "EGLDevice: Missing required extension:" - " EGL_EXT_output_base"); + "EGLDevice: Missing required extension EGL_EXT_output_base"); return GLFW_FALSE; } @@ -205,8 +200,7 @@ static GLFWbool initEGLDisplay(EGLDeviceEXT egl_dev, int drm_fd) displayExtensionString)) { _glfwInputError(GLFW_PLATFORM_ERROR, - "EGLDevice: Missing required extension:" - " EGL_EXT_output_drm"); + "EGLDevice: Missing required extension EGL_EXT_output_drm"); return GLFW_FALSE; } @@ -214,8 +208,7 @@ static GLFWbool initEGLDisplay(EGLDeviceEXT egl_dev, int drm_fd) displayExtensionString)) { _glfwInputError(GLFW_PLATFORM_ERROR, - "EGLDevice: Missing required extension:" - " EGL_KHR_stream"); + "EGLDevice: Missing required extension EGL_KHR_stream"); return GLFW_FALSE; } @@ -223,16 +216,14 @@ static GLFWbool initEGLDisplay(EGLDeviceEXT egl_dev, int drm_fd) displayExtensionString)) { _glfwInputError(GLFW_PLATFORM_ERROR, - "EGLDevice: Missing required extension:" - " EGL_KHR_stream_producer_eglsurface"); + "EGLDevice: Missing required extension EGL_KHR_stream_producer_eglsurface"); return GLFW_FALSE; } if (!_glfwStringInExtensionString("EGL_EXT_stream_consumer_egloutput", displayExtensionString)) { _glfwInputError(GLFW_PLATFORM_ERROR, - "EGLDevice: Missing required extension:" - " EGL_EXT_stream_consumer_egloutput"); + "EGLDevice: Missing required extension EGL_EXT_stream_consumer_egloutput"); return GLFW_FALSE; } @@ -290,3 +281,4 @@ const char* _glfwPlatformGetVersionString(void) #endif ; } + diff --git a/src/egldevice_monitor.c b/src/egldevice_monitor.c index 4024df99..ed9d74a1 100644 --- a/src/egldevice_monitor.c +++ b/src/egldevice_monitor.c @@ -1,5 +1,5 @@ //======================================================================== -// GLFW 3.2 EGLDevice - www.glfw.org +// GLFW 3.3 EGLDevice - www.glfw.org //------------------------------------------------------------------------ // Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. // @@ -58,8 +58,7 @@ static GLFWbool pickConnector(_GLFWmonitor* monitor, int drm_fd, drmModeRes* res drmModeGetEncoder(drm_fd, monitor->egldevice.encId); if (!enc_info) { _glfwInputError(GLFW_PLATFORM_ERROR, - "EGLDevice: Unable to query DRM-KMS" - " information for connector index %d", i); + "EGLDevice: Unable to query DRM-KMS information for connector index %d", i); } // Select the modesize @@ -163,3 +162,4 @@ void _glfwPlatformSetGammaRamp(_GLFWmonitor* monitor, const GLFWgammaramp* ramp) _glfwInputError(GLFW_PLATFORM_ERROR, "EGLDevice: _glfwPlatformSetGammaRamp not implemented"); } + diff --git a/src/egldevice_platform.h b/src/egldevice_platform.h index 0fdfe6be..ce3867e7 100644 --- a/src/egldevice_platform.h +++ b/src/egldevice_platform.h @@ -1,5 +1,5 @@ //======================================================================== -// GLFW 3.2 EGLDevice - www.glfw.org +// GLFW 3.3 EGLDevice - www.glfw.org //------------------------------------------------------------------------ // Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. // @@ -24,9 +24,6 @@ // //======================================================================== -#ifndef _glfw3_egldevice_h_ -#define _glfw3_egldevice_h_ - #include #include #include @@ -77,6 +74,16 @@ typedef EGLBoolean (EGLAPIENTRY * PFNEGLSTREAMCONSUMEROUTPUTEXTPROC)(EGLDisplay, typedef EGLSurface (EGLAPIENTRY * PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)(EGLDisplay,EGLConfig,EGLStreamKHR,const EGLint*); typedef EGLBoolean (EGLAPIENTRY * PFNEGLSTREAMATTRIBKHRPROC)(EGLDisplay,EGLStreamKHR,EGLenum,EGLint); typedef EGLBoolean (EGLAPIENTRY * PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC)(EGLDisplay,EGLStreamKHR,const EGLAttrib*); +#define eglQueryDevicesEXT _glfw.egldevice.QueryDevicesEXT +#define eglQueryDeviceStringEXT _glfw.egldevice.QueryDeviceStringEXT +#define eglGetPlatformDisplayEXT _glfw.egldevice.GetPlatformDisplayEXT +#define eglGetOutputLayersEXT _glfw.egldevice.GetOutputLayersEXT +#define eglCreateStreamKHR _glfw.egldevice.CreateStreamKHR +#define eglDestroyStreamKHR _glfw.egldevice.DestroyStreamKHR +#define eglStreamConsumerOutputEXT _glfw.egldevice.StreamConsumerOutputEXT +#define eglCreateStreamProducerSurfaceKHR _glfw.egldevice.CreateStreamProducerSurfaceKHR +#define eglStreamAttribKHR _glfw.egldevice.StreamAttribKHR +#define eglStreamConsumerAcquireAttribKHR _glfw.egldevice.StreamConsumerAcquireAttribKHR #define _glfw_dlopen(name) dlopen(name, RTLD_LAZY | RTLD_LOCAL) #define _glfw_dlclose(handle) dlclose(handle) @@ -85,17 +92,17 @@ typedef EGLBoolean (EGLAPIENTRY * PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC)(EGLD #define _GLFW_EGL_NATIVE_DISPLAY EGL_DEFAULT_DISPLAY #define _GLFW_EGL_NATIVE_WINDOW ((EGLNativeWindowType)window->egldevice.handle) -#define _GLFW_PLATFORM_WINDOW_STATE _GLFWwindowEgldevice egldevice -#define _GLFW_PLATFORM_LIBRARY_WINDOW_STATE _GLFWlibraryEgldevice egldevice -#define _GLFW_PLATFORM_MONITOR_STATE _GLFWmonitorEgldevice egldevice -#define _GLFW_PLATFORM_CURSOR_STATE _GLFWcursorEgldevice egldevice +#define _GLFW_PLATFORM_WINDOW_STATE _GLFWwindowEGLDevice egldevice +#define _GLFW_PLATFORM_LIBRARY_WINDOW_STATE _GLFWlibraryEGLDevice egldevice +#define _GLFW_PLATFORM_MONITOR_STATE _GLFWmonitorEGLDevice egldevice +#define _GLFW_PLATFORM_CURSOR_STATE _GLFWcursorEGLDevice egldevice #define _GLFW_PLATFORM_CONTEXT_STATE #define _GLFW_PLATFORM_LIBRARY_CONTEXT_STATE -// EGLDEVICE-specific per-window data +// EGLDevice-specific per-window data // -typedef struct _GLFWwindowEgldevice +typedef struct _GLFWwindowEGLDevice { int xsurfsize, ysurfsize; int xoffset, yoffset; @@ -106,38 +113,39 @@ typedef struct _GLFWwindowEgldevice EGLDisplay handle; EGLOutputLayerEXT eglLayer; EGLStreamKHR eglStream; -} _GLFWwindowEgldevice; +} _GLFWwindowEGLDevice; -// EGLDEVICE-specific global data +// EGLDevice-specific global data // -typedef struct _GLFWlibraryEgldevice +typedef struct _GLFWlibraryEGLDevice { int drmFd; - PFNEGLQUERYDEVICESEXTPROC eglQueryDevicesEXT; - PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT; - PFNEGLGETPLATFORMDISPLAYEXTPROC eglGetPlatformDisplayEXT; - PFNEGLGETOUTPUTLAYERSEXTPROC eglGetOutputLayersEXT; - PFNEGLCREATESTREAMKHRPROC eglCreateStreamKHR; - PFNEGLDESTROYSTREAMKHRPROC eglDestroyStreamKHR; - PFNEGLSTREAMCONSUMEROUTPUTEXTPROC eglStreamConsumerOutputEXT; - PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC eglCreateStreamProducerSurfaceKHR; - PFNEGLSTREAMATTRIBKHRPROC eglStreamAttribKHR; - PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC eglStreamConsumerAcquireAttribKHR; -} _GLFWlibraryEgldevice; + PFNEGLQUERYDEVICESEXTPROC QueryDevicesEXT; + PFNEGLQUERYDEVICESTRINGEXTPROC QueryDeviceStringEXT; + PFNEGLGETPLATFORMDISPLAYEXTPROC GetPlatformDisplayEXT; + PFNEGLGETOUTPUTLAYERSEXTPROC GetOutputLayersEXT; + PFNEGLCREATESTREAMKHRPROC CreateStreamKHR; + PFNEGLDESTROYSTREAMKHRPROC DestroyStreamKHR; + PFNEGLSTREAMCONSUMEROUTPUTEXTPROC StreamConsumerOutputEXT; + PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC CreateStreamProducerSurfaceKHR; + PFNEGLSTREAMATTRIBKHRPROC StreamAttribKHR; + PFNEGLSTREAMCONSUMERACQUIREATTRIBKHRPROC StreamConsumerAcquireAttribKHR; +} _GLFWlibraryEGLDevice; -// EGLDEVICE-specific per-monitor data +// EGLDevice-specific per-monitor data // -typedef struct _GLFWmonitorEgldevice { +typedef struct _GLFWmonitorEGLDevice +{ int crtcIndex; uint32_t connId, encId, crtcId; -} _GLFWmonitorEgldevice; +} _GLFWmonitorEGLDevice; -// EGLDEVICE-specific per-cursor data +// EGLDevice-specific per-cursor data // -typedef struct _GLFWcursorEgldevice { -} _GLFWcursorEgldevice; +typedef struct _GLFWcursorEGLDevice +{ +} _GLFWcursorEGLDevice; void _glfwPollMonitorsEGLDevice(void); -#endif // _glfw3_egldevice_platform_h_ diff --git a/src/egldevice_window.c b/src/egldevice_window.c index 55b4d5cb..34ea960e 100644 --- a/src/egldevice_window.c +++ b/src/egldevice_window.c @@ -1,5 +1,5 @@ //======================================================================== -// GLFW 3.2 EGLDevice - www.glfw.org +// GLFW 3.3 EGLDevice - www.glfw.org //------------------------------------------------------------------------ // Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. // @@ -57,9 +57,9 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window, layerAttribs[0] = EGL_DRM_CRTC_EXT; layerAttribs[1] = (EGLAttrib)monitor->egldevice.crtcId; - if (!_glfw.egldevice.eglGetOutputLayersEXT(_glfw.egl.display, layerAttribs, - &window->egldevice.eglLayer, - 1, &n) || !n) + if (!eglGetOutputLayersEXT(_glfw.egl.display, layerAttribs, + &window->egldevice.eglLayer, + 1, &n) || !n) { _glfwInputError(GLFW_PLATFORM_ERROR, "EGLDevice: Unable to obtain EGLOutputLayer"); @@ -68,7 +68,7 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window, // Create a stream and connect to the output window->egldevice.eglStream = - _glfw.egldevice.eglCreateStreamKHR(_glfw.egl.display, streamAttribs); + eglCreateStreamKHR(_glfw.egl.display, streamAttribs); if (window->egldevice.eglStream == EGL_NO_STREAM_KHR) { _glfwInputError(GLFW_PLATFORM_ERROR, @@ -76,9 +76,9 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window, eglGetError()); return GLFW_FALSE; } - if (!_glfw.egldevice.eglStreamConsumerOutputEXT(_glfw.egl.display, - window->egldevice.eglStream, - window->egldevice.eglLayer)) + if (!eglStreamConsumerOutputEXT(_glfw.egl.display, + window->egldevice.eglStream, + window->egldevice.eglLayer)) { _glfwInputError(GLFW_PLATFORM_ERROR, "EGLDevice: Unable to connect stream (error 0x%x)", @@ -90,15 +90,14 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window, surfaceAttribs[1] = window->egldevice.xsurfsize; surfaceAttribs[3] = window->egldevice.ysurfsize; window->context.egl.surface = - _glfw.egldevice.eglCreateStreamProducerSurfaceKHR(_glfw.egl.display, - window->context.egl.config, - window->egldevice.eglStream, - surfaceAttribs); + eglCreateStreamProducerSurfaceKHR(_glfw.egl.display, + window->context.egl.config, + window->egldevice.eglStream, + surfaceAttribs); if (window->context.egl.surface == EGL_NO_SURFACE) { _glfwInputError(GLFW_PLATFORM_ERROR, - "EGLDevice: Unable to create rendering" - " surface (error 0x%x)", eglGetError()); + "EGLDevice: Unable to create rendering surface (error 0x%x)", eglGetError()); return GLFW_FALSE; } @@ -111,10 +110,7 @@ void _glfwPlatformDestroyWindow(_GLFWwindow* window) window->context.destroy(window); if (window->egldevice.eglStream != EGL_NO_STREAM_KHR) - { - _glfw.egldevice.eglDestroyStreamKHR(_glfw.egl.display, - window->egldevice.eglStream); - } + eglDestroyStreamKHR(_glfw.egl.display, window->egldevice.eglStream); } void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title) @@ -307,7 +303,7 @@ int _glfwPlatformWindowMaximized(_GLFWwindow* window) void _glfwPlatformPollEvents(void) { - return; + _glfwDetectJoystickConnectionLinux(); } void _glfwPlatformWaitEvents(void) @@ -419,7 +415,7 @@ int _glfwPlatformGetPhysicalDevicePresentationSupport(VkInstance instance, { _glfwInputError(GLFW_PLATFORM_ERROR, "EGLDevice: _glfwPlatformGetPhysicalDevicePresentationSupport not supported"); - return 0; + return GLFW_FALSE; } VkResult _glfwPlatformCreateWindowSurface(VkInstance instance, @@ -429,5 +425,6 @@ VkResult _glfwPlatformCreateWindowSurface(VkInstance instance, { _glfwInputError(GLFW_PLATFORM_ERROR, "EGLDevice: _glfwPlatformCreateWindowSurface not supported"); - return (VkResult)NULL; + return VK_ERROR_INITIALIZATION_FAILED; } +