From a91ed266d5e68d4769ba76ada796244a12162b84 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Mon, 19 Apr 2021 19:46:03 +0200 Subject: [PATCH] Fixed other potential bug on OSX --- core/src/event.h | 29 +++++++++++++++-------------- core/src/signal_path/sink.cpp | 4 ++-- core/src/signal_path/sink.h | 4 ++-- make_windows_package.ps1 | 1 + radio/src/main.cpp | 2 +- 5 files changed, 21 insertions(+), 19 deletions(-) diff --git a/core/src/event.h b/core/src/event.h index 594470e..d44c441 100644 --- a/core/src/event.h +++ b/core/src/event.h @@ -2,34 +2,35 @@ #include #include +template +struct EventHandler { + EventHandler() {} + EventHandler(void (*handler)(T, void*), void* ctx) { + this->handler = handler; + this->ctx = ctx; + } + + void (*handler)(T, void*); + void* ctx; +}; + template class Event { public: Event() {} ~Event() {} - struct EventHandler { - EventHandler() {} - EventHandler(void (*handler)(T, void*), void* ctx) { - this->handler = handler; - this->ctx = ctx; - } - - void (*handler)(T, void*); - void* ctx; - }; - void emit(T value) { for (auto const& handler : handlers) { handler.handler(value, handler.ctx); } } - void bindHandler(const EventHandler& handler) { + void bindHandler(const EventHandler& handler) { handlers.push_back(handler); } - void unbindHandler(const EventHandler& handler) { + void unbindHandler(const EventHandler& handler) { if (handlers.find(handler) == handlers.end()) { spdlog::error("Tried to remove a non-existant event handler"); return; @@ -38,6 +39,6 @@ public: } private: - std::vector handlers; + std::vector> handlers; }; \ No newline at end of file diff --git a/core/src/signal_path/sink.cpp b/core/src/signal_path/sink.cpp index 499df6f..cf93005 100644 --- a/core/src/signal_path/sink.cpp +++ b/core/src/signal_path/sink.cpp @@ -14,11 +14,11 @@ SinkManager::SinkManager() { registerSinkProvider("None", prov); } -SinkManager::Stream::Stream(dsp::stream* in, const Event::EventHandler& srChangeHandler, float sampleRate) { +SinkManager::Stream::Stream(dsp::stream* in, const EventHandler& srChangeHandler, float sampleRate) { init(in, srChangeHandler, sampleRate); } -void SinkManager::Stream::init(dsp::stream* in, const Event::EventHandler& srChangeHandler, float sampleRate) { +void SinkManager::Stream::init(dsp::stream* in, const EventHandler& srChangeHandler, float sampleRate) { _in = in; srChange.bindHandler(srChangeHandler); _sampleRate = sampleRate; diff --git a/core/src/signal_path/sink.h b/core/src/signal_path/sink.h index 90dc4bb..061527e 100644 --- a/core/src/signal_path/sink.h +++ b/core/src/signal_path/sink.h @@ -25,9 +25,9 @@ public: class Stream { public: Stream() {} - Stream(dsp::stream* in, const Event::EventHandler& srChangeHandler, float sampleRate); + Stream(dsp::stream* in, const EventHandler& srChangeHandler, float sampleRate); - void init(dsp::stream* in, const Event::EventHandler& srChangeHandler, float sampleRate); + void init(dsp::stream* in, const EventHandler& srChangeHandler, float sampleRate); void start(); void stop(); diff --git a/make_windows_package.ps1 b/make_windows_package.ps1 index af6f860..ad3a996 100644 --- a/make_windows_package.ps1 +++ b/make_windows_package.ps1 @@ -35,6 +35,7 @@ cp build/soapy_source/Release/soapy_source.dll sdrpp_windows_x64/modules/ cp build/file_source/Release/file_source.dll sdrpp_windows_x64/modules/ cp build/sdrplay_source/Release/sdrplay_source.dll sdrpp_windows_x64/modules/ +cp 'C:/Program Files/SDRplay/API/x64/sdrplay_api.dll' sdrpp_windows_x64/ cp build/meteor_demodulator/Release/meteor_demodulator.dll sdrpp_windows_x64/modules/ diff --git a/radio/src/main.cpp b/radio/src/main.cpp index be5a8bc..dd41c39 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -199,7 +199,7 @@ private: dsp::NullSink ns; - Event::EventHandler srChangeHandler; + EventHandler srChangeHandler; SinkManager::Stream stream; };