Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
ea24320
Deploying to master from @ File-New-Project/EarTrumpet@e4756c06b0dfb6…
riverar Feb 10, 2023
decb67e
Deploying to master from @ File-New-Project/EarTrumpet@ea243205657e1a…
riverar Feb 17, 2023
d2d305f
Deploying to master from @ File-New-Project/EarTrumpet@decb67e30dd8eb…
riverar May 14, 2023
d1d7a0c
Deploying to master from @ File-New-Project/EarTrumpet@d2d305f194a924…
riverar May 15, 2023
2536440
Update supported operating systems
riverar May 17, 2023
a7d6e7d
Deploying to master from @ File-New-Project/EarTrumpet@25364401ef9ad3…
riverar Jun 13, 2023
3b44acb
Merge branch 'dev'
riverar Aug 6, 2023
634f71b
Deploying to master from @ File-New-Project/EarTrumpet@3b44acbbaf8726…
riverar Aug 7, 2023
fc89c9c
Deploying to master from @ File-New-Project/EarTrumpet@634f71b7a2173d…
riverar Aug 9, 2023
63260c5
Deploying to master from @ File-New-Project/EarTrumpet@fc89c9c411d73f…
riverar Aug 11, 2023
140f35f
Deploying to master from @ File-New-Project/EarTrumpet@63260c5473033e…
riverar Aug 13, 2023
fe27a7e
Deploying to master from @ File-New-Project/EarTrumpet@140f35f603bd00…
riverar Sep 7, 2023
98e9cd6
Deploying to master from @ File-New-Project/EarTrumpet@fe27a7e2b02e20…
riverar Sep 8, 2023
4b6f670
Deploying to master from @ File-New-Project/EarTrumpet@98e9cd6f5d9dd3…
riverar Sep 10, 2023
bde6b6b
Deploying to master from @ File-New-Project/EarTrumpet@4b6f6703b2b907…
riverar Sep 13, 2023
d6d9f61
Deploying to master from @ File-New-Project/EarTrumpet@bde6b6b6d698bb…
riverar Oct 30, 2023
056456a
Deploying to master from @ File-New-Project/EarTrumpet@d6d9f6130178ee…
riverar Nov 30, 2023
9db0a51
Deploying to master from @ File-New-Project/EarTrumpet@056456a6b7d7be…
riverar Dec 17, 2023
0e647c0
Update README.md
riverar Jan 8, 2024
a439ade
Update LICENSE
riverar Jan 13, 2024
6473035
Deploying to master from @ File-New-Project/EarTrumpet@a439ade3a540df…
riverar Jan 16, 2024
8fd0f6a
Deploying to master from @ File-New-Project/EarTrumpet@6473035925b0f3…
riverar Mar 20, 2024
0d532a3
Deploying to master from @ File-New-Project/EarTrumpet@8fd0f6a06472f4…
riverar Mar 31, 2024
478db97
Deploying to master from @ File-New-Project/EarTrumpet@0d532a370f5f02…
riverar Apr 18, 2024
6a19333
Deploying to master from @ File-New-Project/EarTrumpet@478db9754d901a…
riverar Apr 19, 2024
4521908
Deploying to master from @ File-New-Project/EarTrumpet@6a19333c5db47a…
riverar Apr 30, 2024
0aac977
Add translators workflow
riverar Jun 8, 2024
b0c6be8
Update translators via GitHub Actions
actions-user Jun 8, 2024
f024cde
Deploying to master from @ File-New-Project/EarTrumpet@b0c6be8bbe7bc5…
riverar Jun 8, 2024
29aa8a3
Update translators via GitHub Actions
actions-user Jun 9, 2024
3daa605
Update translators via GitHub Actions
actions-user Jun 16, 2024
9ede1bc
Update translators via GitHub Actions
actions-user Jun 23, 2024
cc22ffe
Update translators via GitHub Actions
actions-user Jun 30, 2024
5af80d8
Deploying to master from @ File-New-Project/EarTrumpet@cc22ffefd33dab…
riverar Nov 3, 2024
f1a70bf
Update translators via GitHub Actions
actions-user Nov 10, 2024
8e3c5d8
Update translators via GitHub Actions
actions-user Nov 17, 2024
5897953
Update translators via GitHub Actions
actions-user Nov 24, 2024
7e96496
Update translators via GitHub Actions
actions-user Dec 1, 2024
2e32f38
Update translators via GitHub Actions
actions-user Dec 8, 2024
460b0e1
Update translators via GitHub Actions
actions-user Dec 15, 2024
018c76c
Update translators via GitHub Actions
actions-user Dec 22, 2024
e5c780d
Update translators via GitHub Actions
actions-user Dec 29, 2024
360aa49
Update translators via GitHub Actions
actions-user Jan 5, 2025
d80905d
Update translators via GitHub Actions
actions-user Jan 12, 2025
27ebe96
Update translators via GitHub Actions
actions-user Jan 19, 2025
43392c8
Update translators via GitHub Actions
actions-user Jan 26, 2025
c26b809
Update README.md
riverar Jan 28, 2025
5960fe8
Update translators via GitHub Actions
actions-user Feb 2, 2025
44116fa
Update translators via GitHub Actions
actions-user Feb 9, 2025
98c677d
Add LTT media coverage
riverar Feb 13, 2025
5e255bc
Update translators via GitHub Actions
actions-user Feb 16, 2025
a072123
Update translators via GitHub Actions
actions-user Feb 23, 2025
e531fc8
Update translators via GitHub Actions
actions-user Mar 2, 2025
3d6b64c
Update translators via GitHub Actions
actions-user Mar 9, 2025
6eaac0a
Update translators via GitHub Actions
actions-user Mar 16, 2025
8ad2ff5
Update translators via GitHub Actions
actions-user Mar 23, 2025
b341320
Update translators via GitHub Actions
actions-user Mar 30, 2025
527f714
Update translators via GitHub Actions
actions-user Apr 6, 2025
42aed44
Update translators via GitHub Actions
actions-user Apr 13, 2025
589f314
Update translators via GitHub Actions
actions-user Apr 20, 2025
735f51c
Update translators via GitHub Actions
actions-user Apr 27, 2025
4c972cf
Update sponsors workflow
riverar May 1, 2025
cdbbc8b
Update translators via GitHub Actions
actions-user May 4, 2025
98a27b2
Update translators via GitHub Actions
actions-user May 11, 2025
a84b7e2
Update translators via GitHub Actions
actions-user May 18, 2025
210006b
Update translators via GitHub Actions
actions-user May 25, 2025
4990dcd
Update translators via GitHub Actions
actions-user Jun 1, 2025
7a44cc7
Update translators via GitHub Actions
actions-user Jun 8, 2025
050a931
Update translators via GitHub Actions
actions-user Jun 15, 2025
40e2049
Update translators via GitHub Actions
actions-user Jun 22, 2025
80a7a33
Update translators via GitHub Actions
actions-user Jun 29, 2025
f6afbc4
Deploying to master from @ File-New-Project/EarTrumpet@80a7a33daf9b21…
riverar Jul 1, 2025
a141f4a
Update translators via GitHub Actions
actions-user Jul 6, 2025
de76932
Update translators via GitHub Actions
actions-user Jul 13, 2025
416f2dc
Update translators via GitHub Actions
actions-user Jul 20, 2025
aac9c2b
Deploying to master from @ File-New-Project/EarTrumpet@416f2dc7a94cd2…
riverar Jul 26, 2025
4b55702
Update translators via GitHub Actions
actions-user Jul 27, 2025
04e4f67
Deploying to master from @ File-New-Project/EarTrumpet@4b55702402f7a2…
riverar Jul 31, 2025
6042c57
Update translators via GitHub Actions
actions-user Aug 3, 2025
b3084b4
Update translators via GitHub Actions
actions-user Aug 10, 2025
7a7d15e
Update translators via GitHub Actions
actions-user Aug 17, 2025
6bb0b1d
Update translators via GitHub Actions
actions-user Aug 24, 2025
bc673cf
Deploying to master from @ File-New-Project/EarTrumpet@6bb0b1d2eb85f6…
riverar Aug 26, 2025
9740bce
Update translators via GitHub Actions
actions-user Aug 31, 2025
f4aacbe
Update LICENSE
riverar Sep 5, 2025
b088af6
Update translators via GitHub Actions
actions-user Sep 7, 2025
eb3494c
Update translators via GitHub Actions
actions-user Sep 14, 2025
423dda3
Update translators via GitHub Actions
actions-user Sep 21, 2025
efb5e30
Update translators via GitHub Actions
actions-user Sep 28, 2025
e5df195
Update translators via GitHub Actions
actions-user Oct 5, 2025
3e6a002
Update translators via GitHub Actions
actions-user Oct 12, 2025
4553d39
Update translators via GitHub Actions
actions-user Oct 19, 2025
646c9b5
Update translators via GitHub Actions
actions-user Oct 26, 2025
5a27dc3
Update translators via GitHub Actions
actions-user Nov 2, 2025
cbd4e5b
Update translators via GitHub Actions
actions-user Nov 9, 2025
db572d3
Update translators via GitHub Actions
actions-user Nov 16, 2025
76581f6
Update translators via GitHub Actions
actions-user Nov 23, 2025
e075a74
Update translators via GitHub Actions
actions-user Nov 30, 2025
88aa7a2
Update translators via GitHub Actions
actions-user Dec 7, 2025
b8608b2
Update translators via GitHub Actions
actions-user Dec 14, 2025
80d8cbc
Update translators via GitHub Actions
actions-user Dec 21, 2025
cc2bcb2
Update translators via GitHub Actions
actions-user Dec 28, 2025
61cecbc
Deploying to master from @ File-New-Project/EarTrumpet@cc2bcb293aea8a…
riverar Dec 31, 2025
2fbb306
Update translators via GitHub Actions
actions-user Jan 4, 2026
b3dd765
Update translators via GitHub Actions
actions-user Jan 11, 2026
2d0bab8
Update translators via GitHub Actions
actions-user Jan 18, 2026
ae5c5fb
Update translators via GitHub Actions
actions-user Jan 25, 2026
ec52af8
Update translators via GitHub Actions
actions-user Feb 1, 2026
ec0d00d
Update translators via GitHub Actions
actions-user Feb 8, 2026
a85ed79
Update translators via GitHub Actions
actions-user Feb 15, 2026
3b4e24c
Update translators via GitHub Actions
actions-user Feb 22, 2026
7b8e94f
Update translators via GitHub Actions
actions-user Mar 1, 2026
17aa291
Update translators via GitHub Actions
actions-user Mar 8, 2026
b6ad9a7
Update translators via GitHub Actions
actions-user Mar 15, 2026
99b6260
Update translators via GitHub Actions
actions-user Mar 22, 2026
39958db
refs #1796 Fix crash after a connection via Microsoft Desktop
valipod Mar 23, 2026
1e15746
Protect COM callbacks from unhandled exceptions during RDP session sw…
valipod Mar 26, 2026
4b83fa6
Merge branch 'master' into 1796-fix_remote_desktop_crash
valipod Mar 27, 2026
f0643d3
add missing declarations for debug build
valipod Mar 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,17 @@ on:
- dev
- rafael/*
paths-ignore:
- '**/*.md'
- '.github/ISSUE_TEMPLATE/*'
- '.github/workflows/sponsors.yml'
- '.github/workflows/translators.yml'
- 'Graphics/*'

