I haven't had time to investigate in any way, but this commit needs
more testing.

I isolated this single commit and ran the same app with and without it
(bad = with, good = without).
See attached screen shots from a test on my dev box  (Windows XP x64,
with Oracle JRE 1.6.0_26)
The small painted areas on the right side of the 'bad' example are
where a tooltip popped up (but are not the entire size of the tooltip)

I will put together a minimal example if I can find the time, but that
won't be until next week at the earliest.

On 17 October 2011 15:36,  <noelgran...@apache.org> wrote:
> Author: noelgrandin
> Date: Mon Oct 17 08:36:55 2011
> New Revision: 1185040
>
> URL: http://svn.apache.org/viewvc?rev=1185040&view=rev
> Log:
> PIVOT-778 Optimise DisplayHost.paintBuffered and 
> DisplayHost.paintVolatileBuffered
> cache the VolatileImage
>
> Modified:
>    pivot/trunk/wtk/src/org/apache/pivot/wtk/ApplicationContext.java
>
> Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/ApplicationContext.java
> URL: 
> http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/ApplicationContext.java?rev=1185040&r1=1185039&r2=1185040&view=diff
> ==============================================================================
> --- pivot/trunk/wtk/src/org/apache/pivot/wtk/ApplicationContext.java 
> (original)
> +++ pivot/trunk/wtk/src/org/apache/pivot/wtk/ApplicationContext.java Mon Oct 
> 17 08:36:55 2011
> @@ -92,6 +92,7 @@ public abstract class ApplicationContext
>         private boolean paintPending = false;
>         private boolean disableVolatileBuffer = false;
>         private boolean debugPaint = false;
> +        private java.awt.image.VolatileImage volatileImage = null;
>
>         private Random random = null;
>
> @@ -511,9 +512,10 @@ public abstract class ApplicationContext
>             // Paint the display into a volatile offscreen buffer
>             GraphicsConfiguration gc = graphics.getDeviceConfiguration();
>             java.awt.Rectangle clipBounds = graphics.getClipBounds();
> -            java.awt.image.VolatileImage volatileImage =
> -                gc.createCompatibleVolatileImage(clipBounds.width, 
> clipBounds.height,
> +            if (volatileImage == null) {
> +                volatileImage = 
> gc.createCompatibleVolatileImage(clipBounds.width, clipBounds.height,
>                     Transparency.OPAQUE);
> +            }
>
>             // If we have a valid volatile image, attempt to paint the
>             // display to it
> @@ -534,6 +536,9 @@ public abstract class ApplicationContext
>                     }
>
>                     painted = !volatileImage.contentsLost();
> +                } else {
> +                    volatileImage.flush();
> +                    volatileImage = null;
>                 }
>             }
>
>
>
>

Reply via email to