mirror of
https://github.com/videolan/vlc.git
synced 2024-12-01 13:55:14 +08:00
jvlc #23: make native resources release explicit
This commit is contained in:
parent
0db07ccfec
commit
de94406f00
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user