Fixed support in the module manager

This commit is contained in:
Ryzerth
2021-07-26 03:11:51 +02:00
parent b327bfbe5d
commit 85de72a859
37 changed files with 369 additions and 138 deletions

View File

@ -115,7 +115,7 @@ void SinkManager::registerStream(std::string name, SinkManager::Stream* stream)
core::configManager.release();
if (available) { loadStreamConfig(name); }
streamRegisteredEvnt.emit(name);
onStreamRegistered.emit(name);
}
void SinkManager::unregisterStream(std::string name) {
@ -123,12 +123,13 @@ void SinkManager::unregisterStream(std::string name) {
spdlog::error("Cannot unregister stream '{0}', this stream doesn't exist", name);
return;
}
streamUnregisteredEvnt.emit(name);
onStreamUnregister.emit(name);
SinkManager::Stream* stream = streams[name];
stream->stop();
delete stream->sink;
streams.erase(name);
streamNames.erase(std::remove(streamNames.begin(), streamNames.end(), name), streamNames.end());
onStreamUnregistered.emit(name);
}
void SinkManager::startStream(std::string name) {

View File

@ -110,8 +110,9 @@ public:
std::vector<std::string> getStreamNames();
Event<std::string> streamRegisteredEvnt;
Event<std::string> streamUnregisteredEvnt;
Event<std::string> onStreamRegistered;
Event<std::string> onStreamUnregister;
Event<std::string> onStreamUnregistered;
private:
void loadStreamConfig(std::string name);

View File

@ -12,7 +12,27 @@ void SourceManager::registerSource(std::string name, SourceHandler* handler) {
return;
}
sources[name] = handler;
sourceNames.push_back(name);
onSourceRegistered.emit(name);
}
void SourceManager::unregisterSource(std::string name) {
if (sources.find(name) == sources.end()) {
spdlog::error("Tried to unregister non existant source: {0}", name);
return;
}
onSourceUnregister.emit(name);
if (name == selectedName) {
sigpath::signalPath.setInput(&nullSource);
selectedHandler = NULL;
}
sources.erase(name);
onSourceUnregistered.emit(name);
}
std::vector<std::string> SourceManager::getSourceNames() {
std::vector<std::string> names;
for (auto const& [name, src] : sources) { names.push_back(name); }
return names;
}
void SourceManager::selectSource(std::string name) {
@ -20,7 +40,7 @@ void SourceManager::selectSource(std::string name) {
spdlog::error("Tried to select non existant source: {0}", name);
return;
}
if (selectedName != "") {
if (selectedHandler != NULL) {
sources[selectedName]->deselectHandler(sources[selectedName]->ctx);
}
selectedHandler = sources[name];

View File

@ -4,6 +4,7 @@
#include <map>
#include <dsp/stream.h>
#include <dsp/types.h>
#include <utils/event.h>
class SourceManager {
public:
@ -21,6 +22,7 @@ public:
};
void registerSource(std::string name, SourceHandler* handler);
void unregisterSource(std::string name);
void selectSource(std::string name);
void showSelectedMenu();
void start();
@ -28,7 +30,11 @@ public:
void tune(double freq);
void setTuningOffset(double offset);
std::vector<std::string> sourceNames;
std::vector<std::string> getSourceNames();
Event<std::string> onSourceRegistered;
Event<std::string> onSourceUnregister;
Event<std::string> onSourceUnregistered;
private:
std::map<std::string, SourceHandler*> sources;
@ -36,5 +42,6 @@ private:
SourceHandler* selectedHandler = NULL;
double tuneOffset;
double currentFreq;
dsp::stream<dsp::complex_t> nullSource;
};