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

Sergey Bylokhov Sergey.Bylokhov at oracle.com
Tue Oct 23 05:32:06 PDT 2012


23.10.2012 16:15, Anthony Petrov wrote:
> 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.
ok, changed.
>
>
> 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 get this pattern from CDropTargetContextPeer.flushEvents(). This code 
can be safely removed later.
>
> 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?
At least awt jck/regression tests passed. But sure some regressions 
could be introduced.
>
> -- 
> 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
>>


-- 
Best regards, Sergey.




More information about the awt-dev mailing list