Sry für den Doppelpost, aber sonst gehts wahrscheinlich unter:
Du scheinst beim beenden Objekte nicht freizugeben, wenn ich FastMM mit Report Memoryleaks in der Demo einbinde kommt das:
Zitat:
--------------------------- tut_basics.exe: Memory Leak Detected --------------------------- This application has leaked memory. The small block leaks are (excluding expected leaks registered by pointer):
1 - 12 bytes: TSDLJoySticks x 1
13 - 20 bytes: TSDLInputManager x 1, TList x 1
29 - 36 bytes: TFB_LinkedList x 1, TSDLTicks x 1, TSDLKeyBoard x 1
53 - 60 bytes: TSDLMouse x 1
69 - 76 bytes: Unknown x 1
301 - 316 bytes: TFBU_SphereEmitter x 1
Note: To obtain a log file containing detail on memory leaks, enable the "FullDebugMode" and "LogMemoryLeakDetailToFile" conditional defines. To disable this memory leak check, undefine "EnableMemoryLeakReporting".
--------------------------- OK ---------------------------
Das SDL-Zeug liegt daran dass im Destruktor von dem TMainForm das inherited fehlt.
FParticles vom Context wird nicht freigegeben, da fehlt iwo nach 1693 ein
Code:
FreeObj(FParticles);
Und der Destruktor vom TFBU_EffectManager fehlt gleich ganz, ich würd sowas vorschlagen:
Code:
destructor TFBU_EffectManager.Destroy;
var
i:Integer;
begin
for i :=low(FEffects)toHigh(FEffects)do
FEffects[i].Free;
inherited;
end;
Und die TList die übrigbleibt ist ein fehlendes "FJoyStickList.Free" in Zeile 272 von der sdlinput.
_________________ 2+2=5 For extremely large values of two
Sry für den Doppelpost, aber sonst gehts wahrscheinlich unter:
Du scheinst beim beenden Objekte nicht freizugeben, wenn ich FastMM mit Report Memoryleaks in der Demo einbinde kommt das:
Zitat:
...
Das SDL-Zeug liegt daran dass im Destruktor von dem TMainForm das inherited fehlt.
FParticles vom Context wird nicht freigegeben, da fehlt iwo nach 1693 ein
Code:
FreeObj(FParticles);
Und der Destruktor vom TFBU_EffectManager fehlt gleich ganz, ich würd sowas vorschlagen:
Code:
destructor TFBU_EffectManager.Destroy;
var
i:Integer;
begin
for i :=low(FEffects)toHigh(FEffects)do
FEffects[i].Free;
inherited;
end;
Und die TList die übrigbleibt ist ein fehlendes "FJoyStickList.Free" in Zeile 272 von der sdlinput.
Ja das is wirklich Service ^^
Ist notiert.
Der Destruktor für den EffectManager fehlt in dieser Form nicht ohne Grund. Ich kann dir grade kein Szenario ausm FF nennen, aber der EffectManager ist ein Zusatztool, bei dem es auch möglich sein soll, es während der Laufzeit nicht mehr zu verwenden und trotzdem die instanzierten Emitter oder eigene TFBU_Effect Objekte zu behalten. Einen Basisdestruktor hat übrigens jede Klasse.
Den von dir beschriebenen Effekt kann man einfach durch folgenen Code erreichen:
Code:
// Removes and frees all effects in the next update cycle
procedure RemoveAll;
EffectManager.RemoveAll();
EffectManager.Update(0);
EffectManager.Free();
Zu FCount:
Nein. Ist FCount = 0, dann läuft die for-Schleife nicht an und es gibt auch keine Division durch 0.
Um die Instanzen werde ich mich bei Zeiten mal kümmern
MFG
_________________ I'm not the signature, I'm just cleaning the floor...
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hi Kyro,
ich hab mir gerade mal auf SF deine Projektseite angeguckt und war erstaunt wie wenig deine Engine genutzt wird. Eigentlich ist die ja ein richtiges Schmuckstück.
Vielleicht ist die Lizenz ein Problem. Musst du LGPL nehmen, oder kannst du auch eine andere Lizenz anbieten? Falls ja, dann probiere mal die EPL (ersetzt die CPL) oder die MPL. Oder falls du keinen Wert auf Ruhm und Ehre legst, eine BSD Lizenz.
Dann nutzen bestimmt auch mehr deine Lib.
Außerdem könntest du deine SF Homepage einfach mal aktualisieren und z.B. diesen Thread bei SF als "Support Thread" angeben. Und auch eine News zum DGL Award oder sowas bringen. Halt bisl Aktivität zeigen. Zumindest alle 4-6 Wochen einfach mal was schreiben, so dass Interessenten sehen, dass die Lib noch aktuell ist. Z.B. wenn jemand deine Lib einsetzt einfach mal ne Meldung draus machen.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Zu aller erst finde ich es gut, dass die Arbeit an Fireblade weiter gade.
Für Architekturdiskussionen findest du hier im Forum sicher willige Diskussionspartner. Wichtig wäre, dass du deine Gedanken mal in eine Art Whitepaper bringst und dort zeigst wie man die Lib später mal nutzen können soll. Das würde bestimmt auch gut Einsteigern helfen abzuschätzen ob und wie schwer deine Lib in ihre Projekte zu integrieren ist.
Hast du Feedback ob und wo deine Lib schon im Einsatz ist. Die interessieren sich bestimmt im besonderen Maße für das Whitepaper.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Make Current finde ich persönlich etwas nervig. Das geht zu sehr in richtung Statemachine. Ich finde ein Handle, dass man an jede Funktion übergeben muss, besser. Interfaces wären das Nonplusultra.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Das oder halt nur Plainfunktionen, die immer einen Parameter nehmen, der ein Handle auf das Objekt darstellt. Statemachine ist immer recht unübersichtlich, imo. Aber du musst wegen mir jetzt nicht deine Api umstoßen
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Ich steh jetz vllt etwas dumm da, aber kann mal einer kurz umreißen, was mit MakeCurrent und Plainfunctions gemeint ist? Hab sowas noch nie gehört (vllt kenn ich das aber auch nur unter anderem Name)
fbCreateContext(@FContext); fbActivateContext(FContext); // bzw. auch MakeCurrent... und hier eig. unnötig aber zur Demonstration fbAddTexture(FTexture, 2, 4); fbSetPhysicsModel(FB_PHYSICSMODEL_REALISTIC);
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Properties als spezielles reserviertes Wort gibts in Java nicht. Felder werden da einfach als "Klassenvariablen" angelegt. In Interfaces gibts aber keine Variablen. In Interfaces gibts nur Methoden oder Konstanten in Java. Als Alternative gibt es Getter und Setter welche dann die Implementierenden Klassen mit Funktion füllen müssen.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Man kann pascal-interfaces so und so nicht direkt in Java verwenden. Da muss mindestens noch ne Portion "Glue-Code" in C++/pascal dazwischen. Wird also recht umständlich.
Tellerrand für Javaianer: In Scala gibt's übrigens properties (Auch in interfaces. Heißen dort Traits). Ist für Interoperabilität aber alles andere als hilfreich in diesem Fall
Tante Edith meint: In Pascal geht der Glue-Code freilich auch
_________________ "Für kein Tier wird so viel gearbeitet wie für die Katz'."
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@Kyro: Du könntest dich ja mal mit Lossy eX kurzschließen. Der hat die glBitmap ja auch so verpackt, dass andere sie nutzen können. Vielleicht hat er noch Ideen und Tips.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.