Browse Source

bridge: change custom data "big size" to 4096, bump api version

Signed-off-by: falkTX <falktx@falktx.com>
pull/1780/head
falkTX 1 year ago
parent
commit
1dff57a1e6
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
3 changed files with 28 additions and 20 deletions
  1. +18
    -11
      source/backend/engine/CarlaEngineBridge.cpp
  2. +9
    -8
      source/backend/plugin/CarlaPluginBridge.cpp
  3. +1
    -1
      source/utils/CarlaBridgeDefines.hpp

+ 18
- 11
source/backend/engine/CarlaEngineBridge.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Plugin Host
* Copyright (C) 2011-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2023 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
@@ -147,6 +147,7 @@ public:
fClosingDown(false),
fIsOffline(false),
fFirstIdle(true),
fBridgeVersion(0),
fLastPingTime(-1)
{
carla_debug("CarlaEngineBridge::CarlaEngineBridge(\"%s\", \"%s\", \"%s\", \"%s\")", audioPoolBaseName, rtClientBaseName, nonRtClientBaseName, nonRtServerBaseName);
@@ -436,6 +437,8 @@ public:
fShmNonRtServerControl.commitWrite();
}

fShmNonRtServerControl.waitIfDataIsReachingLimit();

// kPluginBridgeNonRtServerAudioCount
{
const uint32_t aIns = plugin->getAudioInCount();
@@ -830,9 +833,9 @@ public:
break;

case kPluginBridgeNonRtClientVersion: {
const uint apiVersion = fShmNonRtServerControl.readUInt();
CARLA_SAFE_ASSERT_UINT2(apiVersion >= CARLA_PLUGIN_BRIDGE_API_VERSION_MINIMUM,
apiVersion, CARLA_PLUGIN_BRIDGE_API_VERSION_MINIMUM);
fBridgeVersion = fShmNonRtServerControl.readUInt();
CARLA_SAFE_ASSERT_UINT2(fBridgeVersion >= CARLA_PLUGIN_BRIDGE_API_VERSION_MINIMUM,
fBridgeVersion, CARLA_PLUGIN_BRIDGE_API_VERSION_MINIMUM);
} break;

case kPluginBridgeNonRtClientPing: {
@@ -918,6 +921,8 @@ public:
}

case kPluginBridgeNonRtClientSetCustomData: {
const uint32_t maxLocalValueLen = fBridgeVersion >= 10 ? 4096 : 16384;

// type
const BridgeTextReader type(fShmNonRtClientControl);

@@ -929,7 +934,7 @@ public:

if (valueSize > 0)
{
if (valueSize > 16384)
if (valueSize > maxLocalValueLen)
{
const BridgeTextReader bigValueFilePathTry(fShmNonRtClientControl, valueSize);

@@ -1081,6 +1086,8 @@ public:

plugin->prepareForSave(false);

const uint32_t maxLocalValueLen = fBridgeVersion >= 10 ? 4096 : 16384;

for (uint32_t i=0, count=plugin->getCustomDataCount(); i<count; ++i)
{
const CustomData& cdata(plugin->getCustomData(i));
@@ -1092,12 +1099,12 @@ public:
const uint32_t keyLen = static_cast<uint32_t>(std::strlen(cdata.key));
const uint32_t valueLen = static_cast<uint32_t>(std::strlen(cdata.value));

if (valueLen > 16384)
fShmNonRtServerControl.waitIfDataIsReachingLimit();

{
const CarlaMutexLocker _cml(fShmNonRtServerControl.mutex);

if (valueLen > maxLocalValueLen)
fShmNonRtServerControl.waitIfDataIsReachingLimit();

fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerSetCustomData);

fShmNonRtServerControl.writeUInt(typeLen);
@@ -1110,7 +1117,7 @@ public:

if (valueLen > 0)
{
if (valueLen > 16384)
if (valueLen > maxLocalValueLen)
{
String filePath(File::getSpecialLocation(File::tempDirectory).getFullPathName());

@@ -1136,9 +1143,8 @@ public:
}

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

fShmNonRtServerControl.waitIfDataIsReachingLimit();
}

if (plugin->getOptionsEnabled() & PLUGIN_OPTION_USE_CHUNKS)
@@ -1678,6 +1684,7 @@ private:
bool fClosingDown;
bool fIsOffline;
bool fFirstIdle;
uint32_t fBridgeVersion;
int64_t fLastPingTime;

CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaEngineBridge)


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

@@ -1,6 +1,6 @@
/*
* Carla Plugin Bridge
* Copyright (C) 2011-2022 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2023 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
@@ -963,18 +963,18 @@ public:
return;
}

const uint32_t maxLocalValueLen = fBridgeVersion >= 10 ? 4096 : 16384;

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

/*
if (valueLen > 16384)
fShmNonRtClientControl.waitIfDataIsReachingLimit();
*/

{
const CarlaMutexLocker _cml(fShmNonRtClientControl.mutex);

if (valueLen > maxLocalValueLen)
fShmNonRtClientControl.waitIfDataIsReachingLimit();

fShmNonRtClientControl.writeOpcode(kPluginBridgeNonRtClientSetCustomData);

fShmNonRtClientControl.writeUInt(typeLen);
@@ -987,7 +987,7 @@ public:

if (valueLen > 0)
{
if (valueLen > 16384)
if (valueLen > maxLocalValueLen)
{
String filePath(File::getSpecialLocation(File::tempDirectory).getFullPathName());

@@ -2513,6 +2513,7 @@ public:

case kPluginBridgeNonRtServerSetCustomData: {
// uint/size, str[], uint/size, str[], uint/size, str[]
const uint32_t maxLocalValueLen = fBridgeVersion >= 10 ? 4096 : 16384;

// type
const BridgeTextReader type(fShmNonRtServerControl);
@@ -2524,7 +2525,7 @@ public:
const uint32_t valueSize = fShmNonRtServerControl.readUInt();

// special case for big values
if (valueSize > 16384)
if (valueSize > maxLocalValueLen)
{
const BridgeTextReader bigValueFilePath(fShmNonRtServerControl);



+ 1
- 1
source/utils/CarlaBridgeDefines.hpp View File

@@ -24,7 +24,7 @@
#define CARLA_PLUGIN_BRIDGE_API_VERSION_MINIMUM 6

// current API version, bumped when something is added
#define CARLA_PLUGIN_BRIDGE_API_VERSION_CURRENT 9
#define CARLA_PLUGIN_BRIDGE_API_VERSION_CURRENT 10

// -------------------------------------------------------------------------------------------------------------------



Loading…
Cancel
Save