Commit: bfa3e53438d2e2a9ac5e86a9d5661c3aa0e81723
Parent: 565b5361f44aa04fdf61f6290325d6f4881e9bdb
Author: Randy Palamar
Date: Mon, 19 Aug 2024 06:29:39 -0600
ensure redraw on resize
Diffstat:
3 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/terminal.c b/terminal.c
@@ -952,5 +952,5 @@ blit_lines(Term *t, Arena a, size line_count)
push_line(t, tv->lines.buf + line_idx, a);
}
- t->gl.flags &= ~NEEDS_FULL_BLIT;
+ t->gl.flags &= ~(NEEDS_FULL_BLIT|NEEDS_BLIT);
}
diff --git a/util.h b/util.h
@@ -183,7 +183,8 @@ typedef struct {
enum gl_flags {
NEEDS_RESIZE = 1 << 0,
- NEEDS_FULL_BLIT = 1 << 1,
+ NEEDS_BLIT = 1 << 1,
+ NEEDS_FULL_BLIT = 1 << 2,
UPDATE_RENDER_UNIFORMS = 1 << 29,
UPDATE_POST_UNIFORMS = 1 << 30,
};
diff --git a/vtgl.c b/vtgl.c
@@ -407,6 +407,7 @@ do_terminal(Term *t, Arena a)
if (t->gl.flags & UPDATE_POST_UNIFORMS)
update_uniforms(t, SHADER_POST);
+ size parsed_lines = 0;
if (os_child_data_available(t->child)) {
RingBuf *rb = &t->views[t->view_idx].log;
if (os_child_exited(t->child)) {
@@ -420,10 +421,13 @@ do_terminal(Term *t, Arena a)
.len = t->unprocessed_bytes,
.data = rb->buf + (rb->widx - t->unprocessed_bytes)
};
- size parsed_lines = split_raw_input_to_lines(t, raw);
- blit_lines(t, a, parsed_lines);
+ parsed_lines = split_raw_input_to_lines(t, raw);
+ t->gl.flags |= NEEDS_BLIT;
}
+ if (t->gl.flags & (NEEDS_BLIT|NEEDS_FULL_BLIT))
+ blit_lines(t, a, parsed_lines);
+
/* NOTE: reset the camera/viewport */
glUseProgram(t->gl.programs[SHADER_RENDER]);
glUniform1i(t->gl.render.texslot, 0);