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