| @@ -15,37 +15,167 @@ | |||
| * For a full copy of the GNU General Public License see the doc/GPL.txt file. | |||
| */ | |||
| #include "CarlaUtils.hpp" | |||
| #include "CarlaString.hpp" | |||
| #include "rewire/ReWirePanelAPI.h" | |||
| int main(/*int argc, char* argv[]*/) | |||
| { | |||
| ReWire::ReWireError result; | |||
| // ----------------------------------------------------------------------- | |||
| // remove this | |||
| namespace ReWire { | |||
| extern "C" { | |||
| typedef const char* TReWireFileSpec; | |||
| } | |||
| } | |||
| result = ReWire::RWPOpen(); | |||
| ReWire::TReWireFileSpec kDeviceSpec = "/home/falktx/.wine32/drive_c/Program Files/Image-Line/FL Studio 11/System/Plugin/ReWire/FLReWire.dll"; | |||
| if (result == ReWire::kReWireError_NoError) | |||
| // ----------------------------------------------------------------------- | |||
| class RewireThing | |||
| { | |||
| public: | |||
| RewireThing() | |||
| : fIsOpen(false), | |||
| fIsRegistered(false), | |||
| fIsLoaded(false), | |||
| fHandle(0) | |||
| { | |||
| carla_stdout("opened ok"); | |||
| fDevName = ""; | |||
| } | |||
| else | |||
| ~RewireThing() | |||
| { | |||
| carla_stdout("opened failed"); | |||
| return 1; | |||
| close(); | |||
| } | |||
| result = ReWire::RWPClose(); | |||
| bool open() | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(! fIsOpen, true); | |||
| const ReWire::ReWireError result(ReWire::RWPOpen()); | |||
| if (result == ReWire::kReWireError_NoError) | |||
| { | |||
| fIsOpen = true; | |||
| carla_stderr("rewire open ok"); | |||
| } | |||
| else | |||
| { | |||
| carla_stderr2("rewire open failed"); | |||
| } | |||
| if (result == ReWire::kReWireError_NoError) | |||
| return fIsOpen; | |||
| } | |||
| bool start() | |||
| { | |||
| carla_stdout("closed ok"); | |||
| char isRunningFlag = 0; | |||
| ReWire::ReWireError result = ReWire::RWPIsReWireMixerAppRunning(&isRunningFlag); | |||
| if (isRunningFlag == 0) | |||
| { | |||
| carla_stderr("rewire mixer is NOT running"); | |||
| result = ReWire::RWPRegisterDevice(kDeviceSpec); | |||
| if (result == ReWire::kReWireError_NoError) | |||
| { | |||
| fIsRegistered = true; | |||
| carla_stderr("rewire register ok"); | |||
| } | |||
| else if (result == ReWire::kReWireError_AlreadyExists) | |||
| { | |||
| fIsRegistered = true; | |||
| carla_stderr("rewire register already in place"); | |||
| } | |||
| else | |||
| { | |||
| carla_stderr2("rewire register failed %i", result); | |||
| } | |||
| } | |||
| else | |||
| { | |||
| carla_stderr("rewire mixer is running"); | |||
| } | |||
| return false; | |||
| } | |||
| else | |||
| void close() | |||
| { | |||
| carla_stdout("closed failed"); | |||
| return 1; | |||
| if (! fIsOpen) | |||
| { | |||
| CARLA_SAFE_ASSERT(! fIsLoaded); | |||
| CARLA_SAFE_ASSERT(fHandle == 0); | |||
| return; | |||
| } | |||
| if (fHandle != 0) | |||
| { | |||
| const ReWire::ReWireError result(ReWire::RWPComDisconnect(fHandle)); | |||
| fHandle = 0; | |||
| if (result == ReWire::kReWireError_NoError) | |||
| carla_stderr("rewire disconnect ok"); | |||
| else | |||
| carla_stderr2("rewire disconnect failed"); | |||
| } | |||
| if (fIsLoaded) | |||
| { | |||
| const ReWire::ReWireError result(ReWire::RWPUnloadDevice(fDevName.getBuffer())); | |||
| fIsLoaded = false; | |||
| if (result == ReWire::kReWireError_NoError) | |||
| carla_stderr("rewire unload ok"); | |||
| else | |||
| carla_stderr2("rewire unload failed"); | |||
| } | |||
| if (fIsRegistered) | |||
| { | |||
| const ReWire::ReWireError result(ReWire::RWPUnregisterDevice(kDeviceSpec)); | |||
| fIsRegistered = false; | |||
| if (result == ReWire::kReWireError_NoError) | |||
| carla_stderr("rewire unregister ok"); | |||
| else | |||
| carla_stderr2("rewire unregister failed"); | |||
| } | |||
| const ReWire::ReWireError result(ReWire::RWPClose()); | |||
| if (result == ReWire::kReWireError_NoError) | |||
| carla_stderr("rewire close ok"); | |||
| else | |||
| carla_stderr2("rewire close failed"); | |||
| fIsOpen = false; | |||
| } | |||
| private: | |||
| bool fIsOpen; | |||
| bool fIsRegistered; | |||
| bool fIsLoaded; | |||
| ReWire::TRWPPortHandle fHandle; | |||
| CarlaString fDevName; | |||
| }; | |||
| // ----------------------------------------------------------------------- | |||
| int main(/*int argc, char* argv[]*/) | |||
| { | |||
| RewireThing re; | |||
| if (! re.open()) | |||
| return 1; | |||
| re.start(); | |||
| re.close(); | |||
| return 0; | |||
| } | |||
| // ----------------------------------------------------------------------- | |||