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

From: Tak Kunihiro <[email-masked]>
Date: Sun, 3 Mar 2019 13:15:14 +0900

The patch solved the problem.

I also see that it takes more time to scroll a line
using pixel-scroll-up and pixel-scroll-down.

In principle, pixel-scroll-mode wants to scroll a line slowly.
I am on MacBook Pro (Retina, 13-inch, Late 2012) with Mojave 10.14.3,
and so far, I’m happy enough with the performance.

> On Mar 3, 2019, at 5:10 AM, Alan Third <[email-masked]> wrote:
> 
> 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.