|
19 | 19 | import com.badlogic.gdx.graphics.g2d.TextureRegion; |
20 | 20 | import com.badlogic.gdx.utils.Array; |
21 | 21 | import com.badlogic.gdx.utils.Clipboard; |
| 22 | +import com.badlogic.gdx.utils.Disposable; |
22 | 23 | import forge.adventure.scene.DeckSelectScene; |
23 | 24 | import forge.adventure.scene.DuelScene; |
24 | 25 | import forge.adventure.scene.ForgeScene; |
@@ -1018,25 +1019,46 @@ public void dispose() { |
1018 | 1019 | currentScreen.onClose(null); |
1019 | 1020 | currentScreen = null; |
1020 | 1021 | } |
1021 | | - FOverlay.hideAll(); |
| 1022 | + // TODO: Implement disposable to applicable classes |
| 1023 | + try { |
| 1024 | + FOverlay.hideAll(); |
| 1025 | + } catch (Exception e) { |
| 1026 | + e.printStackTrace(); |
| 1027 | + } |
1022 | 1028 | Dscreens.clear(); |
1023 | | - graphics.dispose(); |
1024 | | - SoundSystem.instance.dispose(); |
1025 | | - MapStage.getInstance().disposeWorld(); |
1026 | | - getAssets().dispose(); |
1027 | | - |
1028 | | - AdventureScreen.dispose(); |
1029 | | - Adventure.getInstance().dispose(); |
1030 | | - ScreenUtil.getInstance().dispose(); |
1031 | | - ShaderUtil.getInstance().dispose(); |
| 1029 | + safeDispose(MapStage.getInstance(), Adventure.getInstance(), ScreenUtil.getInstance(), ShaderUtil.getInstance(), |
| 1030 | + graphics, getAssets()); |
| 1031 | + try { |
| 1032 | + SoundSystem.instance.dispose(); |
| 1033 | + } catch (Exception e) { |
| 1034 | + e.printStackTrace(); |
| 1035 | + } |
| 1036 | + try { |
| 1037 | + AdventureScreen.dispose(); |
| 1038 | + } catch (Exception e) { |
| 1039 | + e.printStackTrace(); |
| 1040 | + } |
1032 | 1041 | try { |
1033 | 1042 | ExceptionHandler.unregisterErrorHandling(); |
| 1043 | + } catch (Exception e) { |
| 1044 | + e.printStackTrace(); |
| 1045 | + } |
| 1046 | + try { |
1034 | 1047 | if (lastPreview != null) |
1035 | 1048 | lastPreview.dispose(); |
1036 | 1049 | } catch (Exception e) { |
1037 | 1050 | e.printStackTrace(); |
1038 | 1051 | } |
1039 | 1052 | } |
| 1053 | + public static void safeDispose(Disposable... disposables) { |
| 1054 | + for (Disposable d : disposables) { |
| 1055 | + if (d != null) { |
| 1056 | + try { |
| 1057 | + d.dispose(); |
| 1058 | + } catch (Exception ignored) {} |
| 1059 | + } |
| 1060 | + } |
| 1061 | + } |
1040 | 1062 | /** Retrieve assets. |
1041 | 1063 | */ |
1042 | 1064 | public static Assets getAssets() { |
|
0 commit comments