@@ -11,25 +11,25 @@ namespace Artemis.MediaInfo
1111 [ PluginFeature ( Name = "MediaInfo" ) ]
1212 public class MediaInfoModule : Module < MediaInfoDataModel >
1313 {
14- private readonly MediaManager _mediaManager = new ( ) ;
14+ private MediaManager _mediaManager ;
1515
1616 public override List < IModuleActivationRequirement > ActivationRequirements { get ; } = new ( ) ;
1717
18- private readonly List < string > _mediaSessions = new ( ) ;
18+ private List < string > _mediaSessions = new ( ) ;
1919
2020 public override void Enable ( )
2121 {
22+ _mediaManager = new MediaManager ( ) ;
2223 _mediaManager . OnAnySessionOpened += MediaManager_OnSessionOpened ;
2324 _mediaManager . OnAnySessionClosed += MediaManager_OnAnySessionClosed ;
2425 _mediaManager . OnAnyPlaybackStateChanged += MediaManager_OnAnyPlaybackStateChanged ;
2526
2627 _mediaManager . Start ( ) ;
27- while ( ! _mediaManager . IsStarted ) { }
28-
28+
2929 DataModel . HasMedia = _mediaManager . CurrentMediaSessions . Count > 0 ;
3030
3131 if ( _mediaManager . CurrentMediaSessions . Count == 0 ) return ;
32-
32+ _mediaSessions = new List < string > ( _mediaManager . CurrentMediaSessions . Select ( pair => pair . Value . Id ) ) ;
3333
3434 DataModel . HasNextMedia = _mediaManager . CurrentMediaSessions . Any ( pair => pair . Value . ControlSession . GetPlaybackInfo ( ) . Controls . IsNextEnabled ) ;
3535 DataModel . HasPreviousMedia = _mediaManager . CurrentMediaSessions . Any ( pair => pair . Value . ControlSession . GetPlaybackInfo ( ) . Controls . IsPreviousEnabled ) ;
@@ -39,9 +39,16 @@ public override void Enable()
3939
4040 public override void Disable ( )
4141 {
42+ foreach ( var ( _, mediaSession ) in _mediaManager . CurrentMediaSessions )
43+ {
44+ mediaSession . OnSessionClosed -= MediaManager_OnAnySessionClosed ;
45+ }
46+
4247 _mediaManager . OnAnySessionOpened -= MediaManager_OnSessionOpened ;
4348 _mediaManager . OnAnySessionClosed -= MediaManager_OnAnySessionClosed ;
4449 _mediaManager . OnAnyPlaybackStateChanged -= MediaManager_OnAnyPlaybackStateChanged ;
50+ _mediaManager . Dispose ( ) ;
51+ _mediaManager = null ;
4552 }
4653
4754 public override void Update ( double deltaTime )
@@ -59,19 +66,19 @@ public override void ModuleDeactivated(bool isOverride)
5966
6067 }
6168
62- private void MediaManager_OnSessionOpened ( MediaManager . MediaSession mediasession )
69+ private void MediaManager_OnSessionOpened ( MediaManager . MediaSession mediaSession )
6370 {
6471 DataModel . HasMedia = true ;
6572
66- _mediaSessions . Add ( mediasession . Id ) ;
73+ _mediaSessions . Add ( mediaSession . Id ) ;
6774
68- mediasession . OnSessionClosed += MediaManager_OnAnySessionClosed ;
75+ mediaSession . OnSessionClosed += MediaManager_OnAnySessionClosed ;
6976 }
7077
71- private void MediaManager_OnAnySessionClosed ( MediaManager . MediaSession mediasession )
78+ private void MediaManager_OnAnySessionClosed ( MediaManager . MediaSession mediaSession )
7279 {
73- mediasession . OnSessionClosed -= MediaManager_OnAnySessionClosed ;
74- _mediaSessions . Remove ( mediasession . Id ) ;
80+ mediaSession . OnSessionClosed -= MediaManager_OnAnySessionClosed ;
81+ _mediaSessions . Remove ( mediaSession . Id ) ;
7582
7683 if ( _mediaSessions . Count == 0 )
7784 {
@@ -85,9 +92,11 @@ private void MediaManager_OnAnySessionClosed(MediaManager.MediaSession mediasess
8592 }
8693 }
8794
88- private void MediaManager_OnAnyPlaybackStateChanged ( MediaManager . MediaSession mediasession , GlobalSystemMediaTransportControlsSessionPlaybackInfo playbackinfo )
95+ private void MediaManager_OnAnyPlaybackStateChanged ( MediaManager . MediaSession mediaSession ,
96+ GlobalSystemMediaTransportControlsSessionPlaybackInfo playbackInfo )
8997 {
9098 UpdateButtons ( ) ;
99+ DataModel . MediaState = playbackInfo . PlaybackStatus ;
91100 }
92101
93102 private void UpdateButtons ( )
0 commit comments