MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ shutdown()

void MayaFlux::Core::AudioSubsystem::shutdown ( )
overridevirtual

Shutdown and cleanup audio resources.

Implements MayaFlux::Core::ISubsystem.

Definition at line 435 of file AudioSubsystem.cpp.

436{
437 stop();
438
439 m_notify_running.store(false, std::memory_order_release);
440 m_snapshot_generation.fetch_add(1, std::memory_order_release);
441 m_snapshot_generation.notify_all();
442
443 if (m_notify_thread.joinable())
444 m_notify_thread.join();
445
446 if (m_audio_stream) {
447 m_audio_stream->close();
448 }
449 m_audio_stream.reset();
450 m_audio_device.reset();
451 m_audiobackend->cleanup();
452 m_audiobackend.reset();
453
455 .unregister_service<Registry::Service::AudioBackendService>();
456
458
459#ifdef MAYAFLUX_PLATFORM_MACOS
460 delete m_observers_ptr.exchange(nullptr, std::memory_order_acq_rel);
461#endif
462
463 m_is_ready = false;
464}
bool m_is_ready
Subsystem ready state.
void stop() override
Stop audio processing and streaming.
std::atomic< uint64_t > m_snapshot_generation
std::unique_ptr< IAudioBackend > m_audiobackend
Audio backend implementation.
std::atomic< bool > m_notify_running
std::shared_ptr< Registry::Service::AudioBackendService > m_audio_backend_service
std::unique_ptr< AudioDevice > m_audio_device
Audio device manager.
std::unique_ptr< AudioStream > m_audio_stream
Audio stream manager.
static BackendRegistry & instance()
Get the global registry instance.
void unregister_service()
Unregister a service.

References MayaFlux::Registry::BackendRegistry::instance(), m_audio_backend_service, m_audio_device, m_audio_stream, m_audiobackend, m_is_ready, m_notify_running, m_notify_thread, m_snapshot_generation, stop(), and MayaFlux::Registry::BackendRegistry::unregister_service().

+ Here is the call graph for this function: