1 /*
2  * Copyright 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 /**
18  * @addtogroup NativeActivity Native Activity
19  * @{
20  */
21 
22 /**
23  * @file surface_control_jni.h
24  */
25 
26 #ifndef ANDROID_SURFACE_CONTROL_JNI_H
27 #define ANDROID_SURFACE_CONTROL_JNI_H
28 
29 #include <jni.h>
30 #include <sys/cdefs.h>
31 
32 #include <android/surface_control.h>
33 
34 __BEGIN_DECLS
35 
36 /**
37  * Return the ASurfaceControl wrapped by a Java SurfaceControl object.
38  *
39  * The caller takes ownership of the returned ASurfaceControl returned and must
40  * release it * using ASurfaceControl_release.
41  *
42  * surfaceControlObj must be a non-null instance of android.view.SurfaceControl
43  * and isValid() must be true.
44  *
45  * Available since API level 34.
46  */
47 ASurfaceControl* _Nonnull ASurfaceControl_fromJava(JNIEnv* _Nonnull env,
48         jobject _Nonnull surfaceControlObj) __INTRODUCED_IN(__ANDROID_API_U__);
49 
50 /**
51  * Return the ASurfaceTransaction wrapped by a Java Transaction object.
52  *
53  * The returned ASurfaceTransaction is still owned by the Java Transaction object is only
54  * valid while the Java Transaction object is alive. In particular, the returned transaction
55  * must NOT be deleted with ASurfaceTransaction_delete.
56  *
57  * transactionObj must be a non-null instance of
58  * android.view.SurfaceControl.Transaction and close() must not already be called.
59  *
60  * Available since API level 34.
61  */
62 ASurfaceTransaction* _Nonnull ASurfaceTransaction_fromJava(JNIEnv* _Nonnull env,
63         jobject _Nonnull transactionObj) __INTRODUCED_IN(__ANDROID_API_U__);
64 
65 __END_DECLS
66 
67 #endif // ANDROID_SURFACE_CONTROL_JNI_H
68 /** @} */
69