Allow Sink.SetSource() to be given an empty source.

In Java, allow source to be null (pointers are not used in C++, so
this isn't necessary).
This commit is contained in:
Peter Johnson
2016-12-28 00:47:26 -08:00
parent b91ab0b44f
commit 23135d7a5a
4 changed files with 21 additions and 10 deletions

View File

@@ -407,12 +407,16 @@ void SetSinkSource(CS_Sink sink, CS_Source source, CS_Status* status) {
*status = CS_INVALID_HANDLE;
return;
}
auto sourceData = Sources::GetInstance().Get(source);
if (!sourceData) {
*status = CS_INVALID_HANDLE;
return;
if (source == 0) {
data->sink->SetSource(nullptr);
} else {
auto sourceData = Sources::GetInstance().Get(source);
if (!sourceData) {
*status = CS_INVALID_HANDLE;
return;
}
data->sink->SetSource(sourceData->source);
}
data->sink->SetSource(sourceData->source);
data->sourceHandle.store(source);
Notifier::GetInstance().NotifySinkSourceChanged(data->sink->GetName(), sink,
source);