- "**/*.md"
- ".github/ISSUE_TEMPLATE/*"
- ".github/workflows/sponsors.yml"
- ".github/workflows/translators.yml"
- "Graphics/*"
pull_request:
branches:
- dev
paths-ignore:
- "**/*.md"
- crowdin.yml
env:
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sponsors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
uses: actions/checkout@v3

- name: Generate Sponsors
uses: JamesIves/github-sponsors-readme-action@v1.2.2
uses: JamesIves/github-sponsors-readme-action@v1
with:
token: ${{ secrets.SPONSORS_PAT }}
file: 'README.md'
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Changelog

## x.x.x.x
- Fix crash after a connection through Microsoft Remote Desktop
- Added support for StartAllBack multitaskbar notification area (thanks @Simplestas!)
- Fixed various process lifecycle trigger bugs (thanks @spacechase0!)
- Fixed an issue with EarTrumpet tooltips not updating in some scenarios (thanks @Tester798!)
Expand Down
7 changes: 6 additions & 1 deletion EarTrumpet/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Interop;
Expand Down Expand Up @@ -125,11 +126,15 @@ private void ContinueStartup()
Exit += (_, __) => SystemEvents.SessionSwitch -= SystemEvents_SessionSwitch;
}

private void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
private async void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
Trace.WriteLine($"Detected User Session Switch: {e.Reason}");
if (e.Reason == SessionSwitchReason.ConsoleConnect)
{
// Give the audio subsystem time to settle after the session switch.
// Devices may not be fully available immediately after returning from RDP.
await Task.Delay(2000);

var devManager = WindowsAudioFactory.Create(AudioDeviceKind.Playback);
devManager.RefreshAllDevices();
}
Expand Down
5 changes: 5 additions & 0 deletions EarTrumpet/DataModel/Audio/Mocks/AudioDevice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,5 +74,10 @@ public void MoveHiddenAppsToDevice(string appId, string id)
public void UnhideSessionsForProcessId(uint processId)
{
}

