diff --git a/data/windows/build-win32.sh b/data/windows/build-win32.sh index 1302e5da8..78114d31c 100755 --- a/data/windows/build-win32.sh +++ b/data/windows/build-win32.sh @@ -46,7 +46,7 @@ make $JOBS UI RES WIDGETS # Build discovery make $JOBS discovery -rm bin/carla-discovery-win32.exe +rm -f bin/carla-discovery-win32.exe cp bin/carla-discovery-native.exe bin/carla-discovery-win32.exe # Build backend diff --git a/data/windows/build-win64.sh b/data/windows/build-win64.sh index 1d90a3331..2f42b67d0 100755 --- a/data/windows/build-win64.sh +++ b/data/windows/build-win64.sh @@ -47,7 +47,7 @@ make $JOBS UI RES WIDGETS # Build discovery make $JOBS discovery -rm bin/carla-discovery-win64.exe +rm -f bin/carla-discovery-win64.exe cp bin/carla-discovery-native.exe bin/carla-discovery-win64.exe # Build backend diff --git a/source/backend/Makefile b/source/backend/Makefile index b4cf348c9..fd7f1b2d2 100644 --- a/source/backend/Makefile +++ b/source/backend/Makefile @@ -99,6 +99,10 @@ UTILS_LINK_FLAGS += $(JUCE_CORE_LIBS) UTILS_LINK_FLAGS += $(LILV_LIBS) UTILS_LINK_FLAGS += $(NATIVE_PLUGINS_LIBS) +ifneq ($(HAIKU),true) +UTILS_LINK_FLAGS += -lpthread +endif + # ---------------------------------------------------------------------------------------------------------------------------- all: $(TARGETS) diff --git a/source/backend/engine/CarlaEngineJuce.cpp b/source/backend/engine/CarlaEngineJuce.cpp index 6cf07d7fe..d426e5c6e 100644 --- a/source/backend/engine/CarlaEngineJuce.cpp +++ b/source/backend/engine/CarlaEngineJuce.cpp @@ -812,7 +812,7 @@ private: void splice() { - dataPending.spliceAppendTo(data); + dataPending.moveTo(data, true /* append */); } }; diff --git a/source/backend/engine/CarlaEngineNative.cpp b/source/backend/engine/CarlaEngineNative.cpp index 8f2360ad1..465e1ef06 100644 --- a/source/backend/engine/CarlaEngineNative.cpp +++ b/source/backend/engine/CarlaEngineNative.cpp @@ -1453,7 +1453,6 @@ protected: const CarlaMutexLocker cml(fUiServer.getPipeLock()); const ScopedLocale csl; -#ifndef CARLA_OS_WIN // FIXME // send transport fUiServer.writeAndFixMessage("transport"); fUiServer.writeMessage(timeInfo.playing ? "true\n" : "false\n"); @@ -1473,7 +1472,6 @@ protected: } fUiServer.flushMessages(); -#endif // send peaks and param outputs for all plugins for (uint i=0; i < pData->curPluginCount; ++i) diff --git a/source/bridges-ui/CarlaBridgeToolkitGtk.cpp b/source/bridges-ui/CarlaBridgeToolkitGtk.cpp index 090c17257..1bdf00f4e 100644 --- a/source/bridges-ui/CarlaBridgeToolkitGtk.cpp +++ b/source/bridges-ui/CarlaBridgeToolkitGtk.cpp @@ -37,8 +37,8 @@ static const bool gHideShowTesting = std::getenv("CARLA_UI_TESTING") != nullptr; class CarlaBridgeToolkitGtk : public CarlaBridgeToolkit { public: - CarlaBridgeToolkitGtk(CarlaBridgeUI* const ui) - : CarlaBridgeToolkit(ui), + CarlaBridgeToolkitGtk(CarlaBridgeUI* const u) + : CarlaBridgeToolkit(u), fNeedsShow(false), fWindow(nullptr), fLastX(0), @@ -47,7 +47,7 @@ public: fLastHeight(0), leakDetector_CarlaBridgeToolkitGtk() { - carla_debug("CarlaBridgeToolkitGtk::CarlaBridgeToolkitGtk(%p)", ui); + carla_debug("CarlaBridgeToolkitGtk::CarlaBridgeToolkitGtk(%p)", u); } ~CarlaBridgeToolkitGtk() override diff --git a/source/bridges-ui/CarlaBridgeToolkitPlugin.cpp b/source/bridges-ui/CarlaBridgeToolkitPlugin.cpp index 0e77b9d43..60ad5a819 100644 --- a/source/bridges-ui/CarlaBridgeToolkitPlugin.cpp +++ b/source/bridges-ui/CarlaBridgeToolkitPlugin.cpp @@ -34,13 +34,16 @@ class CarlaBridgeToolkitPlugin : public CarlaBridgeToolkit, private CarlaPluginUI::CloseCallback { public: - CarlaBridgeToolkitPlugin(CarlaBridgeUI* const ui) - : CarlaBridgeToolkit(ui), + CarlaBridgeToolkitPlugin(CarlaBridgeUI* const u) + : CarlaBridgeToolkit(u), fUI(nullptr), fIdling(false), +#if defined(CARLA_OS_WIN) || defined(CARLA_OS_MAC) + kJuceInit(), +#endif leakDetector_CarlaBridgeToolkitPlugin() { - carla_debug("CarlaBridgeToolkitPlugin::CarlaBridgeToolkitPlugin(%p)", ui); + carla_debug("CarlaBridgeToolkitPlugin::CarlaBridgeToolkitPlugin(%p)", u); } ~CarlaBridgeToolkitPlugin() override diff --git a/source/bridges-ui/CarlaBridgeToolkitQt.cpp b/source/bridges-ui/CarlaBridgeToolkitQt.cpp index 7b8fb481f..7709d4c24 100644 --- a/source/bridges-ui/CarlaBridgeToolkitQt.cpp +++ b/source/bridges-ui/CarlaBridgeToolkitQt.cpp @@ -50,16 +50,16 @@ class CarlaBridgeToolkitQt: public QObject, Q_OBJECT public: - CarlaBridgeToolkitQt(CarlaBridgeUI* const ui) + CarlaBridgeToolkitQt(CarlaBridgeUI* const u) : QObject(nullptr), - CarlaBridgeToolkit(ui), + CarlaBridgeToolkit(u), fApp(nullptr), fWindow(nullptr), fMsgTimer(0), fNeedsShow(false), leakDetector_CarlaBridgeToolkitQt() { - carla_debug("CarlaBridgeToolkitQt::CarlaBridgeToolkitQt(%p)", ui); + carla_debug("CarlaBridgeToolkitQt::CarlaBridgeToolkitQt(%p)", u); } ~CarlaBridgeToolkitQt() override diff --git a/source/bridges-ui/CarlaBridgeUI-LV2.cpp b/source/bridges-ui/CarlaBridgeUI-LV2.cpp index 3b432dffc..7dbdce609 100644 --- a/source/bridges-ui/CarlaBridgeUI-LV2.cpp +++ b/source/bridges-ui/CarlaBridgeUI-LV2.cpp @@ -519,8 +519,10 @@ public: void idleUI() override { +#if defined(BRIDGE_COCOA) || defined(BRIDGE_HWND) || defined(BRIDGE_X11) if (fHandle != nullptr && fExt.idle != nullptr) fExt.idle->idle(fHandle); +#endif } // --------------------------------------------------------------------- diff --git a/source/bridges-ui/CarlaBridgeUI.cpp b/source/bridges-ui/CarlaBridgeUI.cpp index a3257edcc..ed081c039 100644 --- a/source/bridges-ui/CarlaBridgeUI.cpp +++ b/source/bridges-ui/CarlaBridgeUI.cpp @@ -218,7 +218,7 @@ bool CarlaBridgeUI::msgReceived(const char* const msg) noexcept CARLA_SAFE_ASSERT_RETURN(readNextLineAsULong(transientWindowId), true); fGotOptions = true; - uiOptionsChanged(useTheme, useThemeColors, windowTitle, transientWindowId); + uiOptionsChanged(useTheme, useThemeColors, windowTitle, static_cast(transientWindowId)); delete[] windowTitle; return true; diff --git a/source/bridges-ui/Makefile b/source/bridges-ui/Makefile index 15d14135c..d8cec7267 100644 --- a/source/bridges-ui/Makefile +++ b/source/bridges-ui/Makefile @@ -25,6 +25,10 @@ endif BUILD_CXX_FLAGS += -DBUILD_BRIDGE -DBUILD_BRIDGE_UI -I. -I$(CWD)/backend -I$(CWD)/includes -I$(CWD)/utils -isystem $(CWD)/modules LINK_FLAGS += $(JUCE_CORE_LIBS) +ifneq ($(HAIKU),true) +LINK_FLAGS += -lpthread +endif + # ---------------------------------------------------------------------------------------------------------------------------- BUILD_GTK2_FLAGS = $(BUILD_CXX_FLAGS) -DBRIDGE_GTK2 $(shell pkg-config --cflags gtk+-2.0) diff --git a/source/carla_backend_qt.py b/source/carla_backend_qt.py index 0222d8253..d90ee54f5 100644 --- a/source/carla_backend_qt.py +++ b/source/carla_backend_qt.py @@ -84,6 +84,18 @@ class CarlaHostSignals(QObject): ErrorCallback = pyqtSignal(str) QuitCallback = pyqtSignal() + #def __init__(self): + #QObject.__init__(self) + +# ------------------------------------------------------------------------------------------------------------ +# Carla Host object (dummy/null, does nothing) + +class CarlaHostQtNull(CarlaHostSignals, CarlaHostNull): +#class CarlaHostQtDLL(CarlaHostSignals, CarlaHostNull, metaclass=PyQtMetaClass): + def __init__(self): + CarlaHostSignals.__init__(self) + CarlaHostNull.__init__(self) + # ------------------------------------------------------------------------------------------------------------ # Carla Host object using a DLL diff --git a/source/carla_host.py b/source/carla_host.py index 65244d7c1..ddddf8400 100644 --- a/source/carla_host.py +++ b/source/carla_host.py @@ -2008,7 +2008,7 @@ def initHost(initName, libPrefixOrPluginClass, isControl, isPlugin, failError): try: host = PluginClass() if isPlugin else CarlaHostQtDLL(os.path.join(pathBinaries, libname)) except: - host = CarlaHostNull() + host = CarlaHostQtNull() host.isControl = isControl host.isPlugin = isPlugin diff --git a/source/discovery/Makefile b/source/discovery/Makefile index 87fe03ce9..9517d6d96 100644 --- a/source/discovery/Makefile +++ b/source/discovery/Makefile @@ -39,6 +39,11 @@ ifeq ($(MACOS),true) BUILD_CXX_FLAGS += -ObjC++ endif +# vstsdk requires this +ifeq ($(MACOS_OR_WIN32),true) +BUILD_CXX_FLAGS += -Wno-zero-as-null-pointer-constant +endif + 32BIT_FLAGS += -DBUILD_BRIDGE 64BIT_FLAGS += -DBUILD_BRIDGE diff --git a/source/includes/CarlaDefines.h b/source/includes/CarlaDefines.h index c0cfd84e9..df7cb1bbf 100644 --- a/source/includes/CarlaDefines.h +++ b/source/includes/CarlaDefines.h @@ -92,8 +92,8 @@ # define P_UINTPTR "%llx" # define P_SIZE "%I64u" #elif defined(CARLA_OS_WIN32) -# define P_INT64 "%I64i" -# define P_UINT64 "%I64u" +# define P_INT64 "%lli" +# define P_UINT64 "%llu" # define P_INTPTR "%i" # define P_UINTPTR "%x" # define P_SIZE "%u" diff --git a/source/jackbridge/JackBridge2.cpp b/source/jackbridge/JackBridge2.cpp index 776ff556a..30e56a677 100644 --- a/source/jackbridge/JackBridge2.cpp +++ b/source/jackbridge/JackBridge2.cpp @@ -19,6 +19,7 @@ #ifdef JACKBRIDGE_DUMMY # include "CarlaUtils.hpp" #else +# include # include "CarlaSemUtils.hpp" # include "CarlaShmUtils.hpp" #endif // ! JACKBRIDGE_DUMMY diff --git a/source/plugin/Makefile b/source/plugin/Makefile index fb22ea69b..d00d4e475 100644 --- a/source/plugin/Makefile +++ b/source/plugin/Makefile @@ -43,6 +43,9 @@ LIBS += $(MODULEDIR)/juce_data_structures.a LIBS += $(MODULEDIR)/juce_events.a LIBS += $(MODULEDIR)/juce_graphics.a LIBS += $(MODULEDIR)/juce_gui_basics.a +endif + +ifeq ($(MACOS),true) LIBS += $(MODULEDIR)/juce_gui_extra.a endif @@ -64,6 +67,9 @@ LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) LINK_FLAGS += $(JUCE_EVENTS_LIBS) LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) +endif + +ifeq ($(MACOS),true) LINK_FLAGS += $(JUCE_GUI_EXTRA_LIBS) endif diff --git a/source/tests/CarlaPipeUtils.cpp b/source/tests/CarlaPipeUtils.cpp index b6f379063..9faa56e8b 100644 --- a/source/tests/CarlaPipeUtils.cpp +++ b/source/tests/CarlaPipeUtils.cpp @@ -16,7 +16,6 @@ */ #include "CarlaPipeUtils.hpp" -#include "CarlaSemUtils.hpp" // ----------------------------------------------------------------------- @@ -31,8 +30,6 @@ public: carla_stdout("CLIENT RECEIVED: \"%s\"", msg); return true; } - - sem_t sem; }; class CarlaPipeServer2 : public CarlaPipeServer diff --git a/source/utils/CarlaSemUtils.hpp b/source/utils/CarlaSemUtils.hpp index 697a351b9..bf1965f11 100644 --- a/source/utils/CarlaSemUtils.hpp +++ b/source/utils/CarlaSemUtils.hpp @@ -26,8 +26,6 @@ #include #if defined(CARLA_OS_MAC) -# include -# include extern "C" { # include "osx_sem_timedwait.c" }; @@ -126,7 +124,7 @@ bool carla_sem_timedwait(sem_t* const sem, const uint secs) noexcept timeout.tv_sec = now.tv_sec; timeout.tv_nsec = now.tv_usec * 1000; #endif - timeout.tv_sec += secs; + timeout.tv_sec += static_cast(secs); try { return (::sem_timedwait(sem, &timeout) == 0); diff --git a/source/utils/CarlaShmUtils.hpp b/source/utils/CarlaShmUtils.hpp index e6c091ced..cc593731f 100644 --- a/source/utils/CarlaShmUtils.hpp +++ b/source/utils/CarlaShmUtils.hpp @@ -170,7 +170,7 @@ void* carla_shm_map(shm_t& shm, const std::size_t size) noexcept try { #ifdef CARLA_OS_WIN - const HANDLE map(:CreateFileMapping(shm.shm, nullptr, PAGE_READWRITE, size, size, nullptr)); + const HANDLE map(::CreateFileMapping(shm.shm, nullptr, PAGE_READWRITE, size, size, nullptr)); CARLA_SAFE_ASSERT_RETURN(map != nullptr, nullptr); void* const ptr(::MapViewOfFile(map, FILE_MAP_COPY, 0, 0, size));