If you were a regular Cocoa app that had standard NSButtons, NSTextFields, and 
NSScrollViews, I'd say yes - you are doing it wrong...but since you tightly 
control your own view hierarchy, I don't think this is a problem. The 
CAOpenGLLayer breaks a lot of the standard rules anyway, and standard NSViews 
don't render into it anyway.

Perhaps overriding your own -[NSView makeBackingLayer] a better approach - but 
unless you suspect this is actually a source of bugs or leaks, I'd say don't 
worry about it.

Regards,
Mike Swingler
Apple Inc.

On Oct 11, 2012, at 4:44 AM, Sergey Bylokhov <sergey.bylok...@oracle.com> wrote:

> Hi Mike, Phil, Dmitry, Scott.
> 
> I have a question about our CALayer implementation. According to the code 
> below we use layer-backed NSView.
> AWTView.m:
>        [self setWantsLayer: YES];
>        [self.layer addSublayer: (CALayer *)cglLayer];
> But in the documentation for NSView.setWantsLayer: "When using layer-backed 
> views you should never interact directly with the layer"
> So we use layer-backed NSView and add our CAOpenGLLayer to the backed layer 
> as sublayer.
> Because of that we use NSView.drawRect and CAOpenGLLayer.drawInCGLContext 
> simultaneously, I guess this is incorrect.
> Is this configuration supported by Apple?
> Should we change our implementation to layer-hosting view or probably we can 
> use layer-backed view with appropriate NSView.makeBackingLayer()?
> 
> 01.09.2011 13:11, dmitry.cherepa...@oracle.com wrote:
>> Changeset: c6eecbe2396f
>> Author:    dcherepanov
>> Date:      2011-09-01 13:08 +0400
>> URL:       
>> http://hg.openjdk.java.net/macosx-port/macosx-port/jdk/rev/c6eecbe2396f
>> 
>> Some cleanup in CAOpenGLLayer prototype (including extracting layer code 
>> into CGLLayer.h|m and removing stale code)
>> 
>> ! make/sun/lwawt/FILES_c_macosx.gmk
>> ! make/sun/lwawt/FILES_c_macosx.gmk.all
>> ! src/macosx/classes/sun/java2d/opengl/CGLGraphicsConfig.java
>> - src/macosx/classes/sun/java2d/opengl/CGLRenderQueue.java
>> ! src/macosx/classes/sun/java2d/opengl/CGLSurfaceData.java
>> ! src/macosx/classes/sun/lwawt/macosx/CPlatformView.java
>> ! src/macosx/native/sun/awt/AWTView.h
>> ! src/macosx/native/sun/awt/AWTView.m
>> ! src/macosx/native/sun/awt/ThreadUtilities.m
>> ! src/macosx/native/sun/java2d/opengl/CGLGraphicsConfig.m
>> + src/macosx/native/sun/java2d/opengl/CGLLayer.h
>> + src/macosx/native/sun/java2d/opengl/CGLLayer.m
>> ! src/macosx/native/sun/java2d/opengl/CGLSurfaceData.m
>> ! src/share/classes/sun/java2d/opengl/OGLRenderQueue.java
>> ! src/share/classes/sun/java2d/pipe/BufferedContext.java
>> ! src/share/native/sun/java2d/opengl/OGLSurfaceData.h
>> - test/experimental/layers/ButtonTest.java
>> 
> 
> 
> -- 
> Best regards, Sergey.
> 

Reply via email to