mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-29 02:21:44 +00:00
Notify on sink source change.
This commit is contained in:
@@ -204,3 +204,15 @@ void Notifier::NotifySink(const SinkImpl& sink, CS_EventKind kind) {
|
||||
auto handleData = Sinks::GetInstance().Find(sink);
|
||||
NotifySink(sink.GetName(), handleData.first, kind);
|
||||
}
|
||||
|
||||
void Notifier::NotifySinkSourceChanged(llvm::StringRef name, CS_Sink sink,
|
||||
CS_Source source) {
|
||||
auto thr = m_owner.GetThread();
|
||||
if (!thr) return;
|
||||
|
||||
RawEvent event{name, sink, RawEvent::kSinkSourceChanged};
|
||||
event.sourceHandle = source;
|
||||
|
||||
thr->m_notifications.emplace(std::move(event));
|
||||
thr->m_cond.notify_one();
|
||||
}
|
||||
|
||||
@@ -50,6 +50,8 @@ class Notifier {
|
||||
int value, llvm::StringRef valueStr);
|
||||
void NotifySink(llvm::StringRef name, CS_Sink sink, CS_EventKind kind);
|
||||
void NotifySink(const SinkImpl& sink, CS_EventKind kind);
|
||||
void NotifySinkSourceChanged(llvm::StringRef name, CS_Sink sink,
|
||||
CS_Source source);
|
||||
|
||||
private:
|
||||
Notifier();
|
||||
|
||||
@@ -415,6 +415,8 @@ void SetSinkSource(CS_Sink sink, CS_Source source, CS_Status* status) {
|
||||
}
|
||||
data->sink->SetSource(sourceData->source);
|
||||
data->sourceHandle.store(source);
|
||||
Notifier::GetInstance().NotifySinkSourceChanged(data->sink->GetName(), sink,
|
||||
source);
|
||||
}
|
||||
|
||||
CS_Source GetSinkSource(CS_Sink sink, CS_Status* status) {
|
||||
|
||||
Reference in New Issue
Block a user