]> git.sesse.net Git - vlc/commitdiff
macosx/framework: Hack ourselves to get extensions.
authorPierre d'Herbemont <pdherbemont@free.fr>
Fri, 29 Jan 2010 14:16:22 +0000 (15:16 +0100)
committerPierre d'Herbemont <pdherbemont@free.fr>
Fri, 29 Jan 2010 14:47:30 +0000 (15:47 +0100)
projects/macosx/framework/Sources/VLCExtensionsManager.m

index 7f3fd4bcb86827da343c0afb2170ce2f20ab27b0..1df889d5f500a1b251b8442aa7e503b8c0321600 100644 (file)
 #import <vlc_extensions.h>
 #import <vlc_input.h>
 
+// Here comes the nasty hack.
+#import "../../../../src/control/media_player_internal.h"
+#import "../../../../src/control/libvlc_internal.h"
+
+static input_thread_t *libvlc_media_player_get_input_thread(libvlc_media_player_t *player)
+{
+    vlc_mutex_lock(&player->object_lock);
+    input_thread_t *input = player->p_input_thread;
+    if(input)
+        vlc_object_hold(input);
+    vlc_mutex_unlock(&player->object_lock);
+    return input;
+}
+
+static vlc_object_t *libvlc_get_vlc_instance(libvlc_instance_t *instance)
+{
+    vlc_mutex_lock(&instance->instance_lock);
+    libvlc_int_t *libvlc = instance->p_libvlc_int;
+    if(libvlc)
+        vlc_object_hold(libvlc);
+    vlc_mutex_unlock(&instance->instance_lock);
+    return VLC_OBJECT(libvlc);
+}
+
+
 #define _instance ((extensions_manager_t *)instance)
 
 @implementation VLCExtensionsManager
@@ -30,8 +55,6 @@ static VLCExtensionsManager *sharedManager = nil;
 
 - (void)dealloc
 {
-    vlc_object_t *libvlc = libvlc_get_vlc_instance([VLCLibrary sharedInstance]);
-    vlc_object_release(libvlc);
     module_unneed(_instance, _instance->p_module);
     vlc_object_release(_instance);