Skip to content

Commit

Permalink
Merge pull request #2118 from Wallacoloo/engine-rename-min
Browse files Browse the repository at this point in the history
Temporary workaround for ZynAddSubFx name clashes
  • Loading branch information
tresf committed Dec 30, 2015
2 parents a9c9fbf + c519921 commit baaed6a
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 24 deletions.
4 changes: 2 additions & 2 deletions include/ConfigManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
#include "MemoryManager.h"
#include "lmmsversion.h"

class Engine;
class LmmsCore;


const QString PROJECTS_PATH = "projects/";
Expand Down Expand Up @@ -284,7 +284,7 @@ class EXPORT ConfigManager
settingsMap m_settings;


friend class Engine;
friend class LmmsCore;

} ;

Expand Down
23 changes: 17 additions & 6 deletions include/Engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -91,11 +103,11 @@ class EXPORT Engine : public QObject
}
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;
}
Expand Down Expand Up @@ -128,12 +140,11 @@ class EXPORT Engine : public QObject
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

2 changes: 1 addition & 1 deletion include/Ladspa2LMMS.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class EXPORT Ladspa2LMMS : public LadspaManager
l_sortable_plugin_t m_analysisTools;
l_sortable_plugin_t m_otherPlugins;

friend class Engine;
friend class LmmsCore;

} ;

Expand Down
2 changes: 1 addition & 1 deletion include/Mixer.h
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ class EXPORT Mixer : public QObject

bool m_metronomeActive;

friend class Engine;
friend class LmmsCore;
friend class MixerWorkerThread;

} ;
Expand Down
2 changes: 1 addition & 1 deletion include/Song.h
Original file line number Diff line number Diff line change
Expand Up @@ -366,7 +366,7 @@ private slots:
VstSyncController m_vstSyncController;


friend class Engine;
friend class LmmsCore;
friend class SongEditor;
friend class mainWindow;
friend class ControllerRackView;
Expand Down
26 changes: 13 additions & 13 deletions src/core/Engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -82,7 +82,7 @@ void Engine::init( bool renderOnly )



void Engine::destroy()
void LmmsCore::destroy()
{
s_projectJournal->stopAllJournalling();
s_mixer->stopProcessing();
Expand Down Expand Up @@ -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;

0 comments on commit baaed6a

Please sign in to comment.