From 21c552bd16f5bb310868c6a5e7a51c2b83a346f7 Mon Sep 17 00:00:00 2001 From: yugecin Date: Tue, 2 Oct 2018 22:44:54 +0200 Subject: [PATCH] fix changing fullscreen option not working instantly (close #131) --- src/yugecin/opsudance/core/DisplayContainer.java | 5 ----- src/yugecin/opsudance/options/Options.java | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/yugecin/opsudance/core/DisplayContainer.java b/src/yugecin/opsudance/core/DisplayContainer.java index 4fab34c2..10a6a2eb 100644 --- a/src/yugecin/opsudance/core/DisplayContainer.java +++ b/src/yugecin/opsudance/core/DisplayContainer.java @@ -372,11 +372,6 @@ public class DisplayContainer implements ErrorDumpable, SkinChangedListener { } public void setDisplayMode(int w, int h, boolean fullscreen) throws Exception { - if (width == w && height == h) { - Display.setFullscreen(fullscreen); - return; - } - DisplayMode displayMode = null; if (fullscreen) { final int bpp = this.nativeDisplayMode.getBitsPerPixel(); diff --git a/src/yugecin/opsudance/options/Options.java b/src/yugecin/opsudance/options/Options.java index 47101b02..a530b001 100644 --- a/src/yugecin/opsudance/options/Options.java +++ b/src/yugecin/opsudance/options/Options.java @@ -21,6 +21,7 @@ import awlex.ospu.polymover.factory.PolyMoverFactory; import itdelatrisu.opsu.GameImage; import itdelatrisu.opsu.Utils; import itdelatrisu.opsu.states.Game; +import itdelatrisu.opsu.ui.Colors; import itdelatrisu.opsu.ui.Fonts; import org.lwjgl.input.Keyboard; import org.newdawn.slick.SlickException; @@ -185,7 +186,19 @@ public class Options { }; public static final ToggleOption OPTION_ALLOW_LARGER_RESOLUTIONS = new ToggleOption("Allow large resolutions", "AllowLargeRes", "Allow resolutions larger than the native resolution", false); - public static final ToggleOption OPTION_FULLSCREEN = new ToggleOption("Fullscreen Mode", "Fullscreen", "Restart to apply changes.", false); + public static final ToggleOption OPTION_FULLSCREEN = new ToggleOption("Fullscreen Mode", "Fullscreen", "Fullscreen mode", false) { + @Override + public void toggle() + { + super.toggle(); + try { + displayContainer.setDisplayMode(width, height, state); + } catch (Exception e) { + bubNotifs.send(Colors.BUB_RED, "Failed to change fullscreen state"); + Log.error("Failed to change fullscreen state.", e); + } + } + }; public static final ListOption OPTION_SKIN = new ListOption("Skin", "Skin", "Change how the game looks.") { @Override