diff --git a/Artemis/Artemis/Managers/LoopManager.cs b/Artemis/Artemis/Managers/LoopManager.cs index 06256803a..0066a1394 100644 --- a/Artemis/Artemis/Managers/LoopManager.cs +++ b/Artemis/Artemis/Managers/LoopManager.cs @@ -31,9 +31,6 @@ namespace Artemis.Managers _debugViewModel = debugViewModel; // Setup timers - //_loopTimer = new Timer(40); - //_loopTimer.Elapsed += LoopTimerOnElapsed; - //_loopTimer.Start(); _loopTask = Task.Factory.StartNew(ProcessLoop); _logger.Info("Intialized LoopManager"); } @@ -48,8 +45,6 @@ namespace Artemis.Managers public void Dispose() { _loopTask.Dispose(); - //_loopTimer.Stop(); - //_loopTimer.Dispose(); } private void ProcessLoop() @@ -72,20 +67,9 @@ namespace Artemis.Managers _logger.Warn(e, "Exception in render loop"); } } + // ReSharper disable once FunctionNeverReturns } - //private void LoopTimerOnElapsed(object sender, ElapsedEventArgs elapsedEventArgs) - //{ - // try - // { - // Render(); - // } - // catch (Exception e) - // { - // _logger.Warn(e, "Exception in render loop"); - // } - //} - public Task StartAsync() { return Task.Run(() => Start()); diff --git a/Artemis/Artemis/Managers/MainManager.cs b/Artemis/Artemis/Managers/MainManager.cs index f4de0de5f..7a3fc7635 100644 --- a/Artemis/Artemis/Managers/MainManager.cs +++ b/Artemis/Artemis/Managers/MainManager.cs @@ -110,6 +110,11 @@ namespace Artemis.Managers Logger.Debug("Enabling program"); ProgramEnabled = true; LoopManager.StartAsync(); + foreach (var overlayModule in ModuleManager.OverlayModules) + { + if (overlayModule.Settings.IsEnabled) + overlayModule.Enable(); + } RaiseEnabledChangedEvent(new EnabledChangedEventArgs(ProgramEnabled)); } @@ -119,6 +124,11 @@ namespace Artemis.Managers public void DisableProgram() { Logger.Debug("Disabling program"); + foreach (var overlayModule in ModuleManager.OverlayModules) + { + if (overlayModule.Settings.IsEnabled) + overlayModule.Dispose(); + } LoopManager.Stop(); ProgramEnabled = false; RaiseEnabledChangedEvent(new EnabledChangedEventArgs(ProgramEnabled)); diff --git a/Artemis/Artemis/Modules/Abstract/ModuleModel.cs b/Artemis/Artemis/Modules/Abstract/ModuleModel.cs index 6734de719..7f4209637 100644 --- a/Artemis/Artemis/Modules/Abstract/ModuleModel.cs +++ b/Artemis/Artemis/Modules/Abstract/ModuleModel.cs @@ -98,7 +98,8 @@ namespace Artemis.Modules.Abstract return; ProfileModel = profileModel; - ProfileModel?.Activate(_luaManager); + if (!IsOverlay) + ProfileModel?.Activate(_luaManager); if (ProfileModel != null) { Settings.LastProfile = ProfileModel.Name; diff --git a/Artemis/Artemis/Modules/General/GeneralProfile/GeneralProfileDataModel.cs b/Artemis/Artemis/Modules/General/GeneralProfile/GeneralProfileDataModel.cs index 95d252fd4..70e9dcd46 100644 --- a/Artemis/Artemis/Modules/General/GeneralProfile/GeneralProfileDataModel.cs +++ b/Artemis/Artemis/Modules/General/GeneralProfile/GeneralProfileDataModel.cs @@ -31,8 +31,7 @@ namespace Artemis.Modules.General.GeneralProfile [MoonSharpUserData] public class Audio { - public double Volume { get; set; } - public double Peak { get; set; } + public float Volume { get; set; } public AudioDevice Recording { get; set; } = new AudioDevice(); public AudioDevice Playback { get; set; } = new AudioDevice(); } diff --git a/Artemis/Artemis/Modules/General/GeneralProfile/GeneralProfileModel.cs b/Artemis/Artemis/Modules/General/GeneralProfile/GeneralProfileModel.cs index b407cc8d0..587741268 100644 --- a/Artemis/Artemis/Modules/General/GeneralProfile/GeneralProfileModel.cs +++ b/Artemis/Artemis/Modules/General/GeneralProfile/GeneralProfileModel.cs @@ -93,9 +93,10 @@ namespace Artemis.Modules.General.GeneralProfile private void UpdateAudio(GeneralProfileDataModel dataModel) { + var recording = AudioMeterInformation.FromDevice(_defaultRecording); var playback = AudioMeterInformation.FromDevice(_defaultPlayback); - + dataModel.Audio.Volume = AudioEndpointVolume.FromDevice(_defaultPlayback).GetMasterVolumeLevelScalar(); dataModel.Audio.Recording.OverallPeak = recording.PeakValue; for (var i = 0; i < recording.GetChannelsPeakValues(recording.MeteringChannelCount).Length; i++) { diff --git a/Artemis/Artemis/Modules/Overlays/OverlayProfile/OverlayProfileModel.cs b/Artemis/Artemis/Modules/Overlays/OverlayProfile/OverlayProfileModel.cs index c9882a1b5..349c7ed6a 100644 --- a/Artemis/Artemis/Modules/Overlays/OverlayProfile/OverlayProfileModel.cs +++ b/Artemis/Artemis/Modules/Overlays/OverlayProfile/OverlayProfileModel.cs @@ -8,12 +8,12 @@ namespace Artemis.Modules.Overlays.OverlayProfile { public class OverlayProfileModel : ModuleModel { - private readonly GeneralProfileModel _generalProfileModel; + private readonly GeneralProfileModel _generalProfileModule; public OverlayProfileModel(DeviceManager deviceManager, LuaManager luaManager, - [Named(nameof(GeneralProfileModel))] ModuleModel generalProfileModel) : base(deviceManager, luaManager) + [Named(nameof(GeneralProfileModel))] ModuleModel generalProfileModule) : base(deviceManager, luaManager) { - _generalProfileModel = (GeneralProfileModel) generalProfileModel; + _generalProfileModule = (GeneralProfileModel) generalProfileModule; Settings = SettingsProvider.Load(); DataModel = new OverlayProfileDataModel(); } @@ -24,9 +24,11 @@ namespace Artemis.Modules.Overlays.OverlayProfile public override void Update() { - // TODO: Find a clean way to update the parent profile model - ((OverlayProfileDataModel) DataModel).GeneralDataModel = - (GeneralProfileDataModel) _generalProfileModel.DataModel; + var dataModel = (OverlayProfileDataModel) DataModel; + + if (!_generalProfileModule.IsInitialized) + _generalProfileModule.Update(); + dataModel.GeneralDataModel = (GeneralProfileDataModel) _generalProfileModule.DataModel; } } } \ No newline at end of file diff --git a/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioCapturing/AudioCapture.cs b/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioCapturing/AudioCapture.cs index 0cdeafc7c..179bd584e 100644 --- a/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioCapturing/AudioCapture.cs +++ b/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioCapturing/AudioCapture.cs @@ -32,10 +32,9 @@ namespace Artemis.Profiles.Layers.Types.Audio.AudioCapturing _volumeIndex = 0; _volumeTimer = new Timer(200); _volumeTimer.Elapsed += VolumeTimerOnElapsed; - Start(); } - + public ILogger Logger { get; } public MMDevice Device { get; } public double DesiredAverage { get; set; }