Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 9, 2011, 5:06:49 AM (13 years ago)
Author:
rgrieder
Message:

Added and incorporated new class DestructionHelper: instead of doing the destruction of certain singletons implicitly via scoped_ptrs and ScopeGuards, use a method named destroy() that essentially achieves the same, but makes the destruction sequence obvious.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/trunk/src/libraries/core/GraphicsManager.cc

    r8366 r8423  
    9494    GraphicsManager* GraphicsManager::singletonPtr_s = 0;
    9595
    96     /**
    97     @brief
    98         Non-initialising constructor.
    99     */
    10096    GraphicsManager::GraphicsManager(bool bLoadRenderer)
    10197        : ogreWindowEventListener_(new OgreWindowEventListener())
     
    104100        , lastFrameStartTime_(0.0f)
    105101        , lastFrameEndTime_(0.0f)
     102        , destructionHelper_(this)
    106103    {
    107104        RegisterObject(GraphicsManager);
     
    134131    }
    135132
    136     /**
    137     @brief
    138         Destruction is done by the member scoped_ptrs.
    139     */
    140     GraphicsManager::~GraphicsManager()
     133    void GraphicsManager::destroy()
    141134    {
    142135        Loader::unload(debugOverlay_.get());
    143136
    144         Ogre::WindowEventUtilities::removeWindowEventListener(renderWindow_, ogreWindowEventListener_.get());
     137        Ogre::WindowEventUtilities::removeWindowEventListener(renderWindow_, ogreWindowEventListener_);
    145138        ModifyConsoleCommand(__CC_printScreen_name).resetFunction();
    146139        ModifyConsoleCommand(__CC_GraphicsManager_group, __CC_setScreenResolution_name).resetFunction();
     
    151144        Loader::unload(resources_.get());
    152145        Loader::unload(extResources_.get());
     146
     147        safeObjectDelete(&ogreRoot_);
     148        safeObjectDelete(&ogreLogger_);
     149        safeObjectDelete(&ogreWindowEventListener_);
    153150    }
    154151
     
    218215        // create a new logManager
    219216        // Ogre::Root will detect that we've already created a Log
    220         ogreLogger_.reset(new Ogre::LogManager());
     217        ogreLogger_ = new Ogre::LogManager();
    221218        COUT(4) << "Ogre LogManager created" << std::endl;
    222219
     
    241238
    242239        // Leave plugins file empty. We're going to do that part manually later
    243         ogreRoot_.reset(new Ogre::Root("", ogreConfigFilepath.string(), ogreLogFilepath.string()));
     240        ogreRoot_ = new Ogre::Root("", ogreConfigFilepath.string(), ogreLogFilepath.string());
    244241
    245242        COUT(3) << "Ogre set up done." << std::endl;
     
    300297        this->ogreWindowEventListener_->windowResized(renderWindow_);
    301298
    302         Ogre::WindowEventUtilities::addWindowEventListener(this->renderWindow_, ogreWindowEventListener_.get());
     299        Ogre::WindowEventUtilities::addWindowEventListener(this->renderWindow_, ogreWindowEventListener_);
    303300
    304301        // create a full screen default viewport
Note: See TracChangeset for help on using the changeset viewer.