mirror of
https://github.com/minetest/minetest.git
synced 2024-11-26 17:43:45 +01:00
Fix two problems with toggling fullscreen at runtime (#14750)
This commit is contained in:
parent
9def45aa80
commit
bc23a610d3
@ -118,8 +118,14 @@ bool MyEventReceiver::OnEvent(const SEvent &event)
|
||||
const KeyPress keyCode(event.KeyInput);
|
||||
if (keyCode == getKeySetting("keymap_fullscreen")) {
|
||||
if (event.KeyInput.PressedDown && !fullscreen_is_down) {
|
||||
bool fullscreen = RenderingEngine::get_raw_device()->isFullscreen();
|
||||
g_settings->setBool("fullscreen", !fullscreen);
|
||||
IrrlichtDevice *device = RenderingEngine::get_raw_device();
|
||||
|
||||
bool new_fullscreen = !device->isFullscreen();
|
||||
// Only update the setting if toggling succeeds - it always fails
|
||||
// if Minetest was built without SDL.
|
||||
if (device->setFullscreen(new_fullscreen)) {
|
||||
g_settings->setBool("fullscreen", new_fullscreen);
|
||||
}
|
||||
}
|
||||
fullscreen_is_down = event.KeyInput.PressedDown;
|
||||
return true;
|
||||
|
@ -489,11 +489,14 @@ void RenderingEngine::autosaveScreensizeAndCo(
|
||||
// we do not want to save the thing. This allows users to also manually change
|
||||
// the settings.
|
||||
|
||||
// Don't save the fullscreen size, we want the windowed size.
|
||||
bool fullscreen = RenderingEngine::get_raw_device()->isFullscreen();
|
||||
// Screen size
|
||||
const irr::core::dimension2d<u32> current_screen_size =
|
||||
RenderingEngine::get_video_driver()->getScreenSize();
|
||||
// Don't replace good value with (0, 0)
|
||||
if (current_screen_size != irr::core::dimension2d<u32>(0, 0) &&
|
||||
if (!fullscreen &&
|
||||
current_screen_size != irr::core::dimension2d<u32>(0, 0) &&
|
||||
current_screen_size != initial_screen_size) {
|
||||
g_settings->setU16("screen_w", current_screen_size.Width);
|
||||
g_settings->setU16("screen_h", current_screen_size.Height);
|
||||
|
Loading…
Reference in New Issue
Block a user