Skip to content
Snippets Groups Projects
Commit 6cc497c9 authored by Geoffrey Métais's avatar Geoffrey Métais
Browse files

LibVLC: Clean up renderers API

parent 2704ad1b
No related branches found
No related tags found
1 merge request!33Renderer
......@@ -20,26 +20,38 @@
package org.videolan.libvlc;
import java.util.ArrayList;
import java.util.List;
import androidx.collection.LongSparseArray;
public class RendererDiscoverer extends VLCObject<RendererDiscoverer.Event> {
private final static String TAG = "LibVLC/RendererDiscoverer";
final List<RendererItem> mRenderers = new ArrayList<>();
public static class Event extends VLCEvent {
public static final int ItemAdded = 0x502;
public static final int ItemDeleted = 0x503;
private RendererItem item;
private final RendererItem item;
protected Event(int type, long nativeHolder, RendererItem item) {
super(type, nativeHolder);
this.item = item;
item.retain();
}
public RendererItem getItem() {
return item;
}
@Override
void release() {
item.release();
super.release();
}
}
@SuppressWarnings("unused") /* Used from JNI */
......@@ -114,17 +126,24 @@ public class RendererDiscoverer extends VLCObject<RendererDiscoverer.Event> {
private synchronized RendererItem insertItemFromEvent(long arg1) {
final RendererItem item = nativeNewItem(arg1);
index.put(arg1, item);
mRenderers.add(item);
return item;
}
private synchronized RendererItem removeItemFromEvent(long arg1) {
final RendererItem item = index.get(arg1);
if (item != null) index.remove(arg1);
if (item != null) {
index.remove(arg1);
mRenderers.remove(item);
item.release();
}
return item;
}
@Override
protected void onReleaseNative() {
for (RendererItem item : mRenderers) item.release();
mRenderers.clear();
nativeRelease();
}
......
......@@ -58,7 +58,6 @@ object RendererDelegate : RendererDiscoverer.EventListener {
if (!started) return
started = false
for (discoverer in discoverers) discoverer.stop()
for (renderer in renderers.value) renderer.release()
clear()
}
......@@ -69,8 +68,8 @@ object RendererDelegate : RendererDiscoverer.EventListener {
override fun onEvent(event: RendererDiscoverer.Event?) {
when (event?.type) {
RendererDiscoverer.Event.ItemAdded -> { renderers.add(event.item) }
RendererDiscoverer.Event.ItemDeleted -> { renderers.remove(event.item); event.item.release() }
RendererDiscoverer.Event.ItemAdded -> renderers.add(event.item)
RendererDiscoverer.Event.ItemDeleted -> renderers.remove(event.item)
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment