src/macosx/native/sun/java2d/opengl/CGLLayer.m

Print this page

        

*** 59,68 **** --- 59,81 ---- self.asynchronous = FALSE; self.contentsGravity = kCAGravityTopLeft; //Layer backed view //self.needsDisplayOnBoundsChange = YES; //self.autoresizingMask = kCALayerWidthSizable | kCALayerHeightSizable; + + //Disable CALayer's default animation + NSMutableDictionary * actions = [[NSMutableDictionary alloc] initWithObjectsAndKeys: + [NSNull null], @"bounds", + [NSNull null], @"contents", + [NSNull null], @"contentsScale", + [NSNull null], @"onOrderIn", + [NSNull null], @"onOrderOut", + [NSNull null], @"sublayers", + nil]; + self.actions = actions; + [actions release]; + textureID = 0; // texture will be created by rendering pipe target = 0; return self; }
*** 119,128 **** --- 132,145 ---- AWT_ASSERT_APPKIT_THREAD; // Set the current context to the one given to us. CGLSetCurrentContext(glContext); + // Should clear the whole CALayer, because it can be larger than our texture. + glClearColor(0.0, 0.0, 0.0, 0.0); + glClear(GL_COLOR_BUFFER_BIT); + glViewport(0, 0, textureWidth, textureHeight); JNIEnv *env = [ThreadUtilities getJNIEnv]; static JNF_CLASS_CACHE(jc_JavaLayer, "sun/java2d/opengl/CGLLayer"); static JNF_MEMBER_CACHE(jm_drawInCGLContext, jc_JavaLayer, "drawInCGLContext", "()V");
*** 166,176 **** } // Must be called under the RQ lock. JNIEXPORT void JNICALL Java_sun_java2d_opengl_CGLLayer_validate ! (JNIEnv *env, jobject obj, jlong layerPtr, jobject surfaceData) { CGLLayer *layer = OBJC(layerPtr); if (surfaceData != NULL) { OGLSDOps *oglsdo = (OGLSDOps*) SurfaceData_GetOps(env, surfaceData); --- 183,193 ---- } // Must be called under the RQ lock. JNIEXPORT void JNICALL Java_sun_java2d_opengl_CGLLayer_validate ! (JNIEnv *env, jclass cls, jlong layerPtr, jobject surfaceData) { CGLLayer *layer = OBJC(layerPtr); if (surfaceData != NULL) { OGLSDOps *oglsdo = (OGLSDOps*) SurfaceData_GetOps(env, surfaceData);
*** 184,194 **** } // Must be called on the AppKit thread and under the RQ lock. JNIEXPORT void JNICALL Java_sun_java2d_opengl_CGLLayer_blitTexture ! (JNIEnv *env, jobject obj, jlong layerPtr) { CGLLayer *layer = jlong_to_ptr(layerPtr); [layer blitTexture]; } --- 201,223 ---- } // Must be called on the AppKit thread and under the RQ lock. JNIEXPORT void JNICALL Java_sun_java2d_opengl_CGLLayer_blitTexture ! (JNIEnv *env, jclass cls, jlong layerPtr) { CGLLayer *layer = jlong_to_ptr(layerPtr); [layer blitTexture]; } + + JNIEXPORT void JNICALL + Java_sun_java2d_opengl_CGLLayer_nativeSetScale + (JNIEnv *env, jclass cls, jlong layerPtr, jdouble scale) + { + JNF_COCOA_ENTER(env); + CGLLayer *layer = jlong_to_ptr(layerPtr); + [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ + layer.contentsScale = scale; + }]; + JNF_COCOA_EXIT(env); + }