Subject: bug#34710: the mode line flicks on set-window-vscroll

From: Alan Third <[email-masked]>
Date: Sat, 2 Mar 2019 20:10:48 +0000

On Sat, Mar 02, 2019 at 07:25:13PM +0900, Tak Kunihiro wrote:
> On Emacs-26.1.92 build for macOS, I see the mode line flicks when I
> scroll-up using pixel-scroll-mode and mouse wheel.  The mode line does
> not flick on scrolling-down.  I do not see this problem in
> Emacs-26.1.92 build for Windows.
> 
> macOS$ /Downloads/emacs-26.1.92/nextstep/Emacs.app/Contents/MacOS/Emacs -Q
> M-x pixel-scroll-mode
> M-: (pixel-scroll-up 1) ; => the mode line flicks
> M-: (pixel-scroll-down 1) ;=> no flick
> 
> I narrow down the problem and notice that following
> two blocks response differently.
> 
> #+begin_src emacs-lisp
> (dolist (vs (number-sequence 1 10))
>   (set-window-vscroll nil vs t)
>   (sit-for 0))
> ;; the mode line flicks
> #+end_src
> 
> #+begin_src emacs-lisp
> (dolist (vs (number-sequence 1 10))
>   (set-window-vscroll nil vs t))
> ;; no flick
> #+end_src
> 
> Do you have idea?

I believe it’s a problem with running redisplay rapidly (sit-for) and
the way we’re drawing in NS. We end up with macOS demanding a screen
update, and Emacs unable to deliver due to there being another
redisplay coming up.

The patch attached to this discussion doesn’t have the problem:

https://lists.gnu.org/archive/html/emacs-devel/2019-02/msg00354.html

However Robert Pluim reported serious performance problems with it. I
haven’t been able to replicate them.

-- 
Alan Third