diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 36 |
1 files changed, 25 insertions, 11 deletions
@@ -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); |