From 0b5b95979ec2c9f95f1fbc54d6833000cd483c3c Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Sun, 27 Jul 2014 14:05:59 +0100 Subject: [PATCH] Added unload of cursors. Small cleanup --- src/osinterface.c | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/src/osinterface.c b/src/osinterface.c index ad7c0c2c40..37c1a13bc7 100644 --- a/src/osinterface.c +++ b/src/osinterface.c @@ -62,34 +62,13 @@ void osinterface_init() // RCT2_CALLPROC(0x00404584); // dinput_init() } -uint8 curs_data[32 * 4] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xA4, - 0x00, 0x00, 0x01, 0x52, 0x00, 0x00, 0x02, 0x8B, 0x00, 0x00, 0x02, 0x96, 0x00, 0x00, 0x02, 0x6C, - 0x00, 0x00, 0x04, 0x18, 0x00, 0x00, 0x08, 0xF0, 0x00, 0x00, 0x11, 0x80, 0x00, 0x03, 0x2A, 0x00, - 0x00, 0x04, 0xC6, 0x00, 0x00, 0x09, 0x8C, 0x00, 0x00, 0x15, 0x18, 0x00, 0x00, 0x22, 0x30, 0x00, - 0x00, 0x24, 0x78, 0x00, 0x0F, 0xC5, 0xE4, 0x00, 0x08, 0xC7, 0xC4, 0x00, 0x08, 0xC3, 0x28, 0x00, - 0x08, 0xA0, 0x10, 0x00, 0x08, 0x90, 0x20, 0x00, 0x08, 0x88, 0xC0, 0x00, 0x08, 0x87, 0x00, 0x00, - 0x08, 0x80, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, - 0x10, 0x40, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -}; -uint8 curs_mask[32 * 4] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xFC, - 0x00, 0x00, 0x01, 0xDE, 0x00, 0x00, 0x03, 0x8F, 0x00, 0x00, 0x03, 0x9E, 0x00, 0x00, 0x03, 0xFC, - 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0x3E, 0x00, - 0x00, 0x07, 0xFE, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x3F, 0xF0, 0x00, - 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x0F, 0xFF, 0xF8, 0x00, - 0x0F, 0xBF, 0xF0, 0x00, 0x0F, 0x9F, 0xE0, 0x00, 0x0F, 0x8F, 0xC0, 0x00, 0x0F, 0x87, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, - 0x1F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -}; /** * This is not quite the same as the below function as we don't want to * derfererence the cursor before the function. * rct2: 0x0407956 */ void osinterface_set_cursor(char cursor){ - - HCURSOR hCurs = RCT2_ADDRESS(RCT2_ADDRESS_HCURSOR_START, HCURSOR)[cursor]; + //HCURSOR hCurs = RCT2_ADDRESS(RCT2_ADDRESS_HCURSOR_START, HCURSOR)[cursor]; //SetCursor((HCURSOR)hCurs); SDL_SetCursor(_cursors[cursor]); } @@ -159,6 +138,12 @@ static void osinterface_load_cursors(){ RCT2_GLOBAL(0x14241BC, uint32) = 0; } +static void osinterface_unload_cursors(){ + for (int i = 0; i < NO_CURSORS; ++i){ + if (_cursors[i] != NULL)SDL_FreeCursor(_cursors[i]); + } +} + static void osinterface_create_window() { SDL_SysWMinfo wmInfo; @@ -414,6 +399,7 @@ static void osinterface_close_window() SDL_FreeSurface(_surface); if (_palette != NULL) SDL_FreePalette(_palette); + osinterface_unload_cursors(); } void osinterface_free()