private static void deactivate() { drawListQueue = null; if (setLogLevelThread != null) { setLogLevelThread.exit(); setLogLevelThread = null; } CoreThread.exit(); if (rendererThreads != null) { for (int i = 0; i < rendererThreads.Length; i++) { rendererThreads[i].exit(); } rendererThreads = null; } }
private static void activate() { drawListQueue = new ConcurrentLinkedQueue <PspGeList>(); setLogLevelThread = new SetLogLevelThread(); setLogLevelThread.setName("ExternelGE Set Log Level Thread"); setLogLevelThread.setDaemon(true); setLogLevelThread.Start(); if (numberRendererThread > 0) { rendererThreads = new RendererThread[numberRendererThread]; int[] lineMasks = new int[numberRendererThread]; switch (numberRendererThread) { case 1: lineMasks[0] = unchecked ((int)0xFFFFFFFF); break; case 2: lineMasks[0] = unchecked ((int)0xFF00FF00); lineMasks[1] = 0x00FF00FF; break; case 3: lineMasks[0] = unchecked ((int)0xF801F001); lineMasks[1] = 0x07C00F80; lineMasks[3] = 0x003E007E; break; case 4: case 5: case 6: case 7: lineMasks[0] = unchecked ((int)0xFF000000); lineMasks[1] = 0x00FF0000; lineMasks[2] = 0x0000FF00; lineMasks[3] = 0x000000FF; break; case 8: default: lineMasks[0] = unchecked ((int)0xC000C000); lineMasks[1] = 0x30003000; lineMasks[2] = 0x0C000C00; lineMasks[3] = 0x03000300; lineMasks[4] = 0x00C000C0; lineMasks[5] = 0x00300030; lineMasks[6] = 0x000C000C; lineMasks[7] = 0x00030003; break; } int allLineMasks = 0; for (int i = 0; i < rendererThreads.Length; i++) { int lineMask = lineMasks[i]; rendererThreads[i] = new RendererThread(lineMask); rendererThreads[i].Name = string.Format("Renderer Thread #{0:D}", i); rendererThreads[i].Start(); if ((allLineMasks & lineMask) != 0) { Console.WriteLine(string.Format("Incorrect line masks for the renderer threads (number={0:D})", numberRendererThread)); } allLineMasks |= lineMask; } if (allLineMasks != unchecked ((int)0xFFFFFFFF)) { Console.WriteLine(string.Format("Incorrect line masks for the renderer threads (number={0:D})", numberRendererThread)); } rendererThreadsDone = new Semaphore(0); } NativeUtils.RendererAsyncRendering = numberRendererThread > 0; ScreenScale = sceDisplay.getResizedWidthPow2(1); lock (screenScaleLock) { NativeUtils.ScreenScale = ScreenScale; } // Used by HD Remaster int maxTextureSize = Settings.Instance.readInt("maxTextureSize", 512); int maxTextureSizeLog2 = 31 - Integer.numberOfLeadingZeros(maxTextureSize); NativeUtils.MaxTextureSizeLog2 = maxTextureSizeLog2; bool doubleTexture2DCoords = Settings.Instance.readBool("doubleTexture2DCoords"); NativeUtils.DoubleTexture2DCoords = doubleTexture2DCoords; }