Skip to content

Commit

Permalink
fix(rendering): Don't try to set window icon on macOS (#5066)
Browse files Browse the repository at this point in the history
  • Loading branch information
skaldarnar authored Aug 22, 2022
1 parent d0d460b commit 2785518
Showing 1 changed file with 21 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import org.terasology.engine.rendering.ShaderManager;
import org.terasology.engine.rendering.ShaderManagerLwjgl;
import org.terasology.engine.rendering.nui.internal.LwjglCanvasRenderer;
import org.terasology.engine.utilities.OS;
import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager;
import org.terasology.nui.canvas.CanvasRenderer;

Expand Down Expand Up @@ -156,23 +157,26 @@ private void initWindow() {
GLFW.glfwSwapInterval(0);
}

try {
String root = "org/terasology/engine/icons/";
ClassLoader classLoader = getClass().getClassLoader();

BufferedImage icon16 = ImageIO.read(classLoader.getResourceAsStream(root + "gooey_sweet_16.png"));
BufferedImage icon32 = ImageIO.read(classLoader.getResourceAsStream(root + "gooey_sweet_32.png"));
BufferedImage icon64 = ImageIO.read(classLoader.getResourceAsStream(root + "gooey_sweet_64.png"));
BufferedImage icon128 = ImageIO.read(classLoader.getResourceAsStream(root + "gooey_sweet_128.png"));
GLFWImage.Buffer buffer = GLFWImage.create(4);
buffer.put(0, LwjglGraphicsUtil.convertToGLFWFormat(icon16));
buffer.put(1, LwjglGraphicsUtil.convertToGLFWFormat(icon32));
buffer.put(2, LwjglGraphicsUtil.convertToGLFWFormat(icon64));
buffer.put(3, LwjglGraphicsUtil.convertToGLFWFormat(icon128));
GLFW.glfwSetWindowIcon(window, buffer);

} catch (IOException | IllegalArgumentException e) {
logger.warn("Could not set icon", e);
if (OS.get() != OS.MACOSX) {
try {
String root = "org/terasology/engine/icons/";
ClassLoader classLoader = getClass().getClassLoader();

BufferedImage icon16 = ImageIO.read(classLoader.getResourceAsStream(root + "gooey_sweet_16.png"));
BufferedImage icon32 = ImageIO.read(classLoader.getResourceAsStream(root + "gooey_sweet_32.png"));
BufferedImage icon64 = ImageIO.read(classLoader.getResourceAsStream(root + "gooey_sweet_64.png"));
BufferedImage icon128 = ImageIO.read(classLoader.getResourceAsStream(root + "gooey_sweet_128.png"));
GLFWImage.Buffer buffer = GLFWImage.create(4);
buffer.put(0, LwjglGraphicsUtil.convertToGLFWFormat(icon16));
buffer.put(1, LwjglGraphicsUtil.convertToGLFWFormat(icon32));
buffer.put(2, LwjglGraphicsUtil.convertToGLFWFormat(icon64));
buffer.put(3, LwjglGraphicsUtil.convertToGLFWFormat(icon128));
// Not supported on Mac: Code: 65548, Description: Cocoa: Regular windows do not have icons on macOS
GLFW.glfwSetWindowIcon(window, buffer);

} catch (IOException | IllegalArgumentException e) {
logger.warn("Could not set icon", e);
}
}

lwjglDisplay.setDisplayModeSetting(config.getDisplayModeSetting(), false);
Expand Down

0 comments on commit 2785518

Please sign in to comment.