1175-oglthread.patch
b/code/nel/include/nel/3d/driver.h Sat Jan 15 21:17:15 2011 +0100 | ||
---|---|---|
571 | 571 |
/// get the number of VBL wait when a swapBuffers() is issued. 0 means no synchronisation to the VBL |
572 | 572 |
virtual uint getSwapVBLInterval()=0; |
573 | 573 |
|
574 |
/// Detach rendering context allowing a second thread to use the actual context. |
|
575 |
virtual bool detachContext()=0; |
|
576 |
/// Attach rendering context to current thread. |
|
577 |
virtual bool attachContext()=0; |
|
578 |
|
|
574 | 579 |
|
575 | 580 |
/// \name Profiling. |
576 | 581 |
// @{ |
b/code/nel/include/nel/3d/driver_user.h Sat Jan 15 21:17:15 2011 +0100 | ||
---|---|---|
474 | 474 |
virtual void forceTextureResize(uint divisor); |
475 | 475 |
virtual void forceNativeFragmentPrograms(bool nativeOnly); |
476 | 476 |
virtual bool setMonitorColorProperties (const CMonitorColorProperties &properties); |
477 |
/// Detach rendering context allowing a second thread to use the actual context. |
|
478 |
virtual bool detachContext(); |
|
479 |
/// Attach rendering context to current thread. |
|
480 |
virtual bool attachContext(); |
|
481 |
|
|
477 | 482 |
// @} |
478 | 483 |
|
479 | 484 |
/// \name Shape Bank |
b/code/nel/include/nel/3d/u_driver.h Sat Jan 15 21:17:15 2011 +0100 | ||
---|---|---|
838 | 838 |
virtual bool pasteTextFromClipboard(ucstring &text) =0; |
839 | 839 |
// @} |
840 | 840 |
|
841 |
/// \name Multi thread management |
|
842 |
// @{ |
|
843 |
virtual bool detachContext()=0; |
|
844 |
virtual bool attachContext()=0; |
|
845 |
// @} |
|
846 |
|
|
841 | 847 |
public: |
842 | 848 |
|
843 | 849 |
/** |
b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp Sat Jan 15 21:17:15 2011 +0100 | ||
---|---|---|
3889 | 3889 |
return _EventEmitter.pasteTextFromClipboard(text); |
3890 | 3890 |
} |
3891 | 3891 |
|
3892 |
bool CDriverD3D::detachContext() |
|
3893 |
{ |
|
3894 |
return true; |
|
3895 |
} |
|
3896 |
|
|
3897 |
bool CDriverD3D::attachContext() |
|
3898 |
{ |
|
3899 |
return true; |
|
3900 |
} |
|
3892 | 3901 |
bool CDriverD3D::convertBitmapToIcon(const NLMISC::CBitmap &bitmap, HICON &icon, uint iconWidth, uint iconHeight, uint iconDepth, const NLMISC::CRGBA &col, sint hotSpotX, sint hotSpotY, bool cursor) |
3893 | 3902 |
{ |
3894 | 3903 |
CBitmap src = bitmap; |
b/code/nel/src/3d/driver/direct3d/driver_direct3d.h Sat Jan 15 21:17:15 2011 +0100 | ||
---|---|---|
2491 | 2491 |
virtual bool copyTextToClipboard(const ucstring &text); |
2492 | 2492 |
virtual bool pasteTextFromClipboard(ucstring &text); |
2493 | 2493 |
|
2494 |
virtual bool attachContext(); |
|
2495 |
virtual bool detachContext(); |
|
2496 |
|
|
2494 | 2497 |
public: |
2495 | 2498 |
#ifdef NL_DEBUG |
2496 | 2499 |
std::set<CVBDrvInfosD3D *> _LockedBuffers; |
b/code/nel/src/3d/driver/opengl/driver_opengl.h Sat Jan 15 21:17:15 2011 +0100 | ||
---|---|---|
340 | 340 |
virtual bool copyTextToClipboard(const ucstring &text); |
341 | 341 |
virtual bool pasteTextFromClipboard(ucstring &text); |
342 | 342 |
|
343 |
|
|
344 |
virtual bool detachContext(); |
|
345 |
virtual bool attachContext(); |
|
346 |
|
|
343 | 347 |
virtual uint32 getAvailableVertexAGPMemory (); |
344 | 348 |
virtual uint32 getAvailableVertexVRAMMemory (); |
345 | 349 |
|
b/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp Sat Jan 15 21:17:15 2011 +0100 | ||
---|---|---|
1113 | 1113 |
|
1114 | 1114 |
return true; |
1115 | 1115 |
} |
1116 |
|
|
1116 |
// -------------------------------------------------- |
|
1117 |
bool CDriverGL::detachContext() |
|
1118 |
{ |
|
1119 |
bool ret=true; |
|
1120 |
#if defined(NL_OS_WINDOWS) |
|
1121 |
ret=wglMakeCurrent(_hDC, NULL); |
|
1122 |
#elif defined(NL_OS_UNIX) |
|
1123 |
ret=glXMakeCurrent (_dpy, None, NULL); |
|
1124 |
#elif defined(NL_OS_MAC) |
|
1125 |
//ret=aglSetCurrentContext |
|
1126 |
#else |
|
1127 |
#error "You have to implement me !" |
|
1128 |
#endif |
|
1129 |
if (!ret) |
|
1130 |
{ |
|
1131 |
nlwarning("Can't detach context %0X for threadID #%X", glGetError(), IThread::getCurrentThread()); |
|
1132 |
} |
|
1133 |
return ret; |
|
1134 |
} |
|
1135 |
// -------------------------------------------------- |
|
1136 |
bool CDriverGL::attachContext() |
|
1137 |
{ |
|
1138 |
bool ret=true; |
|
1139 |
#if defined(NL_OS_WINDOWS) |
|
1140 |
ret=wglMakeCurrent(_hDC, _hRC); |
|
1141 |
#elif defined(NL_OS_UNIX) |
|
1142 |
ret=glXMakeCurrent (_dpy, _win, _ctx); |
|
1143 |
#elif defined(NL_OS_MAC) |
|
1144 |
//ret=aglSetCurrentContext |
|
1145 |
#else |
|
1146 |
#error "You have to implement me !" |
|
1147 |
#endif |
|
1148 |
if (!ret) |
|
1149 |
{ |
|
1150 |
nlwarning("Can't attach context %0X threadID #%X", glGetError(),IThread::getCurrentThread() ); |
|
1151 |
} |
|
1152 |
return ret; |
|
1153 |
} |
|
1117 | 1154 |
// -------------------------------------------------- |
1118 | 1155 |
bool CDriverGL::saveScreenMode() |
1119 | 1156 |
{ |
b/code/nel/src/3d/driver_user2.cpp Sat Jan 15 21:17:15 2011 +0100 | ||
---|---|---|
260 | 260 |
_Driver->profileTextureUsage(result); |
261 | 261 |
} |
262 | 262 |
|
263 |
bool CDriverUser::detachContext() |
|
264 |
{ |
|
265 |
return _Driver->detachContext(); |
|
266 |
} |
|
263 | 267 |
|
268 |
bool CDriverUser::attachContext() |
|
269 |
{ |
|
270 |
return _Driver->attachContext(); |
|
271 |
} |
|
264 | 272 |
|
265 | 273 |
} // NL3D |
b/code/ryzom/client/src/cdb_branch.cpp Sat Jan 15 21:17:15 2011 +0100 | ||
---|---|---|
87 | 87 |
// reset all static data |
88 | 88 |
void CCDBNodeBranch::reset() |
89 | 89 |
{ |
90 |
for ( uint b=0; b!=INVALID_CDB_BANK; ++b )
|
|
90 |
for ( uint b=0; b!=NB_CDB_BANKS; ++b )
|
|
91 | 91 |
_CDBBankToUnifiedIndexMapping[b].clear(); |
92 | 92 |
_UnifiedIndexToBank.clear(); |
93 | 93 |
_CDBLastUnifiedIndex = 0; |
b/code/ryzom/client/src/connection.cpp Sat Jan 15 21:17:15 2011 +0100 | ||
---|---|---|
1046 | 1046 |
// Update the DT T0 and T1 global variables |
1047 | 1047 |
updateClientTime(); |
1048 | 1048 |
CInputHandlerManager::getInstance()->pumpEvents(); |
1049 |
|
|
1050 |
Driver->attachContext(); |
|
1049 | 1051 |
Driver->clearBuffers(CRGBA::Black); |
1050 | 1052 |
Driver->setMatrixMode2D11(); |
1051 | 1053 |
|
b/code/ryzom/client/src/far_tp.cpp Sat Jan 15 21:17:15 2011 +0100 | ||
---|---|---|
582 | 582 |
// Server Hop part 3.2: bypass character selection ui & select the same character. |
583 | 583 |
// Far TP part 3.2: bypass character selection ui & select the same character. |
584 | 584 |
// This is called from farTPmainloop(), when CONNECTION:USER_CHARS is received. |
585 |
Driver->detachContext(); |
|
585 | 586 |
if( !FarTP.isReselectingChar() ) |
586 | 587 |
{ |
587 | 588 |
FarTP.selectCharAndEnter(); |
... | ... | |
1053 | 1054 |
|
1054 | 1055 |
if (isIngame()) |
1055 | 1056 |
{ |
1057 |
// Get Rendering context |
|
1058 |
Driver->attachContext(); |
|
1056 | 1059 |
// Display background (TODO: not Kami) |
1057 | 1060 |
beginLoading (StartBackground); |
1058 | 1061 |
UseEscapeDuringLoading = false; |
... | ... | |
1391 | 1394 |
void CFarTP::farTPmainLoop() |
1392 | 1395 |
{ |
1393 | 1396 |
ConnectionReadySent = false; |
1397 |
Driver->detachContext(); |
|
1394 | 1398 |
LoginSM.pushEvent(CLoginStateMachine::ev_far_tp_main_loop_entered); |
1395 | 1399 |
uint nbRecoSelectCharReceived = 0; |
1396 | 1400 |
|
... | ... | |
1430 | 1434 |
if ( nbRecoSelectCharReceived <= 1 ) |
1431 | 1435 |
{ |
1432 | 1436 |
ClientCfg.SelectCharacter = -1; // turn off character autoselection |
1437 |
Driver->attachContext(); |
|
1433 | 1438 |
if ( ! FarTP.reselectCharacter() ) // it should not return here in farTPmainLoop() in the same state otherwise this would be called twice |
1434 | 1439 |
return; |
1435 | 1440 |
} |
... | ... | |
1441 | 1446 |
{ |
1442 | 1447 |
// Don't call sendReady() within the cotask but within the main loop, as it contains |
1443 | 1448 |
// event/network loops that could trigger a global exit(). |
1449 |
Driver->attachContext(); |
|
1444 | 1450 |
sendReady(); |
1445 | 1451 |
welcomeWindow = !isReselectingChar(); |
1446 | 1452 |
} |