summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFerran Pujol Camins <ferranpujolcamins@gmail.com>2019-11-03 09:43:25 +0100
committerFerran Pujol Camins <ferranpujolcamins@gmail.com>2019-11-03 09:43:25 +0100
commit4367fe3181bb44b0b11294d7f0ba91c5c0edc3cc (patch)
treed79126509923b2e9b8139297b7ab6f5c9a37e3ec
parentae4907eaae10b9748401e937595d16de3c44b780 (diff)
Make UserSettings available in ControllerEngine
-rw-r--r--src/controllers/controller.cpp9
-rw-r--r--src/controllers/controller.h4
-rw-r--r--src/controllers/controllerengine.cpp4
-rw-r--r--src/controllers/controllerengine.h3
-rw-r--r--src/controllers/controllermanager.cpp4
-rw-r--r--src/controllers/hid/hidcontroller.cpp5
-rw-r--r--src/controllers/hid/hidcontroller.h3
-rw-r--r--src/controllers/hid/hidenumerator.cpp5
-rw-r--r--src/controllers/hid/hidenumerator.h3
-rw-r--r--src/controllers/midi/midicontroller.cpp4
-rw-r--r--src/controllers/midi/midicontroller.h2
-rw-r--r--src/controllers/midi/portmidicontroller.cpp11
-rw-r--r--src/controllers/midi/portmidicontroller.h7
-rw-r--r--src/controllers/midi/portmidienumerator.cpp12
-rw-r--r--src/controllers/midi/portmidienumerator.h3
-rw-r--r--src/test/controller_preset_validation_test.cpp9
-rw-r--r--src/test/midicontrollertest.cpp5
-rw-r--r--src/test/portmidicontroller_test.cpp19
18 files changed, 65 insertions, 47 deletions
diff --git a/src/controllers/controller.cpp b/src/controllers/controller.cpp
index e30ff7a5f6..15a1e1dd5e 100644
--- a/src/controllers/controller.cpp
+++ b/src/controllers/controller.cpp
@@ -13,14 +13,15 @@
#include "controllers/defs_controllers.h"
#include "util/screensaver.h"
-Controller::Controller()
+Controller::Controller(UserSettingsPointer pConfig)
: QObject(),
m_pEngine(NULL),
m_bIsOutputDevice(false),
m_bIsInputDevice(false),
m_bIsOpen(false),
- m_bLearning(false) {
- m_userActivityInhibitTimer.start();
+ m_bLearning(false),
+ m_pConfig(pConfig) {
+ m_userActivityInhibitTimer.start();
}
Controller::~Controller() {
@@ -35,7 +36,7 @@ void Controller::startEngine()
qWarning() << "Controller: Engine already exists! Restarting:";
stopEngine();
}
- m_pEngine = new ControllerEngine(this);
+ m_pEngine = new ControllerEngine(this, m_pConfig);
}
void Controller::stopEngine() {
diff --git a/src/controllers/controller.h b/src/controllers/controller.h
index 9cc6be386c..44a5218e2a 100644
--- a/src/controllers/controller.h
+++ b/src/controllers/controller.h
@@ -23,7 +23,7 @@
class Controller : public QObject, ConstControllerPresetVisitor {
Q_OBJECT
public:
- Controller();
+ Controller(UserSettingsPointer pConfig);
~Controller() override; // Subclass should call close() at minimum.
// Returns the extension for the controller (type) preset files. This is
@@ -162,6 +162,8 @@ class Controller : public QObject, ConstControllerPresetVisitor {
bool m_bLearning;
QTime m_userActivityInhibitTimer;
+ UserSettingsPointer m_pConfig;
+
// accesses lots of our stuff, but in the same thread
friend class ControllerManager;
// For testing
diff --git a/src/controllers/controllerengine.cpp b/src/controllers/controllerengine.cpp
index 1d09be7465..36d9248223 100644
--- a/src/controllers/controllerengine.cpp
+++ b/src/controllers/controllerengine.cpp
@@ -29,9 +29,11 @@ const int kDecks = 16;
const int kScratchTimerMs = 1;
const double kAlphaBetaDt = kScratchTimerMs / 1000.0;
-ControllerEngine::ControllerEngine(Controller* controller)
+ControllerEngine::ControllerEngine(
+ Controller* controller, UserSettingsPointer pConfig)
: m_pEngine(nullptr),
m_pController(controller),
+ m_pConfig(pConfig),
m_bPopups(false),
m_pBaClass(nullptr) {
// Handle error dialog buttons
diff --git a/src/controllers/controllerengine.h b/src/controllers/controllerengine.h
index 2359a0bcbb..7eafb1763e 100644
--- a/src/controllers/controllerengine.h
+++ b/src/controllers/controllerengine.h
@@ -80,7 +80,7 @@ class ScriptConnectionInvokableWrapper : public QObject {
class ControllerEngine : public QObject {
Q_OBJECT
public:
- ControllerEngine(Controller* controller);
+ ControllerEngine(Controller* controller, UserSettingsPointer pConfig);
virtual ~ControllerEngine();
bool isReady();
@@ -198,6 +198,7 @@ class ControllerEngine : public QObject {
double getDeckRate(const QString& group);
Controller* m_pController;
+ UserSettingsPointer m_pConfig;
bool m_bPopups;
QList<QString> m_scriptFunctionPrefixes;
QMap<QString, QStringList> m_scriptErrors;
diff --git a/src/controllers/controllermanager.cpp b/src/controllers/controllermanager.cpp
index 54029398d4..2de3fc57ce 100644
--- a/src/controllers/controllermanager.cpp
+++ b/src/controllers/controllermanager.cpp
@@ -127,7 +127,7 @@ void ControllerManager::slotInitialize() {
// Instantiate all enumerators. Enumerators can take a long time to
// construct since they interact with host MIDI APIs.
- m_enumerators.append(new PortMidiEnumerator());
+ m_enumerators.append(new PortMidiEnumerator(m_pConfig));
#ifdef __HSS1394__
m_enumerators.append(new Hss1394Enumerator());
#endif
@@ -135,7 +135,7 @@ void ControllerManager::slotInitialize() {
m_enumerators.append(new BulkEnumerator());
#endif
#ifdef __HID__
- m_enumerators.append(new HidEnumerator());
+ m_enumerators.append(new HidEnumerator(m_pConfig));
#endif
}
diff --git a/src/controllers/hid/hidcontroller.cpp b/src/controllers/hid/hidcontroller.cpp
index b07b5167c5..094e31cae3 100644
--- a/src/controllers/hid/hidcontroller.cpp
+++ b/src/controllers/hid/hidcontroller.cpp
@@ -47,8 +47,9 @@ void HidReader::run() {
delete [] data;
}
-HidController::HidController(const hid_device_info deviceInfo)
- : m_pHidDevice(NULL) {
+HidController::HidController(
+ const hid_device_info deviceInfo, UserSettingsPointer pConfig)
+ : Controller(pConfig), m_pHidDevice(NULL) {
// Copy required variables from deviceInfo, which will be freed after
// this class is initialized by caller.
hid_vendor_id = deviceInfo.vendor_id;
diff --git a/src/controllers/hid/hidcontroller.h b/src/controllers/hid/hidcontroller.h
index ac44aa9998..0cefb8670d 100644
--- a/src/controllers/hid/hidcontroller.h
+++ b/src/controllers/hid/hidcontroller.h
@@ -41,7 +41,8 @@ class HidReader : public QThread {
class HidController final : public Controller {
Q_OBJECT
public:
- HidController(const hid_device_info deviceInfo);
+ HidController(
+ const hid_device_info deviceInfo, UserSettingsPointer pConfig);
~HidController() override;
QString presetExtension() override;
diff --git a/src/controllers/hid/hidenumerator.cpp b/src/controllers/hid/hidenumerator.cpp
index c1c2dc2783..802459f3c0 100644
--- a/src/controllers/hid/hidenumerator.cpp
+++ b/src/controllers/hid/hidenumerator.cpp
@@ -11,7 +11,8 @@
#include "controllers/hid/hidenumerator.h"
#include "controllers/hid/hidblacklist.h"
-HidEnumerator::HidEnumerator() : ControllerEnumerator() {
+HidEnumerator::HidEnumerator(UserSettingsPointer pConfig)
+ : ControllerEnumerator(), m_pConfig(pConfig) {
}
HidEnumerator::~HidEnumerator() {
@@ -98,7 +99,7 @@ QList<Controller*> HidEnumerator::queryDevices() {
continue;
}
- HidController* currentDevice = new HidController(*cur_dev);
+ HidController* currentDevice = new HidController(*cur_dev, m_pConfig);
m_devices.push_back(currentDevice);
}
hid_free_enumeration(devs);
diff --git a/src/controllers/hid/hidenumerator.h b/src/controllers/hid/hidenumerator.h
index 351e972beb..9b39b75c94 100644
--- a/src/controllers/hid/hidenumerator.h
+++ b/src/controllers/hid/hidenumerator.h
@@ -12,13 +12,14 @@
class HidEnumerator : public ControllerEnumerator {
public:
- HidEnumerator();
+ HidEnumerator(UserSettingsPointer pConfig);
virtual ~HidEnumerator();
QList<Controller*> queryDevices();
private:
QList<Controller*> m_devices;
+ UserSettingsPointer m_pConfig;
};
#endif
diff --git a/src/controllers/midi/midicontroller.cpp b/src/controllers/midi/midicontroller.cpp
index 0176aa653e..43dbaa65be 100644
--- a/src/controllers/midi/midicontroller.cpp
+++ b/src/controllers/midi/midicontroller.cpp
@@ -17,8 +17,8 @@
#include "util/math.h"
#include "util/screensaver.h"
-MidiController::MidiController()
- : Controller() {
+MidiController::MidiController(UserSettingsPointer pConfig)
+ : Controller(pConfig) {
setDeviceCategory(tr("MIDI Controller"));
}
diff --git a/src/controllers/midi/midicontroller.h b/src/controllers/midi/midicontroller.h
index 93d91fdf44..b8ebb8b94b 100644
--- a/src/controllers/midi/midicontroller.h
+++ b/src/controllers/midi/midicontroller.h
@@ -23,7 +23,7 @@
class MidiController : public Controller {
Q_OBJECT
public:
- MidiController();
+ MidiController(UserSettingsPointer pConfig);
~MidiController() override;
QString presetExtension() override;
diff --git a/src/controllers/midi/portmidicontroller.cpp b/src/controllers/midi/portmidicontroller.cpp
index c4479a1ae6..4be78583c7 100644
--- a/src/controllers/midi/portmidicontroller.cpp
+++ b/src/controllers/midi/portmidicontroller.cpp
@@ -12,12 +12,11 @@
#include "controllers/controllerdebug.h"
PortMidiController::PortMidiController(const PmDeviceInfo* inputDeviceInfo,
- const PmDeviceInfo* outputDeviceInfo,
- int inputDeviceIndex,
- int outputDeviceIndex)
- : MidiController(),
- m_cReceiveMsg_index(0),
- m_bInSysex(false) {
+ const PmDeviceInfo* outputDeviceInfo,
+ int inputDeviceIndex,
+ int outputDeviceIndex,
+ UserSettingsPointer pConfig)
+ : MidiController(pConfig), m_cReceiveMsg_index(0), m_bInSysex(false) {
for (unsigned int k = 0; k < MIXXX_PORTMIDI_BUFFER_LEN; ++k) {
// Can be shortened to `m_midiBuffer[k] = {}` with C++11.
m_midiBuffer[k].message = 0;
diff --git a/src/controllers/midi/portmidicontroller.h b/src/controllers/midi/portmidicontroller.h
index 96da9afce1..92d2954e18 100644
--- a/src/controllers/midi/portmidicontroller.h
+++ b/src/controllers/midi/portmidicontroller.h
@@ -60,9 +60,10 @@ class PortMidiController : public MidiController {
Q_OBJECT
public:
PortMidiController(const PmDeviceInfo* inputDeviceInfo,
- const PmDeviceInfo* outputDeviceInfo,
- int inputDeviceIndex,
- int outputDeviceIndex);
+ const PmDeviceInfo* outputDeviceInfo,
+ int inputDeviceIndex,
+ int outputDeviceIndex,
+ UserSettingsPointer pConfig);
~PortMidiController() override;
private slots:
diff --git a/src/controllers/midi/portmidienumerator.cpp b/src/controllers/midi/portmidienumerator.cpp
index 47e6a23a82..ba525ddeb7 100644
--- a/src/controllers/midi/portmidienumerator.cpp
+++ b/src/controllers/midi/portmidienumerator.cpp
@@ -21,7 +21,8 @@ bool shouldBlacklistDevice(const PmDeviceInfo* device) {
deviceName.startsWith("Midi Through Port", Qt::CaseInsensitive);
}
-PortMidiEnumerator::PortMidiEnumerator() : MidiEnumerator() {
+PortMidiEnumerator::PortMidiEnumerator(UserSettingsPointer pConfig)
+ : MidiEnumerator(), m_pConfig(pConfig) {
PmError err = Pm_Initialize();
// Based on reading the source, it's not possible for this to fail.
if (err != pmNoError) {
@@ -257,9 +258,12 @@ QList<Controller*> PortMidiEnumerator::queryDevices() {
// device (outputDeviceInfo != NULL).
//.... so create our (aggregate) MIDI device!
- PortMidiController *currentDevice = new PortMidiController(
- inputDeviceInfo, outputDeviceInfo,
- inputDevIndex, outputDevIndex);
+ PortMidiController* currentDevice =
+ new PortMidiController(inputDeviceInfo,
+ outputDeviceInfo,
+ inputDevIndex,
+ outputDevIndex,
+ m_pConfig);
m_devices.push_back(currentDevice);
}
diff --git a/src/controllers/midi/portmidienumerator.h b/src/controllers/midi/portmidienumerator.h
index 606c4feb4d..9566b54df1 100644
--- a/src/controllers/midi/portmidienumerator.h
+++ b/src/controllers/midi/portmidienumerator.h
@@ -13,13 +13,14 @@
class PortMidiEnumerator : public MidiEnumerator {
Q_OBJECT
public:
- PortMidiEnumerator();
+ PortMidiEnumerator(UserSettingsPointer pConfig);
virtual ~PortMidiEnumerator();
QList<Controller*> queryDevices();
private:
QList<Controller*> m_devices;
+ UserSettingsPointer m_pConfig;
};
// For testing.
diff --git a/src/test/controller_preset_validation_test.cpp b/src/test/controller_preset_validation_test.cpp
index d49ee3e50b..970cf0158c 100644
--- a/src/test/controller_preset_validation_test.cpp
+++ b/src/test/controller_preset_validation_test.cpp
@@ -15,7 +15,7 @@
class FakeController : public Controller {
public:
- FakeController();
+ FakeController(UserSettingsPointer pConfig);
~FakeController() override;
QString presetExtension() override {
@@ -112,9 +112,8 @@ class FakeController : public Controller {
HidControllerPreset m_hidPreset;
};
-FakeController::FakeController()
- : m_bMidiPreset(false),
- m_bHidPreset(false) {
+FakeController::FakeController(UserSettingsPointer pConfig)
+ : Controller(pConfig), m_bMidiPreset(false), m_bHidPreset(false) {
}
FakeController::~FakeController() {
@@ -135,7 +134,7 @@ class ControllerPresetValidationTest : public MixxxTest {
return false;
}
- FakeController controller;
+ FakeController controller(config());
controller.setDeviceName("Test Controller");
controller.startEngine();
controller.setPreset(*pPreset);
diff --git a/src/test/midicontrollertest.cpp b/src/test/midicontrollertest.cpp
index 696483c05f..0d10c4c54a 100644
--- a/src/test/midicontrollertest.cpp
+++ b/src/test/midicontrollertest.cpp
@@ -12,7 +12,8 @@
class MockMidiController : public MidiController {
public:
- MockMidiController() { }
+ MockMidiController(UserSettingsPointer pConfig) : MidiController(pConfig) {
+ }
~MockMidiController() override { }
MOCK_METHOD0(open, int());
@@ -27,7 +28,7 @@ class MockMidiController : public MidiController {
class MidiControllerTest : public MixxxTest {
protected:
void SetUp() override {
- m_pController.reset(new MockMidiController());
+ m_pController.reset(new MockMidiController(config()));
}
void addMapping(MidiInputMapping mapping) {
diff --git a/src/test/portmidicontroller_test.cpp b/src/test/portmidicontroller_test.cpp
index b8b9cb6359..8daf1f43d9 100644
--- a/src/test/portmidicontroller_test.cpp
+++ b/src/test/portmidicontroller_test.cpp
@@ -16,11 +16,15 @@ using ::testing::SetArrayArgument;
class MockPortMidiController : public PortMidiController {
public:
MockPortMidiController(const PmDeviceInfo* inputDeviceInfo,
- const PmDeviceInfo* outputDeviceInfo,
- int inputDeviceIndex,
- int outputDeviceIndex) : PortMidiController(
- inputDeviceInfo, outputDeviceInfo,
- inputDeviceIndex, outputDeviceIndex) {
+ const PmDeviceInfo* outputDeviceInfo,
+ int inputDeviceIndex,
+ int outputDeviceIndex,
+ UserSettingsPointer pConfig)
+ : PortMidiController(inputDeviceInfo,
+ outputDeviceInfo,
+ inputDeviceIndex,
+ outputDeviceIndex,
+ pConfig) {
}
~MockPortMidiController() override {
}
@@ -71,9 +75,8 @@ class PortMidiControllerTest : public MixxxTest {
m_outputDeviceInfo.output = 1;
m_outputDeviceInfo.opened = 0;
- m_pController.reset(new MockPortMidiController(&m_inputDeviceInfo,
- &m_outputDeviceInfo,
- 0, 0));
+ m_pController.reset(new MockPortMidiController(
+ &m_inputDeviceInfo, &m_outputDeviceInfo, 0, 0, config()));
m_pController->setPortMidiInputDevice(m_mockInput);
m_pController->setPortMidiOutputDevice(m_mockOutput);
}