| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * Carla Backend utils | |||
| * Copyright (C) 2011-2012 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or modify | |||
| * it under the terms of the GNU General Public License as published by | |||
| @@ -121,10 +121,12 @@ const char* ParameterType2Str(const ParameterType& type) | |||
| return "PARAMETER_LATENCY"; | |||
| case PARAMETER_SAMPLE_RATE: | |||
| return "PARAMETER_SAMPLE_RATE"; | |||
| #ifdef WANT_LV2 | |||
| case PARAMETER_LV2_FREEWHEEL: | |||
| return "PARAMETER_LV2_FREEWHEEL"; | |||
| case PARAMETER_LV2_TIME: | |||
| return "PARAMETER_LV2_TIME"; | |||
| #endif | |||
| } | |||
| qWarning("CarlaBackend::ParameterType2Str(%i) - invalid type", type); | |||
| @@ -9,7 +9,7 @@ | |||
| * | |||
| * This program is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU General Public License for more details. | |||
| * | |||
| * For a full copy of the GNU General Public License see the COPYING file | |||
| @@ -55,27 +55,31 @@ const LADSPA_RDF_Descriptor* ladspa_rdf_dup(const LADSPA_RDF_Descriptor* const o | |||
| for (unsigned long i=0; i < newDescriptor->PortCount; i++) | |||
| { | |||
| LADSPA_RDF_Port* const oldPort = &oldDescriptor->Ports[i]; | |||
| LADSPA_RDF_Port* const newPort = &newDescriptor->Ports[i]; | |||
| newPort->Type = oldDescriptor->Ports[i].Type; | |||
| newPort->Hints = oldDescriptor->Ports[i].Hints; | |||
| newPort->Default = oldDescriptor->Ports[i].Default; | |||
| newPort->Unit = oldDescriptor->Ports[i].Unit; | |||
| newPort->ScalePointCount = oldDescriptor->Ports[i].ScalePointCount; | |||
| if (oldDescriptor->Ports[i].Label) | |||
| newPort->Label = strdup(oldDescriptor->Ports[i].Label); | |||
| newPort->Type = oldPort->Type; | |||
| newPort->Hints = oldPort->Hints; | |||
| newPort->Default = oldPort->Default; | |||
| newPort->Unit = oldPort->Unit; | |||
| newPort->ScalePointCount = oldPort->ScalePointCount; | |||
| if (newPort->ScalePointCount > 0) | |||
| if (oldPort->Label) | |||
| newPort->Label = strdup(oldPort->Label); | |||
| if (oldPort->ScalePointCount > 0) | |||
| { | |||
| newPort->ScalePoints = new LADSPA_RDF_ScalePoint[newPort->ScalePointCount]; | |||
| newPort->ScalePoints = new LADSPA_RDF_ScalePoint[oldPort->ScalePointCount]; | |||
| for (unsigned long j=0; j < newPort->ScalePointCount; j++) | |||
| for (unsigned long j=0; j < oldPort->ScalePointCount; j++) | |||
| { | |||
| LADSPA_RDF_ScalePoint* const oldScalePoint = &oldPort->ScalePoints[j]; | |||
| LADSPA_RDF_ScalePoint* const newScalePoint = &newPort->ScalePoints[j]; | |||
| newScalePoint->Value = oldDescriptor->Ports[i].ScalePoints[j].Value; | |||
| if (oldDescriptor->Ports[i].ScalePoints[j].Label) | |||
| newScalePoint->Label = strdup(oldDescriptor->Ports[i].ScalePoints[j].Label); | |||
| newScalePoint->Value = oldScalePoint->Value; | |||
| if (oldScalePoint->Label) | |||
| newScalePoint->Label = strdup(oldScalePoint->Label); | |||
| } | |||
| } | |||
| } | |||
| @@ -110,9 +114,7 @@ bool is_ladspa_rdf_descriptor_valid(const LADSPA_RDF_Descriptor* const rdfDescri | |||
| CARLA_ASSERT(rdfDescriptor); | |||
| CARLA_ASSERT(descriptor); | |||
| if (! rdfDescriptor) | |||
| return false; | |||
| if (! descriptor) | |||
| if (! (rdfDescriptor && descriptor)) | |||
| return false; | |||
| if (rdfDescriptor->UniqueID != descriptor->UniqueID) | |||
| @@ -9,7 +9,7 @@ | |||
| * | |||
| * This program is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU General Public License for more details. | |||
| * | |||
| * For a full copy of the GNU General Public License see the COPYING file | |||
| @@ -33,7 +33,7 @@ void* lib_open(const char* const filename) | |||
| CARLA_ASSERT(filename); | |||
| #ifdef Q_OS_WIN | |||
| return LoadLibraryA(filename); | |||
| return (void*)LoadLibraryA(filename); | |||
| #else | |||
| return dlopen(filename, RTLD_NOW|RTLD_LOCAL); | |||
| #endif | |||
| @@ -9,7 +9,7 @@ | |||
| * | |||
| * This program is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU General Public License for more details. | |||
| * | |||
| * For a full copy of the GNU General Public License see the COPYING file | |||
| @@ -1,6 +1,6 @@ | |||
| /* | |||
| * Carla OSC utils | |||
| * Copyright (C) 2012 Filipe Coelho <falktx@falktx.com> | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or modify | |||
| * it under the terms of the GNU General Public License as published by | |||
| @@ -9,21 +9,21 @@ | |||
| * | |||
| * This program is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU General Public License for more details. | |||
| * | |||
| * For a full copy of the GNU General Public License see the COPYING file | |||
| */ | |||
| #ifndef CARLA_OSC_UTILS_HPP | |||
| #define CARLA_OSC_UTILS_HPP | |||
| #ifndef __CARLA_OSC_UTILS_HPP__ | |||
| #define __CARLA_OSC_UTILS_HPP__ | |||
| #include "carla_utils.hpp" | |||
| #include <cstdint> | |||
| #include <lo/lo.h> | |||
| // ------------------------------------------------------------------------------------------------ | |||
| // ------------------------------------------------- | |||
| struct CarlaOscData { | |||
| const char* path; | |||
| @@ -57,7 +57,7 @@ struct CarlaOscData { | |||
| } | |||
| }; | |||
| // ------------------------------------------------------------------------------------------------ | |||
| // ------------------------------------------------- | |||
| static inline | |||
| void osc_send_configure(const CarlaOscData* const oscData, const char* const key, const char* const value) | |||
| @@ -269,7 +269,7 @@ void osc_send_quit(const CarlaOscData* const oscData) | |||
| } | |||
| } | |||
| // ------------------------------------------------------------------------------------------------ | |||
| // ------------------------------------------------- | |||
| #ifdef BUILD_BRIDGE_PLUGIN | |||
| static inline | |||
| @@ -343,6 +343,6 @@ void osc_send_lv2_transfer_event(const CarlaOscData* const oscData, const int32_ | |||
| } | |||
| #endif | |||
| // ------------------------------------------------------------------------------------------------ | |||
| // ------------------------------------------------- | |||
| #endif // CARLA_OSC_UTILS_HPP | |||
| #endif // __CARLA_OSC_UTILS_HPP__ | |||
| @@ -23,7 +23,12 @@ | |||
| #include <cstdio> | |||
| #include <cstdlib> | |||
| #include <cstring> | |||
| #include <pthread.h> | |||
| #ifdef DONT_USE_PTHREAD | |||
| # include <mutex> | |||
| #else | |||
| # include <pthread.h> | |||
| #endif | |||
| #if defined(Q_OS_HAIKU) | |||
| # include <kernel/OS.h> | |||
| @@ -178,29 +183,46 @@ class CarlaMutex | |||
| { | |||
| public: | |||
| CarlaMutex() | |||
| //: pmutex PTHREAD_MUTEX_INITIALIZER | |||
| { | |||
| #ifndef DONT_USE_PTHREAD | |||
| pthread_mutex_init(&pmutex, nullptr); | |||
| #endif | |||
| } | |||
| ~CarlaMutex() | |||
| { | |||
| #ifndef DONT_USE_PTHREAD | |||
| pthread_mutex_destroy(&pmutex); | |||
| #endif | |||
| } | |||
| bool lock() | |||
| { | |||
| #ifdef DONT_USE_PTHREAD | |||
| cmutex.lock(); | |||
| return true; | |||
| #else | |||
| return (pthread_mutex_lock(&pmutex) == 0); | |||
| #endif | |||
| } | |||
| bool tryLock() | |||
| { | |||
| #ifdef DONT_USE_PTHREAD | |||
| return cmutex.try_lock(); | |||
| #else | |||
| return (pthread_mutex_trylock(&pmutex) == 0); | |||
| #endif | |||
| } | |||
| bool unlock() | |||
| { | |||
| #ifdef DONT_USE_PTHREAD | |||
| cmutex.unlock(); | |||
| return true; | |||
| #else | |||
| return (pthread_mutex_unlock(&pmutex) == 0); | |||
| #endif | |||
| } | |||
| class ScopedLocker | |||
| @@ -222,7 +244,11 @@ public: | |||
| }; | |||
| private: | |||
| #ifdef DONT_USE_PTHREAD | |||
| std::mutex cmutex; | |||
| #else | |||
| pthread_mutex_t pmutex; | |||
| #endif | |||
| }; | |||
| // ------------------------------------------------- | |||
| @@ -343,6 +369,8 @@ public: | |||
| if (*strBuf == 0) | |||
| return false; | |||
| // FIXME - use strstr | |||
| size_t thisLen = ::strlen(buffer); | |||
| size_t thatLen = ::strlen(strBuf)-1; | |||
| @@ -9,7 +9,7 @@ | |||
| * | |||
| * This program is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU General Public License for more details. | |||
| * | |||
| * For a full copy of the GNU General Public License see the COPYING file | |||
| @@ -18,9 +18,6 @@ | |||
| #ifndef __CARLA_VST_UTILS_HPP__ | |||
| #define __CARLA_VST_UTILS_HPP__ | |||
| // Disable deprecated VST features (NOT) | |||
| #define VST_FORCE_DEPRECATED 0 | |||
| #include "carla_utils.hpp" | |||
| #include <cstdint> | |||
| @@ -28,6 +25,9 @@ | |||
| // ------------------------------------------------- | |||
| // Include fixes | |||
| // Disable deprecated VST features (NOT) | |||
| #define VST_FORCE_DEPRECATED 0 | |||
| #if VESTIGE_HEADER | |||
| #include "vestige/aeffectx.h" | |||
| #define audioMasterGetOutputSpeakerArrangement audioMasterGetSpeakerArrangement | |||