From 6a56f42f5d94e2be405a736a74b86ffe3ab1b37b Mon Sep 17 00:00:00 2001 From: Kelebek1 Date: Fri, 16 Dec 2022 16:01:35 +0000 Subject: Signal buffer event on audio in/out system stop, and force remove all registered audio buffers --- src/audio_core/device/audio_buffers.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/audio_core/device/audio_buffers.h') diff --git a/src/audio_core/device/audio_buffers.h b/src/audio_core/device/audio_buffers.h index 3dae1a3b7..15082f6c6 100644 --- a/src/audio_core/device/audio_buffers.h +++ b/src/audio_core/device/audio_buffers.h @@ -91,9 +91,10 @@ public: * @param core_timing - The CoreTiming instance * @param session - The device session * - * @return Is the buffer was released. + * @return If any buffer was released. */ - bool ReleaseBuffers(const Core::Timing::CoreTiming& core_timing, const DeviceSession& session) { + bool ReleaseBuffers(const Core::Timing::CoreTiming& core_timing, const DeviceSession& session, + bool force) { std::scoped_lock l{lock}; bool buffer_released{false}; while (registered_count > 0) { @@ -103,7 +104,8 @@ public: } // Check with the backend if this buffer can be released yet. - if (!session.IsBufferConsumed(buffers[index])) { + // If we're shutting down, we don't care if it's been played or not. + if (!force && !session.IsBufferConsumed(buffers[index])) { break; } -- cgit v1.2.3