Compare commits

...

5 Commits

Author SHA1 Message Date
WillyJL
9cbd393a64
Merge eb96b4aad5 into 0d2d85d19c 2025-08-18 12:02:21 +00:00
Doug Binks
0d2d85d19c Revert "Wayland: Keyboard leave event handler now processes key repeats" 2025-08-15 11:27:59 +02:00
Willy-JL
eb96b4aad5 Last missing _GNU_SOURCE 2024-11-22 05:59:44 +00:00
Willy-JL
80b7713126 Fix linux/input-event-codes.h when not present 2024-11-22 05:50:28 +00:00
Willy-JL
e3b41e1cf1 Fix time.h includes missing _GNU_SOURCE 2024-11-22 05:44:51 +00:00
5 changed files with 10 additions and 18 deletions

View File

@ -24,6 +24,8 @@
//
//========================================================================
#define _GNU_SOURCE
#if defined(_MSC_VER)
// Make MS math.h define M_PI
#define _USE_MATH_DEFINES

View File

@ -25,6 +25,8 @@
//
//========================================================================
#define _GNU_SOURCE
#include "internal.h"
#if defined(GLFW_BUILD_LINUX_JOYSTICK)

View File

@ -25,6 +25,8 @@
//
//========================================================================
#define _GNU_SOURCE
#include "internal.h"
#if defined(GLFW_BUILD_POSIX_TIMER)

View File

@ -24,6 +24,8 @@
//
//========================================================================
#define _GNU_SOURCE
#include "internal.h"
#if defined(_GLFW_WAYLAND)

View File

@ -40,7 +40,9 @@
#include <sys/mman.h>
#include <sys/timerfd.h>
#include <poll.h>
#if __has_include(<linux/input-event-codes.h>)
#include <linux/input-event-codes.h>
#endif
#include "wayland-client-protocol.h"
#include "xdg-shell-client-protocol.h"
@ -1778,24 +1780,6 @@ static void keyboardHandleLeave(void* userData,
if (!window)
return;
// Handle any key repeats up to this point. We don't poll as this should be infrequent.
uint64_t repeats;
if (read(_glfw.wl.keyRepeatTimerfd, &repeats, sizeof(repeats)) == 8)
{
if(_glfw.wl.keyboardFocus)
{
for (uint64_t i = 0; i < repeats; i++)
{
_glfwInputKey(_glfw.wl.keyboardFocus,
translateKey(_glfw.wl.keyRepeatScancode),
_glfw.wl.keyRepeatScancode,
GLFW_PRESS,
_glfw.wl.xkb.modifiers);
inputText(_glfw.wl.keyboardFocus, _glfw.wl.keyRepeatScancode);
}
}
}
struct itimerspec timer = {0};
timerfd_settime(_glfw.wl.keyRepeatTimerfd, 0, &timer, NULL);