Author: tack
Date: Fri Dec 29 16:39:17 2006
New Revision: 2305

Modified:
   trunk/popcorn/src/backends/__init__.py
   trunk/popcorn/src/backends/gstreamer/__init__.py
   trunk/popcorn/src/backends/manager.py
   trunk/popcorn/src/backends/mplayer/__init__.py
   trunk/popcorn/src/backends/xine/__init__.py

Log:
Defer importing backends until needed.


Modified: trunk/popcorn/src/backends/__init__.py
==============================================================================
--- trunk/popcorn/src/backends/__init__.py      (original)
+++ trunk/popcorn/src/backends/__init__.py      Fri Dec 29 16:39:17 2006
@@ -45,8 +45,3 @@
                 config.append((backend, c))
             except ImportError:
                 continue
-            try:
-                # import the backend
-                exec('import %s' % backend)
-            except ImportError, e:
-                pass

Modified: trunk/popcorn/src/backends/gstreamer/__init__.py
==============================================================================
--- trunk/popcorn/src/backends/gstreamer/__init__.py    (original)
+++ trunk/popcorn/src/backends/gstreamer/__init__.py    Fri Dec 29 16:39:17 2006
@@ -27,11 +27,10 @@
 # -----------------------------------------------------------------------------
 
 # kaa.popcorn imports
-from kaa.popcorn.backends import register
+from kaa.popcorn.backends import register_backend
 from kaa.popcorn.ptypes import *
 
 # player imports
-from player import GStreamer
 from config import config
 
 def get_capabilities():
@@ -62,4 +61,6 @@
     return capabilities, schemes, exts, codecs
 
 
-register("gstreamer", GStreamer, get_capabilities)
+def register():
+    from player import GStreamer
+    register_backend("gstreamer", GStreamer, get_capabilities)

Modified: trunk/popcorn/src/backends/manager.py
==============================================================================
--- trunk/popcorn/src/backends/manager.py       (original)
+++ trunk/popcorn/src/backends/manager.py       Fri Dec 29 16:39:17 2006
@@ -26,7 +26,7 @@
 #
 # -----------------------------------------------------------------------------
 
-__all__ = [ 'register', 'get_player_class', 'get_all_players' ]
+__all__ = [ 'register_backend', 'get_player_class', 'get_all_players' ]
 
 # python imports
 import os
@@ -44,11 +44,30 @@
 
 # internal list of players
 _players = {}
+_backends_imported = False
 
 # get logging object
 log = logging.getLogger('popcorn.manager')
 
-def register(player_id, cls, get_caps_callback):
+def import_backends():
+    global _backends_imported
+    if _backends_imported:
+        return
+
+    for backend in os.listdir(os.path.dirname(__file__)):
+        dirname = os.path.join(os.path.dirname(__file__), backend)
+        if os.path.isdir(dirname):
+            try:
+                # import the backend and register it.
+                exec('from %s import register; register()' % backend)
+            except ImportError, e:
+                pass
+
+    # This function only ever needs to be called once.
+    _backends_imported = True
+
+
+def register_backend(player_id, cls, get_caps_callback):
     """
     Register a new player.
     """
@@ -80,6 +99,8 @@
     player is found, otherwise None.
     """
 
+    import_backends()
+
     # Ensure all players have their capabilities fetched.
     for player_id in _players:
         if _players[player_id]["loaded"]:
@@ -184,4 +205,5 @@
     """
     Return all player id strings.
     """
+    import_backends()
     return _players.keys()

Modified: trunk/popcorn/src/backends/mplayer/__init__.py
==============================================================================
--- trunk/popcorn/src/backends/mplayer/__init__.py      (original)
+++ trunk/popcorn/src/backends/mplayer/__init__.py      Fri Dec 29 16:39:17 2006
@@ -30,17 +30,18 @@
 import kaa.utils
 
 # kaa.popcorn imports
-from kaa.popcorn.backends import register
+from kaa.popcorn.backends import register_backend
 from kaa.popcorn.ptypes import *
 
 # player imports
-from player import MPlayer, _get_mplayer_info
 from config import config
 
 def get_capabilities():
     """
     Return capabilities of the mplayer backend.
     """
+    from player import _get_mplayer_info
+
     capabilities = {
         CAP_OSD : False,
         CAP_CANVAS : False,
@@ -79,5 +80,6 @@
     return capabilities, schemes, exts, codecs
 
 
-# register mplayer backend
-register("mplayer", MPlayer, get_capabilities)
+def register():
+    from player import MPlayer
+    register_backend("mplayer", MPlayer, get_capabilities)

Modified: trunk/popcorn/src/backends/xine/__init__.py
==============================================================================
--- trunk/popcorn/src/backends/xine/__init__.py (original)
+++ trunk/popcorn/src/backends/xine/__init__.py Fri Dec 29 16:39:17 2006
@@ -27,11 +27,10 @@
 # -----------------------------------------------------------------------------
 
 # kaa.popcorn imports
-from kaa.popcorn.backends import register
+from kaa.popcorn.backends import register_backend
 from kaa.popcorn.ptypes import *
 
 # player imports
-from player import Xine
 from config import config
 
 def get_capabilities():
@@ -68,4 +67,6 @@
     return capabilities, schemes, exts, codecs
 
 
-register("xine", Xine, get_capabilities)
+def register():
+    from player import Xine
+    register_backend("xine", Xine, get_capabilities)

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to