2 Commits

Author SHA1 Message Date
a98f87a630 Add some basic logging 2021-12-22 12:52:23 -05:00
a0eb5e3fbc Fix for release build optimizations 2021-12-22 10:14:51 -05:00
3 changed files with 41 additions and 5 deletions

View File

@@ -1,6 +1,7 @@
using Common.Helpers;
using Common.IO;
using Common.Wpf.Extensions;
using Serilog;
using Squirrel;
using System;
using System.Reflection;
@@ -25,6 +26,13 @@ namespace WorkIndicator
{
SquirrelAwareApp.HandleEvents(onAppUpdate: version => Common.Settings.Extensions.RestoreSettings());
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.File("log.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
Log.Logger.Debug($"Startup");
var application = new App();
application.InitializeComponent();
application.Run();
@@ -90,6 +98,8 @@ namespace WorkIndicator
protected override void OnExit(ExitEventArgs e)
{
Log.Logger.Debug($"Exit");
// Get rid of the light controller
LightController.Dispose();

View File

@@ -1,4 +1,5 @@
using CSCore.CoreAudioAPI;
using Serilog;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -16,11 +17,19 @@ namespace WorkIndicator
public static event MicrophoneInUseChangedDelegate MicrophoneInUseChanged;
private static Thread _thread;
private static readonly List<AudioSessionManager2> _sessionManagers = new List<AudioSessionManager2>();
private static readonly ILogger Logger = Log.Logger;
public static void Start()
{
Logger.Debug("AudioWatcher - Start");
_manualResetEvent = new ManualResetEvent(false);
var thread = new Thread(delegate ()
_thread = new Thread(delegate ()
{
var deviceEnumerator = new MMDeviceEnumerator();
@@ -28,11 +37,11 @@ namespace WorkIndicator
{
var sessionManager = AudioSessionManager2.FromMMDevice(device);
var sessionEnumerator = sessionManager.GetSessionEnumerator();
_sessionManagers.Add(sessionManager);
sessionManager.SessionCreated += (sessionSender, sessionCreatedEventArgs) => HandleDeviceSession(device, sessionCreatedEventArgs.NewSession);
foreach (var audioSessionControl in sessionEnumerator)
foreach (var audioSessionControl in sessionManager.GetSessionEnumerator())
{
HandleDeviceSession(device, audioSessionControl);
}
@@ -41,14 +50,16 @@ namespace WorkIndicator
_manualResetEvent.WaitOne();
});
thread.SetApartmentState(ApartmentState.MTA);
thread.Start();
_thread.SetApartmentState(ApartmentState.MTA);
_thread.Start();
}
private static void HandleDeviceSession(MMDevice device, AudioSessionControl audioSessionControl)
{
var deviceId = device.DeviceID + audioSessionControl.GroupingParam;
Logger.Debug($"AudioWatcher - HandleDeviceSession - {device.FriendlyName}, {deviceId}");
if (!ActiveSessions.ContainsKey(deviceId))
ActiveSessions[deviceId] = 0;
@@ -60,11 +71,17 @@ namespace WorkIndicator
public static void Stop()
{
Logger.Debug("AudioWatcher - Stop");
_sessionManagers.Clear();
_manualResetEvent?.Set();
}
private static void HandleAudioStateChanged(string deviceId, AudioSessionState newState)
{
Logger.Debug($"AudioWatcher - HandleAudioStateChanged - {deviceId}, {newState}");
switch (newState)
{
case AudioSessionState.AudioSessionStateActive:
@@ -75,11 +92,14 @@ namespace WorkIndicator
ActiveSessions[deviceId]--;
break;
case AudioSessionState.AudioSessionStateExpired:
ActiveSessions[deviceId] = 0;
break;
default:
throw new ArgumentOutOfRangeException();
}
Logger.Debug($"AudioWatcher - HandleAudioStateChanged - {deviceId} = {ActiveSessions[deviceId]}");
MicrophoneInUseChanged?.Invoke(MicrophoneInUse());
}

View File

@@ -238,6 +238,12 @@
<PackageReference Include="Newtonsoft.Json">
<Version>13.0.1</Version>
</PackageReference>
<PackageReference Include="Serilog">
<Version>2.10.0</Version>
</PackageReference>
<PackageReference Include="Serilog.Sinks.File">
<Version>5.0.0</Version>
</PackageReference>
<PackageReference Include="squirrel.windows">
<Version>2.0.1</Version>
</PackageReference>