Sfoglia il codice sorgente

Retain GLUtil.maxTextureSize

arkon 3 anni fa
parent
commit
ee20787c5e
1 ha cambiato i file con 37 aggiunte e 44 eliminazioni
  1. 37 44
      app/src/main/java/eu/kanade/tachiyomi/util/system/GLUtil.kt

+ 37 - 44
app/src/main/java/eu/kanade/tachiyomi/util/system/GLUtil.kt

@@ -5,50 +5,43 @@ import javax.microedition.khronos.egl.EGLConfig
 import javax.microedition.khronos.egl.EGLContext
 import kotlin.math.max
 
-class GLUtil private constructor() {
-    companion object {
-        // Safe minimum default size
-        private const val IMAGE_MAX_BITMAP_DIMENSION = 2048
-
-        val maxTextureSize: Int
-            get() {
-                // Get EGL Display
-                val egl = EGLContext.getEGL() as EGL10
-                val display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY)
-
-                // Initialise
-                val version = IntArray(2)
-                egl.eglInitialize(display, version)
-
-                // Query total number of configurations
-                val totalConfigurations = IntArray(1)
-                egl.eglGetConfigs(display, null, 0, totalConfigurations)
-
-                // Query actual list configurations
-                val configurationsList = arrayOfNulls<EGLConfig>(totalConfigurations[0])
-                egl.eglGetConfigs(display, configurationsList, totalConfigurations[0], totalConfigurations)
-
-                val textureSize = IntArray(1)
-                var maximumTextureSize = 0
-
-                // Iterate through all the configurations to located the maximum texture size
-                for (i in 0 until totalConfigurations[0]) {
-                    // Only need to check for width since opengl textures are always squared
-                    egl.eglGetConfigAttrib(display, configurationsList[i], EGL10.EGL_MAX_PBUFFER_WIDTH, textureSize)
-
-                    // Keep track of the maximum texture size
-                    if (maximumTextureSize < textureSize[0]) maximumTextureSize = textureSize[0]
-                }
-
-                // Release
-                egl.eglTerminate(display)
-
-                // Return largest texture size found, or default
-                return max(maximumTextureSize, IMAGE_MAX_BITMAP_DIMENSION)
-            }
-    }
+object GLUtil {
+    val maxTextureSize: Int by lazy {
+        // Get EGL Display
+        val egl = EGLContext.getEGL() as EGL10
+        val display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY)
+
+        // Initialise
+        val version = IntArray(2)
+        egl.eglInitialize(display, version)
+
+        // Query total number of configurations
+        val totalConfigurations = IntArray(1)
+        egl.eglGetConfigs(display, null, 0, totalConfigurations)
+
+        // Query actual list configurations
+        val configurationsList = arrayOfNulls<EGLConfig>(totalConfigurations[0])
+        egl.eglGetConfigs(display, configurationsList, totalConfigurations[0], totalConfigurations)
+
+        val textureSize = IntArray(1)
+        var maximumTextureSize = 0
 
-    init {
-        throw InstantiationException("This class is not for instantiation")
+        // Iterate through all the configurations to located the maximum texture size
+        for (i in 0 until totalConfigurations[0]) {
+            // Only need to check for width since opengl textures are always squared
+            egl.eglGetConfigAttrib(display, configurationsList[i], EGL10.EGL_MAX_PBUFFER_WIDTH, textureSize)
+
+            // Keep track of the maximum texture size
+            if (maximumTextureSize < textureSize[0]) maximumTextureSize = textureSize[0]
+        }
+
+        // Release
+        egl.eglTerminate(display)
+
+        // Return largest texture size found, or default
+        max(maximumTextureSize, IMAGE_MAX_BITMAP_DIMENSION)
     }
 }
+
+// Safe minimum default size
+private const val IMAGE_MAX_BITMAP_DIMENSION = 2048