emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r117450: Remove unnecessary redisplays in NS port.


From: Jan D.
Subject: [Emacs-diffs] trunk r117450: Remove unnecessary redisplays in NS port.
Date: Mon, 30 Jun 2014 12:38:14 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 117450
revision-id: address@hidden
parent: address@hidden
committer: Jan D. <address@hidden>
branch nick: trunk
timestamp: Mon 2014-06-30 14:38:09 +0200
message:
  Remove unnecessary redisplays in NS port.
  
  * nsmenu.m (update_frame_tool_bar): Set wait_for_tool_bar to NO
  when setNeedsDisplay is called so we don't trigger redisplay for every
  tool bar update.
  
  * nsterm.m (any_help_event_p): New variable.
  (mouseMoved:): Set any_help_event_p to YES if help event is
  generated.  Remove else with empty help event that triggered redisplay
  for every mouse move.
  (windowDidResignKey:): If any_help_event_p, generate empty help
  event.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/nsmenu.m                   nsmenu.m-20091113204419-o5vbwnq5f7feedwu-8744
  src/nsterm.m                   nsterm.m-20091113204419-o5vbwnq5f7feedwu-8747
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2014-06-29 16:12:08 +0000
+++ b/src/ChangeLog     2014-06-30 12:38:09 +0000
@@ -1,3 +1,16 @@
+2014-06-30  Jan Djärv  <address@hidden>
+
+       * nsmenu.m (update_frame_tool_bar): Set wait_for_tool_bar to NO
+       when setNeedsDisplay is called so we don't trigger redisplay for every
+       tool bar update.
+
+       * nsterm.m (any_help_event_p): New variable.
+       (mouseMoved:): Set any_help_event_p to YES if help event is
+       generated.  Remove else with empty help event that triggered redisplay
+       for every mouse move.
+       (windowDidResignKey:): If any_help_event_p, generate empty help
+       event.
+
 2014-06-29  Dmitry Antipov  <address@hidden>
 
        * xfns.c (Qsuppress_icon): Remove; no real users.

=== modified file 'src/nsmenu.m'
--- a/src/nsmenu.m      2014-06-04 14:59:09 +0000
+++ b/src/nsmenu.m      2014-06-30 12:38:09 +0000
@@ -1152,7 +1152,10 @@
     FRAME_TOOLBAR_HEIGHT (f) = 0;
 
   if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0)
+    {
+      view->wait_for_tool_bar = NO;
       [view setNeedsDisplay: YES];
+    }
 
   unblock_input ();
 }

=== modified file 'src/nsterm.m'
--- a/src/nsterm.m      2014-06-11 17:57:51 +0000
+++ b/src/nsterm.m      2014-06-30 12:38:09 +0000
@@ -283,6 +283,11 @@
 static BOOL ns_do_open_file = NO;
 static BOOL ns_last_use_native_fullscreen;
 
+/* Non-zero means that a HELP_EVENT has been generated since Emacs
+   start.  */
+
+static BOOL any_help_event_p = NO;
+
 static struct {
   struct input_event *q;
   int nr, cap;
@@ -5688,14 +5693,10 @@
       /* NOTE: help_echo_{window,pos,object} are set in xdisp.c
          (note_mouse_highlight), which is called through the
          note_mouse_movement () call above */
+      any_help_event_p = YES;
       gen_help_event (help_echo_string, frame, help_echo_window,
                       help_echo_object, help_echo_pos);
     }
-  else
-    {
-      help_echo_string = Qnil;
-      gen_help_event (Qnil, frame, Qnil, Qnil, 0);
-    }
 
   if (emacsframe->mouse_moved && send_appdefined)
     ns_send_appdefined (-1);
@@ -5973,6 +5974,14 @@
       x_set_frame_alpha (emacsframe);
     }
 
+  if (any_help_event_p)
+    {
+      Lisp_Object frame;
+      XSETFRAME (frame, emacsframe);
+      help_echo_string = Qnil;
+      gen_help_event (Qnil, frame, Qnil, Qnil, 0);
+    }
+
   if (emacs_event && is_focus_frame)
     {
       [self deleteWorkingText];


reply via email to

[Prev in Thread] Current Thread [Next in Thread]