Hi !
Eigentlich ist das kein bug, aber nachdem man es fixen kann möchte ich anfragen ob man das als Bugfix ins CVS einchecken könnte oder ob es eine bessere Möglichkeit gibt:
Für den Mopheus Screensaver überschreibe ich mir ja die action routinen aus der ActionMap.py wie folgt:
def morpheus_action(self, context, action):
global morpheus_lastkey
morpheus_lastkey=time()
print "[MORPHEUS] key"
print " ".join(("action -> ", context, action))
if self.actions.has_key(action):
res = self.actions[action]()
if res is not None:
return res
return 1
else:
print "unknown action %s/%s! typo in keymap?" % (context, action
return 0
ActionMap.action=morpheus_action
def morpheus_numberaction(self, contexts, action):
global morpheus_lastkey
morpheus_lastkey=time()
print "[MORPHEUS] number key"
numbers = ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
if (action in numbers and self.actions.has_key(action)):
res = self.actions[action](int(action))
if res is not None:
return res
return 1
else:
return ActionMap.action(self, contexts, action)
NumberActionMap.action=morpheus_numberaction
Dadurch stehen dem screensaver immer der timestamp des letzten keyevents zur verfügung. Prinzipiell wäre es schön wenn man sich den zusammen mit dem keycode als event schicken könnten, dann müsste ich das nicht so über eine globale Variable machen, aber das ist eine andere Geschichte
Und ja ich weis das ich die jeweilige action vorher auf eine _original sichern könnte und in meiner morpheus_* dann wieder aufrufen.
Das Problem ist aber ein anderes:
Dadurch das in der GlobalActions.py bereits VOR dem renamen globalActionMap = ActionMap( ["GlobalActions"] ) definiert wird und obiges rename dabei ignoriert wird bekommt man wenn mit obigen umbenannten action routinen Standby auf der box macht einen wirklich (!) schönen python crash:
action -> GlobalActions power_up
enter standby
FATAL: unbindAction with illegal python reference
getResolvedKey config.plugins.crashlogautosubmit.sendAnonCrashlog failed !! (Typo??)
getResolvedKey config.plugins.crashlogautosubmit.addNetwork failed !! (Typo??)
getResolvedKey config.plugins.crashlogautosubmit.addWlan failed !! (Typo??)
main thread is non-idle! display spinner!
[EPGC] abort non avail schedule other reading
[EPGC] abort non avail viasat reading
[EPGC] abort non avail mhw reading
[EPGC] nownext finished(1289765558 )
main thread is non-idle! display spinner!
Killed
Dieser ist auch durch neuerliches renamen/definieren der globalActionMap NICHT wegzukrigen (input ist aber natürliuch willkommen wie man den sauber wegkriegen kann - ich habe es stundenlang probiert und war nicht erfolgreich, aber vieleicht bin ich einfach zu Blöde)
Das EINZIGE was wirklich hilft ist statt der Zeile in der Standby.py
from GlobalActions import globalActionMap
folgende Zeile reinzumachen:
globalActionMap = ActionMap( ["GlobalActions"] )
Also einfach statt die vorher definierte globalActionMap zu importieren (die zum original der unumbenannten ActionMap refereinziert und dann den crash verursacht wenn man sie aufruft) diese neu zu definieren womit sauber auch im Standby.py die umbenannten ActionMap verwendet wird und dann auch problemlos beim Standby deaktiviert/aktiviert werden kann.
Sonst konnte ich durch die Änderung dieser einen Zeile bis jetzt keine negativen Effekte feststellen, es wäre also nett wenn jemand entweder einen Tipp geben könnte wie man den crahs sauber loswird, oder falls ich nicht zu blöde bin diesen Workaround ins CVS einchecked damit man auch diec action Handler sauber in einem Plugin auf eigene handler umbenennen kann und ich mir es spare jedesmal die Standby.py entsprechend zu patchen.
LG
gutemine