/* * Copyright (C) 2018 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 <nativebase/nativebase.h> #include <system/graphics.h> #define ANDROID_NATIVE_WINDOW_MAGIC ANDROID_NATIVE_MAKE_CONSTANT('_', 'w', 'n', 'd') enum { NATIVE_WINDOW_WIDTH = 0, NATIVE_WINDOW_HEIGHT = 1, }; struct ANativeWindow { ANativeWindow() : flags(0), minSwapInterval(0), maxSwapInterval(0), xdpi(0), ydpi(0) { common.magic = ANDROID_NATIVE_BUFFER_MAGIC; common.version = sizeof(ANativeWindowBuffer); memset(common.reserved, 0, sizeof(common.reserved)); } android_native_base_t common; const uint32_t flags; const int minSwapInterval; const int maxSwapInterval; const float xdpi; const float ydpi; intptr_t oem[4]; int (*setSwapInterval)(ANativeWindow*, int); int (*dequeueBuffer_DEPRECATED)(ANativeWindow*, ANativeWindowBuffer**); int (*lockBuffer_DEPRECATED)(ANativeWindow*, ANativeWindowBuffer*); int (*queueBuffer_DEPRECATED)(ANativeWindow*, ANativeWindowBuffer*); int (*query)(const ANativeWindow*, int, int*); int (*perform)(ANativeWindow*, int, ...); int (*cancelBuffer_DEPRECATED)(ANativeWindow*, ANativeWindowBuffer*); int (*dequeueBuffer)(ANativeWindow*, ANativeWindowBuffer**, int*); int (*queueBuffer)(ANativeWindow*, ANativeWindowBuffer*, int); int (*cancelBuffer)(ANativeWindow*, ANativeWindowBuffer*, int); }; static inline int native_window_set_usage(ANativeWindow*, uint64_t) { // No-op return 0; } static inline int native_window_dequeue_buffer_and_wait(ANativeWindow* anw, ANativeWindowBuffer** anwb) { return anw->dequeueBuffer_DEPRECATED(anw, anwb); }