1 --- allegro-4.3.0/src/win/wgdi.c.orig 2006-07-24 14:10:51.000000000 +0200
2 +++ allegro-4.3.0/src/win/wgdi.c 2007-04-03 22:50:52.616018674 +0200
4 /* hardware mouse cursor emulation */
5 static int mouse_on = FALSE;
6 static int mouse_was_on = FALSE;
7 -static BITMAP *mouse_sprite = NULL;
8 +static BITMAP *wmouse_sprite = NULL;
9 static BITMAP *mouse_frontbuffer = NULL;
10 static BITMAP *mouse_backbuffer = NULL;
11 static int mouse_xfocus, mouse_yfocus;
14 static int gfx_gdi_set_mouse_sprite(struct BITMAP *sprite, int xfocus, int yfocus)
17 - destroy_bitmap(mouse_sprite);
18 - mouse_sprite = NULL;
19 + if (wmouse_sprite) {
20 + destroy_bitmap(wmouse_sprite);
21 + wmouse_sprite = NULL;
23 destroy_bitmap(mouse_frontbuffer);
24 mouse_frontbuffer = NULL;
26 mouse_backbuffer = NULL;
29 - mouse_sprite = create_bitmap(sprite->w, sprite->h);
30 - blit(sprite, mouse_sprite, 0, 0, 0, 0, sprite->w, sprite->h);
31 + wmouse_sprite = create_bitmap(sprite->w, sprite->h);
32 + blit(sprite, wmouse_sprite, 0, 0, 0, 0, sprite->w, sprite->h);
34 mouse_xfocus = xfocus;
35 mouse_yfocus = yfocus;
37 blit(gdi_screen, mouse_frontbuffer, x, y, 0, 0, mouse_frontbuffer->w, mouse_frontbuffer->h);
39 /* draw the mouse pointer onto the frontbuffer */
40 - draw_sprite(mouse_frontbuffer, mouse_sprite, 0, 0);
41 + draw_sprite(mouse_frontbuffer, wmouse_sprite, 0, 0);
43 hdc = GetDC(allegro_wnd);
47 /* update mouse pointer if needed */
49 - if ((mouse_ypos+mouse_sprite->h > top_line) && (mouse_ypos <= bottom_line)) {
50 + if ((mouse_ypos+wmouse_sprite->h > top_line) && (mouse_ypos <= bottom_line)) {
51 blit(gdi_screen, mouse_backbuffer, mouse_xpos, mouse_ypos, 0, 0,
52 mouse_backbuffer->w, mouse_backbuffer->h);
57 /* destroy mouse bitmaps */
59 - destroy_bitmap(mouse_sprite);
60 - mouse_sprite = NULL;
61 + if (wmouse_sprite) {
62 + destroy_bitmap(wmouse_sprite);
63 + wmouse_sprite = NULL;
65 destroy_bitmap(mouse_frontbuffer);
66 mouse_frontbuffer = NULL;