diff --git a/src/LibVLCSharp/Shared/MediaPlayer.cs b/src/LibVLCSharp/Shared/MediaPlayer.cs index 81a2f052b..6e00d0515 100644 --- a/src/LibVLCSharp/Shared/MediaPlayer.cs +++ b/src/LibVLCSharp/Shared/MediaPlayer.cs @@ -653,7 +653,12 @@ public Media? Media /// true if successful public bool Play() { - Media?.AddOption(Configuration); + var media = Media; + if(media != null) + { + media.AddOption(Configuration); + media.Dispose(); + } return Native.LibVLCMediaPlayerPlay(NativeReference) == 0; } diff --git a/src/LibVLCSharp/Shared/MediaPlayerElement/AspectRatioManager.cs b/src/LibVLCSharp/Shared/MediaPlayerElement/AspectRatioManager.cs index 904be22da..e09fa05f7 100644 --- a/src/LibVLCSharp/Shared/MediaPlayerElement/AspectRatioManager.cs +++ b/src/LibVLCSharp/Shared/MediaPlayerElement/AspectRatioManager.cs @@ -99,7 +99,13 @@ private void VideoView_SizeChanged(object sender, EventArgs args) try { - var videoTrack = mediaPlayer.Media?.Tracks?.FirstOrDefault(t => t.Id == selectedVideoTrack); + var media = mediaPlayer.Media; + MediaTrack? videoTrack = null; + if (media != null) + { + videoTrack = media.Tracks?.FirstOrDefault(t => t.Id == selectedVideoTrack); + media.Dispose(); + } return videoTrack == null ? (VideoTrack?)null : ((MediaTrack)videoTrack).Data.Video; } catch (Exception) diff --git a/src/LibVLCSharp/Shared/MediaPlayerElement/StateManager.cs b/src/LibVLCSharp/Shared/MediaPlayerElement/StateManager.cs index 6116ff1f8..6fb02792b 100644 --- a/src/LibVLCSharp/Shared/MediaPlayerElement/StateManager.cs +++ b/src/LibVLCSharp/Shared/MediaPlayerElement/StateManager.cs @@ -54,7 +54,20 @@ public StateManager(IDispatcher? dispatcher) : base(dispatcher) /// /// Gets the media resource locator /// - public string? MediaResourceLocator => MediaPlayer?.Media?.Mrl; + public string? MediaResourceLocator + { + get + { + var mrl = string.Empty; + var media = MediaPlayer?.Media; + if(media != null) + { + mrl = media.Mrl; + media.Dispose(); + } + return mrl; + } + } /// /// Gets a value indicating whether the playback is playing