Ejemplo n.º 1
0
EventHandler::EventHandler( WindowIF* window )
        : _window( window )
        , _magellanUsed( false )
{
    LBASSERT( window );

    if( !_eventHandlers )
        _eventHandlers = new EventHandlers;
    _eventHandlers->push_back( this );

    eq::Pipe* pipe = window->getPipe();
    MessagePump* messagePump =
        dynamic_cast< MessagePump* >( pipe->isThreaded() ?
                                      pipe->getMessagePump() :
                                      pipe->getConfig()->getMessagePump( ));
    Display* display = window->getXDisplay();
    LBASSERT( display );
    if( messagePump )
        messagePump->register_( display );
    else
        LBINFO << "Using glx::EventHandler without glx::MessagePump, external "
               << "event dispatch assumed" << std::endl;

#ifdef EQUALIZER_USE_MAGELLAN_GLX
    lunchbox::ScopedFastWrite mutex( _magellan );
    if( !_magellan->display )
    {
        if( spnav_x11_open( display, window->getXDrawable( )) == -1 )
        {
            LBWARN << "Failed to connect to the space navigator daemon"
                   << std::endl;
            return;
        }
        _magellan->display = display;
    }
    else if( _magellan->display != display )
    {
        LBINFO << "Multi-display space mouse support incomplete" << std::endl;
        return;
    }
    else if( spnav_x11_window( window->getXDrawable( )) == -1 )
    {
        LBWARN << "Failed to register window with the space navigator daemon"
               << std::endl;
        return;
    }

    ++_magellan->used;
    _magellanUsed = true;
#endif
}
Ejemplo n.º 2
0
EventHandler::EventHandler( Proxy* proxy )
    : _proxy( proxy )
{
    LBASSERT( proxy );

    if( !_eventHandlers )
        _eventHandlers = new EventHandlers;
    _eventHandlers->push_back( this );

    Pipe* pipe = proxy->getChannel().getPipe();
    MessagePump* messagePump = pipe->isThreaded() ? pipe->getMessagePump() :
                                            pipe->getConfig()->getMessagePump();
    if( messagePump )
        messagePump->register_( proxy );
    else
        LBINFO << "Using deflect::EventHandler without MessagePump, "
               << "external event dispatch assumed" << std::endl;
}
Ejemplo n.º 3
0
EventHandler::EventHandler( WindowIF* window )
        : _window( window )
{
    LBASSERT( window );

    if( !_eventHandlers )
        _eventHandlers = new EventHandlers;
    _eventHandlers->push_back( this );

    eq::Pipe* pipe = window->getPipe();
    MessagePump* messagePump =
        dynamic_cast< MessagePump* >( pipe->isThreaded() ?
                                         pipe->getMessagePump() :
                                         pipe->getConfig()->getMessagePump( ));
    if( messagePump )
    {
        Display* display = window->getXDisplay();
        LBASSERT( display );
        messagePump->register_( display );
    }
    else
        LBINFO << "Using glx::EventHandler without glx::MessagePump, external "
               << "event dispatch assumed" << std::endl;
}