diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c index 3b5ee51497f3f686370aeea6f0ac1bbdaac87eda..868ac1d8cae5ac6b6a38949d65ee1b2101f08e00 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);