0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 04:42:18 +02:00

win-wasapi: Make reroute target a weak reference

This commit is contained in:
derrod 2023-12-13 19:10:58 +01:00 committed by Rodney
parent 70aa1e903f
commit ebd6eec7f6

View File

@ -161,7 +161,7 @@ class WASAPISource {
ComPtr<IAudioCaptureClient> capture;
obs_source_t *source;
obs_source_t *reroute_target = nullptr;
obs_weak_source_t *reroute_target = nullptr;
wstring default_id;
string device_id;
string device_name;
@ -317,8 +317,8 @@ public:
void SetRerouteTarget(obs_source_t *target)
{
obs_source_release(reroute_target);
reroute_target = obs_source_get_ref(target);
obs_weak_source_release(reroute_target);
reroute_target = obs_source_get_weak_source(target);
}
};
@ -515,7 +515,7 @@ void WASAPISource::Stop()
else
WaitForSingleObject(captureThread, INFINITE);
obs_source_release(reroute_target);
obs_weak_source_release(reroute_target);
}
WASAPISource::~WASAPISource()
@ -1148,8 +1148,17 @@ bool WASAPISource::ProcessCaptureData()
sampleRate);
}
obs_source_output_audio(
reroute_target ? reroute_target : source, &data);
if (reroute_target) {
obs_source_t *target =
obs_weak_source_get_source(reroute_target);
if (target) {
obs_source_output_audio(target, &data);
obs_source_release(target);
}
} else {
obs_source_output_audio(source, &data);
}
capture->ReleaseBuffer(frames);
}