[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