Compare commits

...

4 Commits

Author SHA1 Message Date
Brad Smith
de5a14475b
Merge baf3290308 into 506c11ba43 2025-07-05 14:05:35 -05:00
Jan Schürkamp
506c11ba43
Wayland: Ignore key repeat events when no window has keyboard focus (#2732)
* Wayland: Ignore key repeat events when no window has keyboard focus
2025-07-05 19:16:08 +02:00
Doug Binks
d30d63313c Examples: disable MSVC warning C5287 in nuklear.h
Latest MSVC has a warning `operands are different enum types` which this disables until upstream nuklear fixes this
2025-07-05 19:12:15 +02:00
Brad Smith
baf3290308 Wayland: Fix sonames for loaded libraries on OpenBSD 2024-11-26 20:03:15 -05:00
5 changed files with 41 additions and 10 deletions

View File

@ -229,7 +229,7 @@ video tutorials.
- Brandon Schaefer - Brandon Schaefer
- Sebastian Schuberth - Sebastian Schuberth
- Scr3amer - Scr3amer
- Jan Schuerkamp - Jan Schürkamp
- Christian Sdunek - Christian Sdunek
- Matt Sealey - Matt Sealey
- Steve Sexton - Steve Sexton

View File

@ -129,6 +129,7 @@ information on what to include when reporting a bug.
- [Wayland] Bugfix: The fractional scaling related objects were not destroyed - [Wayland] Bugfix: The fractional scaling related objects were not destroyed
- [Wayland] Bugfix: `glfwInit` would segfault on compositor with no seat (#2517) - [Wayland] Bugfix: `glfwInit` would segfault on compositor with no seat (#2517)
- [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault - [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault
- [Wayland] Bugfix: Ignore key repeat events when no window has keyboard focus (#2727)
- [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631) - [X11] Bugfix: Running without a WM could trigger an assert (#2593,#2601,#2631)
- [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface` - [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface`
- [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless` - [Null] Added EGL context creation on Mesa via `EGL_MESA_platform_surfaceless`

5
deps/nuklear.h vendored
View File

@ -423,6 +423,11 @@ NK_STATIC_ASSERT(sizeof(nk_rune) >= 4);
NK_STATIC_ASSERT(sizeof(nk_size) >= sizeof(void*)); NK_STATIC_ASSERT(sizeof(nk_size) >= sizeof(void*));
NK_STATIC_ASSERT(sizeof(nk_ptr) >= sizeof(void*)); NK_STATIC_ASSERT(sizeof(nk_ptr) >= sizeof(void*));
#if defined(_MSC_VER)
/* disable `operands are different enum types` warning on MSVC */
#pragma warning( disable: 5287 )
#endif
/* ============================================================================ /* ============================================================================
* *
* API * API

View File

@ -518,7 +518,12 @@ GLFWbool _glfwConnectWayland(int platformID, _GLFWplatform* platform)
.createWindowSurface = _glfwCreateWindowSurfaceWayland .createWindowSurface = _glfwCreateWindowSurfaceWayland
}; };
void* module = _glfwPlatformLoadModule("libwayland-client.so.0"); void* module;
#if defined(__OpenBSD__)
module = _glfwPlatformLoadModule("libwayland-client.so");
#else
module = _glfwPlatformLoadModule("libwayland-client.so.0");
#endif
if (!module) if (!module)
{ {
if (platformID == GLFW_PLATFORM_WAYLAND) if (platformID == GLFW_PLATFORM_WAYLAND)
@ -631,7 +636,11 @@ int _glfwInitWayland(void)
return GLFW_FALSE; return GLFW_FALSE;
} }
#if defined(__OpenBSD__)
_glfw.wl.cursor.handle = _glfwPlatformLoadModule("libwayland-cursor.so");
#else
_glfw.wl.cursor.handle = _glfwPlatformLoadModule("libwayland-cursor.so.0"); _glfw.wl.cursor.handle = _glfwPlatformLoadModule("libwayland-cursor.so.0");
#endif
if (!_glfw.wl.cursor.handle) if (!_glfw.wl.cursor.handle)
{ {
_glfwInputError(GLFW_PLATFORM_ERROR, _glfwInputError(GLFW_PLATFORM_ERROR,
@ -648,7 +657,11 @@ int _glfwInitWayland(void)
_glfw.wl.cursor.image_get_buffer = (PFN_wl_cursor_image_get_buffer) _glfw.wl.cursor.image_get_buffer = (PFN_wl_cursor_image_get_buffer)
_glfwPlatformGetModuleSymbol(_glfw.wl.cursor.handle, "wl_cursor_image_get_buffer"); _glfwPlatformGetModuleSymbol(_glfw.wl.cursor.handle, "wl_cursor_image_get_buffer");
#if defined(__OpenBSD__)
_glfw.wl.egl.handle = _glfwPlatformLoadModule("libwayland-egl.so");
#else
_glfw.wl.egl.handle = _glfwPlatformLoadModule("libwayland-egl.so.1"); _glfw.wl.egl.handle = _glfwPlatformLoadModule("libwayland-egl.so.1");
#endif
if (!_glfw.wl.egl.handle) if (!_glfw.wl.egl.handle)
{ {
_glfwInputError(GLFW_PLATFORM_ERROR, _glfwInputError(GLFW_PLATFORM_ERROR,
@ -663,7 +676,11 @@ int _glfwInitWayland(void)
_glfw.wl.egl.window_resize = (PFN_wl_egl_window_resize) _glfw.wl.egl.window_resize = (PFN_wl_egl_window_resize)
_glfwPlatformGetModuleSymbol(_glfw.wl.egl.handle, "wl_egl_window_resize"); _glfwPlatformGetModuleSymbol(_glfw.wl.egl.handle, "wl_egl_window_resize");
#if defined(__OpenBSD__)
_glfw.wl.xkb.handle = _glfwPlatformLoadModule("libxkbcommon.so");
#else
_glfw.wl.xkb.handle = _glfwPlatformLoadModule("libxkbcommon.so.0"); _glfw.wl.xkb.handle = _glfwPlatformLoadModule("libxkbcommon.so.0");
#endif
if (!_glfw.wl.xkb.handle) if (!_glfw.wl.xkb.handle)
{ {
_glfwInputError(GLFW_PLATFORM_ERROR, _glfwInputError(GLFW_PLATFORM_ERROR,
@ -743,7 +760,11 @@ int _glfwInitWayland(void)
} }
if (_glfw.hints.init.wl.libdecorMode == GLFW_WAYLAND_PREFER_LIBDECOR) if (_glfw.hints.init.wl.libdecorMode == GLFW_WAYLAND_PREFER_LIBDECOR)
#if defined(__OpenBSD__)
_glfw.wl.libdecor.handle = _glfwPlatformLoadModule("libdecor-0.so");
#else
_glfw.wl.libdecor.handle = _glfwPlatformLoadModule("libdecor-0.so.0"); _glfw.wl.libdecor.handle = _glfwPlatformLoadModule("libdecor-0.so.0");
#endif
if (_glfw.wl.libdecor.handle) if (_glfw.wl.libdecor.handle)
{ {

View File

@ -1266,6 +1266,8 @@ static void handleEvents(double* timeout)
uint64_t repeats; uint64_t repeats;
if (read(_glfw.wl.keyRepeatTimerfd, &repeats, sizeof(repeats)) == 8) if (read(_glfw.wl.keyRepeatTimerfd, &repeats, sizeof(repeats)) == 8)
{
if(_glfw.wl.keyboardFocus)
{ {
for (uint64_t i = 0; i < repeats; i++) for (uint64_t i = 0; i < repeats; i++)
{ {
@ -1279,6 +1281,8 @@ static void handleEvents(double* timeout)
event = GLFW_TRUE; event = GLFW_TRUE;
} }
}
} }
if (fds[CURSOR_FD].revents & POLLIN) if (fds[CURSOR_FD].revents & POLLIN)