take care of hotplug events just when the infobar is execing (no other menu
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 25 Jun 2008 11:50:01 +0000 (11:50 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Wed, 25 Jun 2008 11:50:01 +0000 (11:50 +0000)
is visible)

lib/python/Plugins/Extensions/MediaScanner/plugin.py
lib/python/Screens/InfoBar.py

index c5f6043..5b320ea 100644 (file)
@@ -1,5 +1,6 @@
 from Plugins.Plugin import PluginDescriptor
 from Components.Scanner import scanDevice
 from Plugins.Plugin import PluginDescriptor
 from Components.Scanner import scanDevice
+from Screens.InfoBar import InfoBar
 
 def execute(option):
        print "execute", option
 
 def execute(option):
        print "execute", option
@@ -57,12 +58,17 @@ def menuHook(menuid):
 global_session = None
 
 def partitionListChanged(action, device):
 global_session = None
 
 def partitionListChanged(action, device):
-       pass
-#      if action == 'add' and device.is_hotplug:
-#              print "mountpoint", device.mountpoint
-#              print "description", device.description
-#              print "force_mounted", device.force_mounted
-#              mountpoint_choosen((device.description, device.mountpoint, global_session))
+       if InfoBar.instance:
+               if InfoBar.instance.execing:
+                       if action == 'add' and device.is_hotplug:
+                               print "mountpoint", device.mountpoint
+                               print "description", device.description
+                               print "force_mounted", device.force_mounted
+                               mountpoint_choosen((device.description, device.mountpoint, global_session))
+               else:
+                       print "main infobar is not execing... so we ignore hotplug event!"
+       else:
+                       print "hotplug event.. but no infobar"
 
 def sessionstart(reason, session):
        global global_session
 
 def sessionstart(reason, session):
        global global_session
index 99979b1..8f400d2 100644 (file)
@@ -40,6 +40,7 @@ class InfoBar(InfoBarBase, InfoBarShowHide,
        Screen):
        
        ALLOW_SUSPEND = True
        Screen):
        
        ALLOW_SUSPEND = True
+       instance = None
 
        def __init__(self, session):
                Screen.__init__(self, session)
 
        def __init__(self, session):
                Screen.__init__(self, session)
@@ -69,6 +70,11 @@ class InfoBar(InfoBarBase, InfoBarShowHide,
                        })
 
                self.current_begin_time=0
                        })
 
                self.current_begin_time=0
+               assert InfoBar.instance is None, "class InfoBar is a singleton class and just one instance of this class is allowed!"
+               InfoBar.instance = self
+
+       def __onClose(self):
+               InfoBar.instance = None
 
        def __eventInfoChanged(self):
                if self.execing:
 
        def __eventInfoChanged(self):
                if self.execing: