[Android] Fix RendererItem created twice

Geoffrey Métais git at videolan.org
Wed Jul 18 12:07:50 CEST 2018


vlc-android | branch: 3.0.x | Geoffrey Métais <geoffrey.metais at gmail.com> | Wed Jul 18 12:07:25 2018 +0200| [fd06b94a3424b28b3920890c0702aacb3c341ae8] | committer: Geoffrey Métais

Fix RendererItem created twice

> https://code.videolan.org/videolan/vlc-android/commit/fd06b94a3424b28b3920890c0702aacb3c341ae8
---

 libvlc/jni/libvlcjni-rendererdiscoverer.c              | 13 ++++++++-----
 libvlc/src/org/videolan/libvlc/RendererDiscoverer.java |  3 ++-
 libvlc/src/org/videolan/libvlc/RendererItem.java       | 12 ------------
 3 files changed, 10 insertions(+), 18 deletions(-)

diff --git a/libvlc/jni/libvlcjni-rendererdiscoverer.c b/libvlc/jni/libvlcjni-rendererdiscoverer.c
index cc3bfa0f3..1a3383402 100644
--- a/libvlc/jni/libvlcjni-rendererdiscoverer.c
+++ b/libvlc/jni/libvlcjni-rendererdiscoverer.c
@@ -197,22 +197,25 @@ error:
 }
 
 jobject
-Java_org_videolan_libvlc_RendererItem_nativeNewItem(JNIEnv *env, jobject thiz, jobject rd,
+Java_org_videolan_libvlc_RendererDiscoverer_nativeNewItem(JNIEnv *env, jobject thiz,
                                                     jlong ref)
 {
-    vlcjni_object *p_rd_obj = VLCJniObject_getInstance(env, rd);
+    vlcjni_object *p_rd_obj = VLCJniObject_getInstance(env, thiz);
     vlcjni_object *p_obj;
+    libvlc_renderer_item_t *item_ref = (libvlc_renderer_item_t *)(intptr_t)ref;
 
     if (!p_rd_obj)
         return NULL;
 
-    p_obj = VLCJniObject_newFromLibVlc(env, thiz, p_rd_obj->p_libvlc);
+    jobject jitem = item_to_object(env, item_ref);
+
+    p_obj = VLCJniObject_newFromLibVlc(env, jitem, p_rd_obj->p_libvlc);
     if (!p_obj)
         return NULL;
 
-    p_obj->u.p_r = libvlc_renderer_item_hold((libvlc_renderer_item_t *)ref);
+    p_obj->u.p_r = libvlc_renderer_item_hold(item_ref);
 
-    return item_to_object(env, p_obj->u.p_r);
+    return jitem;
 }
 
 void
diff --git a/libvlc/src/org/videolan/libvlc/RendererDiscoverer.java b/libvlc/src/org/videolan/libvlc/RendererDiscoverer.java
index d972bb6cc..1ef952a3f 100644
--- a/libvlc/src/org/videolan/libvlc/RendererDiscoverer.java
+++ b/libvlc/src/org/videolan/libvlc/RendererDiscoverer.java
@@ -111,7 +111,7 @@ public class RendererDiscoverer extends VLCObject<RendererDiscoverer.Event> {
 
     private final LongSparseArray<RendererItem> index = new LongSparseArray<>();
     private synchronized RendererItem insertItemFromEvent(long arg1) {
-        final RendererItem item = new RendererItem(this, arg1);
+        final RendererItem item = nativeNewItem(arg1);
         index.put(arg1, item);
         return item;
     }
@@ -138,4 +138,5 @@ public class RendererDiscoverer extends VLCObject<RendererDiscoverer.Event> {
     private native boolean nativeStart();
     private native void nativeStop();
     private static native Description[] nativeList(LibVLC libVLC);
+    private native RendererItem nativeNewItem(long ref);
 }
diff --git a/libvlc/src/org/videolan/libvlc/RendererItem.java b/libvlc/src/org/videolan/libvlc/RendererItem.java
index 0d1d7ba77..d9c1b6d65 100644
--- a/libvlc/src/org/videolan/libvlc/RendererItem.java
+++ b/libvlc/src/org/videolan/libvlc/RendererItem.java
@@ -15,17 +15,6 @@ public class RendererItem extends VLCObject<RendererItem.Event> {
     final int flags;
     private final long ref;
 
-    RendererItem (RendererDiscoverer rd, long ref) {
-        super(rd);
-        final RendererItem item = nativeNewItem(rd, ref);
-        name = item == null ? null : item.name;
-        displayName = item == null ? null : item.displayName;
-        this.type = item == null ? null : item.type;
-        this.iconUrl = item == null ? null : item.iconUrl;
-        this.flags = item == null ? 0 : item.flags;
-        this.ref = item == null ? ref : item.ref;
-    }
-
     RendererItem(String name, String type, String iconUrl, int flags, long ref) {
         final int index = name.lastIndexOf('-');
         this.name = name;
@@ -57,6 +46,5 @@ public class RendererItem extends VLCObject<RendererItem.Event> {
         }
     }
 
-    private native RendererItem nativeNewItem(RendererDiscoverer rd, long ref);
     private native void nativeReleaseItem();
 }



More information about the Android mailing list