shutdown bdpoll thread on e2 shutdown
authorghost <andreas.monzner@multimedia-labs.de>
Tue, 26 Apr 2011 11:05:58 +0000 (13:05 +0200)
committerghost <andreas.monzner@multimedia-labs.de>
Tue, 26 Apr 2011 11:05:58 +0000 (13:05 +0200)
this is needed for newer python versions... thanks to ritzmo
fixes bug #671

lib/python/Plugins/SystemPlugins/Hotplug/plugin.py

index 84cbbcb62d605790db46280ec427e6f9c41abe1c..21b214a54589d9e3cff31f899d7cd2933ca41c6f 100644 (file)
@@ -50,12 +50,12 @@ IOC_TYPESHIFT = (IOC_NRSHIFT+IOC_NRBITS)
 BLKRRPART = ((0x12<<IOC_TYPESHIFT) | (95<<IOC_NRSHIFT))
 
 def autostart(reason, **kwargs):
 BLKRRPART = ((0x12<<IOC_TYPESHIFT) | (95<<IOC_NRSHIFT))
 
 def autostart(reason, **kwargs):
+       global bdpoll
        if reason == 0:
                print "starting hotplug handler"
 
                if fileExists('/dev/.udev'):
                        global netlink
        if reason == 0:
                print "starting hotplug handler"
 
                if fileExists('/dev/.udev'):
                        global netlink
-                       global bdpoll
                        from enigma import eSocketNotifier, eTimer, ePythonMessagePump
                        import socket
                        from select import POLLIN, POLLPRI
                        from enigma import eSocketNotifier, eTimer, ePythonMessagePump
                        import socket
                        from select import POLLIN, POLLPRI
@@ -295,6 +295,12 @@ def autostart(reason, **kwargs):
                        factory = Factory()
                        factory.protocol = Hotplug
                        reactor.listenUNIX("/tmp/hotplug.socket", factory)
                        factory = Factory()
                        factory.protocol = Hotplug
                        reactor.listenUNIX("/tmp/hotplug.socket", factory)
+       else:
+               if bdpoll:
+                       bdpoll.running = False
+                       bdpoll.timeout() # XXX: I assume the timer is shut down before it executes again, so release the semaphore manually
+                       bdpoll.join()
+               bdpoll = None
 
 def Plugins(**kwargs):
        return PluginDescriptor(name = "Hotplug", description = "listens to hotplug events", where = PluginDescriptor.WHERE_AUTOSTART, needsRestart = True, fnc = autostart)
 
 def Plugins(**kwargs):
        return PluginDescriptor(name = "Hotplug", description = "listens to hotplug events", where = PluginDescriptor.WHERE_AUTOSTART, needsRestart = True, fnc = autostart)