simple program crash
lynerdGS

I have been getting crashes from the simplest programs and I can't figure out why. Is it possible there is something wrong with my computer or maybe I am just doing timers wrong? I can load this up, it will run for about 20 seconds, and then just stop responding.
I use DevC++ 4.9.9.2 with allegro 4.2 that you download through packages.

edit:
Another thought that just came to me. Could it by the show_mouse(screen) function? If I comment that out then I dont seem to get the crash.

1 
2#include <allegro.h>
3#include <string>
4 
5//screen
6#define SCREENW 320
7#define SCREENH 240
8 
9using namespace std;
10 
11volatile long speed_counter = 0;
12void increment_speed_counter()
13{
14 speed_counter++;
15}
16END_OF_FUNCTION(increment_speed_counter);
17 
18 
19BITMAP* buffer;
20 
21int main()
22{
23 //whatever you do normally
24 allegro_init();
25 install_timer();
26 install_keyboard();
27 install_mouse();
28
29 LOCK_VARIABLE(speed_counter);
30 LOCK_FUNCTION(increment_speed_counter);
31 
32 install_int_ex(increment_speed_counter, BPS_TO_TIMER(60));
33
34 set_color_depth(32);
35 set_gfx_mode( GFX_AUTODETECT_WINDOWED, SCREENW, SCREENH, 0, 0);
36
37 buffer = create_bitmap(SCREENW, SCREENH);
38
39
40 show_mouse(screen);
41 
42 
43 while (!key[KEY_ESC]) {
44 while(speed_counter > 0) {
45
46
47
48 speed_counter --;
49 }
50
51 blit(buffer, screen, 0, 0, 0, 0, SCREENW, SCREENH);
52 clear_bitmap(buffer);
53
54 }
55 
56
57 destroy_bitmap(buffer);
58
59 //allegro_exit();
60 return 0;
61}
62END_OF_MAIN()

Steve Terry

Just looking over it I don't see anything terribly wrong.

Arthur Kalliokoski

I compiled it as "g++ -s -O2 -Wall t.c -o t.exe -lalleg" and it apparently did everything right (that is, nothing happened until I hit ESC). Ran it three times.

Neil Roy

I would add in some code to remove those timers when you're done.

remove_int(increment_speed_counter);

I would also add in code to check the return values of everything like when you set the screen reolution and create the bitmap. Check if the bitmap exists before destroying it of course. If a function has a return value, you should always handle it in my opinion.

Other than that, all looks okay to me.

Steve Terry

Try using scare_mouse and unscare_mouse, that way the mouse won't flicker. Don't know why that would cause the crash though.

ImLeftFooted

I'm going to guess some kind of mixup the allegro versions between dll and includes.

Is there any reason you're not using the allegro project template for dev-cpp?

Thread #587399. Printed from Allegro.cc