javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/CanvasGraphicsItem.java
branchRCL_3
changeset 21 4376525cdefb
parent 14 04becd199f91
child 24 6c158198356e
--- a/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/CanvasGraphicsItem.java	Wed Jun 09 09:34:07 2010 +0300
+++ b/javauis/lcdui_akn/javalcdui/javasrc.nokialcdui/com/nokia/mid/ui/CanvasGraphicsItem.java	Mon Jun 21 15:32:50 2010 +0300
@@ -28,6 +28,8 @@
 
 import com.nokia.mj.impl.rt.legacy.NativeError;
 import com.nokia.mj.impl.rt.legacy.ToolkitInvoker;
+import com.nokia.mj.impl.rt.support.Finalizer;
+
 /**
  * <P>
  * A <code>CanvasGraphicsItem</code> is a drawable component that is used with a
@@ -86,6 +88,9 @@
     // LCDUI Toolkit object.
     Object iToolkit;
 
+    //Object finalizer
+    private Finalizer mFinalizer;
+
     private com.nokia.mid.ui.CanvasGraphicsItemPainter iItemPainter;
 
     /**
@@ -149,6 +154,14 @@
         // Construction was successful. Store handle and register for
         // finalization.
         iHandle = handle;
+
+        mFinalizer = new Finalizer()
+        {
+            public void finalizeImpl()
+            {
+                registeredFinalize();
+            }
+        };
     }
 
     /**
@@ -460,6 +473,23 @@
         iItemPainter.Repaint(0, 0, getWidth(), getHeight());
     }
 
+    /*
+     * 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(getToolkitHandle(), iHandle);
+                iHandle = 0;
+            }
+        }
+    }
+
     void Repaint(Graphics aGraphics)
     {
         paint(aGraphics);