|
|
@ -205,10 +205,12 @@ void plResManager::IShutdown() |
|
|
|
// TimerCallbackMgr is a fixed-keyed object, so needs to shut down before the registry
|
|
|
|
// TimerCallbackMgr is a fixed-keyed object, so needs to shut down before the registry
|
|
|
|
plgTimerCallbackMgr::Shutdown();
|
|
|
|
plgTimerCallbackMgr::Shutdown();
|
|
|
|
|
|
|
|
|
|
|
|
// Destroy the dispatch. Note that we do this before the registry so that any lingering messages
|
|
|
|
// Formerly, we destroyed the Dispatcher here to clean up keys for leak reporting.
|
|
|
|
// can free up keys properly
|
|
|
|
// However, if there are *real* leaked keys, then they will want to unload after this step.
|
|
|
|
hsRefCnt_SafeUnRef(fDispatch); |
|
|
|
// To unload, plKeyImp needs to dispatcher. SO, we're going to pitch everything currently in the
|
|
|
|
fDispatch = nil; |
|
|
|
// Dispatcher and kill it later
|
|
|
|
|
|
|
|
fDispatch->BeginShutdown(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Just before we shut down the registry, page out any keys that still exist.
|
|
|
|
// Just before we shut down the registry, page out any keys that still exist.
|
|
|
|
// (They shouldn't... they're baaaaaad.)
|
|
|
|
// (They shouldn't... they're baaaaaad.)
|
|
|
@ -224,9 +226,12 @@ void plResManager::IShutdown() |
|
|
|
fLoadedPages.clear(); |
|
|
|
fLoadedPages.clear(); |
|
|
|
|
|
|
|
|
|
|
|
IUnlockPages(); |
|
|
|
IUnlockPages(); |
|
|
|
|
|
|
|
|
|
|
|
fLastFoundPage = nil; |
|
|
|
fLastFoundPage = nil; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Now, kill off the Dispatcher
|
|
|
|
|
|
|
|
hsRefCnt_SafeUnRef(fDispatch); |
|
|
|
|
|
|
|
fDispatch = nil; |
|
|
|
|
|
|
|
|
|
|
|
kResMgrLog(1, ILog(1, " ...Shutdown successful!")); |
|
|
|
kResMgrLog(1, ILog(1, " ...Shutdown successful!")); |
|
|
|
|
|
|
|
|
|
|
|
fInited = false; |
|
|
|
fInited = false; |
|
|
|