02-06-2007, Saturday-23:00:51
Dank Quellcode konnte ich dem mal weiter nachgehen.
In simworld.cc wird in karte_t:tep() die Methode
check_midi() aufgerufen. Hier kommt es zu Aussetzern,
wodurch dann natürlich kein GUI-Update mehr durchgeführt
wird. Da währendessen Prozessorzeit vergeht, gleicht simutrans die
Simulationszeit daran an, in dem ein Paar Frames gedroppt werden. Daher
die Zeitsprünge. Die eigentlichen Aussetzer kommen weiter drinnen, beim
Aufruf der Methode Mix_PlayingMusic() in sdl_midi.c. Warum,
weiß ich nicht die Methode Mix_PlayingMusic gehört zu
SDL_mixer.
Ich habe versucht SDL_mixer aus den Quellen zu übersetzen
um Log-Einträge einzubauen, um zu sehen wo hier die Aussetzer
oder Zeitverzögerungen herkommen. Wenn ich aber die
SDL-Libs und SDL_mixer-Libs selbst übersetze und simutrans
dagegen verlinke, gibt es keine Aussetzer mehr....
mfg Nicolai
In simworld.cc wird in karte_t:tep() die Methode
check_midi() aufgerufen. Hier kommt es zu Aussetzern,
wodurch dann natürlich kein GUI-Update mehr durchgeführt
wird. Da währendessen Prozessorzeit vergeht, gleicht simutrans die
Simulationszeit daran an, in dem ein Paar Frames gedroppt werden. Daher
die Zeitsprünge. Die eigentlichen Aussetzer kommen weiter drinnen, beim
Aufruf der Methode Mix_PlayingMusic() in sdl_midi.c. Warum,
weiß ich nicht die Methode Mix_PlayingMusic gehört zu
SDL_mixer.
Ich habe versucht SDL_mixer aus den Quellen zu übersetzen
um Log-Einträge einzubauen, um zu sehen wo hier die Aussetzer
oder Zeitverzögerungen herkommen. Wenn ich aber die
SDL-Libs und SDL_mixer-Libs selbst übersetze und simutrans
dagegen verlinke, gibt es keine Aussetzer mehr....
mfg Nicolai