00001 #include <stdlib.h>
00002 #include <pthread.h>
00003 #include "ImageDisplay.h"
00004 #include "ImageWindow.h"
00005
00006
00007 int procMain(int, char**);
00008 void *start_routine(void *arg);
00009
00010
00011
00012 pthread_t procThread;
00013
00014 pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
00015 pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
00016
00017 bool request = false;
00018 void (*createFirstWindow)();
00019
00020
00021
00022 struct Args { int argc; char** argv; };
00023
00024
00025 int main(int argc, char** argv)
00026 {
00027 Glow::Init(argc, argv);
00028 Args args = { argc,argv };
00029
00030 pthread_mutex_init(&mut,NULL);
00031 pthread_create(&procThread, NULL, start_routine, &args);
00032
00033 pthread_mutex_lock(&mut);
00034 {
00035 while (!request)
00036 pthread_cond_wait(&cond, &mut);
00037 }
00038 pthread_mutex_unlock(&mut);
00039
00040 createFirstWindow();
00041
00042 Glow::MainLoop();
00043
00044 return 0;
00045 }
00046
00047
00048 void *start_routine(void *arg)
00049 {
00050 Args* args = (Args*) arg;
00051
00052 int retval = procMain(args->argc, args->argv);
00053
00054 pthread_cond_destroy(&cond);
00055 pthread_mutex_destroy(&mut);
00056
00057 exit(retval);
00058
00059 return 0;
00060 }
00061