forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.0 KiB
110 lines
3.0 KiB
/* |
|
* Copyright (C) 2017 The Android Open Source Project |
|
* |
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
* you may not use this file except in compliance with the License. |
|
* You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
|
|
#pragma once |
|
|
|
#include <stdint.h> |
|
#include <stdbool.h> |
|
#include <string.h> |
|
#include <sys/cdefs.h> |
|
#include <system/graphics-base.h> |
|
#include <cutils/native_handle.h> |
|
|
|
__BEGIN_DECLS |
|
|
|
#ifdef __cplusplus |
|
#define ANDROID_NATIVE_UNSIGNED_CAST(x) static_cast<unsigned int>(x) |
|
#else |
|
#define ANDROID_NATIVE_UNSIGNED_CAST(x) ((unsigned int)(x)) |
|
#endif |
|
|
|
#define ANDROID_NATIVE_MAKE_CONSTANT(a,b,c,d) \ |
|
((ANDROID_NATIVE_UNSIGNED_CAST(a) << 24) | \ |
|
(ANDROID_NATIVE_UNSIGNED_CAST(b) << 16) | \ |
|
(ANDROID_NATIVE_UNSIGNED_CAST(c) << 8) | \ |
|
(ANDROID_NATIVE_UNSIGNED_CAST(d))) |
|
|
|
#define ANDROID_NATIVE_BUFFER_MAGIC ANDROID_NATIVE_MAKE_CONSTANT('_','b','f','r') |
|
|
|
|
|
typedef struct android_native_base_t |
|
{ |
|
/* a magic value defined by the actual EGL native type */ |
|
int magic; |
|
|
|
/* the sizeof() of the actual EGL native type */ |
|
int version; |
|
|
|
void* reserved[4]; |
|
|
|
/* reference-counting interface */ |
|
void (*incRef)(struct android_native_base_t* base); |
|
void (*decRef)(struct android_native_base_t* base); |
|
} android_native_base_t; |
|
|
|
typedef struct android_native_rect_t |
|
{ |
|
int32_t left; |
|
int32_t top; |
|
int32_t right; |
|
int32_t bottom; |
|
} android_native_rect_t; |
|
|
|
typedef struct ANativeWindowBuffer |
|
{ |
|
#ifdef __cplusplus |
|
ANativeWindowBuffer() { |
|
common.magic = ANDROID_NATIVE_BUFFER_MAGIC; |
|
common.version = sizeof(ANativeWindowBuffer); |
|
memset(common.reserved, 0, sizeof(common.reserved)); |
|
} |
|
|
|
// Implement the methods that sp<ANativeWindowBuffer> expects so that it |
|
// can be used to automatically refcount ANativeWindowBuffer's. |
|
void incStrong(const void* /*id*/) const { |
|
common.incRef(const_cast<android_native_base_t*>(&common)); |
|
} |
|
void decStrong(const void* /*id*/) const { |
|
common.decRef(const_cast<android_native_base_t*>(&common)); |
|
} |
|
#endif |
|
|
|
struct android_native_base_t common; |
|
|
|
int width; |
|
int height; |
|
int stride; |
|
int format; |
|
int usage_deprecated; |
|
uintptr_t layerCount; |
|
|
|
void* reserved[1]; |
|
|
|
const native_handle_t* handle; |
|
uint64_t usage; |
|
|
|
// we needed extra space for storing the 64-bits usage flags |
|
// the number of slots to use from reserved_proc depends on the |
|
// architecture. |
|
void* reserved_proc[8 - (sizeof(uint64_t) / sizeof(void*))]; |
|
} ANativeWindowBuffer_t; |
|
|
|
typedef struct ANativeWindowBuffer ANativeWindowBuffer; |
|
|
|
// Old typedef for backwards compatibility. |
|
typedef ANativeWindowBuffer_t android_native_buffer_t; |
|
|
|
__END_DECLS
|
|
|