Schutzverletzung bei Allegro Bildupdate-Timer
-
Hallo zusammen.
Ich mache gerade meine ersten Erfahrungen mit Allegro, und dachte mir, warum nicht einen Timer all x Milisekunden den "screen" von einem Buffer updaten lassen?
Ich hab das jetzt auch umgesetzt, doch jedesmal wenn ich [ESC] drücke gibt mir meine IDE (Code::Blocks, mingw) die Fehlermeldung
Program received signal SIGSEGV, Segmentation fault.
Ich habe keine Ahnung woran das liegen könnte.
Hier noch mein c++ Code:
#include <allegro.h> BITMAP *Buffer; void DrawScreen(void); int main(){ allegro_init(); install_timer(); install_keyboard(); set_color_depth(32); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0); int Richtung=10, x=0; BITMAP *Bild; BITMAP *Hintergrund; Buffer = create_bitmap(640, 480); LOCK_FUNCTION(DrawScreen); install_int(DrawScreen,10); Bild=load_bitmap("Char_1.bmp", NULL); Hintergrund=create_bitmap(640, 480); while( !key[KEY_ESC]) { draw_sprite(Buffer, Hintergrund,0,0); draw_sprite(Buffer, Bild, x,0); x+=Richtung; if(x>(640-(Bild->w)) || x<0) Richtung*=-1;//Bild stößt an einen Bildschirmrand _sleep(100); } destroy_bitmap(Bild); destroy_bitmap(Hintergrund); return 0; } END_OF_MAIN(); void DrawScreen(void) { draw_sprite(screen,Buffer,0,0); }
-
hast du vergessen den timer abzustellen bevor du alles was drawscreen benutzt loescht?
-
Hi!
rapso hat schon den Fehler lokalisiert, aber hier die benötigte Funktion:
remove_int(DrawScreen);
...am Ende des Programms.
MfG
Heringsalat100für weitere Infos: http://alleg.sourceforge.net/latestdocs/en/alleg005.html#remove_int
-
Ja, damit geht es, vielen dank euch beiden