From: Yuuki Harano Date: Sat, 15 May 2021 14:39:35 +0000 (+0900) Subject: Revert "Update texts while busy" X-Git-Tag: emacs-29.0.90~3699 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d0fa569b7303c2d893b54d0a7af7a521308a5ed4;p=emacs.git Revert "Update texts while busy" This reverts commit 8a649cba44cc637b5326cee9fe3febc55c653719. Because the position of the initial frame is not desired, unless initial-frame-alist is set. --- diff --git a/src/pgtkterm.c b/src/pgtkterm.c index 194a2551c94..533b9ea894a 100644 --- a/src/pgtkterm.c +++ b/src/pgtkterm.c @@ -3551,31 +3551,12 @@ pgtk_draw_fringe_bitmap (struct window *w, struct glyph_row *row, } static struct atimer *hourglass_atimer = NULL; +static int hourglass_enter_count = 0; static void hourglass_cb (struct atimer *timer) { - /*NOP*/ -} - -static void -start_timer (void) -{ - static bool hourglass_inited = false; - - /* For cursor animation, we receive signals, set pending_signals, and dispatch. */ - /* This is useful for drawing text while busy, and C-g takes effect while busy. */ - if (!hourglass_inited) - { - struct timespec ts = make_timespec (0, 50 * 1000 * 1000); - if (hourglass_atimer != NULL) - cancel_atimer (hourglass_atimer); - hourglass_atimer = - start_atimer (ATIMER_CONTINUOUS, ts, hourglass_cb, NULL); - - hourglass_inited = true; - } -} + /*NOP*/} static void pgtk_show_hourglass (struct frame *f) @@ -3591,13 +3572,32 @@ pgtk_show_hourglass (struct frame *f) gdk_window_raise (gtk_widget_get_window (x->hourglass_widget)); gdk_window_set_cursor (gtk_widget_get_window (x->hourglass_widget), x->hourglass_cursor); + + /* For cursor animation, we receive signals, set pending_signals, and dispatch. */ + if (hourglass_enter_count++ == 0) + { + struct timespec ts = make_timespec (0, 50 * 1000 * 1000); + if (hourglass_atimer != NULL) + cancel_atimer (hourglass_atimer); + hourglass_atimer = + start_atimer (ATIMER_CONTINUOUS, ts, hourglass_cb, NULL); + } + + /* Cursor frequently stops animation. gtk's bug? */ } static void pgtk_hide_hourglass (struct frame *f) { struct pgtk_output *x = FRAME_X_OUTPUT (f); - + if (--hourglass_enter_count == 0) + { + if (hourglass_atimer != NULL) + { + cancel_atimer (hourglass_atimer); + hourglass_atimer = NULL; + } + } if (x->hourglass_widget != NULL) { gtk_widget_destroy (x->hourglass_widget); @@ -6995,8 +6995,6 @@ pgtk_term_init (Lisp_Object display_name, char *resource_name) unblock_input (); - start_timer(); - return dpyinfo; }