[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 4ac4cec652f: Prevent freezes on macOS (bug#69561)
From: |
Gerd Moellmann |
Subject: |
master 4ac4cec652f: Prevent freezes on macOS (bug#69561) |
Date: |
Wed, 13 Mar 2024 02:10:53 -0400 (EDT) |
branch: master
commit 4ac4cec652ffaca4333d8f297b8a6c0e5bd79c68
Author: Gerd Möllmann <gerd@gnu.org>
Commit: Gerd Möllmann <gerd@gnu.org>
Prevent freezes on macOS (bug#69561)
* src/nsterm.m (ns_select_1): Store pending input_events. Always call
[NSApp run].
---
src/nsterm.m | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/src/nsterm.m b/src/nsterm.m
index f094b145fe3..f161edc4ac2 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -4739,12 +4739,15 @@ ns_select_1 (int nfds, fd_set *readfds, fd_set
*writefds,
check_native_fs ();
#endif
- if (hold_event_q.nr > 0 && !run_loop_only)
+ /* If there are input events pending, store them so that Emacs can
+ recognize C-g. (And we must make sure [NSApp run] is called in
+ this function, so that C-g has a chance to land in
+ hold_event_q.) */
+ if (hold_event_q.nr > 0)
{
- /* We already have events pending. */
- raise (SIGIO);
- errno = EINTR;
- return -1;
+ for (int i = 0; i < hold_event_q.nr; ++i)
+ kbd_buffer_store_event_hold (&hold_event_q.q[i], NULL);
+ hold_event_q.nr = 0;
}
eassert (nfds <= FD_SETSIZE);
@@ -4757,8 +4760,8 @@ ns_select_1 (int nfds, fd_set *readfds, fd_set *writefds,
if (NSApp == nil
|| ![NSThread isMainThread]
|| (timeout && timeout->tv_sec == 0 && timeout->tv_nsec == 0))
- return thread_select (pselect, nfds, readfds, writefds,
- exceptfds, timeout, sigmask);
+ thread_select (pselect, nfds, readfds, writefds,
+ exceptfds, timeout, sigmask);
else
{
struct timespec t = {0, 0};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 4ac4cec652f: Prevent freezes on macOS (bug#69561),
Gerd Moellmann <=