summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2019-09-08 10:49:22 +0200
committerLudovic Pouzenc <ludovic@pouzenc.fr>2019-09-08 10:49:22 +0200
commitfa84dfb895d5f3965b2c791b477a1dcc6b4eef7b (patch)
treef0776a4fc67070b5d83e600fca303e5f9cded9bf /src/main.c
parenta5338c572975a82b9efbf95755103176ebbb67a8 (diff)
downloaddemoscene-eo-fa84dfb895d5f3965b2c791b477a1dcc6b4eef7b.tar.gz
demoscene-eo-fa84dfb895d5f3965b2c791b477a1dcc6b4eef7b.tar.bz2
demoscene-eo-fa84dfb895d5f3965b2c791b477a1dcc6b4eef7b.zip
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
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);