Subject: bug#61667: 29.0.60; Failure to redisplay

From: Eli Zaretskii <[email-masked]>
Date: Sat, 15 Jun 2024 09:49:25 +0300

> Date: Sat, 15 Jun 2024 04:32:07 +0300
> From: Dmitry Gutov <[email-masked]>
> 
> 1. Visit the Emacs repository.
> 2. Call vc-print-root-log.
> 3. In the lot buffer, repeat this loop:
> 3.1. Press d (to see the diff).
> 3.2. Press q to get back to the log buffer.
> 3.3. Press n to get to the next entry.
> 
>  From time to time, on step 3.1 the frame title will get updated with 
> the name of the new buffer (*vc-diff*), but the insides of the frame 
> will get updated with a visible delay (which varies). Most of the time 
> the delay, when it noticeable at all, is <1s and usually <200ms even, so 
> it's not something that is a deal-breaker in practice usually, but still 
> seems somewhat of a problem.
> 
> I can reproduce the above scenario with 'emacs -Q' with Emacs compiled 
> with './configure --with-x-toolkit=lucid --with-xdbe=no'.
> 
> The original report was made with Ubuntu 22.10, I'm using 23.10 now.
> 
> Could this be a normal behavior? That is, having a delay between the 
> frame title changing and the insides of the frame updating.

Don't we invoke the backend's 'diff' method asynchronously in the
above scenario?  Looking at vc-diff-internal, it looks like we first
switch to the *vc-diff* buffer (which causes the frame's title to
change, if redisplay happens to kick in, and only later show the
actual diffs, when the async subprocess finishes.  Right?