mirror of https://github.com/OpenTTD/OpenTTD
(svn r7332) -Fix: segmentation fault, discovered by ln-, in the SDL video driver when one goes to fullscreen and there are no suitable resolutions.
parent
231111ce3d
commit
5fffa66b71
9
gfx.c
9
gfx.c
|
@ -15,6 +15,7 @@
|
||||||
#include "table/control_codes.h"
|
#include "table/control_codes.h"
|
||||||
#include "fontcache.h"
|
#include "fontcache.h"
|
||||||
#include "genworld.h"
|
#include "genworld.h"
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
bool _dbg_screen_rect;
|
bool _dbg_screen_rect;
|
||||||
|
@ -1998,7 +1999,13 @@ bool ChangeResInGame(int w, int h)
|
||||||
_video_driver->change_resolution(w, h);
|
_video_driver->change_resolution(w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToggleFullScreen(bool fs) {_video_driver->toggle_fullscreen(fs);}
|
void ToggleFullScreen(bool fs)
|
||||||
|
{
|
||||||
|
_video_driver->toggle_fullscreen(fs);
|
||||||
|
if (_fullscreen != fs && _num_resolutions == 0) {
|
||||||
|
DEBUG(misc, 0) ("Could not find a suitable fullscreen resolution.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int CDECL compare_res(const void *pa, const void *pb)
|
static int CDECL compare_res(const void *pa, const void *pb)
|
||||||
{
|
{
|
||||||
|
|
|
@ -495,7 +495,7 @@ static void SdlVideoFullScreen(bool full_screen)
|
||||||
{
|
{
|
||||||
_fullscreen = full_screen;
|
_fullscreen = full_screen;
|
||||||
GetVideoModes(); // get the list of available video modes
|
GetVideoModes(); // get the list of available video modes
|
||||||
if (!_video_driver->change_resolution(_cur_resolution[0], _cur_resolution[1])) {
|
if (_num_resolutions == 0 || !_video_driver->change_resolution(_cur_resolution[0], _cur_resolution[1])) {
|
||||||
// switching resolution failed, put back full_screen to original status
|
// switching resolution failed, put back full_screen to original status
|
||||||
_fullscreen ^= true;
|
_fullscreen ^= true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue