<AWT Dev> [8] Request for review: 7198229 [macosx] Painting during resizing of the frame should be more smooth

Anthony Petrov anthony.petrov at oracle.com
Tue Oct 23 05:15:39 PDT 2012


Hi Sergey,

src/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java
>  902         //TODO validateSurface already called from notifyReshape
>  903         if (!oldB.getSize().equals(nativeBounds.getSize()) ) {
>  904             flushBuffers();
>  905         }
>  906         validateSurface();

I think the comment at line 902 must be moved closer to the line 906 
where it actually belongs.


src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java
>  503                 public synchronized void run() {

Why does this method have to be synchronized? Do you expect the 
Runnable.run() to be called many times from different threads?

I'm not an expert in CA layers, but I think changing from a layer backed 
view to a layer hosting view is a big change. What tests did you run to 
verify there's no regressions with rendering?

--
best regards,
Anthony

On 10/23/2012 3:41 PM, Sergey Bylokhov wrote:
> Hi Everyone,
> Please review the fix.
> This is an attempt to make our resizing better. I try to eliminate all 
> unnecessary repaint actions.
> 1 "Layer backed view" was changed to "Layer hosting view" - unnecessary 
> call from drawRect() was eliminated. Now we post Paint event in the 
> resize callback when necessary.
> 2 CALayer options were changed, so now it don't force setNeedsDisplay.
> 3 canDrawInCGLContext() was added to CGLLayer.m to eliminate unnecessary 
> call to drawInCGLContext() when our 2d texture is not ready.
> 4 CPlatformWindow.deliverMoveResizeEvent() make an attempt to expose 
> LWWindowPeer synchronously. (LWCToolkit.invokeAndWait is used)
> 
> After the fix we call Layer.setNeedsDisplay only in the Java2D Queue 
> Flusher threads. It means that we have no possibility to accelerate 
> resizing even more from awt side.
> I'll make addition research of this question in the following CR.
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7129082
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8001213
> 
> Bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7198229
> Webrev can be found at: http://cr.openjdk.java.net/~serb/7198229/webrev.00
> 



More information about the awt-dev mailing list