Some time ago, Stephen J. Turnbull wrote...
 >>>>> "kkm" == Kirill 'Big K'
Katsnelson <kkm(a)dtmx.com> writes:
     kkm> Interesting, but redisplay preemption is disabled in XEmacs
     kkm> at all.  Once redisplay starts, it will continue through all
     kkm> devices and frames,
I don't understand; the check at l. 6457 looks OK.  Comment in
redisplay_frame() indicates this is intentional.  Or do you just mean
all frames on the current device?  That's bad enough to justify this
patch, though. 
Stephen, what comment are you referring to?  I may have modified the file,
so line numbers are off.
Generally, redisplay_without_hooks() calls redisplay_device() in a loop,
and does not do the preemption check itself, and rather relies on the
return value from r_d(). The latter, in turn, calls redisplay_frame():
int preempted = redisplay_frame (f, 1);  /* was (f, 0) - kkm */
if (preempted)
   return 1;
The second parameter to r_f() allows preemption when non-zero.  I just changed
it from 0 to 1, because there was obvious nonsense in the above lines: r_f()
never gets preempted, and thus never returns non-zero when its second parameter
equal 0.
That is, preemption never happened!  CVS revision 1.1.1.1, the oldest one,
also has the preemption check turned off.
I hope that there is enough time for 21.5 to get fixed all the buglets which
would be uncovered by this change.
     kkm> Please test it.
Maybe you should post patches of this type to xemacs-beta? 
Sorry, I misworded this.  I did not mean that this is an experimental patch,
rather, I am pretty much confident that this change is correct.  What I meant
by testing was that I wanted everybody to keep an eye open on glitches in
display appearance.
Thank you for checking it, in any case!
  -kkm