mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-23 05:33:57 -04:00
term: enqueue data to slave if there are queued paste data buffers
When writing paste data to the terminal (either interactively, or as an OSC-52 reply), we enqueue other data (key presses, for examples, or query replies) while the paste is happening. The idea is to send the key press _after_ all paste data has been written, to ensure consistency. Unfortunately, we only checked for an on-going paste. I.e. where the paste itself hasn't yet finished. It is also possible the paste itself has finished, but we haven't yet flushed all the paste buffers. That is, if we were able to *receive* paste data faster than the terminal client was able to *consume* it. In this case, we've queued up paste data in the terminal. These are in separate queues, and when emitting e.g. a key press, we didn't check if all _those_ queues had been flushed yet. Closes #2307
This commit is contained in:
parent
2fb7bb0ea4
commit
037a2f4fa2
2 changed files with 11 additions and 1 deletions
|
|
@ -120,7 +120,10 @@ term_to_slave(struct terminal *term, const void *data, size_t len)
|
|||
return false;
|
||||
}
|
||||
|
||||
if (tll_length(term->ptmx_buffers) > 0 || term->is_sending_paste_data) {
|
||||
if (unlikely(tll_length(term->ptmx_buffers) > 0 ||
|
||||
term->is_sending_paste_data ||
|
||||
tll_length(term->ptmx_paste_buffers) > 0))
|
||||
{
|
||||
/*
|
||||
* Don't even try to send data *now* if there's queued up
|
||||
* data, since that would result in events arriving out of
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue