GNU bug report logs - #3459
NS: mouse-face flicker

Previous Next

Package: emacs;

Reported by: David Reitter <david.reitter <at> gmail.com>

Date: Wed, 3 Jun 2009 16:45:03 UTC

Severity: normal

Fixed in version 25.1

Done: Alan J Third <alan <at> idiocy.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 3459 in the body.
You can then email your comments to 3459 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#3459; Package emacs. (Wed, 03 Jun 2009 16:45:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to David Reitter <david.reitter <at> gmail.com>:
New bug report received and forwarded. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Wed, 03 Jun 2009 16:45:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: David Reitter <david.reitter <at> gmail.com>
To: emacs-pretest-bug <at> gnu.org
Subject: NS: mouse-face flicker
Date: Wed, 3 Jun 2009 12:37:19 -0400
This happens only with the NS port, not on X:

Emacs -Q

(insert (propertize "Hello World" 'mouse-face 'highlight))

Hover mouse over the Hello World text.   Nothing special should happen.

Now select a region with the mouse or the keyboard.

Hover mouse over mouseface text again ==> Heavy flicker; there is a  
visible, sequential removal and redraw of the highlighted text with  
every mouse movement.


Diagnosis:

I'm not sure, hence this report.
One contributing factor is that we ns_flush() in ns_update_end().   
However, this is not just due to nested updates, and just adding  
ns_update calls in note_mouse_highlight alonedoesn't seem to help, at  
least when transient-mark-mode is on.




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#3459; Package emacs. (Wed, 03 Jun 2009 21:20:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to David Reitter <david.reitter <at> gmail.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Wed, 03 Jun 2009 21:20:04 GMT) Full text and rfc822 format available.

Message #10 received at 3459 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: David Reitter <david.reitter <at> gmail.com>
To: 3459 <at> debbugs.gnu.org
Subject: Re: NS: mouse-face flicker
Date: Wed, 3 Jun 2009 17:11:25 -0400
Some analysis suggests that the mouse face is generally cleared when t- 
m-m is on, whether really needed or not.  With the patch below (not  
meant as a bug fix) applied, the bug goes away.

Without the patch, try_window_reusing_current_matrix is not used in t- 
m-m with a region visible.
I guess that dpyinfo->mouse_face_window is then set to Qnil, the mouse  
face text cleared and redrawn at a later point in time outside of the  
update_begin/end bracket.

The double-redraws are inefficient, and I don't quite understand why  
they are necessary.

I suspect that this only shows up in NS because the frame is flushed  
every time we have an update_window_end().


Help, please!




diff --git a/src/xdisp.c b/src/xdisp.c
index ac989d3..9db30f8 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -14162,11 +14162,13 @@ try_window_reusing_current_matrix (w)
     return 0;

   /* Can't do this if region may have changed.  */
