 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 26.10.2009, 12:54 Titel: ImageCreate und ImageDestroy |
|
|
Es kam bisher öfters vor, dass ich ein ImageBuffer neu erstellen muss weil sich die Größe des Bildes geändert hat.
Dabei bin ich bisher folgendes maßen vorgegangen:
Code: |
...
imagedestroy Bildbuffer 'Den alten Bildbuffer brauch ich nicht mehr, also Speicher freigeben.
BildBuffer = imagecreate(NeueBreite,NeueHoehe,RGB(255,255,255) 'Neuen Bildbuffer mit neuer größe anlegen
...
|
Schaut man sich die Addressen von alt und neu-buffer an, kann man öfters beobachten das die selbe Addresse auftaucht. Das muss noch nicht unbedingt falsch sein. Aber wenn ich nun Grafikbefehle wie z.B. Line, Circle oder PUT auf den neuen Bildpuffer anwende, kommt es öfters zum Absturz!!
Ein kleines Work-Around behebt dieses problem:
Code: |
...
dim AlterBuffer as any ptr = BildBuffer
BildBuffer = imagecreate(NeueBreite,NeueHoehe,RGB(255,255,255) 'Neuen Bildbuffer mit neuer größe anlegen
imagedestroy AlterBuffer 'Den alten Bildbuffer brauch ich nicht mehr, also Speicher freigeben.
...
|
D.h. ich hab die reihenfolge der Befehle geändert. Nun kommt es nicht mehr vor, das der neue und alte Bildpuffer die selbe addresse besitzen. Und Abstürze beobachte ich auch nicht mehr.
Mit dem Work-Around komm ich gut klar, auch wenn man prinzipiell zu einem kurzen Zeitpunkt mehr Speicher braucht...
Kann sich einer das ursprüngliche Problem erklären? Ist das ein Bug im ImageDestroy/ImageCreate ?
(Vielleicht sollte man das Problem in die Referenz aufnehmen...) |
|
Nach oben |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 26.10.2009, 23:45 Titel: |
|
|
Na ja, da gibt's m.E. 3 Möglichkeiten:
1. Die fbgfx hat nen Bug. Halte ich aber für unwahrscheinlich, da sie ja nicht weiss, dass hier mit der gleichen Variable gearbeitet wird.
2. breite_neu und/oder hoehe_neu sind kleiner als _alt. Dann macht's nichts aus und es ist nachvollziehbar, dass die Speicherverwaltung wieder den gleichen Bereich verwendet.
3. In deinem Testproggi ist ein Bug, der dich meinen lässt, du hättest neuen Speicherplatz reserviert - es passierte aber gar nicht.
Mehr kann ich ohne Code nicht dazu sagen.
VG!
Croco |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 27.10.2009, 11:23 Titel: |
|
|
Leider bekomme ich das problem in einem einfachen beispiel-code nicht nachgestellt.. Bin aber eigentlich davon überzeugt, das dieses Problem nicht nur in meinem größeren Projekt vorliegt..
Insbesondere, wenn sich breite und/oder höhe des Bildbuffers verkleinern beobachte ich meistens den absturz des kompletten programms.. Eigentlich sollte ja grade das kein problem darstellen. Aber anscheinend ists wohl nich ganz so stabil... |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 27.10.2009, 11:42 Titel: |
|
|
Was mir grade dringend fehlt, ist eine idee zu einem guten tutorial zur Gui-Programmierung... Ich bin offen für jeden Vorschlag! Nur bitte kein mammut-projekt als tutorial.. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|