Commit de94406f authored by littlejohn's avatar littlejohn
Browse files

jvlc #23: make native resources release explicit

parent 0db07ccf
......@@ -176,6 +176,9 @@ public class JVLC
vlm.release();
vlm = null;
}
mediaList.release();
mediaListPlayer.release();
libvlc.libvlc_release(instance);
}
......
......@@ -36,7 +36,7 @@ public class MediaDescriptor
private LibVlcMedia instance;
private LibVlc libvlc;
private LibVlcEventManager eventManager;
private boolean released;
private volatile boolean released;
private MediaPlayer mediaPlayer;
......
......@@ -26,7 +26,6 @@
package org.videolan.jvlc;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import org.videolan.jvlc.internal.LibVlc.LibVlcEventManager;
......@@ -42,10 +41,12 @@ public class MediaList
private final LibVlcMediaList instance;
private final LibVlcEventManager eventManager;
private List<String> items = new ArrayList<String>();
private LibVlcEventManager eventManager;
private volatile boolean released;
public MediaList(JVLC jvlc)
{
this.jvlc = jvlc;
......@@ -188,7 +189,7 @@ public class MediaList
@Override
protected void finalize() throws Throwable
{
jvlc.getLibvlc().libvlc_media_list_release(instance);
release();
super.finalize();
}
......@@ -201,6 +202,20 @@ public class MediaList
return instance;
}
/**
*
*/
public void release()
{
if (released)
{
return;
}
released = true;
jvlc.getLibvlc().libvlc_media_list_release(instance);
}
}
......@@ -35,6 +35,8 @@ public class MediaListPlayer
private final LibVlcMediaListPlayer instance;
private final JVLC jvlc;
private volatile boolean released;
public MediaListPlayer(JVLC jvlc)
{
......@@ -172,8 +174,22 @@ public class MediaListPlayer
@Override
protected void finalize() throws Throwable
{
jvlc.getLibvlc().libvlc_media_list_player_release(instance);
release();
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
private MediaDescriptor mediaDescriptor;
private volatile boolean released;
MediaPlayer(JVLC jvlc, LibVlcMediaPlayer instance)
{
libvlc_exception_t exception = new libvlc_exception_t();
......@@ -176,6 +178,18 @@ public class MediaPlayer
@Override
protected void finalize() throws Throwable
{
release();
super.finalize();
}
public void release()
{
if (released)
{
return;
}
released = true;
libvlc_exception_t exception = new libvlc_exception_t();
for (MediaPlayerCallback callback : callbacks)
{
......@@ -187,9 +201,9 @@ public class MediaPlayer
}
}
libvlc.libvlc_media_player_release(instance);
super.finalize();
}
/**
* Returns 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