#include #include #include #include #include #include #include namespace rack { void Context::init() { engine = new engine::Engine; patch = new PatchManager; if (!settings::headless) { event = new event::State; history = new history::State; window = new Window; scene = new app::Scene; event->rootWidget = scene; } } Context::~Context() { // Set pointers to NULL so other objects will segfault when attempting to access them if (scene) delete scene; scene = NULL; if (event) delete event; event = NULL; if (history) delete history; history = NULL; if (window) delete window; window = NULL; if (patch) delete patch; patch = NULL; if (engine) delete engine; engine = NULL; } static Context* context = NULL; void contextInit() { assert(!context); context = new Context; context->init(); } void contextDestroy() { assert(context); delete context; context = NULL; } Context* contextGet() { return context; } } // namespace rack