Exemplo n.º 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 );
}
Exemplo n.º 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 );
}
Exemplo n.º 3
0
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 );
}
Exemplo n.º 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 );
}
Exemplo n.º 5
0
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 );
}
Exemplo n.º 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 );
}