Application Phases

Phases for desktop applications (Windows, similar for macOS).

Startup

Call Stack
WinMain ()
  ccl_main_gui ()
    ccl_main_gui_init ()
       ApplicationStartup::beforeInit ()
         UserInterface::startup ()
           NativeGraphicsEngine::startup ()
           WindowsUserInterface::startupPlatform ()

         ccl_app_init ()
         Application::beforeInitialize ()

    WindowsUserInterface::runEventLoop ()
       ApplicationStartup::onInit ()
        Kernel::initialize ()
          Application::initialize ()
            Application::startup ()

        Application::processCommandLine ()

      Application::uiInitialized ()

Call Details

WinMain()
File:

ccl/platform/win/winmain.cpp

ccl_main_gui()
File:

ccl/main/cclmain.cpp

ccl_main_gui_init()
File:

ccl/main/cclmain.cpp

ApplicationStartup::beforeInit()
File:

ccl/main/cclmain.cpp

UserInterface::startup()
File:

ccl/gui/gui.cpp

NativeGraphicsEngine::startup()
File:

ccl/gui/graphics/nativegraphics.cpp

Overridden by platform engine.

WindowsUserInterface::startupPlatform()
File:

ccl/platform/win/gui/gui.win.cpp

ccl_app_init()

Implemented in application code (create Application object).

Application::beforeInitialize()
File:

ccl/app/application.cpp

Load settings, strings, command table, …

WindowsUserInterface::runEventLoop()
File:

ccl/platform/win/gui/gui.win.cpp

ApplicationStartup::onInit()
File:

ccl/main/cclmain.cpp

Kernel::initialize()
File:

ccl/base/kernel.cpp

Also see CCL::Kernel::initialize.

Application::initialize()
File:

ccl/app/application.cpp

Typically calls createWindow (), System::GetWindowManager ().createApplicationWindow () or initWindowlessApplication (), calls GUI.setApplication() in cclgui.

Application::processCommandLine()
File:

ccl/app/application.cpp

Overridden in derived application class.

Application::uiInitialized()
File:

ccl/app/application.cpp

Overridden in derived application class.

Shutdown

Call Stack
ccl_main_gui_exit ()
  ApplicationStartup::cleanup ()
    Kernel::terminate ()
    PlugInManager::terminate ()
    ThreadPool::terminate ()

  ApplicationStartup::checkRestart ()

Call Details

ccl_main_gui_exit()
File:

ccl/main/cclmain.cpp

ApplicationStartup::cleanup()
File:

ccl/main/cclmain.cpp

Kernel::terminate()
File:

ccl/base/kernel.cpp

Also see CCL::Kernel::terminate

PlugInManager::terminate()
File:

ccl/system/plugins/plugmanager.cpp

ThreadPool::terminate()
File:

ccl/system/threading/threadpool.cpp

ApplicationStartup::checkRestart()
File:

ccl/main/cclmain.cpp