Merge branch 'master' of git.opendreambox.org:/git/enigma2
authorFraxinas <andreas.frisch@multimedia-labs.de>
Wed, 23 Feb 2011 13:13:42 +0000 (14:13 +0100)
committerFraxinas <andreas.frisch@multimedia-labs.de>
Wed, 23 Feb 2011 13:13:42 +0000 (14:13 +0100)
lib/python/Components/PluginComponent.py
lib/python/Plugins/Plugin.py
lib/python/Screens/Standby.py
main/enigma.cpp

index e5194b28c9922fd9d3711da69dd6dc67bd4c3959..93b089001630cf5d4841e29cf21c9447b6a885e0 100755 (executable)
@@ -14,6 +14,7 @@ class PluginComponent:
        def __init__(self):
                self.plugins = {}
                self.pluginList = [ ]
+               self.installedPluginList = [ ]
                self.setPluginPrefix("Plugins.")
                self.resetWarnings()
 
@@ -73,6 +74,7 @@ class PluginComponent:
                                                        plugins = [ plugins ]
 
                                                for p in plugins:
+                                                       p.path = path
                                                        p.updateIcon(path)
                                                        new_plugins.append(p)
 
@@ -91,17 +93,25 @@ class PluginComponent:
                #ignore already installed but reloaded plugins
                for p in plugins_removed: 
                        for pa in plugins_added:
-                               if pa.name == p.name and pa.where == p.where:
+                               if pa.path == p.path and pa.where == p.where:
                                        pa.needsRestart = False
 
                for p in plugins_removed:
                        self.removePlugin(p)
 
                for p in plugins_added:
-                       self.addPlugin(p)
-               
+                       if self.firstRun or p.needsRestart is False:
+                               self.addPlugin(p)
+                       else:
+                               for installed_plugin in self.installedPluginList:
+                                       if installed_plugin.path == p.path:
+                                               if installed_plugin.where == p.where:
+                                                       p.needsRestart = False
+                               self.addPlugin(p)
+                                               
                if self.firstRun:
                        self.firstRun = False
+                       self.installedPluginList = self.pluginList
 
        def getPlugins(self, where):
                """Get list of plugins in a specific category"""
@@ -124,8 +134,6 @@ class PluginComponent:
        def clearPluginList(self):
                self.pluginList = []
                self.plugins = {}
-               self.firstRun = True
-               self.restartRequired = False
 
        def shutdown(self):
                for p in self.pluginList[:]:
index 9ecdbc26de3af3420ea47e8c7ac947ba239cf58a..e26174a1c56f7d244cfbf36e2bf868ae5a6b0fbc 100755 (executable)
@@ -65,6 +65,7 @@ class PluginDescriptor:
                self.name = name
                self.internal = internal
                self.needsRestart = needsRestart
+               self.path = None
                if isinstance(where, list):
                        self.where = where
                else:
index 1a7ebbd1ae61b09fa7c5716cae28fe5475ad7884..94a56ee44da0d6993ce8b7c7b89930c1cbd6b9f1 100644 (file)
@@ -160,14 +160,9 @@ class TryQuitMainloop(MessageBox):
                        self.conntected=False
                        self.session.nav.record_event.remove(self.getRecordEvent)
                if value:
-                       # hack .. we dont like to show any other screens when this screen has closed
-                       self.onClose = [self.__closed]
-                       self.session.dialog_stack = []
-                       self.session.summary_stack = [None]
-               MessageBox.close(self, True)
-
-       def __closed(self):
-               quitMainloop(self.retval)
+                       quitMainloop(self.retval)
+               else:
+                       MessageBox.close(self, True)
 
        def __onShow(self):
                global inTryQuitMainloop
index 1cdd867ba9e2b9a20250e36b762168300862f0f0..91645d893b9f0b694a2a91927d6ff67d59105ce1 100644 (file)
@@ -251,8 +251,9 @@ int main(int argc, char **argv)
 
        {
                gPainter p(my_lcd_dc);
-               p.resetClip(eRect(0, 0, 132, 64));
+               p.resetClip(eRect(ePoint(0, 0), my_lcd_dc->size()));
                p.clear();
+               p.flush();
        }
 
        return exit_code;