]> git.sesse.net Git - vlc/blobdiff - bindings/java/core/src/main/java/org/videolan/jvlc/MediaDescriptor.java
Add some locking.
[vlc] / bindings / java / core / src / main / java / org / videolan / jvlc / MediaDescriptor.java
index 727f157bcaac16b14faa38258ae23f33d85e0050..e4d99ccada41bfeedf59f64a5b909d9475faa8c9 100644 (file)
@@ -27,16 +27,18 @@ package org.videolan.jvlc;
 
 import org.videolan.jvlc.internal.LibVlc;
 import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager;
-import org.videolan.jvlc.internal.LibVlc.LibVlcMediaDescriptor;
+import org.videolan.jvlc.internal.LibVlc.LibVlcMedia;
 import org.videolan.jvlc.internal.LibVlc.libvlc_exception_t;
 
 
 public class MediaDescriptor
 {
-    private LibVlcMediaDescriptor instance;
+    private LibVlcMedia instance;
     private LibVlc libvlc;
     private LibVlcEventManager eventManager;
-    private boolean released;
+    private volatile boolean released;
+    
+    private MediaPlayer mediaPlayer;
     
     /**
      * @param jvlc The jvlc instance to create the media descriptor for.
@@ -50,7 +52,7 @@ public class MediaDescriptor
         eventManager = libvlc.libvlc_media_event_manager(instance, exception);
     }
 
-    MediaDescriptor(JVLC jvlc, LibVlcMediaDescriptor instance)
+    MediaDescriptor(JVLC jvlc, LibVlcMedia instance)
     {
         libvlc_exception_t exception = new libvlc_exception_t();
         libvlc = jvlc.getLibvlc();
@@ -66,12 +68,17 @@ public class MediaDescriptor
     
     public String getMrl()
     {
-        return libvlc.libvlc_media_get_mrl(instance);
+        libvlc_exception_t exception = new libvlc_exception_t();
+        return libvlc.libvlc_media_get_mrl(instance, exception);
     }
     
-    public MediaInstance getMediaInstance()
+    public MediaPlayer getMediaPlayer()
     {
-        return new MediaInstance(this);
+        if (mediaPlayer == null)
+        {
+            this.mediaPlayer = new MediaPlayer(this);
+        }
+        return this.mediaPlayer;
     }
     
     /**
@@ -90,7 +97,7 @@ public class MediaDescriptor
      * Returns the instance.
      * @return the instance
      */
-    LibVlcMediaDescriptor getInstance()
+    LibVlcMedia getInstance()
     {
         return instance;
     }