asrael hat geschrieben:Nach einigen weiteren Tests: Es scheint so, dass Filer beim Starten eines Films noch einmal ordentlich Speicher anzieht. Dadurch, dass ich meine 7,8 MB (!!!) verbrauchende Improbox mal zeitweilig rausgeschmissen habe, konnte ich den (absolut reproduzierbaren) Absturz beim Filmstart eliminieren.
Also IB sollte nicht so viel verbrauchen
Und Filer sollte da eigentlich keinen Speicher anziehen.
asrael hat geschrieben:Kannst Du sagen, ob Filer beim Filmstart wesentlich mehr macht als die entsprechende API-Funktion aufzurufen? Dann könnte ich mir den Absturz zumindest erklären und bräuchte nicht weiter zu suchen.
Nö:
Code: Alles auswählen
DBChDir (ItemList[*pSelected].FileDBIndex);
TAP_Hdd_PlayTs(&StringDB [FileDB [ItemList[*pSelected].FileDBIndex].pFileName]);
ret = FileDB [ItemList[*pSelected].FileDBIndex].LastBlock - 75;
if (ret < 0) ret = 0;
TAP_Hdd_ChangePlaybackPos (ret);
OSD_HideDir();
Das benötigt dann aber nicht mehr Speicher als bei jeder Änderung im DataFiles-Verzeichnis.
asrael hat geschrieben:EDIT: Noch weitere Tests: Absturz auch, wenn ich z. B. iTiNa (auch ordentlicher Speicherfresser) herausnehme. Hast Du irgendwas drin, was Filer, wenn durch anderes TAP gestartet, anders macht?
Nicht, dass ich wüsste
Oder doch
Es erscheint die Startmeldung, welche im Autostart nicht kommt.
Aber die kommt auch beim manuellen Nachstarten, was ja auch keinen Absturz verursacht.
Code: Alles auswählen
//*************************************************************************
// Wenn das TAP später als 60 Sekunden nach dem Einschalten des Topfs
// gestartet wird, dann erfolgt hier eine kleine Info-Box!
//*************************************************************************
#ifdef __TESTVERSION__
if ( (!bBatchMode) && ((TAP_GetTick() > 60 * 100) || (CurrentDate >= (TAP_MakeMjd(AblaufY, AblaufM, AblaufD) - 7))) )
{
//falls die Meldung direkt nach dem Start angezeigt wird (wg. Ablaufdatum), dürfen Idle-Events nicht durchgereicht werden
if ( TAP_GetTick() > 60 * 100 ) bMultitasking = TRUE;
else bMultitasking = FALSE;
TAP_SPrint(textBuf2, "%s: %02d.%02d.%d (<%i %s)", Text[OSDLanguage][Diese_TestVersion_laeuft_bis], AblaufD, AblaufM, AblaufY, TAP_MakeMjd(AblaufY, AblaufM, AblaufD) - CurrentDate, Text[OSDLanguage][Tage]);
MsgShow(textBuf2, 0, 20, 110, Msg_Information, 0, FALSE, TRUE, FALSE);
MsgShow(Text[OSDLanguage][Filer_wird_gestartet], 0, 20, 60, Msg_Information, 300, TRUE, FALSE, bMultitasking);
}
#else
if ( (!bBatchMode) && (TAP_GetTick() > 60 * 100) )
{
MsgShow(Text[OSDLanguage][Filer_wird_gestartet], 0, 20, 60, Msg_Information, 300, TRUE, TRUE, TRUE);
}
#endif





