excelente los nuevos aportes...
tenemos una duda...
mirando g_video.c (linea 277)
creo que no es necesario estar destruyendo la ventana y el renderizador cada vez que llamamos a set_mode
eso crearia memory leaks y haria mas inestable el juego
1. solo se crea un solo renderizador y una sola ventana..(al iniciar el motor)
2. sdl_renderer no contiene atributos de dimension o medidas y demas por lo tanto para que destruirlo?
3. la ventana contiene esos atributos por lo tanto cada vez que cambia el modo cambiar los atributos de la ventana sin destruirla
SDL_SetWindowSize(Window, ScreenSizeX, ScreenSizeY);
y el clasico para modificar el borde
SDL_SetWindowBordered(SDL_Window* window, SDL_bool bordered)
las demas funciones SET para modificar la ventana
https://wiki.libsdl.org/CategoryVideointernamente sdl2 tiene vinculado el renderer por lo tanto se modifica la ventana === se modifica el renderer automaticamente
para la creacion del renderer siempre se crearia a la primera con los atributos
mas usados SDL_RENDERER_ACCELERATED
asi que en resumen se crearia la ventana y el renderer una sola vez en la funcion setmode indicando con un flag que ya se inicializo(inclusive si el usuario carga un fpg antes del setmode no pasaria nada que es el comportamiento normal de bennu
cargar el setmode/gr_init al inicio del libvideo--module_initialize
y cada vez que el juego llame al setmode solo se actualizaria la ventana con los nuevos atributos sin destruirla
-se ganaria en velocidad del juego(ya que sdl2 destruye todas las texturas asociadas al renderer con la lentitud que eso supone cargar y descargar texturas en un juego)
-no habrian crash en el juego porque no habrian memory leaks
-no aparecerian errores en pixtudio de textura no valida
hemos estado ocupados ya te echamos una mano.... y te pasamos el g_video.c con el fix