From fa84dfb895d5f3965b2c791b477a1dcc6b4eef7b Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Sun, 8 Sep 2019 10:49:22 +0200 Subject: TRACE & DEBUG, 80x24x24fps, still troubles with render to texture Tidy TRACE and DEBUG for cacaserver use or ncurses (no spurious printf). Switch to 80x24 at 24fps for bandwidth (4 Mbps) Colors are OK with xterm, but not with gnome-terminal --- src/main.c | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 7dd18ee..94db4e5 100644 --- a/src/main.c +++ b/src/main.c @@ -42,9 +42,6 @@ #define SCENE_COUNT 3 #define SCENE_NEXT do { shm->scene = (shm->scene+1)%SCENE_COUNT; } while(0) -#define EXPR_MIN_SIZE (shm->ge.w<80 || shm->ge.h<25) -#define TEXT_MIN_SIZE "80x25" - #define SEM_POST(sem,errcode) \ do { \ TRACE_SEM(sem,"sem_post",""); \ @@ -99,6 +96,7 @@ int main() { int do_fork1() { TRACE("call"); + fflush(stdout); switch (fork()) { case -1: return 4; break; case 0: return worker_sdl(); break; @@ -108,6 +106,7 @@ int do_fork1() { int do_fork2() { TRACE("call"); + fflush(stdout); switch (fork()) { case -1: return 5; break; case 0: return worker_gl(); break; @@ -125,7 +124,7 @@ int parent() { shm->ge.dp = caca_create_display(NULL); if(!shm->ge.dp) return 1; caca_set_display_title(shm->ge.dp, "demoscene-eo"); - caca_set_display_time(shm->ge.dp, 16666); // 1e6µs/60 = 16666.66... It is ~60 fps + caca_set_display_time(shm->ge.dp, 41666); // 1e6µs/24 = 41666.66... It is ~24 fps shm->ge.cv = caca_get_canvas(shm->ge.dp); shm->ge.d = caca_create_dither(32, FBUF_W, FBUF_H, FBUF_W*4, 0x00ff0000, 0x0000ff00, 0x000000ff, 0); @@ -234,9 +233,13 @@ static void worker_sdl_sighandler(int sig) { int worker_sdl() { int lastscene=-1, res; struct sigaction sa; +#ifdef DEBUG Uint32 sdl_win_flags = 0; //XXX for final version, consider adding SDL_WINDOW_HIDDEN - SDL_RendererInfo renderer_info; SDL_Event sdl_ev; +#else + Uint32 sdl_win_flags = SDL_WINDOW_HIDDEN; +#endif + SDL_RendererInfo renderer_info; TRACE("call"); @@ -297,6 +300,7 @@ int worker_sdl() { } if (skip) skip = 0; +#ifdef DEBUG // Event handling for the SDL window (debug purposes) while(SDL_PollEvent(&sdl_ev)) { switch(sdl_ev.type) { @@ -314,7 +318,7 @@ int worker_sdl() { break; } } - +#endif SEM_POST(&shm->parent_can_read_result, 21); } @@ -336,9 +340,13 @@ static void worker_gl_sighandler(int sig) { int worker_gl() { int lastscene=-1, res; struct sigaction sa; - Uint32 sdl_win_flags = SDL_WINDOW_OPENGL; //XXX for final version, consider adding SDL_WINDOW_HIDDEN - SDL_RendererInfo renderer_info; +#ifdef DEBUG + Uint32 sdl_win_flags = SDL_WINDOW_OPENGL; SDL_Event gl_ev; +#else + Uint32 sdl_win_flags = SDL_WINDOW_OPENGL | SDL_WINDOW_HIDDEN; +#endif + SDL_RendererInfo renderer_info; TRACE("call"); @@ -376,7 +384,12 @@ int worker_gl() { if (shm->ge.gl_target == NULL) return 9; shm->ge.gl_ctx = SDL_GL_CreateContext(shm->ge.gl_win); if (shm->ge.gl_ctx == NULL) return 11; - +/* + glBindFramebuffer(GL_FRAMEBUFFER,0); + glClearColor(0,0,0,1); + glClear(GL_COLOR_BUFFER_BIT); + SDL_GL_SwapWindow(shm->ge.gl_win); +*/ while (!shm->done) { alarm(1); SEM_WAIT(&shm->worker_gl_can_render,10); @@ -413,6 +426,7 @@ int worker_gl() { } if (skip) skip = 0; +#ifdef DEBUG // Event handling for the GL window (debug purposes) while(SDL_PollEvent(&gl_ev)) { switch(gl_ev.type) { @@ -430,11 +444,11 @@ int worker_gl() { break; } } - +#endif SEM_POST(&shm->parent_can_read_result, 11); } - //SDL_DestroyTexture(shm->ge.gl_target); + SDL_DestroyTexture(shm->ge.gl_target); SDL_GL_DeleteContext(shm->ge.gl_ctx); SDL_DestroyWindow(shm->ge.gl_win); -- cgit v1.2.3