diff options
| author | Jan Djärv | 2014-06-30 14:38:09 +0200 |
|---|---|---|
| committer | Jan Djärv | 2014-06-30 14:38:09 +0200 |
| commit | 9c660a187ce2dd68a78c915c0006050c0cdbbffc (patch) | |
| tree | 3728724a21d447638565862d41fd68cf34bf9472 /src | |
| parent | de12301ea1959d81f3ad4c5b624ee998ffb55e2b (diff) | |
| download | emacs-9c660a187ce2dd68a78c915c0006050c0cdbbffc.tar.gz emacs-9c660a187ce2dd68a78c915c0006050c0cdbbffc.zip | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 13 | ||||
| -rw-r--r-- | src/nsmenu.m | 3 | ||||
| -rw-r--r-- | src/nsterm.m | 19 |
3 files changed, 30 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 4a6b6a4769c..b87555344f9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,16 @@ | |||
| 1 | 2014-06-30 Jan Djärv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * nsmenu.m (update_frame_tool_bar): Set wait_for_tool_bar to NO | ||
| 4 | when setNeedsDisplay is called so we don't trigger redisplay for every | ||
| 5 | tool bar update. | ||
| 6 | |||
| 7 | * nsterm.m (any_help_event_p): New variable. | ||
| 8 | (mouseMoved:): Set any_help_event_p to YES if help event is | ||
| 9 | generated. Remove else with empty help event that triggered redisplay | ||
| 10 | for every mouse move. | ||
| 11 | (windowDidResignKey:): If any_help_event_p, generate empty help | ||
| 12 | event. | ||
| 13 | |||
| 1 | 2014-06-29 Dmitry Antipov <dmantipov@yandex.ru> | 14 | 2014-06-29 Dmitry Antipov <dmantipov@yandex.ru> |
| 2 | 15 | ||
| 3 | * xfns.c (Qsuppress_icon): Remove; no real users. | 16 | * xfns.c (Qsuppress_icon): Remove; no real users. |
diff --git a/src/nsmenu.m b/src/nsmenu.m index 24c1189584b..778b068ef8b 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m | |||
| @@ -1152,7 +1152,10 @@ update_frame_tool_bar (struct frame *f) | |||
| 1152 | FRAME_TOOLBAR_HEIGHT (f) = 0; | 1152 | FRAME_TOOLBAR_HEIGHT (f) = 0; |
| 1153 | 1153 | ||
| 1154 | if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0) | 1154 | if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0) |
| 1155 | { | ||
| 1156 | view->wait_for_tool_bar = NO; | ||
| 1155 | [view setNeedsDisplay: YES]; | 1157 | [view setNeedsDisplay: YES]; |
| 1158 | } | ||
| 1156 | 1159 | ||
| 1157 | unblock_input (); | 1160 | unblock_input (); |
| 1158 | } | 1161 | } |
diff --git a/src/nsterm.m b/src/nsterm.m index c6450804f57..69738ba924a 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -283,6 +283,11 @@ static NSMutableArray *ns_pending_files, *ns_pending_service_names, | |||
| 283 | static BOOL ns_do_open_file = NO; | 283 | static BOOL ns_do_open_file = NO; |
| 284 | static BOOL ns_last_use_native_fullscreen; | 284 | static BOOL ns_last_use_native_fullscreen; |
| 285 | 285 | ||
| 286 | /* Non-zero means that a HELP_EVENT has been generated since Emacs | ||
| 287 | start. */ | ||
| 288 | |||
| 289 | static BOOL any_help_event_p = NO; | ||
| 290 | |||
| 286 | static struct { | 291 | static struct { |
| 287 | struct input_event *q; | 292 | struct input_event *q; |
| 288 | int nr, cap; | 293 | int nr, cap; |
| @@ -5688,14 +5693,10 @@ not_in_argv (NSString *arg) | |||
| 5688 | /* NOTE: help_echo_{window,pos,object} are set in xdisp.c | 5693 | /* NOTE: help_echo_{window,pos,object} are set in xdisp.c |
| 5689 | (note_mouse_highlight), which is called through the | 5694 | (note_mouse_highlight), which is called through the |
| 5690 | note_mouse_movement () call above */ | 5695 | note_mouse_movement () call above */ |
| 5696 | any_help_event_p = YES; | ||
| 5691 | gen_help_event (help_echo_string, frame, help_echo_window, | 5697 | gen_help_event (help_echo_string, frame, help_echo_window, |
| 5692 | help_echo_object, help_echo_pos); | 5698 | help_echo_object, help_echo_pos); |
| 5693 | } | 5699 | } |
| 5694 | else | ||
| 5695 | { | ||
| 5696 | help_echo_string = Qnil; | ||
| 5697 | gen_help_event (Qnil, frame, Qnil, Qnil, 0); | ||
| 5698 | } | ||
| 5699 | 5700 | ||
| 5700 | if (emacsframe->mouse_moved && send_appdefined) | 5701 | if (emacsframe->mouse_moved && send_appdefined) |
| 5701 | ns_send_appdefined (-1); | 5702 | ns_send_appdefined (-1); |
| @@ -5973,6 +5974,14 @@ if (cols > 0 && rows > 0) | |||
| 5973 | x_set_frame_alpha (emacsframe); | 5974 | x_set_frame_alpha (emacsframe); |
| 5974 | } | 5975 | } |
| 5975 | 5976 | ||
| 5977 | if (any_help_event_p) | ||
| 5978 | { | ||
| 5979 | Lisp_Object frame; | ||
| 5980 | XSETFRAME (frame, emacsframe); | ||
| 5981 | help_echo_string = Qnil; | ||
| 5982 | gen_help_event (Qnil, frame, Qnil, Qnil, 0); | ||
| 5983 | } | ||
| 5984 | |||
| 5976 | if (emacs_event && is_focus_frame) | 5985 | if (emacs_event && is_focus_frame) |
| 5977 | { | 5986 | { |
| 5978 | [self deleteWorkingText]; | 5987 | [self deleteWorkingText]; |