]> code.delx.au - gnu-emacs/commitdiff
* nsterm.m (hold_event): Set send_appdefined to YES.
authorJan Djärv <jan.h.d@swipnet.se>
Sat, 17 Nov 2012 15:28:56 +0000 (16:28 +0100)
committerJan Djärv <jan.h.d@swipnet.se>
Sat, 17 Nov 2012 15:28:56 +0000 (16:28 +0100)
(ns_select): Return at once if events are held (Bug#12834).

src/ChangeLog
src/nsterm.m

index 64adec7491a6e9e9ee4a6240c348bdb8b5839dc6..d88e43b2b7f684c7d77365489e9a10c659955761 100644 (file)
@@ -1,3 +1,8 @@
+2012-11-17  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * 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  <tsugutomo.enami@jp.sony.com>
 
        * unexelf.c (ELFSIZE) [__NetBSD__ && _LP64]: Set to 64.
index f4982e0a7cb183dfb9f50a3210f8da4c5e9ff7d6..9d52bd7f52b46718b09dc5cd83f3dc0b4581a0e3 100644 (file)
@@ -314,6 +314,7 @@ hold_event (struct input_event *event)
   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 @@ ns_select (int nfds, fd_set *readfds, fd_set *writefds,
 
 /*  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;