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