javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/javax/microedition/lcdui/CanvasGraphicsItemPainter.java
branchRCL_3
changeset 21 4376525cdefb
parent 17 0fd27995241b
child 24 6c158198356e
--- a/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/javax/microedition/lcdui/CanvasGraphicsItemPainter.java	Wed Jun 09 09:34:07 2010 +0300
+++ b/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/javax/microedition/lcdui/CanvasGraphicsItemPainter.java	Mon Jun 21 15:32:50 2010 +0300
@@ -20,7 +20,7 @@
 
 import com.nokia.mj.impl.rt.legacy.NativeError;
 import com.nokia.mid.ui.CanvasGraphicsItem;
-
+import com.nokia.mj.impl.rt.support.Finalizer;
 
 class CanvasGraphicsItemPainter
         extends com.nokia.mid.ui.CanvasGraphicsItemPainter
@@ -34,6 +34,9 @@
     // Graphics
     private Graphics iGraphics;
 
+    //Object finalizer
+    private Finalizer mFinalizer;
+
     //
     // Repainting
     //
@@ -64,6 +67,14 @@
         }
 
         iGraphics = null;
+
+        mFinalizer = new Finalizer()
+        {
+            public void finalizeImpl()
+            {
+                registeredFinalize();
+            }
+        };
     }
 
     /**
@@ -245,8 +256,34 @@
         }
     }
 
+    /*
+     * Disposes the Landmark native peer object, if the handles are valid.
+     * Invalid (negative) handles indicate that their creation failed in the
+     * first place.
+     */
+    final void registeredFinalize()
+    {
+        synchronized (iToolkit)
+        {
+            if (iHandle > 0)
+            {
+                _dispose(iToolkit.getHandle(), iHandle);
+                iHandle = 0;
+            }
+        }
+    }
+
     // Native methods
 
+    /*
+     * Disposes the native side peer object.
+     *
+     * @param aToolkitHandle A handle to the LCDUI toolkit.
+     *
+     * @param aNativePeerHandle A handle to the native side peer object.
+     */
+    private native void _dispose(int aToolkitHandle, int aNativePeerHandle);
+
     private native int _createNativePeer(
         int aToolkit,
         int aWidth,