vtgl

terminal emulator implemented in OpenGL
git clone anongit@rnpnr.xyz:vtgl.git
Log | Files | Refs | Feed | LICENSE

Commit: a123a12fde70712546102479d03566c37d248d4e
Parent: f1055209d9732ffa0e2cb06054bf4b1dbeb8fb7b
Author: Randy Palamar
Date:   Sun,  7 Jul 2024 12:11:27 -0600

cleanup some TODOs

Diffstat:
Mos_unix.c | 5++---
Mvtgl.c | 16++++++----------
2 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/os_unix.c b/os_unix.c @@ -248,10 +248,9 @@ os_child_exited(os_child c) } static size -os_read_from_child(os_child c, RingBuf *rb) +os_read_from_child(os_child c, RingBuf *rb, size unprocessed_bytes) { - /* TODO: check if we need to care about unprocessed bytes from last run */ - size r = 0, total_bytes_read = 0, remaining = rb->cap; + size r = 0, total_bytes_read = 0, remaining = rb->cap - unprocessed_bytes; do { remaining -= r; total_bytes_read += r; diff --git a/vtgl.c b/vtgl.c @@ -28,6 +28,7 @@ static void clear_colour(void) { v4 cc = normalized_colour(g_colours.data[g_colours.bgidx]); + //v4 cc = normalized_colour(g_colours.data[5]); glClearColor(cc.r, cc.g, cc.b, cc.a); glClear(GL_COLOR_BUFFER_BIT); } @@ -182,8 +183,7 @@ push_empty_cell_rect(RenderPushBuffer *rpb, Term *t, u32 minrow, u32 maxrow, u32 v2 size = {.x = (maxcol - mincol + 1) * cs.w, .y = (maxrow - minrow + 1) * cs.h}; v2 pos = {.x = mincol * cs.w, .y = t->gl.window_size.h - cs.h * (minrow + 1)}; - /* TODO: global colour table */ - Colour colour = {.r = 20, .g = 20, .b = 20, .a = 255}; + Colour colour = g_colours.data[g_colours.bgidx]; push_char(rpb, &t->gl, size, pos, (v2){0}, (uv2){.y = colour.rgba}, 0); } @@ -382,16 +382,13 @@ do_terminal(Term *t, Arena a) RenderPushBuffer *rpb = alloc(&a, RenderPushBuffer, 1); - /* TODO: don't let the input splitting cause draw calls */ - glUseProgram(t->gl.programs[SHADER_RENDER]); - if (os_child_data_available(t->child)) { if (os_child_exited(t->child)) { /* TODO: is there a reason to not immediately exit? */ glfwSetWindowShouldClose(t->gl.window, GL_TRUE); return; } - t->unprocessed_bytes += os_read_from_child(t->child, &t->log); + t->unprocessed_bytes += os_read_from_child(t->child, &t->log, t->unprocessed_bytes); s8 raw = { .len = t->unprocessed_bytes, .data = t->log.buf + (t->log.widx - t->unprocessed_bytes) @@ -401,16 +398,15 @@ do_terminal(Term *t, Arena a) (void)parsed_lines; } - v2 ws = t->gl.window_size; + blit_lines(t, a); + v2 ws = t->gl.window_size; /* NOTE: reset the camera/viewport */ - //glUseProgram(t->gl.programs[SHADER_RENDER]); + glUseProgram(t->gl.programs[SHADER_RENDER]); glUniform1i(t->gl.render.texslot, 0); glBindFramebuffer(GL_FRAMEBUFFER, t->gl.fb); clear_colour(); - - blit_lines(t, a); render_framebuffer(t, rpb); v2 cell_size = get_cell_size(t);