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 ); }
void intern checkmouse( unsigned short *pstatus, MOUSEORD *prow, MOUSEORD *pcol, unsigned long *ptime ) { *pstatus = currMouseStatus; *prow = currMouseRow; *pcol = currMouseCol; *ptime = uiclock(); uisetmouse( *prow, *pcol ); }
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 bool cm_check( MOUSESTAT *status, MOUSEORD *row, MOUSEORD *col, MOUSETIME *time ) /**************************************************************************************/ { struct mouse_event event; struct itimerspec timer; if( MouseInstalled ) { if( mouse_read( MouseCtrl, &event, 1, UIRemProxy, 0 ) > 0 ) { ScaledRow -= event.dy; if( ScaledRow < 0 ) ScaledRow = 0; if( ScaledRow > ( UIData->height - 1 ) * MOUSE_SCALE ) { ScaledRow = ( UIData->height - 1 ) * MOUSE_SCALE; } ScaledCol += event.dx; if( ScaledCol < 0 ) ScaledCol = 0; if( ScaledCol > ( UIData->width - 1 ) * MOUSE_SCALE ) { ScaledCol = ( UIData->width - 1 ) * MOUSE_SCALE; } MyStatus = 0; if( event.buttons & _MOUSE_LEFT ) MyStatus |= UI_MOUSE_PRESS; if( event.buttons & _MOUSE_MIDDLE ) MyStatus |= UI_MOUSE_PRESS_MIDDLE; if( event.buttons & _MOUSE_RIGHT ) MyStatus |= UI_MOUSE_PRESS_RIGHT; timer.it_value.tv_sec = 0; timer.it_value.tv_nsec = 0; } else if( (MyStatus & UI_MOUSE_PRESS_ANY) == 0 ) { timer.it_value.tv_sec = 0; timer.it_value.tv_nsec = 0; } else { timer.it_value.tv_sec = 0; timer.it_value.tv_nsec = UIData->mouse_rpt_delay * 1000000UL; if( timer.it_value.tv_nsec == 0 ) { timer.it_value.tv_nsec = 1; } } timer.it_interval.tv_sec = 0; timer.it_interval.tv_nsec = 0; reltimer( MouseTimer, &timer, NULL ); *status = MyStatus; *time = uiclock(); *row = ScaledRow / MOUSE_SCALE; *col = ScaledCol / MOUSE_SCALE; } uisetmouse( *row, *col ); return( false ); }
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 ); }