javauis/lcdui_qt/src/javax/microedition/lcdui/CustomItem.java
changeset 35 85266cc22c7f
parent 26 dc7c549001d5
child 47 f40128debb5d
child 57 59b3b4473dc8
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/CustomItem.java	Thu May 27 12:49:31 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/CustomItem.java	Fri Jun 11 13:33:44 2010 +0300
@@ -67,7 +67,7 @@
     private com.nokia.mj.impl.rt.support.Finalizer finalizer;
 
     // Graphics command buffer for this instance
-    CustomItemBuffer graphicsBuffer;
+    Buffer graphicsBuffer;
     Graphics CustomItemGraphics;
 
     CustomItemLayouter layouter;
@@ -552,8 +552,9 @@
                 }
                 if(CustomItemGraphics == null)
                 {
-                    graphicsBuffer = new CustomItemBuffer(self, (Control)event.widget);
+                    graphicsBuffer = Buffer.createInstance(self, (Control)event.widget);
                     CustomItemGraphics = graphicsBuffer.getGraphics();
+                    CustomItemGraphics.setSyncStrategy(Graphics.SYNC_LEAVE_SURFACE_SESSION_OPEN);
                 }
                 else
                 {
@@ -604,31 +605,8 @@
                 {
                     return;
                 }
-                // Transform invalid area to Display coordinates
-                // as the CustomItem is rendered directly to the
-                // window surface
-                Point topleft = ((Control)event.widget).toDisplay(redrawNowX, redrawNowY);
-
-                synchronized(graphicsBuffer)
-                {
-                    flushGraphicsBuffer(topleft.x, topleft.y, redrawNowW, redrawNowH);
-                }
-            }
-        });
-    }
-
-    private void flushGraphicsBuffer(final int redrawNowX, final int redrawNowY, final int redrawNowW, final int redrawNowH)
-    {
-        ESWTUIThreadRunner.safeSyncExec(new Runnable()
-        {
-            public void run()
-            {
-                graphicsBuffer.setupWindowSurface();
-                Rectangle rect = graphicsBuffer.toWindowCoordinates(redrawNowX, redrawNowY, redrawNowW, redrawNowH);
-                graphicsBuffer.windowSurface.beginPaint(rect.x, rect.y, rect.width, rect.height);
                 graphicsBuffer.sync();
-                graphicsBuffer.windowSurface.endPaint();
-                graphicsBuffer.windowSurface.flush();
+                graphicsBuffer.blitToDisplay(null, event.widget);
             }
         });
     }