Browse Source

Don't try to compress bridge custom-data, doesn't work

tags/1.9.6
falkTX 10 years ago
parent
commit
68fc0e85fe
3 changed files with 18 additions and 39 deletions
  1. +7
    -12
      source/backend/engine/CarlaEngineBridge.cpp
  2. +9
    -25
      source/backend/plugin/CarlaPluginBridge.cpp
  3. +2
    -2
      source/utils/CarlaBridgeUtils.hpp

+ 7
- 12
source/backend/engine/CarlaEngineBridge.cpp View File

@@ -1034,20 +1034,14 @@ public:

for (uint32_t i=0, count=plugin->getCustomDataCount(); i<count; ++i)
{
using namespace juce;

const CustomData& cdata(plugin->getCustomData(i));

if (std::strcmp(cdata.type, CUSTOM_DATA_TYPE_STRING) == 0 && std::strcmp(cdata.key, "CarlaLoadLv2StateNow") == 0 && std::strcmp(cdata.value, "true") == 0)
continue;

const uint32_t typeLen(static_cast<uint32_t>(std::strlen(cdata.type)));
const uint32_t keyLen(static_cast<uint32_t>(std::strlen(cdata.key)));

MemoryOutputStream valueMemStream;
GZIPCompressorOutputStream compressedValueStream(&valueMemStream, 9, false);
compressedValueStream.write(cdata.value, std::strlen(cdata.value));

const CarlaString valueBase64(CarlaString::asBase64(valueMemStream.getData(), valueMemStream.getDataSize()));
const uint32_t valueBase64Len(static_cast<uint32_t>(valueBase64.length()));
CARLA_SAFE_ASSERT_CONTINUE(valueBase64Len > 0);
const uint32_t valueLen(static_cast<uint32_t>(std::strlen(cdata.value)));

{
const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex);
@@ -1060,10 +1054,11 @@ public:
fShmNonRtServerControl.writeUInt(keyLen);
fShmNonRtServerControl.writeCustomData(cdata.key, keyLen);

fShmNonRtServerControl.writeUInt(valueBase64Len);
fShmNonRtServerControl.writeCustomData(valueBase64.buffer(), valueBase64Len);
fShmNonRtServerControl.writeUInt(valueLen);
fShmNonRtServerControl.writeCustomData(cdata.value, valueLen);

fShmNonRtServerControl.commitWrite();
fShmNonRtServerControl.waitIfDataIsReachingLimit();
}
}



+ 9
- 25
source/backend/plugin/CarlaPluginBridge.cpp View File

@@ -1046,18 +1046,9 @@ public:
CARLA_SAFE_ASSERT_RETURN(key != nullptr && key[0] != '\0',);
CARLA_SAFE_ASSERT_RETURN(value != nullptr,);

using namespace juce;

const uint32_t typeLen(static_cast<uint32_t>(std::strlen(type)));
const uint32_t keyLen(static_cast<uint32_t>(std::strlen(key)));

MemoryOutputStream valueMemStream;
GZIPCompressorOutputStream compressedValueStream(&valueMemStream, 9, false);
compressedValueStream.write(value, std::strlen(value));

const CarlaString valueBase64(CarlaString::asBase64(valueMemStream.getData(), valueMemStream.getDataSize()));
const uint32_t valueBase64Len(static_cast<uint32_t>(valueBase64.length()));
CARLA_SAFE_ASSERT_RETURN(valueBase64.length() > 0,);
const uint32_t valueLen(static_cast<uint32_t>(std::strlen(value)));

{
const CarlaMutexLocker _cml(fShmNonRtClientControl.mutex);
@@ -1070,8 +1061,8 @@ public:
fShmNonRtClientControl.writeUInt(keyLen);
fShmNonRtClientControl.writeCustomData(key, keyLen);

fShmNonRtClientControl.writeUInt(valueBase64Len);
fShmNonRtClientControl.writeCustomData(valueBase64.buffer(), valueBase64Len);
fShmNonRtClientControl.writeUInt(valueLen);
fShmNonRtClientControl.writeCustomData(value, valueLen);

fShmNonRtClientControl.commitWrite();
}
@@ -2179,9 +2170,7 @@ public:
} break;

case kPluginBridgeNonRtServerSetCustomData: {
// uint/size, str[], uint/size, str[], uint/size, str[] (compressed)

using namespace juce;
// uint/size, str[], uint/size, str[], uint/size, str[]

// type
const uint32_t typeSize(fShmNonRtServerControl.readUInt());
@@ -2196,17 +2185,12 @@ public:
fShmNonRtServerControl.readCustomData(key, keySize);

// value
const uint32_t valueBase64Size(fShmNonRtServerControl.readUInt());
char valueBase64[valueBase64Size+1];
carla_zeroChar(valueBase64, valueBase64Size+1);
fShmNonRtServerControl.readCustomData(valueBase64, valueBase64Size);

const std::vector<uint8_t> valueChunk(carla_getChunkFromBase64String(valueBase64));

MemoryInputStream valueMemStream(valueChunk.data(), valueChunk.size(), false);
GZIPDecompressorInputStream decompressedValueStream(valueMemStream);
const uint32_t valueSize(fShmNonRtServerControl.readUInt());
char value[valueSize+1];
carla_zeroChar(value, valueSize+1);
fShmNonRtServerControl.readCustomData(value, valueSize);

CarlaPlugin::setCustomData(type, key, decompressedValueStream.readEntireStreamAsString().toRawUTF8(), false);
CarlaPlugin::setCustomData(type, key, value, false);
} break;

case kPluginBridgeNonRtServerSetChunkDataFile: {


+ 2
- 2
source/utils/CarlaBridgeUtils.hpp View File

@@ -56,7 +56,7 @@ enum PluginBridgeNonRtClientOpcode {
kPluginBridgeNonRtClientSetParameterMidiCC, // uint, short
kPluginBridgeNonRtClientSetProgram, // int
kPluginBridgeNonRtClientSetMidiProgram, // int
kPluginBridgeNonRtClientSetCustomData, // uint/size, str[], uint/size, str[], uint/size, str[] (base64, compressed)
kPluginBridgeNonRtClientSetCustomData, // uint/size, str[], uint/size, str[], uint/size, str[]
kPluginBridgeNonRtClientSetChunkDataFile, // uint/size, str[] (filename, base64 content)
kPluginBridgeNonRtClientSetCtrlChannel, // short
kPluginBridgeNonRtClientSetOption, // uint/option, bool
@@ -92,7 +92,7 @@ enum PluginBridgeNonRtServerOpcode {
kPluginBridgeNonRtServerCurrentMidiProgram, // int/index
kPluginBridgeNonRtServerProgramName, // uint/index, uint/size, str[] (name)
kPluginBridgeNonRtServerMidiProgramData, // uint/index, uint/bank, uint/program, uint/size, str[] (name)
kPluginBridgeNonRtServerSetCustomData, // uint/size, str[], uint/size, str[], uint/size, str[] (base64, compressed)
kPluginBridgeNonRtServerSetCustomData, // uint/size, str[], uint/size, str[], uint/size, str[]
kPluginBridgeNonRtServerSetChunkDataFile, // uint/size, str[] (filename, base64 content)
kPluginBridgeNonRtServerSetLatency, // uint
kPluginBridgeNonRtServerReady,


Loading…
Cancel
Save