From 004d769d00bdbbcec28e806798489fbbd81d4fe4 Mon Sep 17 00:00:00 2001 From: Jarcode Date: Sun, 26 Nov 2017 20:54:44 -0800 Subject: [PATCH] fixed frame timer --- glava.c | 2 ++ render.c | 14 +++++++++----- render.h | 1 + 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/glava.c b/glava.c index 04fbf3e..3f9be30 100644 --- a/glava.c +++ b/glava.c @@ -53,6 +53,8 @@ int main(int argc, char** argv) { float lb[r->bufsize_request], rb[r->bufsize_request]; while (r->alive) { + + rd_time(r); /* update timer for this frame */ bool modified; /* if the audio buffer has been updated by the streaming thread */ diff --git a/render.c b/render.c index bf2c9f8..472f115 100644 --- a/render.c +++ b/render.c @@ -889,12 +889,16 @@ struct renderer* rd_new(int x, int y, int w, int h, const char* data) { return r; } +void rd_time(struct renderer* r) { + struct gl_data* gl = r->gl; + + glfwSetTime(0.0D); /* reset time for measuring this frame */ +} + void rd_update(struct renderer* r, float* lb, float* rb, size_t bsz, bool modified) { struct gl_data* gl = r->gl; size_t t, a; - glfwSetTime(0.0D); /* reset time for measuring this frame */ - r->alive = !glfwWindowShouldClose(gl->w); if (!r->alive) return; @@ -954,9 +958,8 @@ void rd_update(struct renderer* r, float* lb, float* rb, size_t bsz, bool modifi glUseProgram(current->shader); /* Bind framebuffer if this is not the final pass */ - if (current->valid) { + if (current->valid) glBindFramebuffer(GL_FRAMEBUFFER, current->fbo); - } glClear(GL_COLOR_BUFFER_BIT); @@ -1019,7 +1022,8 @@ void rd_update(struct renderer* r, float* lb, float* rb, size_t bsz, bool modifi drawoverlay(&gl->overlay); /* Fullscreen quad (actually just two triangles) */ /* Reset some state */ - glBindFramebuffer(GL_FRAMEBUFFER, 0); + if (current->valid) + glBindFramebuffer(GL_FRAMEBUFFER, 0); glUseProgram(0); prev = current; diff --git a/render.h b/render.h index 66b82d7..8aed1d7 100644 --- a/render.h +++ b/render.h @@ -10,3 +10,4 @@ typedef struct renderer { struct renderer* rd_new(int x, int y, int w, int h, const char* shader_path); void rd_update(struct renderer*, float* lb, float* rb, size_t bsz, bool modified); void rd_destroy(struct renderer*); +void rd_time(struct renderer*);