mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-16 10:37:38 -05:00
Fold ancillary window changes into main redraw.
This fixes a long-standing inconsistency in updates to the terminal window: redrawing of actual text was deferred for 1/50 second, but all the other kinds of change the terminal can make to the window (position, size, z-order, title, mouse pointer shape, scrollbar...) were enacted immediately. In particular, this could mean that two updates requested by the terminal output stream happened in reverse order. Now they're all done as part of term_update, which should mean that things requested in the same chunk of terminal input happen at the same time, or at the very least, not in reverse order compared to the order the requests came in. Also, the same timer-based UPDATE_DELAY mechanism that applies to the text updates now applies to all the other window modifications, which should prevent any of those from being the limiting factor to how fast this terminal implementation can process input data (which is exactly why I set up that system for the main text update). This makes everything happen with a bit more latency, but I'm about to reverse that in a follow-up commit.
This commit is contained in:
24
terminal.h
24
terminal.h
@ -363,6 +363,30 @@ struct terminal_tag {
|
||||
rgb palette[OSC4_NCOLOURS];
|
||||
|
||||
unsigned winpos_x, winpos_y, winpixsize_x, winpixsize_y;
|
||||
|
||||
/*
|
||||
* Assorted 'pending' flags for ancillary window changes performed
|
||||
* in term_update. Generally, to trigger one of these operations,
|
||||
* you set the pending flag and/or the parameters here, then call
|
||||
* term_schedule_update.
|
||||
*/
|
||||
bool win_move_pending;
|
||||
int win_move_pending_x, win_move_pending_y;
|
||||
bool win_resize_pending;
|
||||
int win_resize_pending_w, win_resize_pending_h;
|
||||
bool win_zorder_pending;
|
||||
bool win_zorder_top;
|
||||
bool win_minimise_pending;
|
||||
bool win_minimise_enable;
|
||||
bool win_maximise_pending;
|
||||
bool win_maximise_enable;
|
||||
bool win_title_pending, win_icon_title_pending;
|
||||
bool win_pointer_shape_pending;
|
||||
bool win_pointer_shape_raw;
|
||||
bool win_refresh_pending;
|
||||
bool win_scrollbar_update_pending;
|
||||
bool win_palette_pending;
|
||||
unsigned win_palette_pending_min, win_palette_pending_limit;
|
||||
};
|
||||
|
||||
static inline bool in_utf(Terminal *term)
|
||||
|
Reference in New Issue
Block a user