public float GetVolumeScalar() => _volume;
public float GetVolumeLogarithmic() => _volume;
public void SetVolumeScalar(float value) => Volume = value;
public void SetVolumeLogarithmic(float value) => Volume = value;
}
#endif
5 changes: 5 additions & 0 deletions EarTrumpet/DataModel/Audio/Mocks/AudioDeviceSession.cs
Original file line number Diff line number Diff line change
Expand Up @@ -105,5 +105,10 @@ public void UpdatePeakValueBackground()
{

}

public float GetVolumeScalar() => _volume;
public float GetVolumeLogarithmic() => _volume;
public void SetVolumeScalar(float value) => Volume = value;
public void SetVolumeLogarithmic(float value) => Volume = value;
}
#endif
27 changes: 17 additions & 10 deletions EarTrumpet/DataModel/WindowsAudio/Internal/AudioDevice.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,20 +109,27 @@ public AudioDevice(IAudioDeviceManager deviceManager, IMMDevice device, Dispatch

public unsafe void OnNotify(AUDIO_VOLUME_NOTIFICATION_DATA* pNotify)
{
_volume = (*pNotify).fMasterVolume;
if (App.Settings.UseLogarithmicVolume)
try
{
_deviceVolume.GetMasterVolumeLevel(out _volume);
}
_isMuted = (*pNotify).bMuted != 0;
_volume = (*pNotify).fMasterVolume;
if (App.Settings.UseLogarithmicVolume)
{
_deviceVolume.GetMasterVolumeLevel(out _volume);
}
_isMuted = (*pNotify).bMuted != 0;

_channels.OnNotify((nint)pNotify, *pNotify);
_channels.OnNotify((nint)pNotify, *pNotify);

_dispatcher.Invoke((Action)(() =>
_dispatcher.Invoke((Action)(() =>
{
RaisePropertyChanged(nameof(Volume));
RaisePropertyChanged(nameof(IsMuted));
}));
}
catch (Exception ex)
{
RaisePropertyChanged(nameof(Volume));
RaisePropertyChanged(nameof(IsMuted));
}));
Trace.WriteLine($"AudioDevice OnNotify: {ex}");
}
}

