Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   MacOS: Bitmap drucken und (GlobaluseMetal := True) crasht (https://www.delphipraxis.net/207915-macos-bitmap-drucken-und-globalusemetal-%3D-true-crasht.html)

Harry Stahl 15. Mai 2021 22:51

MacOS: Bitmap drucken und (GlobaluseMetal := True) crasht
 
Wenn ich meine MACOS-Anwedung mit "GlobalUseMetal := True" kompiliere, crasht das Programm an dieser Stelle:

Delphi-Quellcode:
PrintPage(Scrollbox1.Bitmap.Canvas, x);
// Und das folgende crasht
Printer.Canvas.DrawBitmap (Scrollbox1.Bitmap, RectF (0,0,Scrollbox1.Bitmap.Width, Scrollbox1.Bitmap.Height),
            RectF (0,0, Printer.PageWidth, Printer.PageHeight), 1, false);
Und zwar entsteht der Fehler in Unit FMX.Canvas.Mac, TcanvasQuartz.Dodrawbitmap in der Zeile (1505):

Delphi-Quellcode:
ImageRef := TQuartzBitmap(ABitmap.Handle).GetImage;
Wenn ich das Programm ohne GlobalUseMetal komiliere, funktioniert der Druck.

Ist das schon mal jemanden untergekommen, evtl. ein WorkAround bekannt?

Ach ja, Delhii 10.4.2 und MacOS Bigsur (aber auch unter Mojave)

CHackbart 16. Mai 2021 20:17

AW: MacOS: Bitmap drucken und (GlobaluseMetal := True) crasht
 
Hallo Harry,

das ist mit ziemlicher Wahrscheinlichkeit ein Bug. TCanvasQuartz ist die alte Anzeigebibliothek für MacOS und wird bei aktiviertem Metal ziemlich sicher gar nicht initialisiert. Übrigens hab ich nie mit FMX und TCanvasQuartz eine normale Anzeige auf meinem iMac zum Laufen bekommen. Ich musste immer was eigenes in OpenGL schreiben, aber Metal ist echt cool. Ich kriege hier in 5k knapp 1000 Frames, wenn ich ein 4k HEVC Video abspiele. Was mich dabei allerdings wundert ist, ich dachte GlobalPreferredFramesPerSecond in Kombination mit GlobalEventDrivenDisplayUpdates limitiert das auf 60 Frames.

Christian

Harry Stahl 16. Mai 2021 23:52

AW: MacOS: Bitmap drucken und (GlobaluseMetal := True) crasht
 
Zitat:

Zitat von CHackbart (Beitrag 1489594)
Hallo Harry,

das ist mit ziemlicher Wahrscheinlichkeit ein Bug. TCanvasQuartz ist die alte Anzeigebibliothek für MacOS und wird bei aktiviertem Metal ziemlich sicher gar nicht initialisiert. Übrigens hab ich nie mit FMX und TCanvasQuartz eine normale Anzeige auf meinem iMac zum Laufen bekommen. Ich musste immer was eigenes in OpenGL schreiben, aber Metal ist echt cool. Ich kriege hier in 5k knapp 1000 Frames, wenn ich ein 4k HEVC Video abspiele. Was mich dabei allerdings wundert ist, ich dachte GlobalPreferredFramesPerSecond in Kombination mit GlobalEventDrivenDisplayUpdates limitiert das auf 60 Frames.

Christian

Seltsamerweise wird die gleiche Stelle, wenn es knallt auch durchlaufen, wenn GlobalMetal nicht aktiviert ist (wohl default).

Na ja, werde morgen abend mal ein Demo produzieren und eine QC-Meldung machen...

Harry Stahl 24. Mai 2021 22:37

AW: MacOS: Bitmap drucken und (GlobaluseMetal := True) crasht
 
So, leider bin ich erst jetzt dazu gekommen, einen QC-Beitrag zu erstellen, jetzt ist er online mit demo-app.

Also wer unter MacOS Bitmaps mit Metal drucken will, kann die Behebung des Fehlers ja gerne mit einem Vote unterstützen.

https://quality.embarcadero.com/browse/RSP-34053


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz