emacs-diffs
[Top][All Lists]
Advanced

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

feature/pgtk d0fa569: Revert "Update texts while busy"


From: Yuuki Harano
Subject: feature/pgtk d0fa569: Revert "Update texts while busy"
Date: Sat, 15 May 2021 10:45:44 -0400 (EDT)

branch: feature/pgtk
commit d0fa569b7303c2d893b54d0a7af7a521308a5ed4
Author: Yuuki Harano <masm+github@masm11.me>
Commit: Yuuki Harano <masm+github@masm11.me>

    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.
---
 src/pgtkterm.c | 46 ++++++++++++++++++++++------------------------
 1 file changed, 22 insertions(+), 24 deletions(-)

diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index 194a255..533b9ea 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;
 }
 



reply via email to

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