From 188250197088e960a3a2008c28261de752b217e6 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Wed, 24 May 2006 06:49:25 +0000
Subject: [PATCH] Properly scale the cursor in SDL mode.

---
 src/conio/sdl_con.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c
index 3b5ee51497..868ac1d8ca 100644
--- a/src/conio/sdl_con.c
+++ b/src/conio/sdl_con.c
@@ -495,6 +495,12 @@ int sdl_draw_char(unsigned short vch, int xpos, int ypos, int update)
 	return(0);
 }
 
+/* atexit() function */
+void sdl_exit(void)
+{
+	sdl.Quit();
+}
+
 /* Called from main thread only (Passes Event) */
 int sdl_init(int mode)
 {
@@ -519,8 +525,6 @@ int sdl_init(int mode)
 
 	sdl_init_mode(3);
 
-	atexit(sdl.Quit);
-
 	sdl_user_func(SDL_USEREVENT_INIT);
 
 	sdl.SemWait(sdl_init_complete);
@@ -1412,6 +1416,7 @@ int SDL_main_env(int argc, char **argv, char **env)
 	}
 
 	if(sdl.gotfuncs) {
+		atexit(sdl_exit);
 		mp.argc=argc;
 		mp.argv=argv;
 		mp.env=env;
@@ -1559,7 +1564,7 @@ int SDL_main_env(int argc, char **argv, char **env)
 
 								if(sdl_cursor!=NULL)
 									sdl.FreeSurface(sdl_cursor);
-								sdl_cursor=sdl.CreateRGBSurface(SDL_SWSURFACE, vstat.charwidth, vstat.charheight, 8, 0, 0, 0, 0);
+								sdl_cursor=sdl.CreateRGBSurface(SDL_SWSURFACE, vstat.charwidth*vstat.scaling, vstat.charheight*vstat.scaling, 8, 0, 0, 0, 0);
 						    	/* Update font. */
 						    	sdl_load_font(NULL);
 						    	sdl_setup_colours(win,0);
@@ -1626,7 +1631,7 @@ int SDL_main_env(int argc, char **argv, char **env)
 									sdl_setup_colours(win,0);
 									if(sdl_cursor!=NULL)
 										sdl.FreeSurface(sdl_cursor);
-									sdl_cursor=sdl.CreateRGBSurface(SDL_SWSURFACE, vstat.charwidth, vstat.charheight, 8, 0, 0, 0, 0);
+									sdl_cursor=sdl.CreateRGBSurface(SDL_SWSURFACE, vstat.charwidth*vstat.scaling, vstat.charheight*vstat.scaling, 8, 0, 0, 0, 0);
 									/* Update font. */
 									sdl_load_font(NULL);
 									sdl_full_screen_redraw(TRUE);
-- 
GitLab