AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign FMX-TBitmap: Nach Gebrauch von Canvas ins threads unbrauchbar?
Thema durchsuchen
Ansicht
Themen-Optionen

FMX-TBitmap: Nach Gebrauch von Canvas ins threads unbrauchbar?

Ein Thema von Renate Schaaf · begonnen am 1. Nov 2020 · letzter Beitrag vom 11. Nov 2020
Antwort Antwort
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
114 Beiträge
 
Delphi 11 Alexandria
 
#1

FMX-TBitmap: Nach Gebrauch von Canvas ins threads unbrauchbar?

  Alt 1. Nov 2020, 11:55
Eigentlich sollten Pixel-Manipulationen mit TBitmapData doch thread-safe sein. Jedenfalls sind sie das meiner Erfahrung nach, aber nur, wenn man mit Bildern arbeitet, die von der Festplatte geladen werden oder in TImageControls gespeichert sind.

Sowie man eine Bitmap per Canvas-Operationen verändert hat, ob im Haupt-Thread oder im Hintergrund, bekommt man Probleme, jedenfalls mit Delphi 10.3.3, und besonders unter Android, wo man doch gerade da darauf angewiesen ist, lange Operationen im Hintergrund auszuführen.
Wenn ich meine Videos nicht im Hintergrund schreiben kann, ist das Cross-Platform-Projekt dafür gelaufen.

Ich hab ein Testprojekt gemacht, in dem Bitmaps mit und ohne Gebrauch von Canvas im Hintergrund rotiert werden (mit Harry Stahls Rotierer übersetzt nach FMX). Ich hänge es mal an, vielleicht hat jemand Interesse mal zu schauen, was da schief läuft. Hoffentlich durch einen Fehler von mir. Es sieht so aus, als wenn nach Gebrauch vom Canvas das RefCounting durcheinander gerät

Besonders schön wäre ja, wenn das alles in 10.4 schon funktioniert.

Danke, Renate
Angehängte Dateien
Dateityp: zip BitmapsInThreads.zip (1,38 MB, 4x aufgerufen)
Renate

Geändert von Renate Schaaf ( 1. Nov 2020 um 11:57 Uhr) Grund: Anhang vergessen
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.871 Beiträge
 
Delphi 12 Athens
 
#2

AW: FMX-TBitmap: Nach Gebrauch von Canvas ins threads unbrauchbar?

  Alt 2. Nov 2020, 20:52
Hallo,

in irgend einer Delphi Version, weiß nur gerade nicht welcher,
war die Threadsicherheit von FMX TBitmap als Neuheit eingeführt worden.

Grüße

TurboMagic
  Mit Zitat antworten Zitat
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
114 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FMX-TBitmap: Nach Gebrauch von Canvas ins threads unbrauchbar?

  Alt 3. Nov 2020, 01:21
Ich meine fmx.graphics.tbitmap in Rio gilt offiziell als thread-safe. Konnte gerade auch nichts konkretes dazu finden. Habe jedoch gerade dies auf stackoverflow gefunden: https://stackoverflow.com/questions/...ted-by-threads. Mal sehen ob ich die Reparatur übertragen kann.

Gruß, Renate
Renate
  Mit Zitat antworten Zitat
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
114 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FMX-TBitmap: Nach Gebrauch von Canvas ins threads unbrauchbar?

  Alt 3. Nov 2020, 09:07
Ich habe versuchsweise FMX.Canvas.D2D für den Privatgebrauch gepatcht mit TMonitors, wie in https://stackoverflow.com/questions/...ted-by-threads vorgeschlagen, und sehe keinen Unterschied unter Win. Das Analogon zu Android wäre ja FMX.Types3D, und da kapier ich erstmal nichts.

Für den Normalgebrauch scheint aber der Trick, nach Benutzung von TBitmap.Canvas die Pixels in eine neue Bitmap zu kopieren und die alte zu (wie übersetzt man free auf deutsch?), jedenfalls dieser Trick funktioniert in Normalsituationen ganz gut.
Mein Beispiel ist schlecht gewählt, denn beim wiederholten Rotieren wird dauernd assign für die gleiche BM ausgeführt, und das führt auf die Dauer zu Problemen (hat es jedenfalls früher).

Jedenfalls werde ich mal weiter testen, und bin natürlich für Ideen von Euch extrem dankbar

Renate
Renate
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
552 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: FMX-TBitmap: Nach Gebrauch von Canvas ins threads unbrauchbar?

  Alt 3. Nov 2020, 18:37
... freizugeben...
  Mit Zitat antworten Zitat
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
114 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: FMX-TBitmap: Nach Gebrauch von Canvas ins threads unbrauchbar?

  Alt 3. Nov 2020, 19:35
Zitat:
... freizugeben...
Danke, merk ich mir
Renate
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:01 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