[vlc-devel] commit: python-ctypes: try to detect plugin path on win32 / macosx ( Olivier Aubert )

git version control git at videolan.org
Fri Sep 11 12:09:22 CEST 2009


vlc | branch: master | Olivier Aubert <olivier.aubert at liris.cnrs.fr> | Tue Sep  8 15:47:14 2009 +0200| [f6cfac8691fba84ef994da6124fd79877e8494e3] | committer: Olivier Aubert 

python-ctypes: try to detect plugin path on win32 / macosx

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f6cfac8691fba84ef994da6124fd79877e8494e3
---

 bindings/python-ctypes/header.py   |   28 +++++++++++++++++++---------
 bindings/python-ctypes/override.py |    8 ++++++++
 2 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/bindings/python-ctypes/header.py b/bindings/python-ctypes/header.py
index cc95119..7cd29c1 100755
--- a/bindings/python-ctypes/header.py
+++ b/bindings/python-ctypes/header.py
@@ -39,42 +39,52 @@ import sys
 
 build_date="This will be replaced by the build date"
 
+# Used for win32 and MacOS X
+detected_plugin_path=None
+
 if sys.platform == 'linux2':
     dll=ctypes.CDLL('libvlc.so')
 elif sys.platform == 'win32':
     import ctypes.util
     import os
-    plugin_path=None
+    detected_plugin_path=None
     path=ctypes.util.find_library('libvlc.dll')
     if path is None:
         # Try to use registry settings
         import _winreg
-        plugin_path_found = None
+        detected_plugin_path_found = None
         subkey, name = 'Software\\VideoLAN\\VLC','InstallDir'
         for hkey in _winreg.HKEY_LOCAL_MACHINE, _winreg.HKEY_CURRENT_USER:
             try:
                 reg = _winreg.OpenKey(hkey, subkey)
-                plugin_path_found, type_id = _winreg.QueryValueEx(reg, name)
+                detected_plugin_path_found, type_id = _winreg.QueryValueEx(reg, name)
                 _winreg.CloseKey(reg)
                 break
             except _winreg.error:
                 pass
-        if plugin_path_found:
-            plugin_path = plugin_path_found
+        if detected_plugin_path_found:
+            detected_plugin_path = detected_plugin_path_found
         else:
             # Try a standard location.
             p='c:\\Program Files\\VideoLAN\\VLC\\libvlc.dll'
             if os.path.exists(p):
-                plugin_path=os.path.dirname(p)
-        os.chdir(plugin_path)
+                detected_plugin_path=os.path.dirname(p)
+        os.chdir(detected_plugin_path)
         # If chdir failed, this will not work and raise an exception
         path='libvlc.dll'
     else:
-        plugin_path=os.path.dirname(path)
+        detected_plugin_path=os.path.dirname(path)
     dll=ctypes.CDLL(path)
 elif sys.platform == 'darwin':
     # FIXME: should find a means to configure path
-    dll=ctypes.CDLL('/Applications/VLC.app/Contents/MacOS/lib/libvlc.2.dylib')
+    d='/Applications/VLC.app'
+    import os
+    if os.path.exists(d):
+        dll=ctypes.CDLL(d+'/Contents/MacOS/lib/libvlc.2.dylib')
+        detected_plugin_path=d+'/Contents/MacOS/modules'
+    else:
+        # Hope some default path is set...
+        dll=ctypes.CDLL('libvlc.2.dylib')
 
 #
 # Generated enum types.
diff --git a/bindings/python-ctypes/override.py b/bindings/python-ctypes/override.py
index 729f500..1a39684 100644
--- a/bindings/python-ctypes/override.py
+++ b/bindings/python-ctypes/override.py
@@ -24,6 +24,10 @@ class Instance:
         if p and isinstance(p[0], MediaControl):
             return p[0].get_instance()
         else:
+            if not p and detected_plugin_path is not None:
+                # No parameters passed. Under win32 and MacOS, specify
+                # the detected_plugin_path if present.
+                p=[ 'vlc', '--plugin-path='+ detected_plugin_path ]
             e=VLCException()
             return libvlc_new(len(p), p, e)
 
@@ -74,6 +78,10 @@ class MediaControl:
             e=MediaControlException()
             return mediacontrol_new_from_instance(p[0], e)
         else:
+            if not p and detected_plugin_path is not None:
+                # No parameters passed. Under win32 and MacOS, specify
+                # the detected_plugin_path if present.
+                p=[ 'vlc', '--plugin-path='+ detected_plugin_path ]
             e=MediaControlException()
             return mediacontrol_new(len(p), p, e)
 




More information about the vlc-devel mailing list