Skip to content

Commit

Permalink
Fixes compilation
Browse files Browse the repository at this point in the history
  • Loading branch information
abique committed Oct 16, 2023
1 parent 09a46a0 commit b98159b
Showing 2 changed files with 68 additions and 61 deletions.
57 changes: 29 additions & 28 deletions host/plugin-host.cc
Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@
#include "plugin-host.hh"
#include "settings.hh"

#include <clap/helpers/host.hxx>
#include <clap/helpers/reducing-param-queue.hxx>

enum class ThreadType {
@@ -26,13 +27,15 @@ enum class ThreadType {

thread_local ThreadType g_thread_type = ThreadType::Unknown;

template class clap::helpers::Host<PluginHost_MH, PluginHost_CL>;

PluginHost::PluginHost(Engine &engine)
: clap::helpers::Host("Clap Test Host", // name
"clap", // vendor
"0.1.0", // version
"https://github.com/free-audio/clap" // url
),
QObject(&engine), _engine(engine), _settings(engine._settings.pluginHostSettings()) {
: QObject(&engine), _engine(engine), _settings(engine._settings.pluginHostSettings()),
BaseHost("Clap Test Host", // name
"clap", // vendor
"0.1.0", // version
"https://github.com/free-audio/clap" // url
) {
g_thread_type = ThreadType::MainThread;

initThreadPool();
@@ -356,19 +359,13 @@ void PluginHost::setPluginWindowVisibility(bool isVisible) {
}
}

void PluginHost::requestCallback() noexcept {
_scheduleMainThreadCallback = true;
}
void PluginHost::requestCallback() noexcept { _scheduleMainThreadCallback = true; }

void PluginHost::requestProcess() noexcept {
_scheduleProcess = true;
}
void PluginHost::requestProcess() noexcept { _scheduleProcess = true; }

void PluginHost::requestRestart() noexcept {
_scheduleRestart = true;
}
void PluginHost::requestRestart() noexcept { _scheduleRestart = true; }

void PluginHost::logLog(clap_log_severity severity, const char *msg) noexcept {
void PluginHost::logLog(clap_log_severity severity, const char *msg) const noexcept {
switch (severity) {
case CLAP_LOG_DEBUG:
qDebug() << msg;
@@ -403,14 +400,18 @@ bool PluginHost::threadCheckIsAudioThread() noexcept {
return g_thread_type == ThreadType::AudioThread;
}

void PluginHost::checkForMainThread() noexcept {
if (g_thread_type != ThreadType::MainThread)
throw std::logic_error("Requires Main Thread!");
void PluginHost::checkForMainThread() {
if (g_thread_type != ThreadType::MainThread) [[unlikely]] {
qFatal() << "Requires Main Thread!";
std::terminate();
}
}

void PluginHost::checkForAudioThread() {
if (g_thread_type != ThreadType::AudioThread)
throw std::logic_error("Requires Audio Thread!");
if (g_thread_type != ThreadType::AudioThread) {
qFatal() << "Requires Audio Thread!";
std::terminate();
}
}

bool PluginHost::threadPoolRequestExec(uint32_t num_tasks) noexcept {
@@ -571,7 +572,7 @@ bool PluginHost::guiRequestResize(uint32_t width, uint32_t height) noexcept {
return true;
}

bool PluginHost::clapGuiRequestShow() noexcept {
bool PluginHost::guiRequestShow() noexcept {
QMetaObject::invokeMethod(
Application::instance().mainWindow(),
[] { Application::instance().mainWindow()->showPluginWindow(); },
@@ -580,7 +581,7 @@ bool PluginHost::clapGuiRequestShow() noexcept {
return true;
}

bool PluginHost::clapGuiRequestHide() noexcept {
bool PluginHost::guiRequestHide() noexcept {
QMetaObject::invokeMethod(
Application::instance().mainWindow(),
[] { Application::instance().mainWindow()->hidePluginWindow(); },
@@ -589,7 +590,7 @@ bool PluginHost::clapGuiRequestHide() noexcept {
return true;
}

void PluginHost::clapGuiClosed(bool wasDestroyed) noexcept { checkForMainThread(); }
void PluginHost::guiClosed(bool wasDestroyed) noexcept { checkForMainThread(); }

void PluginHost::processBegin(int nframes) {
g_thread_type = ThreadType::AudioThread;
@@ -1062,8 +1063,7 @@ void PluginHost::paramsRescan(uint32_t flags) noexcept {
paramsChanged();
}

void PluginHost::paramsClear(clap_id param_id,
clap_param_clear_flags flags) noexcept {
void PluginHost::paramsClear(clap_id param_id, clap_param_clear_flags flags) noexcept {
checkForMainThread();
}

@@ -1188,7 +1188,7 @@ void PluginHost::remoteControlsChanged() noexcept {
std::ostringstream msg;
msg << "Plugin called clap_host_remote_controls.changed() but does not provide "
"clap_plugin_remote_controls";
throw std::logic_error(msg.str());
std::terminate();
}

scanQuickControls();
@@ -1216,7 +1216,8 @@ bool PluginHost::loadNativePluginPreset(const std::string &path) {
if (!_pluginPresetLoad->from_location)
throw std::logic_error("clap_plugin_preset_load does not implement load_from_uri");

return _pluginPresetLoad->from_location(_plugin, CLAP_PRESET_DISCOVERY_LOCATION_FILE, path.c_str(), nullptr);
return _pluginPresetLoad->from_location(
_plugin, CLAP_PRESET_DISCOVERY_LOCATION_FILE, path.c_str(), nullptr);
}

void PluginHost::stateMarkDirty() noexcept {
72 changes: 39 additions & 33 deletions host/plugin-host.hh
Original file line number Diff line number Diff line change
@@ -23,7 +23,14 @@

class Engine;
class PluginHostSettings;
class PluginHost final : public clap::helpers::Host, public QObject {

constexpr auto PluginHost_MH = clap::helpers::MisbehaviourHandler::Terminate;
constexpr auto PluginHost_CL = clap::helpers::CheckingLevel::Maximal;

using BaseHost = clap::helpers::Host<PluginHost_MH, PluginHost_CL>;
extern template class clap::helpers::Host<PluginHost_MH, PluginHost_CL>;

class PluginHost final : public QObject, public BaseHost {
Q_OBJECT;

public:
@@ -89,56 +96,55 @@ protected:
/////////////////////////

// clap_host
virtual void requestRestart() noexcept override;
virtual void requestProcess() noexcept override;
virtual void requestCallback() noexcept override;
void requestRestart() noexcept override;
void requestProcess() noexcept override;
void requestCallback() noexcept override;

// clap_host_gui
virtual bool implementsGui() const noexcept override { return true; }
virtual void guiResizeHintsChanged() noexcept override;
virtual bool guiRequestResize(uint32_t width, uint32_t height) noexcept override;
virtual bool guiRequestShow() noexcept override;
virtual bool guiRequestHide() noexcept override;
virtual void guiClosed(bool wasDestroyed) noexcept override;
bool implementsGui() const noexcept override { return true; }
void guiResizeHintsChanged() noexcept override;
bool guiRequestResize(uint32_t width, uint32_t height) noexcept override;
bool guiRequestShow() noexcept override;
bool guiRequestHide() noexcept override;
void guiClosed(bool wasDestroyed) noexcept override;

// clap_host_log
virtual bool implementsLog() const noexcept override { return true; }
virtual void logLog(clap_log_severity severity, const char *message) const noexcept override;
bool implementsLog() const noexcept override { return true; }
void logLog(clap_log_severity severity, const char *message) const noexcept override;

// clap_host_params
virtual bool implementsParams() const noexcept override { return true; }
virtual void paramsRescan(clap_param_rescan_flags flags) noexcept override;
virtual void paramsClear(clap_id paramId, clap_param_clear_flags flags) noexcept override;
virtual void paramsRequestFlush() noexcept;
bool implementsParams() const noexcept override { return true; }
void paramsRescan(clap_param_rescan_flags flags) noexcept override;
void paramsClear(clap_id paramId, clap_param_clear_flags flags) noexcept override;
void paramsRequestFlush() noexcept override;

// clap_host_posix_fd_support
virtual bool implementsPosixFdSupport() const noexcept override { return true; }
virtual bool posixFdSupportRegisterFd(int fd, clap_posix_fd_flags_t flags) noexcept override;
virtual bool posixFdSupportModifyFd(int fd, clap_posix_fd_flags_t flags) noexcept override;
virtual bool posixFdSupportUnregisterFd(int fd) noexcept override;
bool implementsPosixFdSupport() const noexcept override { return true; }
bool posixFdSupportRegisterFd(int fd, clap_posix_fd_flags_t flags) noexcept override;
bool posixFdSupportModifyFd(int fd, clap_posix_fd_flags_t flags) noexcept override;
bool posixFdSupportUnregisterFd(int fd) noexcept override;

// clap_host_remote_controls
virtual bool implementsRemoteControls() const noexcept override { return true; }
virtual void remoteControlsChanged() noexcept override;
virtual void remoteControlsSuggestPage(clap_id pageId) noexcept override {}
bool implementsRemoteControls() const noexcept override { return true; }
void remoteControlsChanged() noexcept override;
void remoteControlsSuggestPage(clap_id pageId) noexcept override;

// clap_host_state
virtual bool implementsState() const noexcept override { return true; }
virtual void stateMarkDirty() noexcept override;
bool implementsState() const noexcept override { return true; }
void stateMarkDirty() noexcept override;

// clap_host_timer_support
virtual bool implementsTimerSupport() const noexcept override { return true; }
virtual bool timerSupportRegisterTimer(uint32_t periodMs, clap_id *timerId) noexcept override;
virtual bool timerSupportUnregisterTimer(clap_id timerId) noexcept override;
bool implementsTimerSupport() const noexcept override { return true; }
bool timerSupportRegisterTimer(uint32_t periodMs, clap_id *timerId) noexcept override;
bool timerSupportUnregisterTimer(clap_id timerId) noexcept override;

// clap_host_thread_check
virtual bool implementsThreadCheck() const noexcept override { return true; }
virtual bool threadCheckIsMainThread() noexcept override;
virtual bool threadCheckIsAudioThread() noexcept override;
bool threadCheckIsMainThread() noexcept override;
bool threadCheckIsAudioThread() noexcept override;

// clap_host_thread_pool
virtual bool implementsThreadPool() const noexcept override { return true; }
virtual bool threadPoolRequestExec(uint32_t numTasks) noexcept override;
bool implementsThreadPool() const noexcept override { return true; }
bool threadPoolRequestExec(uint32_t numTasks) noexcept override;

private:
template <typename T>

0 comments on commit b98159b

Please sign in to comment.