Added support for sharing context to GraphicsWindowX11
This commit is contained in:
@@ -55,8 +55,18 @@ class GraphicsWindowX11 : public osgViewer::GraphicsWindow
|
||||
if (valid())
|
||||
{
|
||||
setState( new osg::State );
|
||||
getState()->setContextID( osg::GraphicsContext::createNewContextID() );
|
||||
getState()->setGraphicsContext(this);
|
||||
|
||||
if (_traits.valid() && _traits->sharedContext)
|
||||
{
|
||||
getState()->setContextID( _traits->sharedContext->getState()->getContextID() );
|
||||
incrementContextIDUsageCount( getState()->getContextID() );
|
||||
}
|
||||
else
|
||||
{
|
||||
getState()->setContextID( osg::GraphicsContext::createNewContextID() );
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,6 +116,7 @@ class GraphicsWindowX11 : public osgViewer::GraphicsWindow
|
||||
Display* getEventDisplay() { return _eventDisplay; }
|
||||
Window& getParent() { return _parent; }
|
||||
Window& getWindow() { return _window; }
|
||||
GLXContext getGLXContext() { return _glxContext; }
|
||||
|
||||
Cursor& getDefaultCursor() { return _defaultCursor; }
|
||||
Cursor& getNullCursor() { return _nullCursor; }
|
||||
|
||||
@@ -425,6 +425,9 @@ void GraphicsWindowX11::init()
|
||||
// need to pick up from traits
|
||||
GLXContext sharedGLContext = 0;
|
||||
|
||||
GraphicsWindowX11* sharedContextX11 = dynamic_cast<GraphicsWindowX11*>(_traits->sharedContext);
|
||||
if (sharedContextX11) sharedGLContext = sharedContextX11->getGLXContext();
|
||||
|
||||
_glxContext = glXCreateContext( _display, _visualInfo, sharedGLContext, True );
|
||||
|
||||
if (!_glxContext)
|
||||
@@ -576,7 +579,6 @@ bool GraphicsWindowX11::makeCurrentImplementation()
|
||||
return glXMakeCurrent( _display, _window, _glxContext )==True;
|
||||
}
|
||||
|
||||
|
||||
bool GraphicsWindowX11::releaseContextImplementation()
|
||||
{
|
||||
if (!_realized)
|
||||
|
||||
Reference in New Issue
Block a user