Subject: Re: bug#42406: Mouse-wheel scrolling can be flickering

From: martin rudalics <[email-masked]>
Date: Fri, 18 Dec 2020 00:19:48 +0100

>> In the case at hand Emacs relies on redisplaying all frames when
 >> scrolling a window that is not on the selected frame in order to
 >> correctly reflect the change in the scrolled window's mode line.
 >
 > That's not my understanding.  My understanding is that the user
 > scrolls the _selected_ window, because otherwise wset_update_mode_line
 > doesn't set update_mode_lines:
 >
 >    static void
 >    wset_update_mode_line (struct window *w)
 >    {
 >      /* If this window is the selected window on its frame, set the
 >         global variable update_mode_lines, so that gui_consider_frame_title
 >         will consider this frame's title for redisplay.  */
 >      Lisp_Object fselected_window = XFRAME (WINDOW_FRAME (w))->selected_window;
 >
 >      if (WINDOWP (fselected_window) && XWINDOW (fselected_window) == w)
 >        update_mode_lines = 42;
 >      else
 >        w->update_mode_line = true;
 >    }

Indeed, you're right.  This doesn't make any sense to me at all.  Why
should a non-selected frame care about whether I scrolled a window on
the selected frame?

 >> IIUC windows_or_buffers_changed affects frames as well.  For example, I
 >> have no idea why making a frame (in)visible should redisplay all other
 >> frames while moving a frame on the screen apparently does not.
 >
 > That's commented out now,

Not in Fmake_frame_invisible AFAICT.

 > although the comment seems to hint on the
 > reason.

martin