/** * (Internal use only) Deletes all objects. * Must only be called when display is destroyed. */ public void deleteAllObjects(Object rendererObject){ deleteUnused(rendererObject); ArrayList<NativeObjectRef> refMapCopy = new ArrayList<NativeObjectRef>(refMap.values()); for (NativeObjectRef ref : refMapCopy) { deleteNativeObject(rendererObject, ref.objClone, ref, true, false); } assert refMap.size() == 0; }
/** * (Internal use only) Deletes unused NativeObjects. * Will delete at most {@link #MAX_REMOVES_PER_FRAME} objects. * * @param rendererObject The renderer object. * For graphics objects, {@link Renderer} is used, for audio, {#link AudioRenderer} is used. */ public void deleteUnused(Object rendererObject){ int removed = 0; while (removed < MAX_REMOVES_PER_FRAME && !userDeletionQueue.isEmpty()) { // Remove user requested objects. NativeObject obj = userDeletionQueue.pop(); deleteNativeObject(rendererObject, obj, null, true, true); removed++; } while (removed < MAX_REMOVES_PER_FRAME) { // Remove objects reclaimed by GC. NativeObjectRef ref = (NativeObjectRef) refQueue.poll(); if (ref == null) { break; } deleteNativeObject(rendererObject, ref.objClone, ref, true, false); removed++; } if (removed >= 1) { logger.log(Level.FINE, "NativeObjectManager: {0} native objects were removed from native", removed); } }
/** * (Internal use only) Deletes all objects. * Must only be called when display is destroyed. */ public void deleteAllObjects(Object rendererObject){ deleteUnused(rendererObject); ArrayList<NativeObjectRef> refMapCopy = new ArrayList<NativeObjectRef>(refMap.values()); for (NativeObjectRef ref : refMapCopy) { deleteNativeObject(rendererObject, ref.objClone, ref, true, false); } assert refMap.size() == 0; }
/** * (Internal use only) Deletes unused NativeObjects. * Will delete at most {@link #MAX_REMOVES_PER_FRAME} objects. * * @param rendererObject The renderer object. * For graphics objects, {@link Renderer} is used, for audio, {#link AudioRenderer} is used. */ public void deleteUnused(Object rendererObject){ int removed = 0; while (removed < MAX_REMOVES_PER_FRAME && !userDeletionQueue.isEmpty()) { // Remove user requested objects. NativeObject obj = userDeletionQueue.pop(); deleteNativeObject(rendererObject, obj, null, true, true); removed++; } while (removed < MAX_REMOVES_PER_FRAME) { // Remove objects reclaimed by GC. NativeObjectRef ref = (NativeObjectRef) refQueue.poll(); if (ref == null) { break; } deleteNativeObject(rendererObject, ref.objClone, ref, true, false); removed++; } if (removed >= 1) { logger.log(Level.FINE, "NativeObjectManager: {0} native objects were removed from native", removed); } }