Skip to content

Commit e8004a3

Browse files
Fix crash on unminimize window
1 parent 06e7e2c commit e8004a3

3 files changed

Lines changed: 28 additions & 16 deletions

File tree

src/main/java/io/github/ultimateboomer/resolutioncontrol/ResolutionControlMod.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,20 @@
1616
import net.minecraft.client.util.Window;
1717
import net.minecraft.text.TranslatableText;
1818
import net.minecraft.util.Identifier;
19+
import org.apache.logging.log4j.LogManager;
20+
import org.apache.logging.log4j.Logger;
1921
import org.jetbrains.annotations.Nullable;
2022
import org.lwjgl.glfw.GLFW;
2123

22-
import java.util.HashSet;
24+
import java.util.ArrayList;
25+
import java.util.List;
2326
import java.util.Objects;
24-
import java.util.Set;
2527

2628
public class ResolutionControlMod implements ModInitializer {
2729
public static final String MOD_ID = "resolutioncontrol";
30+
public static final String MOD_NAME = "ResolutionControl+";
31+
32+
public static final Logger LOGGER = LogManager.getLogger(MOD_NAME);
2833

2934
public static Identifier identifier(String path) {
3035
return new Identifier(MOD_ID, path);
@@ -56,7 +61,7 @@ public static ResolutionControlMod getInstance() {
5661
@Nullable
5762
private Framebuffer clientFramebuffer;
5863

59-
private Set<Framebuffer> minecraftFramebuffers;
64+
private List<Framebuffer> minecraftFramebuffers;
6065

6166
private Class<? extends SettingsScreen> lastSettingsScreen = MainSettingsScreen.class;
6267

@@ -165,9 +170,9 @@ public void setShouldScale(boolean shouldScale) {
165170

166171
screenshotFrameBuffer.beginWrite(true);
167172
} else {
168-
setClientFramebuffer(getFramebuffer());
173+
setClientFramebuffer(framebuffer);
169174

170-
getFramebuffer().beginWrite(true);
175+
framebuffer.beginWrite(true);
171176
}
172177
// nothing on the client's framebuffer yet
173178
} else {
@@ -186,7 +191,7 @@ public void setShouldScale(boolean shouldScale) {
186191
screenshot = false;
187192
resizeMinecraftFramebuffers();
188193
} else {
189-
getFramebuffer().draw(
194+
framebuffer.draw(
190195
window.getFramebufferWidth(),
191196
window.getFramebufferHeight()
192197
);
@@ -200,7 +205,7 @@ public void initMinecraftFramebuffers() {
200205
if (minecraftFramebuffers != null) {
201206
minecraftFramebuffers.clear();
202207
} else {
203-
minecraftFramebuffers = new HashSet<>();
208+
minecraftFramebuffers = new ArrayList<>();
204209
}
205210

206211
minecraftFramebuffers.add(client.worldRenderer.getEntityOutlinesFramebuffer());
@@ -344,15 +349,26 @@ public void setEnableDynamicResolution(boolean enableDynamicResolution) {
344349
}
345350

346351
public void onResolutionChanged() {
352+
if (getWindow() == null)
353+
return;
354+
355+
LOGGER.info("Screen size changed to {}x{}",
356+
getWindow().getFramebufferWidth(), getWindow().getFramebufferHeight());
357+
347358
updateFramebufferSize();
348359
}
349360

350361
public void updateFramebufferSize() {
351-
if (framebuffer == null) return;
362+
if (framebuffer == null || getWindow().getFramebufferWidth() == lastWidth
363+
|| getWindow().getFramebufferHeight() == lastHeight)
364+
return;
352365

353366
resize(framebuffer);
354367
resizeMinecraftFramebuffers();
355368

369+
lastWidth = getWindow().getFramebufferWidth();
370+
lastHeight = getWindow().getFramebufferHeight();
371+
356372
calculateSize();
357373
}
358374

src/main/java/io/github/ultimateboomer/resolutioncontrol/client/gui/screen/MainSettingsScreen.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,6 @@ public void tick() {
180180
this.focusOn(entryTextField);
181181
}
182182

183-
if (!entryTextField.isFocused()) {
184-
entryTextField.setSelected(true);
185-
}
186-
187183
if (!entryTextField.active) {
188184
entryTextField.active = true;
189185
}

src/main/java/io/github/ultimateboomer/resolutioncontrol/mixin/WorldRendererMixin.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ private void onOnResized(CallbackInfo ci) {
2525
ResolutionControlMod.getInstance().resizeMinecraftFramebuffers();
2626
}
2727

28-
@Inject(at = @At("RETURN"), method = "loadTransparencyShader")
29-
private void onLoadTransparencyShader(CallbackInfo ci) {
30-
ResolutionControlMod.getInstance().resizeMinecraftFramebuffers();
31-
}
28+
// @Inject(at = @At("RETURN"), method = "loadTransparencyShader")
29+
// private void onLoadTransparencyShader(CallbackInfo ci) {
30+
// ResolutionControlMod.getInstance().resizeMinecraftFramebuffers();
31+
// }
3232
}

0 commit comments

Comments
 (0)