Für alle technisch Interessierten bzw. damit andere nicht auch darauf hereinfallen (so wie ich und auch der ursprüngliche Author des mpv-plugin-xrandr-Scripts zum automatischen Umschalten der Framerate)
Ich hatte ja das Problem, dass Kodi nach einem Resolutionswitch innerhalb eines LUA-Scriptes unter mpv nicht immer zuverlässig wieder zurück auf die gewünchte Standard-Auflösung nach Beendigung von mpv zurückschaltete, obwohl die eigentliche Screen-Resolution korrekt umgeschaltet hatte.
Das Problem ist recht simpel (wenn man erst einmal drauf gekommen ist):
Funktionen in LUA-Scripten unter mpv, welche auf Event- bzw. Property-Basis getriggert werden, werden grundsätzlich asynchron zu mpv ausgeführt. Triggert man nun auf den Event "Shutdown" von mpv und schaltet in der entsprechenden LUA-Script-Funktion per XRANDR die Auflösung um, dann kann es aufgrund der asynchronen Verarbeitung des LUA-Scripts zu folgender unerwünschten Reihenfolge kommen, die dann das Problem mit Kodi auslöst:
1.) MPV triggert LUA-Scriptfunktion auf Basis des Shutdown-Events an
2.) Das MPV-Player-Window wird geschlossen
3.) Damit rückt das Kodi-Window wieder in den Vordergrund
4.) Das durch den Shutdown-Event angetriggerte Umschalten der Resolution wird es jetzt durchgeführt bzw. abgeschlossen
5.) Der MPV-Prozess wird vollständig beendet
Aufgrund dessen, dass das Kodi-Window vor dem XRANDR-Befehl wieder in den Vordergrund rückt und erst dann die Resolutionänderung erfolgt, bekommt Kodi diese Resolutionänderung nicht korrekt mit und skaliert nun die GUI auf eine fehlerhafte Resolution.
Lösung: Statt eines Funktionstriggers auf Event/Property-Basis einen Hook auf Basis von "on_after_end_file" verwenden, da Hooks synchron in MPV eingebettet sind. So ist sichergestellt, das die Resolutionänderung erfolgt bevor das MPV-Player-Window geschlossen und das Kodi-Window wieder in den Vordergrund rückt.
Das Problem, dass MPV manchmal den Fokus nach einem Resolution/Framerate-Switch verlor begründet sich ebenfalls in der asynchronen LUA-Verarbeitung bei entsprechend getriggerten Funktionen. Problem beim Start von MPW ist hierbei aber leider, dass es keinen passenden Hook gibt, der zu einem Zeitpunkt greift zu dem MPV bereits die Angaben zu Auflösung und Framerate aus dem abzuspielenden Content-File bereitstellen kann.
Das Resolution-/Framerate-Switching funktioniert nun mit den entsprechenden Workarounds. Aber elegant ist es nicht und ich überlege daher eher die Logik in einen MPV-Wrapper zu packen, denn das LUA-Scripting unter MPV ist derzeit hierfür nicht wirklich geeignet.