// // Release // public void Release() { lock (RendererObjects) { for (int i = RendererObjects.Count; i-- > 0;) { if (RendererObjects[i].renderer == this) { RendererObjects[i].renderer.surface = null; RendererObjects[i].renderer = null; RendererObjects.RemoveAt(i); } } } }
// // Create // public static IntPtr Create(android.app.Activity activity, Action onChanged, int redSize, int greenSize, int blueSize, int alphaSize, int depthSize, int stencilSize, int swapInterval, bool checkErrors) { for (;;) { lock (RendererObjects) { var deviceId = java.lang.System.nanoTime(); foreach (var oldRendererObject in RendererObjects) { if (oldRendererObject.deviceId == deviceId) { deviceId = 0; break; } } if (deviceId == 0) { java.lang.Thread.sleep(1); continue; } RendererObjects.Insert(0, new RendererObject() { deviceId = deviceId, renderer = new Renderer(activity, onChanged, redSize, greenSize, blueSize, alphaSize, depthSize, stencilSize, swapInterval, checkErrors), activity = new [email protected](activity), }); return((IntPtr)deviceId); } } }