/// <summary>
Expand Down
16 changes: 13 additions & 3 deletions EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -338,12 +338,23 @@ private void TraceLine(string message)

public void RefreshAllDevices()
{
TraceLine("RefreshAllDevices");

foreach (var dev in Devices.ToArray())
{
((IMMNotificationClient)this).OnDeviceRemoved(dev.Id);
}
_default = null;

try
{
_enumerator.UnregisterEndpointNotificationCallback(this);
}
catch (Exception ex)
{
TraceLine($"UnregisterEndpointNotificationCallback during refresh: {ex}");
}

_enumerator = (IMMDeviceEnumerator)new MMDeviceEnumerator();
_enumerator.RegisterEndpointNotificationCallback(this);

Expand All @@ -355,13 +366,12 @@ public void RefreshAllDevices()
device.GetId(out var deviceId);
((IMMNotificationClient)this).OnDeviceAdded(deviceId);
}
this.OnDefaultDeviceChanged(EDataFlow.eRender, ERole.eMultimedia, null);
this.OnDefaultDeviceChanged(EDataFlow.eRender, ERole.eConsole, null);
((IMMNotificationClient)this).OnDefaultDeviceChanged(Flow, ERole.eMultimedia, default);
((IMMNotificationClient)this).OnDefaultDeviceChanged(Flow, ERole.eConsole, default);

