diff --git a/gfx/display_servers/dispserv_x11.c b/gfx/display_servers/dispserv_x11.c index d001438f33..4fda9dd03c 100644 --- a/gfx/display_servers/dispserv_x11.c +++ b/gfx/display_servers/dispserv_x11.c @@ -19,6 +19,7 @@ #include "../common/x11_common.h" #include "../../configuration.h" #include "../video_driver.h" /* needed to set refresh rate in set resolution */ +#include "../video_crt_switch.h" /* needed to set aspect for low res in linux */ #include #include @@ -44,10 +45,10 @@ static void* x11_display_server_init(void) static void x11_display_server_destroy(void *data) { - - system("xrandr -s 704x480"); dispserv_x11_t *dispserv = (dispserv_x11_t*)data; + system("xrandr -s 704x480"); + if (dispserv) free(dispserv); } @@ -98,14 +99,19 @@ static bool x11_set_resolution(void *data, char fbset[150]; char output[150]; - hsp = width*1.14; + hsp = width*1.12; /* set core refresh from hz */ video_monitor_set_refresh_rate(hz); /* following code is the mode line genorator */ - hfp = width+24; - hbp = width*1.26; + if (width < 300) + { + width = width*2; + crt_aspect_ratio_switch(width, height); + } + hfp = width+16; + hbp = width*1.22; hmax = hbp; if (height < 241)