working on the transformation node system
[erebus2020] / xerebus / src / main.c
index 9569df1..0eda94d 100644 (file)
@@ -99,6 +99,7 @@ int main(int argc, char **argv)
                return 1;
        }
        erb_set_done_callback(erb, jobdone, 0);
+
        reshape_pending = redisp_pending = 1;
 
        glGenTextures(1, &fbtex);
@@ -125,16 +126,17 @@ int main(int argc, char **argv)
                        break;
                }
 
-               redisp_pending = 0;
-               glutMainLoopEvent();
-
                if(FD_ISSET(pfd[0], &rdset)) {
                        struct erb_rect rect;
                        read(pfd[0], &rect, sizeof rect);
                        glTexSubImage2D(GL_TEXTURE_2D, 0, rect.x, rect.y, rect.w, rect.h,
                                        GL_RGBA, GL_FLOAT, erb_getframe(erb) + (rect.y * win_width + rect.x) * 4);
                        post_redisplay();
-                       printf("update (%d %d %dx%d)!\n", rect.x, rect.y, rect.w, rect.h);
+               }
+
+               if(FD_ISSET(xfd, &rdset) || redisp_pending) {
+                       redisp_pending = 0;
+                       glutMainLoopEvent();
                }
        }
 #endif /* __unix__ */
@@ -145,7 +147,6 @@ int main(int argc, char **argv)
 
 static void jobdone(unsigned int job, struct erb_rect *rect, void *cls)
 {
-       printf("jobdone!\n");
        write(pfd[1], rect, sizeof *rect);
 }