Commit de94406f authored by Filippo Carone's avatar Filippo Carone

jvlc #23: make native resources release explicit

parent 0db07ccf
...@@ -176,6 +176,9 @@ public class JVLC ...@@ -176,6 +176,9 @@ public class JVLC
vlm.release(); vlm.release();
vlm = null; vlm = null;
} }
mediaList.release();
mediaListPlayer.release();
libvlc.libvlc_release(instance); libvlc.libvlc_release(instance);
} }
......
...@@ -36,7 +36,7 @@ public class MediaDescriptor ...@@ -36,7 +36,7 @@ public class MediaDescriptor
private LibVlcMedia instance; private LibVlcMedia instance;
private LibVlc libvlc; private LibVlc libvlc;
private LibVlcEventManager eventManager; private LibVlcEventManager eventManager;
private boolean released; private volatile boolean released;
private MediaPlayer mediaPlayer; private MediaPlayer mediaPlayer;
......
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
package org.videolan.jvlc; package org.videolan.jvlc;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager; import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager;
...@@ -42,10 +41,12 @@ public class MediaList ...@@ -42,10 +41,12 @@ public class MediaList
private final LibVlcMediaList instance; private final LibVlcMediaList instance;
private final LibVlcEventManager eventManager;
private List<String> items = new ArrayList<String>(); private List<String> items = new ArrayList<String>();
private LibVlcEventManager eventManager;
private volatile boolean released;
public MediaList(JVLC jvlc) public MediaList(JVLC jvlc)
{ {
this.jvlc = jvlc; this.jvlc = jvlc;
...@@ -188,7 +189,7 @@ public class MediaList ...@@ -188,7 +189,7 @@ public class MediaList
@Override @Override
protected void finalize() throws Throwable protected void finalize() throws Throwable
{ {
jvlc.getLibvlc().libvlc_media_list_release(instance); release();
super.finalize(); super.finalize();
} }
...@@ -201,6 +202,20 @@ public class MediaList ...@@ -201,6 +202,20 @@ public class MediaList
return instance; return instance;
} }
/**
*
*/
public void release()
{
if (released)
{
return;
}
released = true;
jvlc.getLibvlc().libvlc_media_list_release(instance);
}
} }
...@@ -35,6 +35,8 @@ public class MediaListPlayer ...@@ -35,6 +35,8 @@ public class MediaListPlayer
private final LibVlcMediaListPlayer instance; private final LibVlcMediaListPlayer instance;
private final JVLC jvlc; private final JVLC jvlc;
private volatile boolean released;
public MediaListPlayer(JVLC jvlc) public MediaListPlayer(JVLC jvlc)
{ {
...@@ -172,8 +174,22 @@ public class MediaListPlayer ...@@ -172,8 +174,22 @@ public class MediaListPlayer
@Override @Override
protected void finalize() throws Throwable protected void finalize() throws Throwable
{ {
jvlc.getLibvlc().libvlc_media_list_player_release(instance); release();
super.finalize(); super.finalize();
} }
/**
*
*/
public void release()
{
if (released)
{
return;
}
released = true;
jvlc.getLibvlc().libvlc_media_list_player_release(instance);
}
} }
...@@ -51,6 +51,8 @@ public class MediaPlayer ...@@ -51,6 +51,8 @@ public class MediaPlayer
private MediaDescriptor mediaDescriptor; private MediaDescriptor mediaDescriptor;
private volatile boolean released;
MediaPlayer(JVLC jvlc, LibVlcMediaPlayer instance) MediaPlayer(JVLC jvlc, LibVlcMediaPlayer instance)
{ {
libvlc_exception_t exception = new libvlc_exception_t(); libvlc_exception_t exception = new libvlc_exception_t();
...@@ -176,6 +178,18 @@ public class MediaPlayer ...@@ -176,6 +178,18 @@ public class MediaPlayer
@Override @Override
protected void finalize() throws Throwable protected void finalize() throws Throwable
{ {
release();
super.finalize();
}
public void release()
{
if (released)
{
return;
}
released = true;
libvlc_exception_t exception = new libvlc_exception_t(); libvlc_exception_t exception = new libvlc_exception_t();
for (MediaPlayerCallback callback : callbacks) for (MediaPlayerCallback callback : callbacks)
{ {
...@@ -187,9 +201,9 @@ public class MediaPlayer ...@@ -187,9 +201,9 @@ public class MediaPlayer
} }
} }
libvlc.libvlc_media_player_release(instance); libvlc.libvlc_media_player_release(instance);
super.finalize();
} }
/** /**
* Returns the instance. * Returns the instance.
* @return the instance * @return the instance
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment