From c5199213068cdce59ddc2cffab07f5bcdecfc325 Mon Sep 17 00:00:00 2001 From: Colin Wallace Date: Sat, 20 Jun 2015 00:19:40 +0000 Subject: [PATCH] Rename Engine to LmmsCore, but typedef'd as Engine to prevent name conflicts with ZASFx Document the Engine renaming better & link to relevant issues/PRs --- include/ConfigManager.h | 4 ++-- include/Engine.h | 23 +++++++++++++++++------ include/Ladspa2LMMS.h | 2 +- include/Mixer.h | 2 +- include/Song.h | 2 +- src/core/Engine.cpp | 26 +++++++++++++------------- 6 files changed, 35 insertions(+), 24 deletions(-) diff --git a/include/ConfigManager.h b/include/ConfigManager.h index 7e5b73c3d..08224e990 100644 --- a/include/ConfigManager.h +++ b/include/ConfigManager.h @@ -37,7 +37,7 @@ #include "MemoryManager.h" #include "lmmsversion.h" -class Engine; +class LmmsCore; const QString PROJECTS_PATH = "projects/"; @@ -284,7 +284,7 @@ private: settingsMap m_settings; - friend class Engine; + friend class LmmsCore; } ; diff --git a/include/Engine.h b/include/Engine.h index b4a404205..534dea8ae 100644 --- a/include/Engine.h +++ b/include/Engine.h @@ -42,7 +42,19 @@ class Song; class Ladspa2LMMS; -class EXPORT Engine : public QObject +// Note: This class is called 'LmmsCore' instead of 'Engine' because of naming +// conflicts caused by ZynAddSubFX. See https://github.com/LMMS/lmms/issues/2269 +// and https://github.com/LMMS/lmms/pull/2118 for more details. +// +// The workaround was to rename Lmms' Engine so that it has a different symbol +// name in the object files, but typedef it back to 'Engine' and keep it inside +// of Engine.h so that the rest of the codebase can be oblivious to this issue +// (and it could be fixed without changing every single file). + +class LmmsCore; +typedef LmmsCore Engine; + +class EXPORT LmmsCore : public QObject { Q_OBJECT public: @@ -91,11 +103,11 @@ public: } static void updateFramesPerTick(); - static inline Engine * inst() + static inline LmmsCore * inst() { if( s_instanceOfMe == NULL ) { - s_instanceOfMe = new Engine(); + s_instanceOfMe = new LmmsCore(); } return s_instanceOfMe; } @@ -128,12 +140,11 @@ private: static Ladspa2LMMS * s_ladspaManager; // even though most methods are static, an instance is needed for Qt slots/signals - static Engine * s_instanceOfMe; + static LmmsCore * s_instanceOfMe; friend class GuiApplication; }; - - #endif + diff --git a/include/Ladspa2LMMS.h b/include/Ladspa2LMMS.h index e24d0b382..de7f1b65c 100644 --- a/include/Ladspa2LMMS.h +++ b/include/Ladspa2LMMS.h @@ -71,7 +71,7 @@ private: l_sortable_plugin_t m_analysisTools; l_sortable_plugin_t m_otherPlugins; - friend class Engine; + friend class LmmsCore; } ; diff --git a/include/Mixer.h b/include/Mixer.h index 9cf17ae8d..3128c65b6 100644 --- a/include/Mixer.h +++ b/include/Mixer.h @@ -445,7 +445,7 @@ private: bool m_metronomeActive; - friend class Engine; + friend class LmmsCore; friend class MixerWorkerThread; } ; diff --git a/include/Song.h b/include/Song.h index 8c7d6d899..56f3ffe9b 100644 --- a/include/Song.h +++ b/include/Song.h @@ -366,7 +366,7 @@ private: VstSyncController m_vstSyncController; - friend class Engine; + friend class LmmsCore; friend class SongEditor; friend class mainWindow; friend class ControllerRackView; diff --git a/src/core/Engine.cpp b/src/core/Engine.cpp index 77e168780..f1aebef97 100644 --- a/src/core/Engine.cpp +++ b/src/core/Engine.cpp @@ -38,21 +38,21 @@ #include "GuiApplication.h" -float Engine::s_framesPerTick; -Mixer* Engine::s_mixer = NULL; -FxMixer * Engine::s_fxMixer = NULL; -BBTrackContainer * Engine::s_bbTrackContainer = NULL; -Song * Engine::s_song = NULL; -ProjectJournal * Engine::s_projectJournal = NULL; -Ladspa2LMMS * Engine::s_ladspaManager = NULL; -DummyTrackContainer * Engine::s_dummyTC = NULL; +float LmmsCore::s_framesPerTick; +Mixer* LmmsCore::s_mixer = NULL; +FxMixer * LmmsCore::s_fxMixer = NULL; +BBTrackContainer * LmmsCore::s_bbTrackContainer = NULL; +Song * LmmsCore::s_song = NULL; +ProjectJournal * LmmsCore::s_projectJournal = NULL; +Ladspa2LMMS * LmmsCore::s_ladspaManager = NULL; +DummyTrackContainer * LmmsCore::s_dummyTC = NULL; -void Engine::init( bool renderOnly ) +void LmmsCore::init( bool renderOnly ) { - Engine *engine = inst(); + LmmsCore *engine = inst(); emit engine->initProgress(tr("Generating wavetables")); // generate (load from file) bandlimited wavetables @@ -82,7 +82,7 @@ void Engine::init( bool renderOnly ) -void Engine::destroy() +void LmmsCore::destroy() { s_projectJournal->stopAllJournalling(); s_mixer->stopProcessing(); @@ -110,10 +110,10 @@ void Engine::destroy() -void Engine::updateFramesPerTick() +void LmmsCore::updateFramesPerTick() { s_framesPerTick = s_mixer->processingSampleRate() * 60.0f * 4 / DefaultTicksPerTact / s_song->getTempo(); } -Engine * Engine::s_instanceOfMe = NULL; +LmmsCore * LmmsCore::s_instanceOfMe = NULL;