=================================================================== RCS file: /home/cvs/OpenXM_contrib2/windows/engine2000/io.c,v retrieving revision 1.3 retrieving revision 1.8 diff -u -p -r1.3 -r1.8 --- OpenXM_contrib2/windows/engine2000/io.c 2001/10/09 01:36:28 1.3 +++ OpenXM_contrib2/windows/engine2000/io.c 2013/11/29 08:21:29 1.8 @@ -54,6 +54,7 @@ static HANDLE hNotify0,hNotify_Ack0,hIntr0; static HANDLE hDebugNotify,hDebugNotify_Ack,hDebugIntr,hDebugIntr_Ack,hDebugKill; HANDLE hResizeNotify,hResizeNotify_Ack; /* should be visible from another file */ +HANDLE hMainThreadReady,hCanvasCreated; /* notification for ox_plot */ /* XXX */ extern HANDLE hStreamNotify,hStreamNotify_Ack; /* declared in io/ox.c */ @@ -69,7 +70,7 @@ static struct ErrMsg Errmsg; * interrupt_state : flag to distinguish an Asir error and a cancellation */ -static int emergency; +int emergency; static int interrupt_state; int debuggui_is_present; int messagegui_is_present; @@ -124,12 +125,13 @@ void watch_intr() { send_intr(); /* for Asir; recv_intr is reset to 0 in Asir */ recv_intr = 1; + PulseEvent(hIntr_Ack); break; case WAIT_OBJECT_0+1: /* hKill */ default: terminate_debug_gui(); emergency = 1; /* XXX */ - asir_terminate(2); + asir_terminate(3); exit(0); /* NOTREACHED */ break; @@ -161,7 +163,7 @@ void ox_watch_intr() { ResetEvent(hOxKill); terminate_debug_gui(); emergency = 1; /* XXX */ - asir_terminate(2); + asir_terminate(3); /* NOTREACHED */ break; } @@ -322,10 +324,14 @@ void set_debug_handles(int on) } } +extern int wfep_mode; + void Init_IO() { _setargv(); - if ( !strcmp(__argv[0],"ox_asir") ) { + if ( !strncmp(__argv[0],"ox_asir",strlen("ox_asir")) ) { + /* ox_asir or ox_asir_wfep */ + if ( !strcmp(__argv[0],"ox_asir_wfep") ) wfep_mode = 1; OxAsirMain(__argc,__argv); exit(0); } else if ( !strcmp(__argv[0],"ox_plot") ) @@ -431,6 +437,10 @@ void OxPlotMain(int argc, char **argv) hResizeNotify = CreateEvent(NULL,TRUE,FALSE,eventname); sprintf(eventname,"resize_notify_ack_%d",mypid); hResizeNotify_Ack = CreateEvent(NULL,TRUE,FALSE,eventname); + sprintf(eventname,"mainthreadready_%d",mypid); + hMainThreadReady = CreateEvent(NULL,TRUE,FALSE,eventname); + sprintf(eventname,"canvascreated_%d",mypid); + hCanvasCreated = CreateEvent(NULL,TRUE,FALSE,eventname); hWatchStreamThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ox_watch_stream,NULL,0,&tid); // ret = SetThreadPriority(hWatchStreamThread,THREAD_PRIORITY_BELOW_NORMAL);