From d0a5463f4cb6cfddfa01149adc93a1e35537811c Mon Sep 17 00:00:00 2001 From: Tungstend Date: Sun, 14 Jan 2024 21:39:36 +0800 Subject: [PATCH] Fix(FCLLibrary): show error instead of crash if invalid skin selected --- .../fcl/ui/account/OfflineAccountSkinDialog.java | 2 +- FCL/src/main/java/com/tungsten/fcl/ui/main/MainUI.java | 2 +- .../java/com/tungsten/fcllibrary/skin/SkinRenderer.java | 9 +++++++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/FCL/src/main/java/com/tungsten/fcl/ui/account/OfflineAccountSkinDialog.java b/FCL/src/main/java/com/tungsten/fcl/ui/account/OfflineAccountSkinDialog.java index 4c45d66c..cfb2c341 100644 --- a/FCL/src/main/java/com/tungsten/fcl/ui/account/OfflineAccountSkinDialog.java +++ b/FCL/src/main/java/com/tungsten/fcl/ui/account/OfflineAccountSkinDialog.java @@ -90,7 +90,7 @@ public class OfflineAccountSkinDialog extends FCLDialog implements View.OnClickL setContentView(R.layout.dialog_offline_account_skin); setCancelable(false); - renderer = new SkinRenderer(); + renderer = new SkinRenderer(getContext()); skinCanvas = findViewById(R.id.skin_view); skinCanvas.setRenderer(renderer, 5f); diff --git a/FCL/src/main/java/com/tungsten/fcl/ui/main/MainUI.java b/FCL/src/main/java/com/tungsten/fcl/ui/main/MainUI.java index 4fe23e06..73bcb735 100644 --- a/FCL/src/main/java/com/tungsten/fcl/ui/main/MainUI.java +++ b/FCL/src/main/java/com/tungsten/fcl/ui/main/MainUI.java @@ -38,7 +38,7 @@ public class MainUI extends FCLCommonUI { super.onCreate(); skinContainer = findViewById(R.id.skin_container); - renderer = new SkinRenderer(); + renderer = new SkinRenderer(getContext()); ViewGroup.LayoutParams layoutParamsSkin = skinContainer.getLayoutParams(); layoutParamsSkin.width = (int) (((View) skinContainer.getParent().getParent()).getMeasuredWidth() * 0.5f); layoutParamsSkin.height = (int) Math.min(((View) skinContainer.getParent().getParent()).getMeasuredWidth() * 0.5f, ((View) skinContainer.getParent().getParent()).getMeasuredHeight()); diff --git a/FCLLibrary/src/main/java/com/tungsten/fcllibrary/skin/SkinRenderer.java b/FCLLibrary/src/main/java/com/tungsten/fcllibrary/skin/SkinRenderer.java index 6436581d..ef9c0af3 100644 --- a/FCLLibrary/src/main/java/com/tungsten/fcllibrary/skin/SkinRenderer.java +++ b/FCLLibrary/src/main/java/com/tungsten/fcllibrary/skin/SkinRenderer.java @@ -1,11 +1,13 @@ package com.tungsten.fcllibrary.skin; +import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.opengl.GLES20; import android.opengl.GLSurfaceView; import android.opengl.GLU; import android.opengl.GLUtils; +import android.widget.Toast; import androidx.annotation.Nullable; @@ -23,6 +25,7 @@ import javax.microedition.khronos.opengles.GL10; public class SkinRenderer implements GLSurfaceView.Renderer { + private final Context context; private final SkinModel skinModel; private boolean updateBitmapSkin; private boolean slim; @@ -31,7 +34,8 @@ public class SkinRenderer implements GLSurfaceView.Renderer { private int[] modelTextureData; private ObjectProperty textureProperty; - public SkinRenderer() { + public SkinRenderer(Context context) { + this.context = context; this.skinModel = new SkinModel(); this.skinModel.setRunning(true); this.updateBitmapSkin = false; @@ -99,7 +103,8 @@ public class SkinRenderer implements GLSurfaceView.Renderer { this.cape = cape; this.updateBitmapSkin = true; } catch (InvalidSkinException e) { - throw new RuntimeException(e.getCause()); + e.printStackTrace(); + Toast.makeText(context, "Skin Renderer: " + e, Toast.LENGTH_SHORT).show(); } }); }