示例#1
0
//----------------------------------------------------------------------
// render context
//----------------------------------------------------------------------
void Window::_addRenderContext( const RenderContext& context )
{
    LB_TS_THREAD( _pipeThread );
    _renderContexts[BACK].push_back( context );
}
示例#2
0
void Pipe::releaseFrame( const uint32_t frameNumber )
{
    LB_TS_THREAD( _pipeThread );
    _impl->finishedFrame = frameNumber;
    LBLOG( LOG_TASKS ) << "---- Finished Frame --- "<< frameNumber << std::endl;
}
示例#3
0
void EventHandler::_processEvent( WindowEvent& event )
{
    LB_TS_THREAD( _thread );

    XEvent& xEvent = event.xEvent;
    XID drawable = xEvent.xany.window;

    if( _window->getXDrawable() != drawable )
        return;

    eq::Window* window = _window->getWindow();

    switch( xEvent.type )
    {
        case Expose:
            if( xEvent.xexpose.count ) // Only report last expose event
                return;
                
            event.type = Event::WINDOW_EXPOSE;
            break;

        case ConfigureNotify:
            event.type = Event::WINDOW_RESIZE;
            _getWindowSize( xEvent.xany.display, drawable, event.resize );
            break;

        case UnmapNotify:
            event.type = Event::WINDOW_HIDE;
            _getWindowSize( xEvent.xany.display, drawable, event.resize );
            break;

        case MapNotify:
            event.type = Event::WINDOW_SHOW;
            _getWindowSize( xEvent.xany.display, drawable, event.resize );
            break;

        case ClientMessage:
        {
            Atom deleteAtom = XInternAtom( xEvent.xany.display,
                                           "WM_DELETE_WINDOW", False );

            if( static_cast<Atom>( xEvent.xclient.data.l[0] ) != deleteAtom )
                return; // not a delete message, ignore.
        }
        // else: delete message, fall through
        case DestroyNotify:
            event.type = Event::WINDOW_CLOSE;
            break;

        case MotionNotify:
            event.type = Event::WINDOW_POINTER_MOTION;
            event.pointerMotion.x = xEvent.xmotion.x;
            event.pointerMotion.y = xEvent.xmotion.y;
            event.pointerMotion.buttons = _getButtonState( xEvent );
            event.pointerMotion.button  = PTR_BUTTON_NONE;

            _computePointerDelta( window, event );
            _getRenderContext( window, event );
            break;

        case ButtonPress:
            event.type = Event::WINDOW_POINTER_BUTTON_PRESS;
            event.pointerButtonPress.x = xEvent.xbutton.x;
            event.pointerButtonPress.y = xEvent.xbutton.y;
            event.pointerButtonPress.buttons = _getButtonState( xEvent );
            event.pointerButtonPress.button  = _getButtonAction( xEvent );

            // Translate wheel events
            switch( event.pointerButtonPress.button )
            {
              case PTR_BUTTON4: event.pointerWheel.xAxis = 1; break;
              case PTR_BUTTON5: event.pointerWheel.xAxis = -1; break;
              case PTR_BUTTON6: event.pointerWheel.yAxis = 1; break;
              case PTR_BUTTON7: event.pointerWheel.yAxis = -1; break;
            }
            switch( event.pointerButtonPress.button )
            {
              case PTR_BUTTON4:
              case PTR_BUTTON5:
              case PTR_BUTTON6:
              case PTR_BUTTON7:
                event.type = Event::WINDOW_POINTER_WHEEL;
                event.pointerWheel.button = PTR_BUTTON_NONE;
            }

            _computePointerDelta( window, event );
            _getRenderContext( window, event );
            break;
            
        case ButtonRelease:
            event.type = Event::WINDOW_POINTER_BUTTON_RELEASE;
            event.pointerButtonRelease.x = xEvent.xbutton.x;
            event.pointerButtonRelease.y = xEvent.xbutton.y;
            event.pointerButtonRelease.buttons = _getButtonState( xEvent );
            event.pointerButtonRelease.button  = _getButtonAction( xEvent);
            
            _computePointerDelta( window, event );
            _getRenderContext( window, event );
            break;
            
        case KeyPress:
            event.type = Event::KEY_PRESS;
            event.keyPress.key = _getKey( xEvent );
            break;
                
        case KeyRelease:
            event.type = Event::KEY_RELEASE;
            event.keyPress.key = _getKey( xEvent );
            break;

        case ReparentNotify:
        case VisibilityNotify:
            event.type = Event::UNKNOWN;
            LBVERB << "Ignored X event, type " << xEvent.type << std::endl;
            break;

        default:
            event.type = Event::UNKNOWN;
            LBWARN << "Unhandled X event, type " << xEvent.type << std::endl;
            break;
    }

    event.originator = window->getID();
    event.serial = window->getSerial();
    _window->processEvent( event );
}
示例#4
0
uint32_t Pipe::getCurrentFrame() const
{
    LB_TS_THREAD( _pipeThread );
    return _impl->currentFrame;
}
示例#5
0
void Pipe::startFrame( const uint32_t frameNumber )
{
    LB_TS_THREAD( _pipeThread );
    _impl->currentFrame = frameNumber;
    LBLOG( LOG_TASKS ) << "---- Started Frame ---- "<< frameNumber << std::endl;
}
示例#6
0
Compressor::Compressor( PluginRegistry& registry, const uint32_t name )
    : impl_( new detail::Compressor( registry, name ))
{
    LB_TS_THREAD( _thread );
}
示例#7
0
Compressor::Compressor()
    : impl_( new detail::Compressor )
{
    LB_TS_THREAD( _thread );
}
void FrameBufferObject::bind()
{
    LB_TS_THREAD( _thread );
    LBASSERT( _fboID );
    EQ_GL_CALL( glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, _fboID ));
}
示例#9
0
Decompressor::Decompressor(const uint32_t name)
    : impl_(new detail::Decompressor(name))
{
    LB_TS_THREAD(_thread);
}
示例#10
0
文件: MemoryUnit.cpp 项目: vr3d/Livre
void AllocMemoryUnit::alloc( const uint32_t allocSizePerElement,
                             const uint32_t dataSize )
{
    LB_TS_THREAD( thread_ );
    _rawData.resize( allocSizePerElement * dataSize );
}