There's a bug in the midi code whereby if there is more than one midi device, and the first midi device has midi LED lights, the handlers for controlling those lights are blown away when the second midi device is created. The "destroyHandlers" call should not be in the applyPreset function. This small patch fixes that:
=== modified file 'mixxx/src/midi/mididevicemanager.cpp' --- mixxx/src/midi/mididevicemanager.cpp 2010-08-08 04:33:00 +0000 +++ mixxx/src/midi/mididevicemanager.cpp 2010-08-30 16:43:12 +0000 @@ -22,6 +22,7 @@ #include "midideviceportmidi.h" #include "dlgprefmidibindings.h" #include "mididevicemanager.h" +#include "midiledhandler.h" #include "../mixxxcontrol.h" #include "midimapping.h" @@ -36,6 +37,7 @@ MidiDeviceManager::~MidiDeviceManager() { closeDevices(); + MidiLedHandler::destroyHandlers(); } void MidiDeviceManager::saveMappings(bool onlyActive) { === modified file 'mixxx/src/midi/midimapping.cpp' --- mixxx/src/midi/midimapping.cpp 2010-06-29 12:47:29 +0000 +++ mixxx/src/midi/midimapping.cpp 2010-08-30 16:38:39 +0000 @@ -719,7 +719,6 @@ void MidiMapping::applyPreset() { qDebug() << "MidiMapping::applyPreset()"; m_mappingLock.lock(); - MidiLedHandler::destroyHandlers(); #ifdef __MIDISCRIPT__ // Since this can be called after re-enabling a device without reloading the XML preset, @@ -1159,6 +1158,7 @@ void MidiMapping::reset() { #ifdef __MIDISCRIPT__ // Can't ifdef slots in the .h file, so we just do the body. restartScriptEngine(); + MidiLedHandler::destroyHandlers(); applyPreset(); #endif } ------------------------------------------------------------------------------ This SF.net Dev2Dev email is sponsored by: Show off your parallel programming skills. Enter the Intel(R) Threading Challenge 2010. http://p.sf.net/sfu/intel-thread-sfd _______________________________________________ Mixxx-devel mailing list Mixxx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mixxx-devel