_dispatcher.Invoke((Action)(() =>
{
QueryDefaultDevice();
}));

}
}
138 changes: 102 additions & 36 deletions EarTrumpet/DataModel/WindowsAudio/Internal/AudioDeviceSession.cs
Original file line number Diff line number Diff line change
Expand Up @@ -426,80 +426,146 @@ private void DisconnectSession()
_isDisconnected = true;
_dispatcher.BeginInvoke((Action)(() =>
{
RaisePropertyChanged(nameof(State));
try
{
RaisePropertyChanged(nameof(State));
}
catch (Exception ex)
{
Trace.WriteLine($"AudioDeviceSession DisconnectSession dispatch: {ex}");
}
}));
}

unsafe void IAudioSessionEvents.OnSimpleVolumeChanged(float NewVolume, BOOL NewMute, Guid* EventContext)
{
_volume = NewVolume;
_isMuted = NewMute != 0;
try
{
_volume = NewVolume;
_isMuted = NewMute != 0;

_dispatcher.BeginInvoke((Action)(() =>
_dispatcher.BeginInvoke((Action)(() =>
{
RaisePropertyChanged(nameof(Volume));
RaisePropertyChanged(nameof(IsMuted));
}));
}
catch (Exception ex)
{
RaisePropertyChanged(nameof(Volume));
RaisePropertyChanged(nameof(IsMuted));
}));
Trace.WriteLine($"AudioDeviceSession OnSimpleVolumeChanged: {ex}");
}
}

unsafe void IAudioSessionEvents.OnGroupingParamChanged(Guid* NewGroupingParam, Guid* EventContext)
{
GroupingParam = *NewGroupingParam;
Trace.WriteLine($"AudioDeviceSession OnGroupingParamChanged {ExeName} {Id}");
_dispatcher.BeginInvoke((Action)(() =>
try
{
RaisePropertyChanged(nameof(GroupingParam));
}));
GroupingParam = *NewGroupingParam;
Trace.WriteLine($"AudioDeviceSession OnGroupingParamChanged {ExeName} {Id}");
_dispatcher.BeginInvoke((Action)(() =>
{
RaisePropertyChanged(nameof(GroupingParam));
}));
}
catch (Exception ex)
{
Trace.WriteLine($"AudioDeviceSession OnGroupingParamChanged: {ex}");
}
}

