public void LauncherFinalize( IWindow window, IGraphicsDevice graphicsDevice, IAudioDevice audioDevice ) { if ( audioDevice != null ) audioDevice.Dispose (); graphicsDevice.Dispose (); window.Dispose (); }
/// <summary> /// Registers the device with the service so it's aware /// of events and they're handled properly. /// </summary> /// <param name="device"></param> private void RegisterDevice(IAudioDevice device) { if (_devices.ContainsKey(device.Id)) { device.Dispose(); return; } _devices.Add(device.Id, device); device.DeviceDefaultChanged += OnDefaultDeviceChanged; device.DeviceVolumeChanged += OnDeviceVolumeChanged; var sessionManager = AudioSessionManager2.FromMMDevice(device.Device); sessionManager.SessionCreated += OnSessionCreated; _sessionManagers.Add(device.Id, sessionManager); RaiseDeviceCreated(device.Id, device.DisplayName, device.Volume, device.IsMuted); foreach (var session in sessionManager.GetSessionEnumerator()) { if (ValidateSession(session)) { OnSessionCreated(session); } } }
/// <summary> /// Registers the device with the service so it's aware /// of events and they're handled properly. /// </summary> /// <param name="device"></param> private void RegisterDevice(IAudioDevice device) { AppLogging.DebugLog(nameof(RegisterDevice), device.DeviceId, device.DisplayName, device.Device.DataFlow.ToString()); if (_devices.ContainsKey(device.Id)) { device.Dispose(); return; } _devices.Add(device.Id, device); device.DeviceDefaultChanged += OnDefaultDeviceChanged; device.DeviceVolumeChanged += OnDeviceVolumeChanged; device.DeviceRemoved += OnDeviceRemoved; RaiseDeviceCreated(device.Id, device.DisplayName, device.Volume, device.IsMuted, device.Flow); if (device.Flow == DeviceFlow.Output) { var sessionManager = AudioSessionManager2.FromMMDevice(device.Device); sessionManager.SessionCreated += OnSessionCreated; _sessionManagers.Add(device.Id, sessionManager); foreach (var session in sessionManager.GetSessionEnumerator()) { OnSessionCreated(session); } } }
/// <summary> /// Registers the device with the service so it's aware /// of events and they're handled properly. /// </summary> /// <param name="device"></param> private void RegisterDevice(IAudioDevice device) { m_Logger.Debug(string.Join("\t", nameof(RegisterDevice), device.DeviceId, device.DisplayName, device.Device.DataFlow)); if (_devices.ContainsKey(device.Id)) { device.Dispose(); return; } _devices.Add(device.Id, device); device.DeviceDefaultChanged += OnDefaultDeviceChanged; device.DeviceVolumeChanged += OnDeviceVolumeChanged; device.DeviceRemoved += OnDeviceRemoved; RaiseDeviceCreated(device.Id, device.DisplayName, device.Volume, device.IsMuted, device.Flow); if (device.Flow == DeviceFlow.Output) { var sessionManager = device.Device.AudioSessionManager; sessionManager.OnSessionCreated += OnSessionCreated; _sessionManagers.Add(device.Id, sessionManager); var sessions = sessionManager.Sessions; for (int i = 0; i < sessions.Count; i++) { OnSessionCreated(sessions[i]); } } }
private void playerProc() { int errors = 0; while (!exit) { try { var item = CurrentPlayListItem = selector.SelectNextFile(StreamID); if (item != null && item.File.ID > 0) { PlayFile(item); errors = 0; } else { Thread.Sleep(1000); } continue; } catch (Exception ex) { this.LogError(ex, "Unhandled exception in player proc."); Thread.Sleep(1000); if (++errors > 10) { device?.Dispose(); device = null; } } } }
public void LauncherFinalize( IWindow window, IGraphicsDevice graphicsDevice, IAudioDevice audioDevice ) { if ( updateThread != null ) updateThread.Abort (); updateThread = null; if ( audioDevice != null ) audioDevice.Dispose (); graphicsDevice.Dispose (); window.Dispose (); }
/// <summary> /// Unregisters the session from the service so events /// are not responded to anymore. /// <param name="device">The device to unregister</param> private void UnregisterDevice(IAudioDevice device) { if (_sessionManagers.ContainsKey(device.Id)) { _sessionManagers[device.Id].SessionCreated -= OnSessionCreated; _sessionManagers.Remove(device.Id); } device.DeviceDefaultChanged -= OnDefaultDeviceChanged; device.DeviceVolumeChanged -= OnDeviceVolumeChanged; if (_devices.ContainsKey(device.Id)) { _devices.Remove(device.Id); RaiseDeviceRemoved(device.Id); } device.Dispose(); }
/// <summary> /// Unregisters the session from the service so events /// are not responded to anymore. /// <param name="device">The device to unregister</param> private void UnregisterDevice(IAudioDevice device) { AppLogging.DebugLog(nameof(UnregisterDevice), device.DeviceId, device.DisplayName); if (_sessionManagers.ContainsKey(device.Id)) { _sessionManagers[device.Id].SessionCreated -= OnSessionCreated; _sessionManagers.Remove(device.Id); } device.DeviceDefaultChanged -= OnDefaultDeviceChanged; device.DeviceVolumeChanged -= OnDeviceVolumeChanged; device.DeviceRemoved -= OnDeviceRemoved; if (_devices.ContainsKey(device.Id)) { _devices.Remove(device.Id); RaiseDeviceRemoved(device.Id, device.Flow); } device.Dispose(); }