diff --git a/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp b/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp index c0391247f..eb2103d43 100644 --- a/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp +++ b/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp @@ -29,9 +29,14 @@ MilkdropPresetFactory::MilkdropPresetFactory(int gx, int gy) { MilkdropPresetFactory::~MilkdropPresetFactory() { + std::cerr << "[~MilkdropPresetFactory] destroy infix ops" << std::endl; Eval::destroy_infix_ops(); + std::cerr << "[~MilkdropPresetFactory] destroy builtin func" << std::endl; BuiltinFuncs::destroy_builtin_func_db(); + std::cerr << "[~MilkdropPresetFactory] delete preset out puts" << std::endl; delete(_presetOutputs); + std::cerr << "[~MilkdropPresetFactory] done" << std::endl; + } /* Reinitializes the engine variables to a default (conservative and sane) value */ diff --git a/src/libprojectM/NativePresetFactory/NativePresetFactory.cpp b/src/libprojectM/NativePresetFactory/NativePresetFactory.cpp index aedd8e1d0..5306a8390 100644 --- a/src/libprojectM/NativePresetFactory/NativePresetFactory.cpp +++ b/src/libprojectM/NativePresetFactory/NativePresetFactory.cpp @@ -55,12 +55,14 @@ NativePresetFactory::NativePresetFactory() {} NativePresetFactory::~NativePresetFactory() { -for (PresetLibraryMap::iterator pos = _libraries.begin(); pos != _libraries.end(); ++pos) +for (PresetLibraryMap::iterator pos = _libraries.begin(); pos != _libraries.end(); ++pos) { + std::cerr << "deleting preset library" << std::endl; delete(pos->second); - } +} + PresetLibrary * NativePresetFactory::loadLibrary(const std::string & url) { if (_libraries.count(url)) @@ -91,6 +93,8 @@ PresetLibrary * NativePresetFactory::loadLibrary(const std::string & url) { return 0; } + std::cerr << "[NativePresetFactory] creating preset library from url " << url << std::endl; + PresetLibrary * library = new PresetLibrary(handle, create, destroy); _libraries.insert(std::make_pair(url, library)); diff --git a/src/libprojectM/PresetFactoryManager.cpp b/src/libprojectM/PresetFactoryManager.cpp index 10065a053..6fe6eed81 100644 --- a/src/libprojectM/PresetFactoryManager.cpp +++ b/src/libprojectM/PresetFactoryManager.cpp @@ -24,8 +24,12 @@ PresetFactoryManager::PresetFactoryManager() : _gx(0), _gy(0) {} PresetFactoryManager::~PresetFactoryManager() { for (std::vector::iterator pos = _factoryList.begin(); - pos != _factoryList.end(); ++pos) + pos != _factoryList.end(); ++pos) { + std::cerr << "fuck" << std::endl; + assert(*pos); delete(*pos); + } + } void PresetFactoryManager::initialize(int gx, int gy) { @@ -51,13 +55,14 @@ void PresetFactoryManager::registerFactory(const std::string & extensions, Prese std::stringstream ss(extensions); std::string extension; + _factoryList.push_back(factory); + while (ss >> extension) { if (_factoryMap.count(extension)) { std::cerr << "[PresetFactoryManager] Warning: extension \"" << extension << "\" already has a factory. New factory handler ignored." << std::endl; } else { - _factoryMap.insert(std::make_pair(extension, factory)); - _factoryList.push_back(factory); + _factoryMap.insert(std::make_pair(extension, factory)); } } } diff --git a/src/projectM-test/projectM-test.cpp b/src/projectM-test/projectM-test.cpp index aa846f7b0..abd461dd2 100644 --- a/src/projectM-test/projectM-test.cpp +++ b/src/projectM-test/projectM-test.cpp @@ -89,6 +89,13 @@ int main(int argc, char **argv) { float fakePCM[512]; + +void cleanup() { + delete(globalPM); + exit(0); +} + + void renderLoop() { while (1) { projectMEvent evt; @@ -107,8 +114,7 @@ void renderLoop() { case PROJECTM_KEYDOWN: switch (key) { case PROJECTM_K_ESCAPE: - delete(globalPM); - exit(0); + cleanup(); break; case PROJECTM_K_f: { fullscreen = !fullscreen; @@ -122,7 +128,7 @@ void renderLoop() { break; } case PROJECTM_K_q: - exit(1); + cleanup(); break; default: globalPM->key_handler(evt, key, mod);