Compare commits

...

4 Commits

Author SHA1 Message Date
Mingjie Shen
c15449f6b5
Merge 2fa2a9480a into 506c11ba43 2025-07-07 02:02:07 +02: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
Mingjie Shen
2fa2a9480a Fix undefined behavior of signed integer overflow
Testing for overflow by adding a value to a variable to see if it "wraps
around" works only for unsigned integer values. Signed integer overflow
is undefined behavior in C and C++.
2024-02-13 14:02:31 -05:00
5 changed files with 23 additions and 12 deletions

View File

@ -229,7 +229,7 @@ video tutorials.
- Brandon Schaefer
- Sebastian Schuberth
- Scr3amer
- Jan Schuerkamp
- Jan Schürkamp
- Christian Sdunek
- Matt Sealey
- 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: `glfwInit` would segfault on compositor with no seat (#2517)
- [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)
- [Null] Added Vulkan 'window' surface creation via `VK_EXT_headless_surface`
- [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_ptr) >= sizeof(void*));
#if defined(_MSC_VER)
/* disable `operands are different enum types` warning on MSVC */
#pragma warning( disable: 5287 )
#endif
/* ============================================================================
*
* API

View File

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

View File

@ -36,6 +36,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
#include "linmath.h"
@ -103,7 +104,7 @@ static void key_callback(GLFWwindow* window, int key, int scancode, int action,
{
case GLFW_KEY_UP:
{
if (swap_interval + 1 > swap_interval)
if (swap_interval <= INT_MAX - 1)
set_swap_interval(window, swap_interval + 1);
break;
}
@ -112,12 +113,12 @@ static void key_callback(GLFWwindow* window, int key, int scancode, int action,
{
if (swap_tear)
{
if (swap_interval - 1 < swap_interval)
if (swap_interval >= INT_MIN + 1)
set_swap_interval(window, swap_interval - 1);
}
else
{
if (swap_interval - 1 >= 0)
if (swap_interval >= 1)
set_swap_interval(window, swap_interval - 1);
}
break;