Browse Source

Revert "React to jack callbacks as fast as possible, fixing pipewire usage"

This reverts commit c777cd02d9.
tags/v2.3.1
falkTX 3 years ago
parent
commit
70e41f19bc
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
2 changed files with 10 additions and 24 deletions
  1. +8
    -22
      source/backend/engine/CarlaEngineJack.cpp
  2. +2
    -2
      source/utils/CarlaSemUtils.hpp

+ 8
- 22
source/backend/engine/CarlaEngineJack.cpp View File

@@ -50,9 +50,6 @@
# include <xmmintrin.h> # include <xmmintrin.h>
#endif #endif


#define CARLA_SKIP_FUTEXES
#include "CarlaSemUtils.hpp"

// must be last // must be last
#include "jackbridge/JackBridge.hpp" #include "jackbridge/JackBridge.hpp"


@@ -1385,7 +1382,6 @@ public:
fLastPatchbaySetGroupPos(), fLastPatchbaySetGroupPos(),
fPostPonedEvents(), fPostPonedEvents(),
fPostPonedEventsMutex(), fPostPonedEventsMutex(),
fPostPonedEventsSemaphore(),
fPostPonedUUIDs(), fPostPonedUUIDs(),
fPostPonedUUIDsMutex(), fPostPonedUUIDsMutex(),
fIsInternalClient(false) fIsInternalClient(false)
@@ -1397,7 +1393,6 @@ public:
pData->options.processMode = ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS; pData->options.processMode = ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS;
#else #else
carla_zeroPointers(fRackPorts, kRackPortCount); carla_zeroPointers(fRackPorts, kRackPortCount);
carla_sem_create2(fPostPonedEventsSemaphore, false);
#endif #endif
} }


@@ -1410,7 +1405,6 @@ public:
fUsedGroups.clear(); fUsedGroups.clear();
fUsedPorts.clear(); fUsedPorts.clear();
fUsedConnections.clear(); fUsedConnections.clear();
carla_sem_destroy2(fPostPonedEventsSemaphore);
CARLA_SAFE_ASSERT(fPostPonedEvents.count() == 0); CARLA_SAFE_ASSERT(fPostPonedEvents.count() == 0);
#endif #endif
} }
@@ -2430,9 +2424,7 @@ public:
jack_uuid_t uuid; jack_uuid_t uuid;
{ {
char* const uuidstr = jackbridge_get_uuid_for_client_name(fClient, groupName); char* const uuidstr = jackbridge_get_uuid_for_client_name(fClient, groupName);

if (uuidstr == nullptr || uuidstr[0] == '\0')
return false;
CARLA_SAFE_ASSERT_RETURN(uuidstr != nullptr && uuidstr[0] != '\0', false);


const bool parsed = jackbridge_uuid_parse(uuidstr, &uuid); const bool parsed = jackbridge_uuid_parse(uuidstr, &uuid);
jackbridge_free(uuidstr); jackbridge_free(uuidstr);
@@ -3596,9 +3588,7 @@ private:
jack_uuid_t uuid; jack_uuid_t uuid;
{ {
char* const uuidstr = jackbridge_get_uuid_for_client_name(fClient, clientName); char* const uuidstr = jackbridge_get_uuid_for_client_name(fClient, clientName);

if (uuidstr == nullptr || uuidstr[0] == '\0')
return;
CARLA_SAFE_ASSERT_RETURN(uuidstr != nullptr && uuidstr[0] != '\0',);


const bool parsed = jackbridge_uuid_parse(uuidstr, &uuid); const bool parsed = jackbridge_uuid_parse(uuidstr, &uuid);
jackbridge_free(uuidstr); jackbridge_free(uuidstr);
@@ -3934,9 +3924,7 @@ private:
jack_uuid_t uuid; jack_uuid_t uuid;
{ {
char* const uuidstr = jackbridge_get_uuid_for_client_name(fClient, group.strVal); char* const uuidstr = jackbridge_get_uuid_for_client_name(fClient, group.strVal);

if (uuidstr == nullptr || uuidstr[0] == '\0')
continue;
CARLA_SAFE_ASSERT_CONTINUE(uuidstr != nullptr && uuidstr[0] != '\0');


const bool parsed = jackbridge_uuid_parse(uuidstr, &uuid); const bool parsed = jackbridge_uuid_parse(uuidstr, &uuid);
jackbridge_free(uuidstr); jackbridge_free(uuidstr);
@@ -4177,7 +4165,6 @@ private:


LinkedList<PostPonedJackEvent> fPostPonedEvents; LinkedList<PostPonedJackEvent> fPostPonedEvents;
CarlaMutex fPostPonedEventsMutex; CarlaMutex fPostPonedEventsMutex;
carla_sem_t fPostPonedEventsSemaphore;


water::Array<jack_uuid_t> fPostPonedUUIDs; water::Array<jack_uuid_t> fPostPonedUUIDs;
CarlaMutex fPostPonedUUIDsMutex; CarlaMutex fPostPonedUUIDsMutex;
@@ -4186,11 +4173,8 @@ private:


void postPoneJackCallback(PostPonedJackEvent& ev) void postPoneJackCallback(PostPonedJackEvent& ev)
{ {
{
const CarlaMutexLocker cml(fPostPonedEventsMutex);
fPostPonedEvents.append(ev);
}
carla_sem_post(fPostPonedEventsSemaphore);
const CarlaMutexLocker cml(fPostPonedEventsMutex);
fPostPonedEvents.append(ev);
} }


void run() override void run() override
@@ -4205,7 +4189,6 @@ private:
if (fIsInternalClient) if (fIsInternalClient)
idle(); idle();


if (carla_sem_timedwait(fPostPonedEventsSemaphore, fIsInternalClient ? 50 : 1000))
{ {
const CarlaMutexLocker cml(fPostPonedEventsMutex); const CarlaMutexLocker cml(fPostPonedEventsMutex);


@@ -4217,7 +4200,10 @@ private:
break; break;


if (events.count() == 0) if (events.count() == 0)
{
carla_msleep(fIsInternalClient ? 50 : 200);
continue; continue;
}


for (LinkedList<PostPonedJackEvent>::Itenerator it = events.begin2(); it.valid(); it.next()) for (LinkedList<PostPonedJackEvent>::Itenerator it = events.begin2(); it.valid(); it.next())
{ {


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

@@ -1,6 +1,6 @@
/* /*
* Carla semaphore utils * Carla semaphore utils
* Copyright (C) 2013-2021 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2013-2018 Filipe Coelho <falktx@falktx.com>
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as * modify it under the terms of the GNU General Public License as
@@ -22,7 +22,7 @@


#include <ctime> #include <ctime>


#if defined(CARLA_OS_LINUX) && ! defined(CARLA_SKIP_FUTEXES)
#if defined(CARLA_OS_LINUX) && ! defined(STOAT_TEST_BUILD)
# define CARLA_USE_FUTEXES 1 # define CARLA_USE_FUTEXES 1
#endif #endif




Loading…
Cancel
Save