bool Window::createTransferWindow() { LBASSERT( _systemWindow ); if( _transferWindow ) return true; // create another (shared) osWindow with no drawable, restore original const int32_t drawable = getIAttribute( IATTR_HINT_DRAWABLE ); setIAttribute( IATTR_HINT_DRAWABLE, OFF ); const Pipe* pipe = getPipe(); _transferWindow = pipe->getWindowSystem().createWindow( this ); if( _transferWindow ) { if( !_transferWindow->configInit( )) { LBWARN << "Transfer window initialization failed" << std::endl; delete _transferWindow; _transferWindow = 0; } else makeCurrentTransfer(); } else LBERROR << "Window system " << pipe->getWindowSystem() << " not implemented or supported" << std::endl; setIAttribute( IATTR_HINT_DRAWABLE, drawable ); makeCurrent(); LBVERB << "Transfer window initialization finished" << std::endl; return _transferWindow != 0; }
bool Window::createTransferWindow() { LBASSERT( _systemWindow ); if( _transferWindow ) return true; // create another (shared) osWindow with no drawable WindowSettings settings = getSettings(); settings.setIAttribute( WindowSettings::IATTR_HINT_DRAWABLE, OFF ); const SystemWindow* sysWindow = _sharedContextWindow ? _sharedContextWindow->getSystemWindow() : 0; settings.setSharedContextWindow( sysWindow ); const Pipe* pipe = getPipe(); _transferWindow = pipe->getWindowSystem().createWindow( this, settings ); if( _transferWindow ) { if( !_transferWindow->configInit( )) { LBWARN << "Transfer window initialization failed" << std::endl; delete _transferWindow; _transferWindow = 0; } else makeCurrentTransfer(); // #177 } else LBERROR << "Window system " << pipe->getWindowSystem() << " not implemented or supported" << std::endl; makeCurrent(); LBVERB << "Transfer window initialization finished" << std::endl; return _transferWindow != 0; }