@@ -93,14 +93,14 @@ CARLA_ENGINE_THREAD_HPP = $(CWD)/backend/engine/CarlaEngineThread.hpp $ | |||
CARLA_ENGINE_INTERNAL_HPP = $(CWD)/backend/engine/CarlaEngineInternal.hpp $(CARLA_ENGINE_OSC_HPP) $(CARLA_ENGINE_THREAD_HPP) $(CARLA_ENGINE_UTILS_HPP) | |||
CARLA_ENGINE_CPP_DEPS = $(CARLA_ENGINE_INTERNAL_HPP) $(CARLA_PLUGIN_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_BINARY_UTILS_HPP) $(CARLA_ENGINE_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_STATE_UTILS_HPP) $(CARLA_MIDI_H) $(JACK_BRIDGE_HPP) | |||
CARLA_ENGINE_BRIDGE_CPP_DEPS = $(CARLA_ENGINE_INTERNAL_HPP) $(CARLA_PLUGIN_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_BRIDGE_UTILS_HPP) $(CARLA_MIDI_H) $(JACK_BRIDGE_HPP) | |||
CARLA_ENGINE_BRIDGE_CPP_DEPS = $(CARLA_ENGINE_INTERNAL_HPP) $(CARLA_PLUGIN_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_BASE64_UTILS_HPP) $(CARLA_BRIDGE_UTILS_HPP) $(CARLA_MIDI_H) $(JACK_BRIDGE_HPP) | |||
CARLA_ENGINE_CLIENT_CPP_DEPS = $(CARLA_ENGINE_UTILS_HPP) | |||
CARLA_ENGINE_DATA_CPP_DEPS = $(CARLA_ENGINE_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_MIDI_H) | |||
CARLA_ENGINE_GRAPH_CPP_DEPS = $(CARLA_ENGINE_GRAPH_HPP) $(CARLA_ENGINE_INTERNAL_HPP) $(CARLA_PLUGIN_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_MIDI_H) | |||
CARLA_ENGINE_INTERNAL_CPP_DEPS = $(CARLA_ENGINE_INTERNAL_HPP) $(CARLA_PLUGIN_HPP) | |||
CARLA_ENGINE_JACK_CPP_DEPS = $(CARLA_ENGINE_INTERNAL_HPP) $(CARLA_PLUGIN_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_ENGINE_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_MIDI_H) $(CARLA_PATCHBAY_UTILS_HPP) $(JACK_BRIDGE_HPP) | |||
CARLA_ENGINE_JUCE_CPP_DEPS = $(CARLA_ENGINE_GRAPH_HPP) $(CARLA_ENGINE_INTERNAL_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_STRING_LIST_HPP) $(RT_LINKED_LIST_HPP) | |||
CARLA_ENGINE_NATIVE_CPP_DEPS = $(CARLA_ENGINE_INTERNAL_HPP) $(CARLA_PLUGIN_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_BASE64_UTILS_HPP) $(CARLA_BINARY_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_STATE_UTILS_HPP) $(CARLA_EXTERNAL_UI_HPP) $(CARLA_NATIVE_HPP) $(CARLA_PLUGIN_UI_CPP) $(CARLA_DSSI_UTILS_CPP) $(CARLA_STATE_UTILS_CPP) | |||
CARLA_ENGINE_NATIVE_CPP_DEPS = $(CARLA_ENGINE_INTERNAL_HPP) $(CARLA_PLUGIN_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_BASE64_UTILS_HPP) $(CARLA_BINARY_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_STATE_UTILS_HPP) $(CARLA_EXTERNAL_UI_HPP) $(CARLA_NATIVE_HPP) $(CARLA_PLUGIN_UI_CPP) $(CARLA_DSSI_UTILS_CPP) $(CARLA_STATE_UTILS_CPP) | |||
CARLA_ENGINE_OSC_CPP_DEPS = $(CARLA_ENGINE_HPP) $(CARLA_ENGINE_OSC_HPP) $(CARLA_PLUGIN_HPP) $(CARLA_BRIDGE_UTILS_HPP) $(CARLA_MIDI_H) | |||
CARLA_ENGINE_OSC_SEND_CPP_DEPS = $(CARLA_BACKEND_UTILS_HPP) $(CARLA_ENGINE_INTERNAL_HPP) $(CARLA_MIDI_H) | |||
CARLA_ENGINE_PORTS_CPP_DEPS = $(CARLA_ENGINE_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_MIDI_H) | |||
@@ -129,7 +129,7 @@ CARLA_PLUGIN_THREAD_HPP = $(CWD)/backend/plugin/CarlaPluginThread.hpp $ | |||
CARLA_PLUGIN_INTERNAL_HPP = $(CWD)/backend/plugin/CarlaPluginInternal.hpp $(CARLA_PLUGIN_HPP) $(CARLA_PLUGIN_THREAD_HPP) $(CARLA_OSC_UTILS_HPP) $(CARLA_STATE_UTILS_HPP) $(CARLA_MUTEX_HPP) $(RT_LINKED_LIST_HPP) $(CARLA_MIDI_H) | |||
AU_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_HPP) $(CARLA_ENGINE_HPP) $(CARLA_UTILS_HPP) | |||
BRIDGE_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_BRIDGE_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_SHM_UTILS_HPP) $(JACK_BRIDGE_HPP) | |||
BRIDGE_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_BASE64_UTILS_HPP) $(CARLA_BRIDGE_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_SHM_UTILS_HPP) $(JACK_BRIDGE_HPP) | |||
CARLA_PLUGIN_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) $(CARLA_BACKEND_UTILS_HPP) $(CARLA_BASE64_UTILS_HPP) $(CARLA_MATH_UTILS_HPP) $(CARLA_PLUGIN_UI_HPP) | |||
CARLA_PLUGIN_INTERNAL_CPP_DEPS = $(CARLA_PLUGIN_INTERNAL_HPP) $(CARLA_ENGINE_HPP) $(CARLA_LIB_COUNTER_HPP) $(CARLA_MATH_UTILS_HPP) | |||
CARLA_PLUGIN_THREAD_CPP_DEPS = $(CARLA_PLUGIN_HPP) $(CARLA_PLUGIN_THREAD_HPP) $(CARLA_ENGINE_HPP) | |||
@@ -23,6 +23,7 @@ | |||
#include "CarlaPlugin.hpp" | |||
#include "CarlaBackendUtils.hpp" | |||
#include "CarlaBase64Utils.hpp" | |||
#include "CarlaBridgeUtils.hpp" | |||
#include "CarlaMIDI.h" | |||
@@ -500,22 +501,22 @@ public: | |||
if (plugin == nullptr || ! plugin->isEnabled()) break; | |||
String chunkFilePath(chunkFilePathTry); | |||
#ifdef CARLA_OS_WIN | |||
// check if running under Wine | |||
if (chunkFilePath.startsWith("/")) | |||
{ | |||
// running under Wine, posix host | |||
chunkFilePath = chunkFilePath.replaceSection(0, 1, "Z:\\").replace("/", "\\"); | |||
} | |||
#endif | |||
File chunkFile(chunkFilePath); | |||
CARLA_SAFE_ASSERT_BREAK(chunkFile.existsAsFile()); | |||
MemoryBlock memBlock; | |||
chunkFile.loadFileAsData(memBlock); | |||
String chunkDataBase64(chunkFile.loadFileAsString()); | |||
chunkFile.deleteFile(); | |||
CARLA_SAFE_ASSERT_BREAK(chunkDataBase64.isNotEmpty()); | |||
CARLA_SAFE_ASSERT_BREAK(memBlock.getSize() > 0); | |||
plugin->setChunkData(memBlock.getData(), memBlock.getSize()); | |||
std::vector<uint8_t> chunk(carla_getChunkFromBase64String(chunkDataBase64.toRawUTF8())); | |||
plugin->setChunkData(chunk.data(), chunk.size()); | |||
break; | |||
} | |||
@@ -555,13 +556,16 @@ public: | |||
{ | |||
CARLA_SAFE_ASSERT_BREAK(data != nullptr); | |||
CarlaString dataBase64 = CarlaString::asBase64(data, dataSize); | |||
CARLA_SAFE_ASSERT_RETURN(dataBase64.length() > 0,); | |||
String filePath(File::getSpecialLocation(File::tempDirectory).getFullPathName()); | |||
filePath += OS_SEP_STR; | |||
filePath += ".CarlaChunk_"; | |||
filePath += fShmAudioPool.filename.buffer() + 18; | |||
filePath += fShmNonRtControl.filename.buffer() + 24; | |||
if (File(filePath).replaceWithData(data, dataSize)) | |||
if (File(filePath).replaceWithText(dataBase64.buffer())) | |||
oscSend_bridge_set_chunk_data_file(filePath.toRawUTF8()); | |||
} | |||
} | |||
@@ -21,6 +21,7 @@ | |||
#ifndef BUILD_BRIDGE | |||
#include "CarlaBackendUtils.hpp" | |||
#include "CarlaBase64Utils.hpp" | |||
#include "CarlaBridgeUtils.hpp" | |||
#include "CarlaMathUtils.hpp" | |||
#include "CarlaShmUtils.hpp" | |||
@@ -57,7 +58,6 @@ | |||
// ------------------------------------------------------------------------------------------------------------------- | |||
using juce::File; | |||
using juce::MemoryBlock; | |||
using juce::String; | |||
using juce::StringArray; | |||
@@ -379,6 +379,8 @@ public: | |||
fShmNonRtControl.clear(); | |||
clearBuffers(); | |||
fInfo.chunk.clear(); | |||
} | |||
// ------------------------------------------------------------------- | |||
@@ -424,10 +426,10 @@ public: | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(pData->options & PLUGIN_OPTION_USE_CHUNKS, 0); | |||
CARLA_SAFE_ASSERT_RETURN(dataPtr != nullptr, 0); | |||
CARLA_SAFE_ASSERT_RETURN(fInfo.chunk.getSize() > 0, 0); | |||
CARLA_SAFE_ASSERT_RETURN(fInfo.chunk.size() > 0, 0); | |||
*dataPtr = fInfo.chunk.getData(); | |||
return fInfo.chunk.getSize(); | |||
*dataPtr = fInfo.chunk.data(); | |||
return fInfo.chunk.size(); | |||
} | |||
// ------------------------------------------------------------------- | |||
@@ -659,13 +661,16 @@ public: | |||
CARLA_SAFE_ASSERT_RETURN(data != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(dataSize > 0,); | |||
CarlaString dataBase64 = CarlaString::asBase64(data, dataSize); | |||
CARLA_SAFE_ASSERT_RETURN(dataBase64.length() > 0,); | |||
String filePath(File::getSpecialLocation(File::tempDirectory).getFullPathName()); | |||
filePath += OS_SEP_STR; | |||
filePath += ".CarlaChunk_"; | |||
filePath += fShmAudioPool.filename.buffer() + 18; | |||
if (File(filePath).replaceWithData(data, dataSize)) | |||
if (File(filePath).replaceWithText(dataBase64.buffer())) | |||
{ | |||
const uint32_t ulength(static_cast<uint32_t>(filePath.length())); | |||
@@ -1753,9 +1758,9 @@ public: | |||
if (chunkFile.existsAsFile()) | |||
{ | |||
fInfo.chunk.reset(); | |||
chunkFile.loadFileAsData(fInfo.chunk); | |||
fInfo.chunk = carla_getChunkFromBase64String(chunkFile.loadFileAsString().toRawUTF8()); | |||
chunkFile.deleteFile(); | |||
carla_stderr("chunk data final"); | |||
} | |||
break; | |||
} | |||
@@ -2030,7 +2035,7 @@ private: | |||
CarlaString label; | |||
CarlaString maker; | |||
CarlaString copyright; | |||
MemoryBlock chunk; | |||
std::vector<uint8_t> chunk; | |||
Info() | |||
: aIns(0), | |||
@@ -509,7 +509,7 @@ const StateSave& CarlaPlugin::getStateSave() | |||
if (data != nullptr && dataSize > 0) | |||
{ | |||
pData->stateSave.chunk = CarlaString::asBase64(data, static_cast<std::size_t>(dataSize)).dup(); | |||
pData->stateSave.chunk = CarlaString::asBase64(data, dataSize).dup(); | |||
// Don't save anything else if using chunks | |||
return pData->stateSave; | |||
@@ -305,10 +305,10 @@ bool CarlaPluginUI::tryTransientWinIdMatch(const uintptr_t pid, const char* cons | |||
#if defined(CARLA_OS_MAC) | |||
return true; | |||
(void)pid; | |||
(void)pid; (void)centerUI; | |||
#elif defined(CARLA_OS_WIN) | |||
return true; | |||
(void)pid; | |||
(void)pid; (void)centerUI; | |||
#elif defined(HAVE_X11) | |||
struct ScopedDisplay { | |||
Display* display; | |||