EVENT UIAPI uieventsource( int update ) { EVENT ev; static int ReturnIdle = 1; unsigned long start; start = uiclock(); for( ; ; ) { ev = forcedevent(); if( ev > EV_NO_EVENT ) break; ev = getanyevent(); if( ev > EV_NO_EVENT ) break; if( ReturnIdle ) { ReturnIdle--; return( EV_IDLE ); } else { if( update ) uirefresh(); if( uiclock() - start >= UIData->tick_delay ) { return( EV_CLOCK_TICK ); } else if( UIData->busy_wait ) { return( EV_SINK ); } } waitforevent(); } ReturnIdle = 1; return( ev ); }
EVENT UIAPI uieventsource( bool update ) { EVENT ev; static int ReturnIdle = 1; unsigned long start; EVENT ( *proc )(); start = uiclock(); for( ; ; ) { ev = forcedevent(); if( ev > EV_NO_EVENT ) break; if( Callback && TimerPeriodMs ) { proc = RdosWaitTimeout( WaitHandle, TimerPeriodMs ); if( proc == 0) { (*Callback)(); } else { ev = (*proc)(); if( ev > EV_NO_EVENT ) { break; } } } else { proc = RdosWaitTimeout( WaitHandle, 25 ); if( proc != 0) { ev = (*proc)(); if( ev > EV_NO_EVENT ) { break; } } if( ReturnIdle ) { ReturnIdle--; return( EV_IDLE ); } else { if( update ) uirefresh(); if( uiclock() - start >= UIData->tick_delay ) { return( EV_CLOCK_TICK ); } else if( UIData->busy_wait ) { return( EV_SINK ); } } proc = RdosWaitTimeout( WaitHandle, 250 ); if( proc != 0) { ev = (*proc)(); if( ev > EV_NO_EVENT ) { break; } } } } ReturnIdle = 1; return( ev ); }
static EVENT doget( bool update ) /*******************************/ { register EVENT ev; static short ReturnIdle = 1; SAREA screen; for( ;; ) { ev = forcedevent(); if( ev > EV_NO_EVENT ) break; ev = _uievent(); if( ev > EV_NO_EVENT ) break; if( ReturnIdle ) { --ReturnIdle; return( EV_IDLE ); } else { if( update ) uirefresh(); if( UIData->busy_wait ) { return( EV_SINK ); } } _armkeyboard(); Receive( UILocalProxy, 0, 0 ); /* wait for some input */ } ReturnIdle = 1; switch( ev ) { case EV_REDRAW_SCREEN: screen.row = 0; screen.col = 0; screen.height= UIData->height; screen.width= UIData->width; uidirty( screen ); UserForcedTermRefresh = true; physupdate( &screen ); break; case EV_MOUSE_HOLD: case EV_MOUSE_HOLD_R: case EV_MOUSE_HOLD_M: case EV_MOUSE_REPEAT: case EV_MOUSE_REPEAT_R: case EV_MOUSE_REPEAT_M: if( update ) uirefresh(); break; } return( ev ); }
EVENT UIAPI uieventsource( bool update ) /**************************************/ { register EVENT ev; static int ReturnIdle = 1; unsigned long start; start = uiclock(); for( ; ; ) { ThreadSwitch(); if( EnterForever ) foreverloop(); ev = forcedevent(); if( ev > EV_NO_EVENT ) break; /* There is no mouse support in NetWare. */ //ev = mouseevent(); //if( ev > EV_NO_EVENT ) // break; ev = keyboardevent(); if( ev > EV_NO_EVENT ) { //uihidemouse(); break; } if( ReturnIdle ) { ReturnIdle--; return( EV_IDLE ); } else { if( update ) uirefresh(); if( uiclock() - start >= UIData->tick_delay ) { return( EV_CLOCK_TICK ); } else if( UIData->busy_wait ) { return( EV_SINK ); } } waitforevent(); } ReturnIdle = 1; return( ev ); }
static EVENT doget( bool update ) /*******************************/ { register EVENT ev; static short ReturnIdle = 1; for( ;; ) { ev = forcedevent(); if( ev > EV_NO_EVENT ) break; ev = _uievent(); if( ev > EV_NO_EVENT ) break; if( ReturnIdle ) { --ReturnIdle; return( EV_IDLE ); } else { if( update ) uirefresh(); if( UIData->busy_wait ) { return( EV_SINK ); } } kb_wait( 60, 0 ); } ReturnIdle = 1; if( ev==EV_REDRAW_SCREEN ){ extern bool UserForcedTermRefresh; SAREA screen={ 0, 0, 0, 0 }; screen.height= UIData->height; screen.width= UIData->width; uidirty( screen ); UserForcedTermRefresh= TRUE; physupdate( &screen ); } return( ev ); }
ui_event UIAPI uieventsource( bool update ) { static int ReturnIdle = 1; ui_event ui_ev; MOUSETIME start; event_proc proc; start = uiclock(); for( ;; ) { if( HasEscape ) { HasEscape = false; ui_ev = EV_ESCAPE; break; } ui_ev = forcedevent(); if( ui_ev > EV_NO_EVENT ) break; if( Callback != NULL && TimerPeriodMs ) { proc = (event_proc)RdosWaitTimeout( WaitHandle, TimerPeriodMs ); if( proc == NULL ) { (*Callback)(); } else { ui_ev = (*proc)(); if( ui_ev > EV_NO_EVENT ) { break; } } } else { proc = (event_proc)RdosWaitTimeout( WaitHandle, 25 ); if( proc != NULL ) { ui_ev = (*proc)(); if( ui_ev > EV_NO_EVENT ) { break; } } if( ReturnIdle ) { ReturnIdle--; return( EV_IDLE ); } else { if( update ) uirefresh(); if( uiclock() - start >= UIData->tick_delay ) { return( EV_CLOCK_TICK ); } else if( UIData->busy_wait ) { return( EV_SINK ); } } proc = (event_proc)RdosWaitTimeout( WaitHandle, 250 ); if( proc != NULL ) { ui_ev = (*proc)(); if( ui_ev > EV_NO_EVENT ) { break; } } } } ReturnIdle = 1; return( ui_ev ); }