Esempio n. 1
0
 public void LauncherFinalize( IWindow window, IGraphicsDevice graphicsDevice, IAudioDevice audioDevice )
 {
     if ( audioDevice != null )
         audioDevice.Dispose ();
     graphicsDevice.Dispose ();
     window.Dispose ();
 }
Esempio n. 2
0
        /// <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);
                }
            }
        }
Esempio n. 3
0
        /// <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]);
                }
            }
        }
Esempio n. 5
0
        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;
                    }
                }
            }
        }
Esempio n. 6
0
 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 ();
 }
Esempio n. 7
0
        /// <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();
        }
Esempio n. 8
0
        /// <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();
        }