summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c36
1 files changed, 25 insertions, 11 deletions
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);