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

From: Eli Zaretskii <[email-masked]>
Date: Thu, 17 Dec 2020 20:01:36 +0200

> Cc: [email-masked], [email-masked], [email-masked]
> From: martin rudalics <[email-masked]>
> Date: Thu, 17 Dec 2020 18:34:42 +0100
> 
>  > I don't think windows are the problem: Emacs knows very well which
>  > window(s) actually need(s) to be redisplayed and redrawn.
> 
> 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;
  }

> 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, although the comment seems to hint on the
reason.