From bd038fef75059d3166efc6cef00a2cde666fde5d Mon Sep 17 00:00:00 2001 From: falkTX Date: Thu, 10 Feb 2022 22:51:08 +0000 Subject: [PATCH] Give up on mod mutex, not the right tool; Add screenshot to manual Signed-off-by: falkTX --- doc/MODDEVICES.md | 2 ++ include/mutex.hpp | 42 +++------------------------------------- src/Makefile.cardinal.mk | 2 +- 3 files changed, 6 insertions(+), 40 deletions(-) diff --git a/doc/MODDEVICES.md b/doc/MODDEVICES.md index 422a95e..e442832 100644 --- a/doc/MODDEVICES.md +++ b/doc/MODDEVICES.md @@ -8,6 +8,8 @@ This document briefly describes how to use Cardinal with a [MOD device](https:// It is intended for this documentation to be part of the plugin bundle when installed from the [MOD Plugin store](https://pedalboards.moddevices.com/plugins). +![Screenshot](../src/MOD/CardinalFX.lv2/modgui/screenshot.png "Screenshot") + ## Plugin overview Cardinal is a free and open-source virtual modular synthesizer plugin,. diff --git a/include/mutex.hpp b/include/mutex.hpp index 458cd8d..5fb8421 100644 --- a/include/mutex.hpp +++ b/include/mutex.hpp @@ -19,14 +19,6 @@ #include -#ifdef __MOD_DEVICES__ -#include -#include -#include -#include -#include -#endif - /* replace Rack's mutex with our own custom one, which can do priority inversion. */ namespace rack { @@ -34,11 +26,7 @@ namespace rack { struct SharedMutex { pthread_mutex_t readLock; -#ifdef __MOD_DEVICES__ - int writeLock; -#else pthread_mutex_t writeLock; -#endif SharedMutex() noexcept { pthread_mutexattr_t attr; @@ -48,52 +36,28 @@ struct SharedMutex { pthread_mutex_init(&readLock, &attr); pthread_mutexattr_destroy(&attr); -#ifdef __MOD_DEVICES__ - writeLock = 1; -#else pthread_mutexattr_t attr2; pthread_mutexattr_init(&attr2); pthread_mutexattr_setprotocol(&attr2, PTHREAD_PRIO_NONE); pthread_mutexattr_settype(&attr2, PTHREAD_MUTEX_NORMAL); pthread_mutex_init(&writeLock, &attr2); pthread_mutexattr_destroy(&attr2); -#endif } ~SharedMutex() noexcept { pthread_mutex_destroy(&readLock); -#ifndef __MOD_DEVICES__ pthread_mutex_destroy(&writeLock); -#endif } // for std::lock_guard usage, writers lock void lock() noexcept { -#ifdef __MOD_DEVICES__ - for (;;) - { - if (__sync_bool_compare_and_swap(&writeLock, 1, 0)) - return; - - if (syscall(__NR_futex, &writeLock, FUTEX_WAIT_PRIVATE, 0, nullptr, nullptr, 0) != 0) - { - if (errno != EAGAIN && errno != EINTR) - return; - } - } -#else - pthread_mutex_lock(&writeLock); -#endif pthread_mutex_lock(&readLock); + pthread_mutex_lock(&writeLock); } + void unlock() noexcept { - pthread_mutex_unlock(&readLock); -#ifdef __MOD_DEVICES__ - if (__sync_bool_compare_and_swap(&writeLock, 0, 1)) - syscall(__NR_futex, &writeLock, FUTEX_WAKE_PRIVATE, 1, nullptr, nullptr, 0); -#else pthread_mutex_unlock(&writeLock); -#endif + pthread_mutex_unlock(&readLock); } // for SharedLock usage, readers lock diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 7f9ba23..980c7f7 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -307,7 +307,7 @@ $(TARGET_DIR)/$(NAME).lv2/mod%: ../MOD/$(NAME).lv2/mod% $(SILENT)ln -sf $(abspath $<) $@ $(TARGET_DIR)/$(NAME).lv2/modgui/documentation.pdf: ../../doc/MODDEVICES.md $(TARGET_DIR)/$(NAME).lv2/modgui - pandoc $< -o $@ + (cd ../../doc/ && pandoc MODDEVICES.md -f markdown+implicit_figures -o $(abspath $@)) endif $(TARGET_DIR)/$(NAME).vst/resources/%: ../Rack/res/%