Browse Source

Ignore JACK applications trying to handle MIDI when it is disabled

Signed-off-by: falkTX <falktx@falktx.com>
tags/v2.4.2
falkTX 3 years ago
parent
commit
6fb994bd9c
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
2 changed files with 14 additions and 8 deletions
  1. +3
    -3
      source/libjack/libjack.hpp
  2. +11
    -5
      source/libjack/libjack_midi.cpp

+ 3
- 3
source/libjack/libjack.hpp View File

@@ -69,7 +69,7 @@ struct JackMidiPortBufferBase {
static const size_t kBufferPoolSize = kMaxEventCount*8;

bool isInput;
bool isValid;
bool isDummy;
};

struct JackMidiPortBufferOnStack : JackMidiPortBufferBase {
@@ -86,7 +86,7 @@ struct JackMidiPortBufferOnStack : JackMidiPortBufferBase {
bufferPool()
{
isInput = true;
isValid = true;
isDummy = false;
}

CARLA_DECLARE_NON_COPY_STRUCT(JackMidiPortBufferOnStack)
@@ -96,7 +96,7 @@ struct JackMidiPortBufferDummy : JackMidiPortBufferBase {
JackMidiPortBufferDummy(const bool input)
{
isInput = input;
isValid = false;
isDummy = true;
}

CARLA_DECLARE_NON_COPY_STRUCT(JackMidiPortBufferDummy)


+ 11
- 5
source/libjack/libjack_midi.cpp View File

@@ -27,7 +27,9 @@ jack_nframes_t jack_midi_get_event_count(void* buf)
const JackMidiPortBufferBase* const jbasebuf((const JackMidiPortBufferBase*)buf);
CARLA_SAFE_ASSERT_RETURN(jbasebuf != nullptr, 0);
CARLA_SAFE_ASSERT_RETURN(jbasebuf->isInput, 0);
CARLA_SAFE_ASSERT_RETURN(jbasebuf->isValid, 0);

if (jbasebuf->isDummy)
return 0;

const JackMidiPortBufferOnStack* const jmidibuf((const JackMidiPortBufferOnStack*)jbasebuf);

@@ -40,7 +42,7 @@ int jack_midi_event_get(jack_midi_event_t* ev, void* buf, uint32_t index)
const JackMidiPortBufferBase* const jbasebuf((const JackMidiPortBufferBase*)buf);
CARLA_SAFE_ASSERT_RETURN(jbasebuf != nullptr, EFAULT);
CARLA_SAFE_ASSERT_RETURN(jbasebuf->isInput, EFAULT);
CARLA_SAFE_ASSERT_RETURN(jbasebuf->isValid, EFAULT);
CARLA_SAFE_ASSERT_RETURN(!jbasebuf->isDummy, EFAULT);

const JackMidiPortBufferOnStack* const jmidibuf((const JackMidiPortBufferOnStack*)jbasebuf);

@@ -58,7 +60,7 @@ void jack_midi_clear_buffer(void* buf)
CARLA_SAFE_ASSERT_RETURN(jbasebuf != nullptr,);
CARLA_SAFE_ASSERT_RETURN(! jbasebuf->isInput,);

if (! jbasebuf->isValid)
if (jbasebuf->isDummy)
return;

JackMidiPortBufferOnStack* const jmidibuf((JackMidiPortBufferOnStack*)jbasebuf);
@@ -86,9 +88,11 @@ jack_midi_data_t* jack_midi_event_reserve(void* buf, jack_nframes_t frame, size_
JackMidiPortBufferBase* const jbasebuf((JackMidiPortBufferBase*)buf);
CARLA_SAFE_ASSERT_RETURN(jbasebuf != nullptr, nullptr);
CARLA_SAFE_ASSERT_RETURN(! jbasebuf->isInput, nullptr);
CARLA_SAFE_ASSERT_RETURN(jbasebuf->isValid, nullptr);
CARLA_SAFE_ASSERT_RETURN(size < JackMidiPortBufferBase::kMaxEventSize, nullptr);

if (jbasebuf->isDummy)
return nullptr;

// broken jack applications, wow...
if (size == 0)
return nullptr;
@@ -114,9 +118,11 @@ int jack_midi_event_write(void* buf, jack_nframes_t frame, const jack_midi_data_
JackMidiPortBufferBase* const jbasebuf((JackMidiPortBufferBase*)buf);
CARLA_SAFE_ASSERT_RETURN(jbasebuf != nullptr, EFAULT);
CARLA_SAFE_ASSERT_RETURN(! jbasebuf->isInput, EINVAL);
CARLA_SAFE_ASSERT_RETURN(jbasebuf->isValid, EINVAL);
CARLA_SAFE_ASSERT_RETURN(size < JackMidiPortBufferBase::kMaxEventSize, ENOBUFS);

if (jbasebuf->isDummy)
return EINVAL;

// broken jack applications, wow...
if (size == 0)
return EINVAL;


Loading…
Cancel
Save