* 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 64adec7..d88e43b 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 f4982e0..9d52bd7 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;