Vor kurzem habe ich ein Windows-Laptop bekommen, welches eine umschaltbare Grafikkarte enthält. Eine Intel-Grafikkarte und einen dedizierten Chip von ATI.
Dies führt in Delphi Anwendungen, welche Firemonkey benutzen zu Problemen. Die Anwendung blinkt, flackert, Fenster werden schwarz etc, wenn der Computer die dedizierte Grafikkarte verwendet.
Erzwingt man die Benutzung der Intel-Grafikkarte, verschwinden die Probleme. Dies ist aber keine gute Lösung, welche man seinen Benutzern empfehlen kann.
Meine Vermutung ist, dass es ein Problem/Bug in Firemonkey ist. Das Problem tritt sowohl in Delphi XE 4 als auch XE 7 auf.
Ich habe ein Video erstellt, welches das Problem darstellt (englisch):
Nun zur Lösung, bzw. dem Workaround. Firemonkey verwendet die Grafikkarte zur Beschleunigung der GUI. Also könnte die Deaktivierung dieser das Problem beheben. In der Tat ist das der Fall.
Meine Anwendungen verwenden keine besonderen GUI-Effekte, so dass dies keine sichtbaren Auswirkungen auf die Geschwindigkeit der Anwendung hat.
Um die Grafikbeschleunigung zu deaktivieren, muss man die *.dpr
Datei in Delphi bearbeiten. Der Uses-Klausel fügen wir folgende zwei Zeilen hinzu:
uses
FMX.Forms,
FMX.Types,
...
Anschließend deaktivieren wir alle Hardwarebeschleunigung in der {code}
Sektion:
begin
Application.Initialize;
{code}
fmx.types.GlobalUseHWEffects:=false;
FMX.Types.GlobalDisableFocusEffect:=false;
FMX.Types.GlobalUseDirect2D:=false;
FMX.Types.GlobalUseDX10Software:=false;
{code}
...
Application.Run;
end.
Nach dem Kompilieren sollte die Anwendung wieder ohne Probleme funktionieren. Tests auf OSX haben auch hier keine negativen Auswirkungen ergeben.