=== modified file 'src/dispnew.c' --- src/dispnew.c 2013-01-23 20:07:28 +0000 +++ src/dispnew.c 2013-01-25 10:49:31 +0000 @@ -107,12 +107,6 @@ static void adjust_frame_glyphs_for_window_redisplay (struct frame *); static void adjust_frame_glyphs_for_frame_redisplay (struct frame *); - -/* Redisplay preemption timers. */ - -static EMACS_TIME preemption_period; -static EMACS_TIME preemption_next_check; - /* True upon entry to redisplay means do not assume anything about current contents of actual terminal frame; clear and redraw it. */ @@ -122,9 +116,8 @@ bool display_completed; -Lisp_Object Qdisplay_table, Qredisplay_dont_pause; +Lisp_Object Qdisplay_table; - /* The currently selected frame. In a single-frame version, this variable always equals the_only_frame. */ @@ -3078,23 +3071,10 @@ bool paused_p; struct window *root_window = XWINDOW (f->root_window); - if (redisplay_dont_pause) - force_p = 1; - else if (NILP (Vredisplay_preemption_period)) - force_p = 1; - else if (!force_p && NUMBERP (Vredisplay_preemption_period)) + if (!force_p && detect_input_pending_ignore_squeezables ()) { - double p = XFLOATINT (Vredisplay_preemption_period); - - if (detect_input_pending_ignore_squeezables ()) - { - paused_p = 1; - goto do_pause; - } - - preemption_period = EMACS_TIME_FROM_DOUBLE (p); - preemption_next_check = add_emacs_time (current_emacs_time (), - preemption_period); + paused_p = 1; + goto do_pause; } if (FRAME_WINDOW_P (f)) @@ -3230,18 +3210,6 @@ /* Record that this is not a frame-based redisplay. */ set_frame_matrix_frame (NULL); - if (redisplay_dont_pause) - force_p = 1; - else if (NILP (Vredisplay_preemption_period)) - force_p = 1; - else if (!force_p && NUMBERP (Vredisplay_preemption_period)) - { - double p = XFLOATINT (Vredisplay_preemption_period); - preemption_period = EMACS_TIME_FROM_DOUBLE (p); - preemption_next_check = add_emacs_time (current_emacs_time (), - preemption_period); - } - /* Update W. */ update_begin (f); update_window (w, force_p); @@ -3394,9 +3362,7 @@ { struct glyph_matrix *desired_matrix = w->desired_matrix; bool paused_p; -#if !PERIODIC_PREEMPTION_CHECKING int preempt_count = baud_rate / 2400 + 1; -#endif struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w))); #ifdef GLYPH_DEBUG /* Check that W's frame doesn't have glyph matrices. */ @@ -3404,10 +3370,8 @@ #endif /* Check pending input the first time so that we can quickly return. */ -#if !PERIODIC_PREEMPTION_CHECKING if (!force_p) detect_input_pending_ignore_squeezables (); -#endif /* If forced to complete the update, or if no input is pending, do the update. */ @@ -3418,9 +3382,7 @@ struct glyph_row *header_line_row; int yb; bool changed_p = 0, mouse_face_overwritten_p = 0; -#if ! PERIODIC_PREEMPTION_CHECKING int n_updated = 0; -#endif rif->update_window_begin_hook (w); yb = window_text_bottom_y (w); @@ -3484,22 +3446,8 @@ detect_input_pending. If it's done too often, scrolling large windows with repeated scroll-up commands will too quickly pause redisplay. */ -#if PERIODIC_PREEMPTION_CHECKING - if (!force_p) - { - EMACS_TIME tm = current_emacs_time (); - if (EMACS_TIME_LT (preemption_next_check, tm)) - { - preemption_next_check = add_emacs_time (tm, - preemption_period); - if (detect_input_pending_ignore_squeezables ()) - break; - } - } -#else if (!force_p && ++n_updated % preempt_count == 0) detect_input_pending_ignore_squeezables (); -#endif changed_p |= update_window_line (w, vpos, &mouse_face_overwritten_p); @@ -4531,13 +4479,11 @@ if (preempt_count <= 0) preempt_count = 1; -#if !PERIODIC_PREEMPTION_CHECKING if (!force_p && detect_input_pending_ignore_squeezables ()) { pause_p = 1; goto do_pause; } -#endif /* If we cannot insert/delete lines, it's no use trying it. */ if (!FRAME_LINE_INS_DEL_OK (f)) @@ -4578,21 +4524,8 @@ } } -#if PERIODIC_PREEMPTION_CHECKING - if (!force_p) - { - EMACS_TIME tm = current_emacs_time (); - if (EMACS_TIME_LT (preemption_next_check, tm)) - { - preemption_next_check = add_emacs_time (tm, preemption_period); - if (detect_input_pending_ignore_squeezables ()) - break; - } - } -#else if (!force_p && (i - 1) % preempt_count == 0) detect_input_pending_ignore_squeezables (); -#endif update_frame_line (f, i); } @@ -4698,9 +4631,7 @@ } } -#if !PERIODIC_PREEMPTION_CHECKING do_pause: -#endif clear_desired_matrices (f); return pause_p; @@ -5893,33 +5824,19 @@ DEFUN ("redisplay", Fredisplay, Sredisplay, 0, 1, 0, doc: /* Perform redisplay. -Optional arg FORCE, if non-nil, prevents redisplay from being -preempted by arriving input, even if `redisplay-dont-pause' is nil. -If `redisplay-dont-pause' is non-nil (the default), redisplay is never -preempted by arriving input, so FORCE does nothing. +Optional arg FORCE does nothing and used for backward compatibility. Return t if redisplay was performed, nil if redisplay was preempted immediately by pending input. */) (Lisp_Object force) { - ptrdiff_t count; - swallow_events (1); - if ((detect_input_pending_run_timers (1) - && NILP (force) && !redisplay_dont_pause) - || !NILP (Vexecuting_kbd_macro)) + if (detect_input_pending_run_timers (1) || !NILP (Vexecuting_kbd_macro)) return Qnil; - - count = SPECPDL_INDEX (); - if (!NILP (force) && !redisplay_dont_pause) - specbind (Qredisplay_dont_pause, Qt); redisplay_preserve_echo_area (2); - unbind_to (count, Qnil); return Qt; } - - /*********************************************************************** Other Lisp Functions ***********************************************************************/ @@ -6335,7 +6252,6 @@ staticpro (&frame_and_buffer_state); DEFSYM (Qdisplay_table, "display-table"); - DEFSYM (Qredisplay_dont_pause, "redisplay-dont-pause"); DEFVAR_INT ("baud-rate", baud_rate, doc: /* The output baud rate of the terminal. @@ -6406,19 +6322,6 @@ See `buffer-display-table' for more information. */); Vstandard_display_table = Qnil; - DEFVAR_BOOL ("redisplay-dont-pause", redisplay_dont_pause, - doc: /* Non-nil means display update isn't paused when input is detected. */); - redisplay_dont_pause = 1; - -#if PERIODIC_PREEMPTION_CHECKING - DEFVAR_LISP ("redisplay-preemption-period", Vredisplay_preemption_period, - doc: /* Period in seconds between checking for input during redisplay. -This has an effect only if `redisplay-dont-pause' is nil; in that -case, arriving input preempts redisplay until the input is processed. -If the value is nil, redisplay is never preempted. */); - Vredisplay_preemption_period = make_float (0.10); -#endif - #ifdef CANNOT_DUMP if (noninteractive) #endif === modified file 'src/xdisp.c' --- src/xdisp.c 2013-01-24 05:41:28 +0000 +++ src/xdisp.c 2013-01-25 10:51:24 +0000 @@ -10697,14 +10697,9 @@ needs to run hooks. */ && !NILP (Vrun_hooks)) { - /* Must update other windows. Likewise as in other - cases, don't let this update be interrupted by - pending input. */ - ptrdiff_t count = SPECPDL_INDEX (); - specbind (Qredisplay_dont_pause, Qt); + /* Must update other windows. */ windows_or_buffers_changed = 1; redisplay_internal (); - unbind_to (count, Qnil); } else if (FRAME_WINDOW_P (f) && n == 0) {