diff --git a/src/ChangeLog b/src/ChangeLog index 64adec7491a..d88e43b2b7f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-11-17 Jan Djärv + + * nsterm.m (hold_event): Set send_appdefined to YES (Bug#12834). + (ns_select): Return at once if events are held (Bug#12834). + 2012-11-16 enami tsugutomo * unexelf.c (ELFSIZE) [__NetBSD__ && _LP64]: Set to 64. diff --git a/src/nsterm.m b/src/nsterm.m index f4982e0a7cb..9d52bd7f52b 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -314,6 +314,7 @@ Updated by Christian Limpach (chris@nice.ch) hold_event_q.q[hold_event_q.nr++] = *event; /* Make sure ns_read_socket is called, i.e. we have input. */ kill (0, SIGIO); + send_appdefined = YES; } static Lisp_Object @@ -3445,6 +3446,14 @@ overwriting cursor (usually when cursor on a tab) */ /* NSTRACE (ns_select); */ + if (hold_event_q.nr > 0) + { + /* We already have events pending. */ + kill (0, SIGIO); + errno = EINTR; + return -1; + } + for (k = 0; k < nfds+1; k++) { if (readfds && FD_ISSET(k, readfds)) ++nr;