diff --git a/terminal.c b/terminal.c index e7095e0c..d6a754c9 100644 --- a/terminal.c +++ b/terminal.c @@ -109,9 +109,6 @@ static void scroll(Terminal *, int, int, int, int); #ifdef OPTIMISE_SCROLL static void scroll_display(Terminal *, int, int, int); #endif /* OPTIMISE_SCROLL */ -static void term_resume_pasting(Terminal *term); -static void term_paste_callback(void *vterm); -static void term_paste_queue(Terminal *term, int timed); static termline *newline(Terminal *term, int cols, int bce) { @@ -2969,7 +2966,6 @@ static void term_out(Terminal *term) term->curs.x = 0; term->wrapnext = FALSE; seen_disp_event(term); - term_resume_pasting(term); if (term->crhaslf) { if (term->curs.y == term->marg_b) @@ -3000,7 +2996,6 @@ static void term_out(Terminal *term) term->curs.x = 0; term->wrapnext = FALSE; seen_disp_event(term); - term_resume_pasting(term); if (term->logctx) logtraffic(term->logctx, (unsigned char) c, LGTYP_ASCII); break; @@ -5708,48 +5703,6 @@ static void sel_spread(Terminal *term) } } -static void term_resume_pasting(Terminal *term) -{ - expire_timer_context(&term->paste_timer_ctx); - term_paste_queue(term, FALSE); -} - -static void term_paste_timing_callback(void *vterm, unsigned long now) -{ - Terminal *term = *(Terminal **)vterm; - term_resume_pasting(term); -} - -static void term_paste_queue(Terminal *term, int timed) -{ - if (timed) { - /* - * Delay sending the rest of the paste buffer until we have - * seen a newline coming back from the server (indicating that - * it's absorbed the data we've sent so far). As a fallback, - * continue sending anyway after a longish timeout. - * - * We use the pointless structure field term->paste_timer_ctx - * (which is a Terminal *, and we'll make sure it points - * straight back to term) as our timer context, so that it can - * be distinguished from term itself. That way, if we see a - * reason to continue pasting before the timer goes off, we - * can cancel just this timer and none of the other terminal - * timers handling display updates, blinking text and cursor, - * and visual bells. - */ - term->paste_timer_ctx = term; - schedule_timer(450, term_paste_timing_callback, - &term->paste_timer_ctx); - } else { - /* - * Just arrange to call term_paste_callback from the top level - * at the next opportunity. - */ - queue_toplevel_callback(term_paste_callback, term); - } -} - static void term_paste_callback(void *vterm) { Terminal *term = (Terminal *)vterm; @@ -5768,7 +5721,7 @@ static void term_paste_callback(void *vterm) term->paste_pos += n; if (term->paste_pos < term->paste_len) { - term_paste_queue(term, TRUE); + queue_toplevel_callback(term_paste_callback, term); return; } } @@ -5838,7 +5791,7 @@ void term_do_paste(Terminal *term) } get_clip(term->frontend, NULL, NULL); - term_paste_queue(term, FALSE); + queue_toplevel_callback(term_paste_callback, term); } void term_mouse(Terminal *term, Mouse_Button braw, Mouse_Button bcooked, @@ -6125,7 +6078,6 @@ void term_nopaste(Terminal *term) { if (term->paste_len == 0) return; - expire_timer_context(&term->paste_timer_ctx); sfree(term->paste_buffer); term->paste_buffer = NULL; term->paste_len = 0; diff --git a/terminal.h b/terminal.h index 9f056112..135ef45a 100644 --- a/terminal.h +++ b/terminal.h @@ -223,7 +223,6 @@ struct terminal_tag { wchar_t *paste_buffer; int paste_len, paste_pos; - Terminal *paste_timer_ctx; void (*resize_fn)(void *, int, int); void *resize_ctx;