Subject: bug#35464: [PATCH] Refactor update_window_begin and update_window_end hooks

From: Eli Zaretskii <[email-masked]>
Date: Sun, 28 Apr 2019 19:45:22 +0300

> From: Alex Gramiak <[email-masked]>
> Date: Sat, 27 Apr 2019 15:28:49 -0600
> 
> 1) Is it okay to not use reset_mouse_highlight in the generic version
> (ns_update_window_end still uses it)?  See commit 60ae3d09932f for why
> reset_mouse_highlight was removed in the x/w32 versions.

Don't know, the problem was specific to X.  I think we should leave
the code there, the NS port has enough redisplay problems already.

> 2) Should the #if 0 section be removed in w32_update_window_begin?

Yes, I think we can remove that.

> @@ -13145,8 +13069,8 @@ static struct redisplay_interface x_redisplay_interface =
>      gui_clear_end_of_line,
>      x_scroll_run,
>      x_after_update_window_line,
> -    x_update_window_begin,
> -    x_update_window_end,
> +    gui_update_window_begin,
> +    gui_update_window_end,
>      x_flip_and_flush,
>      gui_clear_window_mouse_face,
>      gui_get_glyph_overhangs,

This looks like a step in the wrong direction to me: the different
implementations are all almost completely identical, except that w32
has a small quirk there.  So I'd say make a single function
window_update_begin, that will be called directly (not via a hook
pointer), and make the w32 part be an optional hook called only if
non-NULL.

Also, please don't add gui_* functions extracted from the *term.c
files in xdisp.c, as that file is already too large.  Renaming
existing functions in xdisp.c is OK, as well as adding static utility
functions.  But for new gui_* functions that were originally in
xterm.c etc., I'd prefer a new file, let's call it gui_term.c.

Thanks.