Exemple #1
0
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 );
}
Exemple #2
0
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 );
}
Exemple #3
0
void intern checkmouse( unsigned short *pstatus, MOUSEORD *prow, MOUSEORD *pcol, unsigned long *ptime )
{
    *pstatus = currMouseStatus;
    *prow = currMouseRow;
    *pcol = currMouseCol;
    *ptime = uiclock();
    uisetmouse( *prow, *pcol );
}
Exemple #4
0
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 );
}
Exemple #5
0
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 );
}
Exemple #6
0
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 );
}