On 02/06/2013 10:08 PM, Eli Zaretskii wrote: >> Date: Wed, 06 Feb 2013 11:37:30 +0400 >> From: Dmitry Antipov >> CC: emacs-devel@gnu.org >> >> On 02/05/2013 10:01 PM, Eli Zaretskii wrote: >> >>> In any case, the potential for problems is still there, because now >>> w->base_line_pos gets reset to zero in many more places than it was >>> before. Previously, only xdisp.c would manipulate this attribute in a >>> few well-defined places. Now it can be reset by any function that >>> calls adjust_window_count, including wset_buffer, which is called from >>> many primitives, most of them outside xdisp.c. Therefore, it's quite >>> possible that we will now have to count from the beginning of the >>> buffer much more frequently than we did before. In large buffers, >>> this could be quite a hit. >> >> Hm. I'll try to reproduce such a situation and check what happens. >> Maybe we should invalidate window_end_valid and base_line_pos only >> if either window is really switched to another buffer or buffer >> is changed. > > That'd be hard, because there are many places that switch to another > buffer temporarily, and they all call adjust_window_count. What about this? Dmitry