bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#66398: 29.1; Buggy handling of transparency changes / blur/unblur


From: Po Lu
Subject: bug#66398: 29.1; Buggy handling of transparency changes / blur/unblur
Date: Mon, 16 Oct 2023 08:51:31 +0800
User-agent: Gnus/5.13 (Gnus v5.13)

Tollef Fog Heen <tfheen@err.no> writes:

> There are two places where XChangeProperty is called in that function, I
> put the backtrace on both, but only one seems to be hit after startup.
>
> I did:
> - start emacs under gdb, find the frame id, etc, pass that to xprop
> - focus emacs frame
> - unfocus emacs frame
> - focus emacs frame
> - M-x
> - unfocus emacs frame, C-c in gdb
>
> I assume you're not interested in the initial backtraces from when emacs
> is starting up.

Oh, I see, thanks.  Please test the attached patch:

diff --git a/src/xterm.c b/src/xterm.c
index 517bdf57aab..5d491e63778 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -11820,7 +11820,9 @@ x_frame_highlight (struct frame *f)
   x_stop_ignoring_errors (dpyinfo);
   unblock_input ();
   gui_update_cursor (f, true);
-  x_set_frame_alpha (f);
+
+  if (!FRAME_X_OUTPUT (f)->alpha_identical_p)
+    x_set_frame_alpha (f);
 }
 
 static void
@@ -11844,7 +11846,15 @@ x_frame_unhighlight (struct frame *f)
   unblock_input ();
 
   gui_update_cursor (f, true);
-  x_set_frame_alpha (f);
+
+  /* Eschew modifying the frame alpha when the alpha values for
+     focused and background frames are identical; otherwise, this will
+     upset the order in which changes to the alpha property
+     immediately subsequent to a focus change are propagated into a
+     frame's alpha property.  (bug#66398) */
+
+  if (!FRAME_X_OUTPUT (f)->alpha_identical_p)
+    x_set_frame_alpha (f);
 }
 
 /* The focus has changed.  Update the frames as necessary to reflect




reply via email to

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