void IAudioSessionEvents.OnStateChanged(AudioSessionState NewState)
{
Trace.WriteLine($"AudioDeviceSession OnStateChanged {NewState} {ExeName} {Id}");
try
{
Trace.WriteLine($"AudioDeviceSession OnStateChanged {NewState} {ExeName} {Id}");

_state = NewState;
_state = NewState;

if (_isMoved && NewState == AudioSessionState.AudioSessionStateActive)
{
_isMoved = false;
if (_isMoved && NewState == AudioSessionState.AudioSessionStateActive)
{
_isMoved = false;
}
else if (_moveOnInactive && NewState == AudioSessionState.AudioSessionStateInactive)
{
_isMoved = true;
_moveOnInactive = false;
}

_dispatcher.BeginInvoke((Action)(() =>
{
try
{
RaisePropertyChanged(nameof(State));
}
catch (Exception ex)
{
Trace.WriteLine($"AudioDeviceSession OnStateChanged dispatch: {ex}");
}
}));
}
else if (_moveOnInactive && NewState == AudioSessionState.AudioSessionStateInactive)
catch (Exception ex)
{
_isMoved = true;
_moveOnInactive = false;
Trace.WriteLine($"AudioDeviceSession OnStateChanged: {ex}");
}

_dispatcher.BeginInvoke((Action)(() =>
{
RaisePropertyChanged(nameof(State));
}));
}

unsafe void IAudioSessionEvents.OnDisplayNameChanged(PCWSTR NewDisplayName, Guid* EventContext)
{
ChooseDisplayName(NewDisplayName.ToString());
try
{
ChooseDisplayName(NewDisplayName.ToString());

_dispatcher.BeginInvoke((Action)(() =>
_dispatcher.BeginInvoke((Action)(() =>
{
RaisePropertyChanged(nameof(DisplayName));
}));
}
catch (Exception ex)
{
RaisePropertyChanged(nameof(DisplayName));
}));
Trace.WriteLine($"AudioDeviceSession OnDisplayNameChanged: {ex}");
}
}

void IAudioSessionEvents.OnSessionDisconnected(AudioSessionDisconnectReason DisconnectReason) => DisconnectSession();
void IAudioSessionEvents.OnSessionDisconnected(AudioSessionDisconnectReason DisconnectReason)
{
try
{
DisconnectSession();
}
catch (Exception ex)
{
Trace.WriteLine($"AudioDeviceSession OnSessionDisconnected: {ex}");
}
}

unsafe void IAudioSessionEvents.OnChannelVolumeChanged(uint ChannelCount, float[] afNewChannelVolume, uint ChangedChannel, Guid* EventContext)
{
var channelVolumesValues = new float[ChannelCount];
Array.Copy(afNewChannelVolume, 0, channelVolumesValues, 0, (int)ChannelCount);
try
{
var channelVolumesValues = new float[ChannelCount];
Array.Copy(afNewChannelVolume, 0, channelVolumesValues, 0, (int)ChannelCount);

for (var i = 0; i < ChannelCount; i++)
for (var i = 0; i < ChannelCount; i++)
{
_channels.Channels[i].SetLevel(channelVolumesValues[i]);
}
}
catch (Exception ex)
{
_channels.Channels[i].SetLevel(channelVolumesValues[i]);
Trace.WriteLine($"AudioDeviceSession OnChannelVolumeChanged: {ex}");
}
}

unsafe void IAudioSessionEvents.OnIconPathChanged(PCWSTR NewIconPath, Guid* EventContext)
{
IconPath = NewIconPath.ToString();
RaisePropertyChanged(nameof(IconPath));
try
{
IconPath = NewIconPath.ToString();
RaisePropertyChanged(nameof(IconPath));
}
catch (Exception ex)
{
Trace.WriteLine($"AudioDeviceSession OnIconPathChanged: {ex}");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -74,14 +74,21 @@ private void CreateAndAddSession(IAudioSessionControl session)
var newSession = new AudioDeviceSession(parent, session, _dispatcher);
_dispatcher.BeginInvoke((Action)(() =>
{
if (newSession.State == SessionState.Moved)
try
{
_movedSessions.Add(newSession);
newSession.PropertyChanged += MovedSession_PropertyChanged;
if (newSession.State == SessionState.Moved)
{
_movedSessions.Add(newSession);
newSession.PropertyChanged += MovedSession_PropertyChanged;
}
else if (newSession.State != SessionState.Expired)
{
AddSession(newSession);
}
}
else if (newSession.State != SessionState.Expired)
catch (Exception ex)
{
AddSession(newSession);
Trace.WriteLine($"AudioDeviceSessionCollection CreateAndAddSession dispatch: {ex}");
}
}));
}
Expand Down
1 change: 1 addition & 0 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ software or associated documentation files:

Yellow Elephant Productions
Tidal Media Inc.
Articent Group LLC

The Excluded Entities may not exercise any of the rights granted to other users
under these licensing terms.
Expand Down
Loading