Registriert: Fr Jul 14, 2006 13:08 Beiträge: 117 Wohnort: Berlin
hi Phobeus, iOnOs und Flo und weitere ..
in diesem Thread über Speicherleaks (von Shaddow) hat sich ein Fehler in der DGLSDK herausgestellt.
Die Lösung und Erklärung dazu, befindet sich in dem folgendem Posting von mir.
Shaddow hats dann anschließend getestet und bestätigt.
Nun stellt sich die Frage , "wer ändert das dann ab?"
Ihr 3 taucht als Authoren/Verantwortliche auf, also werdet ihr es wissen.
Danke von mir und Shaddow (und weiteren Usern die es gebrauchen werden )
Gruß Uweq
_________________ Die 3 Totfeinde eines Programmierers ? a) Tageslicht b) frische Luft c) ..und das ständige Gebrüll der Vögel
Zuletzt geändert von uweq am Sa Okt 28, 2006 12:24, insgesamt 1-mal geändert.
Hatte ionos auch schon mal eine kleine Funktion geschickt für die EasySDLFonts, er wollte es wohl einbauen, aber ich weiss net, obs schon drin ist.
Mit der Funktion bekommt man die Höhe und Breite aller Buchstaben, wodurch man dann sehr einfach Textlaengen und -hoehen ohne lästiges Rechnen oder die Windowsfunktion TextLength herausbekommt. Funkt alles über die SDL_TTF
Code:
TFontSizes =Array[0..255]ofrecord
CharWidth :Word;
CharHeight :Word;
end;
function CalculateFontSizes (Font: TFont): TFontSizes;
var minX, maxX, minY, maxY, advance, nWidth, i:Integer;
TTF_GlyphMetrics(pFont, i, minX, maxX, minY, maxY, advance);
FontSize[i].CharWidth:= maxX-minX;
FontSize[i].CharHeight:= maxY-minY;
end;
Result:=FontSize;
TTF_CloseFont(pFont);
end;
Natuerlich kann man den Typ nach Belieben aendern, man muss eben dann auch den Code angleichen.
die Funktion DARF nur einmal pro Font aufgerufen werden. Denn es wird bei jedem Aufruf eine neue Font erstellt und das ist bei regelmaessigem Aufruf speicherintensiv. Ich hatte es mal im OnIdle drin, und hatte dadruch dann jede Sekunde 6mb speicherzuwachs. Aber einmaliges aufrufen bemerkt man kaum. Glaube das kostet 5 - 10kb.
Ich habe zb eine klasse Fonts in meinem Fontmanager und diese Fonts haben eben als Variable die Fontsizes, die im Oncreate des Fonts mithilfe dieser Funktion bestimmt werden und abgespeichert werden.
Errechen - auch wenn ich denke, dass man das grad noch selbst hinbekommt - ginge dann zb so:
Code:
function TFontManager.GetTextWidth(const FontName, Text:string):Integer;
Registriert: Sa Jan 01, 2005 17:11 Beiträge: 2068
Programmiersprache: C++
uweq hat geschrieben:
... in diesem Thread über Speicherleaks (von Shaddow) hat sich ein Fehler in der DGLSDK herausgestellt. Die Lösung und Erklärung dazu, befindet sich in dem folgendem Posting von mir. ...
Ich leite das mal per Mail an Phobeus weiter, damit er es ändert. Begründung für dieses Weiterleiten s.u..
Shaddow hat geschrieben:
Hatte ionos auch schon mal eine kleine Funktion geschickt für die EasySDLFonts, er wollte es wohl einbauen, aber ich weiss net, obs schon drin ist.
Nein, denn ich habe dank der Telekom nur an der Uni Internet und dort ist kein SVN installiert...
Ansonsten ist noch ein weitere Sachen an EasySDLFonts zu tuhen, was mit den Rendermethoden zu tun hat:
Bei der richtigen Blendfunktion kann man alle weiteren Rendermethoden wegschmeissen.
Dies wird auch alles passieren, !sobald! ich daheim Internet habe.
Desweiteren speichert TFont diese Informationen schon, es gibt aktuell nur noch keine Möglichkeit um auf sie zuzugreifen.
Registriert: Fr Jul 14, 2006 13:08 Beiträge: 117 Wohnort: Berlin
sinnlos nur die Versionsnummer hochzutreiben wenn mal ein Fehler gefunden wurde, bringt ja nix.
Und daß ein Bug-Hinweis nicht verloren geht, ist auch klar. Also, wenn's dann soweit ist, werdet ihr schon das Richtige daraus machen. Es ging halt nur um die Mitarbeit. Schließlich ist das OGL-Forum mehr als nur Team-Arbeit.
Gruß Uwe
(der leider momentan überhaupt nicht zum proggen kommt)
Uwe
_________________ Die 3 Totfeinde eines Programmierers ? a) Tageslicht b) frische Luft c) ..und das ständige Gebrüll der Vögel
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.