android_view_SurfaceSession.cpp revision a3850d8f8fc096a7195d34f05f45a4e29926e36c
154362a6e2208117b98db169af9e03c082175af38Heidi Miller/* 254362a6e2208117b98db169af9e03c082175af38Heidi Miller * Copyright (C) 2012 The Android Open Source Project 354362a6e2208117b98db169af9e03c082175af38Heidi Miller * 454362a6e2208117b98db169af9e03c082175af38Heidi Miller * Licensed under the Apache License, Version 2.0 (the "License"); 554362a6e2208117b98db169af9e03c082175af38Heidi Miller * you may not use this file except in compliance with the License. 654362a6e2208117b98db169af9e03c082175af38Heidi Miller * You may obtain a copy of the License at 754362a6e2208117b98db169af9e03c082175af38Heidi Miller * 854362a6e2208117b98db169af9e03c082175af38Heidi Miller * http://www.apache.org/licenses/LICENSE-2.0 954362a6e2208117b98db169af9e03c082175af38Heidi Miller * 1054362a6e2208117b98db169af9e03c082175af38Heidi Miller * Unless required by applicable law or agreed to in writing, software 1154362a6e2208117b98db169af9e03c082175af38Heidi Miller * distributed under the License is distributed on an "AS IS" BASIS, 12n����R� * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1354362a6e2208117b98db169af9e03c082175af38Heidi Miller * See the License for the specific language governing permissions and 1454362a6e2208117b98db169af9e03c082175af38Heidi Miller * limitations under the License. 1554362a6e2208117b98db169af9e03c082175af38Heidi Miller */ 1654362a6e2208117b98db169af9e03c082175af38Heidi Miller 1754362a6e2208117b98db169af9e03c082175af38Heidi Miller#define LOG_TAG "SurfaceSession" 1854362a6e2208117b98db169af9e03c082175af38Heidi Miller 1954362a6e2208117b98db169af9e03c082175af38Heidi Miller#include "JNIHelp.h" 2054362a6e2208117b98db169af9e03c082175af38Heidi Miller 2154362a6e2208117b98db169af9e03c082175af38Heidi Miller#include <android_runtime/AndroidRuntime.h> 2254362a6e2208117b98db169af9e03c082175af38Heidi Miller#include <android_runtime/android_view_SurfaceSession.h> 2354362a6e2208117b98db169af9e03c082175af38Heidi Miller#include <utils/Log.h> 2454362a6e2208117b98db169af9e03c082175af38Heidi Miller#include <utils/RefBase.h> 2554362a6e2208117b98db169af9e03c082175af38Heidi Miller 2654362a6e2208117b98db169af9e03c082175af38Heidi Miller#include <gui/SurfaceComposerClient.h> 27d_ 2854362a6e2208117b98db169af9e03c082175af38Heidi Millernamespace android { 29T��M��>���gT� 30A���static struct { 31m����_��ʠ���jZ���� � jfieldID mNativeClient; 32P�n��]���/H:���bo} gSurfaceSessionClassInfo; 3354362a6e2208117b98db169af9e03c082175af38Heidi Miller 3454362a6e2208117b98db169af9e03c082175af38Heidi Miller 35E�r�ˑ� �wP����EX@���U��s��BYsp<SurfaceComposerClient> android_view_SurfaceSession_getClient( 367s�}"�g��U JNIEnv* env, jobject surfaceSessionObj) { 3754362a6e2208117b98db169af9e03c082175af38Heidi Miller return reinterpret_cast<SurfaceComposerClient*>( 3854362a6e2208117b98db169af9e03c082175af38Heidi Miller env->GetLongField(surfaceSessionObj, gSurfaceSessionClassInfo.mNativeClient)); 3954362a6e2208117b98db169af9e03c082175af38Heidi Miller} 4054362a6e2208117b98db169af9e03c082175af38Heidi Miller 4154362a6e2208117b98db169af9e03c082175af38Heidi Miller 42y-=static jlong nativeCreate(JNIEnv* env, jclass clazz) { 43I�h�w������� SurfaceComposerClient* client = new SurfaceComposerClient(); 4454362a6e2208117b98db169af9e03c082175af38Heidi Miller client->incStrong((void*)nativeCreate); 4554362a6e2208117b98db169af9e03c082175af38Heidi Miller return reinterpret_cast<jlong>(client); 46z��g} 4754362a6e2208117b98db169af9e03c082175af38Heidi Miller 4854362a6e2208117b98db169af9e03c082175af38Heidi Millerstatic void nativeDestroy(JNIEnv* env, jclass clazz, jlong ptr) { 4954362a6e2208117b98db169af9e03c082175af38Heidi Miller SurfaceComposerClient* client = reinterpret_cast<SurfaceComposerClient*>(ptr); 5054362a6e2208117b98db169af9e03c082175af38Heidi Miller client->decStrong((void*)nativeCreate); 51u�����$��} 52Dۂ�( 5354362a6e2208117b98db169af9e03c082175af38Heidi Millerstatic void nativeKill(JNIEnv* env, jclass clazz, jlong ptr) { 54s SurfaceComposerClient* client = reinterpret_cast<SurfaceComposerClient*>(ptr); 5554362a6e2208117b98db169af9e03c082175af38Heidi Miller client->dispose(); 56M�h�H�}yy�***�PmPeee*#��} 5754362a6e2208117b98db169af9e03c082175af38Heidi Miller 58Ze�e-[f�X]�}��H 5954362a6e2208117b98db169af9e03c082175af38Heidi Millerstatic JNINativeMethod gMethods[] = { 6054362a6e2208117b98db169af9e03c082175af38Heidi Miller /* name, signature, funcPtr */ 6154362a6e2208117b98db169af9e03c082175af38Heidi Miller { "nativeCreate", "()J", 62U�$������&��n�ĉ�C� (void*)nativeCreate }, 6354362a6e2208117b98db169af9e03c082175af38Heidi Miller { "nativeDestroy", "(J)V", 6454362a6e2208117b98db169af9e03c082175af38Heidi Miller (void*)nativeDestroy }, 6554362a6e2208117b98db169af9e03c082175af38Heidi Miller { "nativeKill", "(J)V", 661b��?��OvQ��R{Ӣ�HL (void*)nativeKill } 6754362a6e2208117b98db169af9e03c082175af38Heidi Miller}; 6854362a6e2208117b98db169af9e03c082175af38Heidi Miller 6954362a6e2208117b98db169af9e03c082175af38Heidi Millerint register_android_view_SurfaceSession(JNIEnv* env) { 7054362a6e2208117b98db169af9e03c082175af38Heidi Miller int res = jniRegisterNativeMethods(env, "android/view/SurfaceSession", 7154362a6e2208117b98db169af9e03c082175af38Heidi Miller gMethods, NELEM(gMethods)); 7254362a6e2208117b98db169af9e03c082175af38Heidi Miller LOG_ALWAYS_FATAL_IF(res < 0, "Unable to register native methods."); 7354362a6e2208117b98db169af9e03c082175af38Heidi Miller 74uӷ�z�L�)D�F jclass clazz = env->FindClass("android/view/SurfaceSession"); 7554362a6e2208117b98db169af9e03c082175af38Heidi Miller gSurfaceSessionClassInfo.mNativeClient = env->GetFieldID(clazz, "mNativeClient", "J"); 7654362a6e2208117b98db169af9e03c082175af38Heidi Miller return 0; 7754362a6e2208117b98db169af9e03c082175af38Heidi Miller} 7854362a6e2208117b98db169af9e03c082175af38Heidi Miller 7954362a6e2208117b98db169af9e03c082175af38Heidi Miller} // namespace android 8054362a6e2208117b98db169af9e03c082175af38Heidi Miller