... und der zugrundeliegende Fehler existiert bis heute noch in Delphi XE!
Der "Fehler" ist eigentlich das alle
GDI-Ressourcen eine Thread-Affinität anhaftet. Sie dürfen eigentlich nur im erzeugten Thread verwendet werden. Die fehlende
VCL-Threadsicherheit ist der
GDI-Thread-Affinität geschultet. Ein einelne Anpassung hier löst nicht das grundsätzliche Problem.
Das liegt daran, dass die Methode TJPEGImageFix.Draw nicht Thread-Sicher ist.
Wie vieles ander in der
VCL auch nicht. Deshalb: Alles was mit
VCL/
GUI zu tun hat immer im Hauptthread erledigen oder dafür sorgen das die Ressourcen im entsprechenden Thread erzeugt werden. Wobei hier globale instanzen wie TApplcation/TScreen hier einen trotzdem einen Strich durch die Implementierung machen können.
... der Zähler lief fröhlich hoch, bis der Prozess keinen Speicher mehr hatte...
Du meinst eher: Bis Windows dem Prozess den "
GUI-Ressourcen-Hahn zugedeht hat". Den "normaler" Speicher hätte der Prozess wohl noch GB-Weise anfordern könnnen.
Windows Vista - Eine neue Erfahrung in Fehlern.