]> git.eshelyaron.com Git - emacs.git/commitdiff
* nsfns.m (ns_do_applescript): Surround executeAndReturnError
authorJan Djärv <jan.h.d@swipnet.se>
Mon, 26 May 2014 11:16:47 +0000 (13:16 +0200)
committerJan Djärv <jan.h.d@swipnet.se>
Mon, 26 May 2014 11:16:47 +0000 (13:16 +0200)
with calls to ns_init_events, ns_finish_events.

* nsterm.h (ns_init_events, ns_finish_events): Declare.

* nsterm.m (ns_init_events, ns_finish_events): New functions.
(ns_read_socket, ns_select): Call ns_init_events, ns_finish_events.

Fixes: debbugs:17424
src/ChangeLog
src/nsfns.m
src/nsterm.h
src/nsterm.m

index 76117451b169e2150c5019f62b991f04d54f363e..06f3a9403e380590efa344732555845347b51c10 100644 (file)
@@ -1,3 +1,13 @@
+2014-05-26  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * nsterm.h (ns_init_events, ns_finish_events): Declare.
+
+       * nsterm.m (ns_init_events, ns_finish_events): New functions.
+       (ns_read_socket, ns_select): Call ns_init_events, ns_finish_events.
+
+       * nsfns.m (ns_do_applescript): Surround executeAndReturnError
+       with calls to ns_init_events, ns_finish_events (Bug#17424).
+
 2014-05-26  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (move_it_in_display_line_to): Don't record wrap position
index 4c3f7f34c0747cc2f05c15b86891cfcb6f4e76ba..0f2c2e693f7919db640ccd1eecb5576d8360d7be 100644 (file)
@@ -2094,9 +2094,10 @@ ns_do_applescript (Lisp_Object script, Lisp_Object *result)
     [[NSAppleScript alloc] initWithSource:
                             [NSString stringWithUTF8String: SSDATA (script)]];
 
+  ns_init_events ();
   returnDescriptor = [scriptObject executeAndReturnError: &errorDict];
   [scriptObject release];
-
+  ns_finish_events ();
   *result = Qnil;
 
   if (returnDescriptor != NULL)
index 74789634a90048d52d5579a401e6f13d9b51acee..49dd9d79008bf7a455e1051f113c65d3eb4cee39 100644 (file)
@@ -896,6 +896,9 @@ extern int ns_select (int nfds, fd_set *readfds, fd_set *writefds,
 extern unsigned long ns_get_rgb_color (struct frame *f,
                                        float r, float g, float b, float a);
 
+extern void ns_init_events ();
+extern void ns_finish_events ();
+
 /* From nsterm.m, needed in nsfont.m. */
 #ifdef __OBJC__
 extern void
index 059ae6d0cd64e06b73d83a4dde6fffdb0a697171..ba94d28b79722f0c8721cde12d19e2abe664d363 100644 (file)
@@ -396,6 +396,19 @@ void x_set_frame_alpha (struct frame *f);
 
    ========================================================================== */
 
+void
+ns_init_events (struct input_event* ev)
+{
+  EVENT_INIT (*ev);
+  emacs_event = ev;
+}
+
+void
+ns_finish_events ()
+{
+  emacs_event = NULL;
+}
+
 static void
 hold_event (struct input_event *event)
 {
@@ -3606,8 +3619,7 @@ ns_read_socket (struct terminal *terminal, struct input_event *hold_quit)
 
   block_input ();
   n_emacs_events_pending = 0;
-  EVENT_INIT (ev);
-  emacs_event = &ev;
+  ns_init_events (&ev);
   q_event_ptr = hold_quit;
 
   /* we manage autorelease pools by allocate/reallocate each time around
@@ -3648,7 +3660,8 @@ ns_read_socket (struct terminal *terminal, struct input_event *hold_quit)
 
   nevents = n_emacs_events_pending;
   n_emacs_events_pending = 0;
-  emacs_event = q_event_ptr = NULL;
+  ns_finish_events ();
+  q_event_ptr = NULL;
   unblock_input ();
 
   return nevents;
@@ -3743,16 +3756,15 @@ ns_select (int nfds, fd_set *readfds, fd_set *writefds,
       ns_send_appdefined (-1);
     }
 
-  EVENT_INIT (event);
   block_input ();
-  emacs_event = &event;
+  ns_init_events (&event);
   if (++apploopnr != 1)
     {
       emacs_abort ();
     }
   [NSApp run];
   --apploopnr;
-  emacs_event = NULL;
+  ns_finish_events ();
   if (nr > 0 && readfds)
     {
       c = 's';