+  /*
   if ((!NILP (Vtransient_mark_mode)
        && !NILP (current_buffer->mark_active))
       || !NILP (w->region_showing)
       || !NILP (Vshow_trailing_whitespace))
     return 0;
+  */

   /* If top-line visibility has changed, give up.  */
   if (WINDOW_WANTS_HEADER_LINE_P (w)
@@ -23672,9 +23674,9 @@ note_mouse_highlight (f, x, y)

   /* If we were displaying active text in another window, clear that.
      Also clear if we move out of text area in same window.  */
-  if (! EQ (window, dpyinfo->mouse_face_window)
-      || (part != ON_TEXT && part != ON_MODE_LINE && part !=  
ON_HEADER_LINE
-	  && !NILP (dpyinfo->mouse_face_window)))
+  if ((! EQ (window, dpyinfo->mouse_face_window)
+       || (part != ON_TEXT && part != ON_MODE_LINE && part !=  
ON_HEADER_LINE))
+	  && !NILP (dpyinfo->mouse_face_window))
     clear_mouse_face (dpyinfo);

   /* Not on a window -> return.  */




bug reassigned from package `emacs' to `emacs,ns'. Request was from Glenn Morris <rgm+emacsbugs <at> gnu.org> to control <at> emacsbugs.donarmstrong.com. (Wed, 17 Jun 2009 07:35:09 GMT) Full text and rfc822 format available.

Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>, owner <at> emacsbugs.donarmstrong.com:
bug#3459; Package emacs,ns. (Fri, 18 Sep 2009 21:50:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to Adrian Robert <adrian.b.robert <at> gmail.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>, owner <at> emacsbugs.donarmstrong.com. (Fri, 18 Sep 2009 21:50:06 GMT) Full text and rfc822 format available.

Message #17 received at 3459 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Adrian Robert <adrian.b.robert <at> gmail.com>
To: 3459 <at> debbugs.gnu.org
Cc: David Reitter <david.reitter <at> gmail.com>
Subject: Re: NS: mouse-face flicker
Date: Fri, 18 Sep 2009 17:42:37 -0400
Hello,

Can anyone familiar with the redisplay code take a look at this?  Or  
try the patch?

David, can you explain the second part of your patch?  Just including  
the first part fixes the bug for me.  Is the change to the if test in  
the second part meant to handle a problematic case that slips through  
as the result of the first part?  It seems to make no difference.  In  
particular, there is still flickering either way if you try to select  
the mouse-highlighted text.





Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>, owner <at> emacsbugs.donarmstrong.com:
bug#3459; Package emacs,ns. (Fri, 18 Sep 2009 22:00:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to David Reitter <david.reitter <at> gmail.com>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>, owner <at> emacsbugs.donarmstrong.com. (Fri, 18 Sep 2009 22:00:04 GMT) Full text and rfc822 format available.

Message #22 received at 3459 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: David Reitter <david.reitter <at> gmail.com>
To: Adrian Robert <adrian.b.robert <at> gmail.com>
Cc: 3459 <at> debbugs.gnu.org
Subject: Re: NS: mouse-face flicker
Date: Fri, 18 Sep 2009 17:51:24 -0400
[Message part 1 (text/plain, inline)]
On Sep 18, 2009, at 5:42 PM, Adrian Robert wrote:
> David, can you explain the second part of your patch?  Just  
> including the first part fixes the bug for me.  Is the change to the  
> if test in the second part meant to handle a problematic case that  
> slips through as the result of the first part?  It seems to make no  
> difference.  In particular, there is still flickering either way if  
> you try to select the mouse-highlighted text.

I can't recall the details after 3+ months, but judging from the code  
I think the second change doesn't make a difference unless window can  
be Qnil, and I guess it can't.

Note: the patch is not a fix.  Just a way to demonstrate one source of  
flicker.
[smime.p7s (application/pkcs7-signature, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#3459; Package emacs. (Sun, 10 Jan 2016 22:46:02 GMT) Full text and rfc822 format available.

Message #25 received at 3459 <at> debbugs.gnu.org (full text, mbox):

From: Alan J Third <alan <at> idiocy.org>
To: David Reitter <david.reitter <at> gmail.com>
Cc: 3459 <at> debbugs.gnu.org
Subject: Re: bug#3459: NS: mouse-face flicker
Date: Sun, 10 Jan 2016 22:45:07 +0000
David Reitter <david.reitter <at> gmail.com> writes:

> This happens only with the NS port, not on X:
>
> Emacs -Q
>
> (insert (propertize "Hello World" 'mouse-face 'highlight))
>
> Hover mouse over the Hello World text.   Nothing special should happen.
>
> Now select a region with the mouse or the keyboard.
>
> Hover mouse over mouseface text again ==> Heavy flicker; there is a
> visible, sequential removal and redraw of the highlighted text with
> every mouse movement.

I can't reproduce this in Emacs 25, so I'm going to close it as fixed.
-- 
Alan Third




bug marked as fixed in version 25.1, send any further explanations to 3459 <at> debbugs.gnu.org and David Reitter <david.reitter <at> gmail.com> Request was from Alan J Third <alan <at> idiocy.org> to control <at> debbugs.gnu.org. (Sun, 10 Jan 2016 22:46:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 08 Feb 2016 12:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 9 years and 130 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.