diff options
author | 2017-04-27 20:06:55 -0700 | |
---|---|---|
committer | 2017-05-09 16:42:31 -0700 | |
commit | 6a3c05bcfab588fd99dd8d619a53d15374e99507 (patch) | |
tree | 30e5edaa74ea3dff07579a5a9cd39f1755069eb3 | |
parent | 37c27efdf8232272648e56513f3caceeb5c66407 (diff) |
fix circular dependency libnativewindow <-> libui
Bug: 37647680
Bug: 37648355
Test: compile, manual
Change-Id: I9631beea52e23ebb519411f943c6f5062aedd2e5
38 files changed, 426 insertions, 136 deletions
diff --git a/include/gui/Surface.h b/include/gui/Surface.h index 8b1d1069b3..c8c6e99c10 100644 --- a/include/gui/Surface.h +++ b/include/gui/Surface.h @@ -27,7 +27,7 @@ #include <utils/Mutex.h> #include <utils/RefBase.h> -struct ANativeWindow_Buffer; +#include <system/window.h> namespace android { diff --git a/include/media/hardware/HDCPAPI.h b/include/media/hardware/HDCPAPI.h index 30cd5fd9f2..7797bb2ab4 100644 --- a/include/media/hardware/HDCPAPI.h +++ b/include/media/hardware/HDCPAPI.h @@ -15,11 +15,10 @@ */ #ifndef HDCP_API_H_ - #define HDCP_API_H_ #include <utils/Errors.h> -#include <system/window.h> +#include <cutils/native_handle.h> namespace android { diff --git a/include/media/hardware/HardwareAPI.h b/include/media/hardware/HardwareAPI.h index cecf7152f4..6c1ba3de00 100644 --- a/include/media/hardware/HardwareAPI.h +++ b/include/media/hardware/HardwareAPI.h @@ -20,13 +20,15 @@ #include <media/hardware/OMXPluginBase.h> #include <media/hardware/MetadataBufferType.h> -#include <system/window.h> +#include <cutils/native_handle.h> #include <utils/RefBase.h> #include "VideoAPI.h" #include <OMX_Component.h> +struct ANativeWindowBuffer; + namespace android { // This structure is used to enable Android native buffer use for either diff --git a/include/ui/ANativeObjectBase.h b/include/ui/ANativeObjectBase.h index 640e34b509..e9d5d8d40b 100644 --- a/include/ui/ANativeObjectBase.h +++ b/include/ui/ANativeObjectBase.h @@ -19,26 +19,8 @@ #include <sys/types.h> -#include <system/window.h> +#include <nativebase/nativebase.h> -// --------------------------------------------------------------------------- - -/* FIXME: this is legacy for pixmaps */ -typedef struct egl_native_pixmap_t -{ - int32_t version; /* must be 32 */ - int32_t width; - int32_t height; - int32_t stride; - uint8_t* data; - uint8_t format; - uint8_t rfu[3]; - union { - uint32_t compressedFormat; - int32_t vstride; - }; - int32_t reserved; -} egl_native_pixmap_t; /*****************************************************************************/ @@ -52,7 +34,8 @@ namespace android { * This helper class turns a ANativeXXX object type into a C++ * reference-counted object; with proper type conversions. */ -template <typename NATIVE_TYPE, typename TYPE, typename REF> +template <typename NATIVE_TYPE, typename TYPE, typename REF, + typename NATIVE_BASE = android_native_base_t> class ANativeObjectBase : public NATIVE_TYPE, public REF { public: @@ -65,7 +48,7 @@ public: } protected: - typedef ANativeObjectBase<NATIVE_TYPE, TYPE, REF> BASE; + typedef ANativeObjectBase<NATIVE_TYPE, TYPE, REF, NATIVE_BASE> BASE; ANativeObjectBase() : NATIVE_TYPE(), REF() { NATIVE_TYPE::common.incRef = incRef; NATIVE_TYPE::common.decRef = decRef; @@ -76,17 +59,17 @@ protected: static inline TYPE const* getSelf(NATIVE_TYPE const* self) { return static_cast<TYPE const *>(self); } - static inline TYPE* getSelf(android_native_base_t* base) { + static inline TYPE* getSelf(NATIVE_BASE* base) { return getSelf(reinterpret_cast<NATIVE_TYPE*>(base)); } - static inline TYPE const * getSelf(android_native_base_t const* base) { + static inline TYPE const * getSelf(NATIVE_BASE const* base) { return getSelf(reinterpret_cast<NATIVE_TYPE const*>(base)); } - static void incRef(android_native_base_t* base) { + static void incRef(NATIVE_BASE* base) { ANativeObjectBase* self = getSelf(base); self->incStrong(self); } - static void decRef(android_native_base_t* base) { + static void decRef(NATIVE_BASE* base) { ANativeObjectBase* self = getSelf(base); self->decStrong(self); } diff --git a/include/ui/Gralloc2.h b/include/ui/Gralloc2.h index f826b92c31..e7b8ca94ed 100644 --- a/include/ui/Gralloc2.h +++ b/include/ui/Gralloc2.h @@ -21,7 +21,6 @@ #include <android/hardware/graphics/allocator/2.0/IAllocator.h> #include <android/hardware/graphics/mapper/2.0/IMapper.h> -#include <system/window.h> #include <utils/StrongPointer.h> namespace android { diff --git a/include/ui/GraphicBuffer.h b/include/ui/GraphicBuffer.h index 4b82cffb2d..9a5aa6937a 100644 --- a/include/ui/GraphicBuffer.h +++ b/include/ui/GraphicBuffer.h @@ -28,9 +28,9 @@ #include <utils/Flattenable.h> #include <utils/RefBase.h> -#include <hardware/gralloc.h> +#include <nativebase/nativebase.h> -struct ANativeWindowBuffer; +#include <hardware/gralloc.h> namespace android { @@ -41,7 +41,7 @@ class GraphicBufferMapper; // =========================================================================== class GraphicBuffer - : public ANativeObjectBase< ANativeWindowBuffer, GraphicBuffer, RefBase >, + : public ANativeObjectBase<ANativeWindowBuffer, GraphicBuffer, RefBase>, public Flattenable<GraphicBuffer> { friend class Flattenable<GraphicBuffer>; diff --git a/include/ui/GraphicBufferAllocator.h b/include/ui/GraphicBufferAllocator.h index fe99de1dd9..14a865e16c 100644 --- a/include/ui/GraphicBufferAllocator.h +++ b/include/ui/GraphicBufferAllocator.h @@ -25,8 +25,6 @@ #include <cutils/native_handle.h> -#include <system/window.h> - #include <ui/PixelFormat.h> #include <utils/Errors.h> diff --git a/libs/gui/Android.bp b/libs/gui/Android.bp index 5a127406db..c0ae3d7836 100644 --- a/libs/gui/Android.bp +++ b/libs/gui/Android.bp @@ -117,9 +117,14 @@ cc_library_shared { "android.hardware.configstore-utils", ], + header_libs: [ + "libnativebase_headers", + ], + export_shared_lib_headers: [ "libbinder", "libui", + "libnativewindow", "android.hidl.token@1.0-utils", "android.hardware.graphics.bufferqueue@1.0", ], diff --git a/libs/gui/BufferQueueConsumer.cpp b/libs/gui/BufferQueueConsumer.cpp index 5e5de443f4..be754c25fc 100644 --- a/libs/gui/BufferQueueConsumer.cpp +++ b/libs/gui/BufferQueueConsumer.cpp @@ -36,6 +36,8 @@ #include <binder/PermissionCache.h> #include <private/android_filesystem_config.h> +#include <system/window.h> + namespace android { BufferQueueConsumer::BufferQueueConsumer(const sp<BufferQueueCore>& core) : diff --git a/libs/gui/BufferQueueCore.cpp b/libs/gui/BufferQueueCore.cpp index cfb25e0503..b891c2a5a5 100644 --- a/libs/gui/BufferQueueCore.cpp +++ b/libs/gui/BufferQueueCore.cpp @@ -38,6 +38,8 @@ #include <gui/ISurfaceComposer.h> #include <private/gui/ComposerService.h> +#include <system/window.h> + namespace android { static String8 getUniqueName() { diff --git a/libs/gui/BufferQueueProducer.cpp b/libs/gui/BufferQueueProducer.cpp index 6a5593cc1c..b76e2c68b5 100644 --- a/libs/gui/BufferQueueProducer.cpp +++ b/libs/gui/BufferQueueProducer.cpp @@ -39,6 +39,8 @@ #include <utils/Log.h> #include <utils/Trace.h> +#include <system/window.h> + namespace android { static constexpr uint32_t BQ_LAYER_COUNT = 1; diff --git a/libs/gui/StreamSplitter.cpp b/libs/gui/StreamSplitter.cpp index bafe947efe..52c906775e 100644 --- a/libs/gui/StreamSplitter.cpp +++ b/libs/gui/StreamSplitter.cpp @@ -31,6 +31,8 @@ #include <utils/Trace.h> +#include <system/window.h> + namespace android { status_t StreamSplitter::createSplitter( diff --git a/libs/gui/tests/BufferQueue_test.cpp b/libs/gui/tests/BufferQueue_test.cpp index 60c1277db0..4220aafa07 100644 --- a/libs/gui/tests/BufferQueue_test.cpp +++ b/libs/gui/tests/BufferQueue_test.cpp @@ -32,6 +32,8 @@ #include <utils/String8.h> #include <utils/threads.h> +#include <system/window.h> + #include <gtest/gtest.h> #include <thread> diff --git a/libs/gui/tests/IGraphicBufferProducer_test.cpp b/libs/gui/tests/IGraphicBufferProducer_test.cpp index aa071f68b0..bcfc91c3f5 100644 --- a/libs/gui/tests/IGraphicBufferProducer_test.cpp +++ b/libs/gui/tests/IGraphicBufferProducer_test.cpp @@ -29,6 +29,8 @@ #include <gui/BufferQueue.h> #include <gui/IProducerListener.h> +#include <system/window.h> + #include <vector> #define ASSERT_OK(x) ASSERT_EQ(OK, (x)) diff --git a/libs/gui/tests/StreamSplitter_test.cpp b/libs/gui/tests/StreamSplitter_test.cpp index 80e30da84a..e2f494898e 100644 --- a/libs/gui/tests/StreamSplitter_test.cpp +++ b/libs/gui/tests/StreamSplitter_test.cpp @@ -24,6 +24,8 @@ #include <gui/StreamSplitter.h> #include <private/gui/ComposerService.h> +#include <system/window.h> + #include <gtest/gtest.h> namespace android { diff --git a/libs/nativebase/Android.bp b/libs/nativebase/Android.bp new file mode 100644 index 0000000000..7375a2bc2f --- /dev/null +++ b/libs/nativebase/Android.bp @@ -0,0 +1,29 @@ +// 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. + +cc_library_headers { + name: "libnativebase_headers", + vendor_available: true, + host_supported: true, + export_include_dirs: ["include"], + + target: { + linux_bionic: { + enabled: true, + }, + windows: { + enabled: true, + }, + } +} diff --git a/libs/nativebase/MODULE_LICENSE_APACHE2 b/libs/nativebase/MODULE_LICENSE_APACHE2 new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/libs/nativebase/MODULE_LICENSE_APACHE2 diff --git a/libs/nativebase/NOTICE b/libs/nativebase/NOTICE new file mode 100644 index 0000000000..c5b1efa7aa --- /dev/null +++ b/libs/nativebase/NOTICE @@ -0,0 +1,190 @@ + + Copyright (c) 2005-2008, 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. + + 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. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + diff --git a/libs/nativebase/include/nativebase/nativebase.h b/libs/nativebase/include/nativebase/nativebase.h new file mode 100644 index 0000000000..90afb3f637 --- /dev/null +++ b/libs/nativebase/include/nativebase/nativebase.h @@ -0,0 +1,106 @@ +/* + * 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; + uintptr_t layerCount; + + void* reserved[1]; + + const native_handle_t* handle; + + void* reserved_proc[8]; +} ANativeWindowBuffer_t; + +typedef struct ANativeWindowBuffer ANativeWindowBuffer; + +// Old typedef for backwards compatibility. +typedef ANativeWindowBuffer_t android_native_buffer_t; + +__END_DECLS diff --git a/libs/nativewindow/ANativeWindow.cpp b/libs/nativewindow/ANativeWindow.cpp index f64bab13f0..9224df604a 100644 --- a/libs/nativewindow/ANativeWindow.cpp +++ b/libs/nativewindow/ANativeWindow.cpp @@ -16,8 +16,6 @@ #define LOG_TAG "ANativeWindow" -#include <android/native_window.h> - #include <grallocusage/GrallocUsageConversion.h> // from nativewindow/includes/system/window.h // (not to be confused with the compatibility-only window.h from system/core/includes) diff --git a/libs/nativewindow/Android.bp b/libs/nativewindow/Android.bp index 938d426b41..c5d9911b8f 100644 --- a/libs/nativewindow/Android.bp +++ b/libs/nativewindow/Android.bp @@ -57,10 +57,18 @@ cc_library { "libgrallocusage", ], + header_libs: [ + "libnativebase_headers", + ], + // headers we include in our public headers export_static_lib_headers: [ "libarect", ], + + export_header_lib_headers: [ + "libnativebase_headers", + ], } llndk_library { diff --git a/libs/nativewindow/include/system/window.h b/libs/nativewindow/include/system/window.h index 45110c490b..42ef075c57 100644 --- a/libs/nativewindow/include/system/window.h +++ b/libs/nativewindow/include/system/window.h @@ -60,25 +60,6 @@ __BEGIN_DECLS // --------------------------------------------------------------------------- -typedef const native_handle_t* buffer_handle_t; - -// --------------------------------------------------------------------------- - -typedef struct android_native_rect_t -{ - int32_t left; - int32_t top; - int32_t right; - int32_t bottom; -} android_native_rect_t; - -// --------------------------------------------------------------------------- - -// Old typedef for backwards compatibility. -typedef ANativeWindowBuffer_t android_native_buffer_t; - -// --------------------------------------------------------------------------- - /* attributes queriable with query() */ enum { NATIVE_WINDOW_WIDTH = 0, diff --git a/libs/nativewindow/include/vndk/window.h b/libs/nativewindow/include/vndk/window.h index 95618c472d..a7b340aea3 100644 --- a/libs/nativewindow/include/vndk/window.h +++ b/libs/nativewindow/include/vndk/window.h @@ -17,87 +17,13 @@ #ifndef ANDROID_VNDK_NATIVEWINDOW_ANATIVEWINDOW_H #define ANDROID_VNDK_NATIVEWINDOW_ANATIVEWINDOW_H -#include <stdint.h> -#include <stdbool.h> -#include <sys/cdefs.h> -#include <system/graphics-base.h> -#include <cutils/native_handle.h> +#include <nativebase/nativebase.h> // vndk is a superset of the NDK #include <android/native_window.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 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; - uintptr_t layerCount; - - void* reserved[1]; - - const native_handle_t* handle; - - void* reserved_proc[8]; -} ANativeWindowBuffer_t; - -typedef struct ANativeWindowBuffer ANativeWindowBuffer; +__BEGIN_DECLS /* * Convert this ANativeWindowBuffer into a AHardwareBuffer diff --git a/libs/ui/Android.bp b/libs/ui/Android.bp index ab48a7f496..cb661e1e03 100644 --- a/libs/ui/Android.bp +++ b/libs/ui/Android.bp @@ -83,10 +83,18 @@ cc_library_shared { "libmath", ], + header_libs: [ + "libnativebase_headers", + ], + export_static_lib_headers: [ "libarect", "libmath", ], + + export_header_lib_headers: [ + "libnativebase_headers", + ], } subdirs = ["tests"] diff --git a/libs/vr/libbufferhub/Android.bp b/libs/vr/libbufferhub/Android.bp index 452bad0bce..da0ea24dab 100644 --- a/libs/vr/libbufferhub/Android.bp +++ b/libs/vr/libbufferhub/Android.bp @@ -34,6 +34,11 @@ sharedLibraries = [ "liblog", "libui", "libutils", + "libnativewindow" +] + +HeaderLibraries = [ + "libnativebase_headers", ] cc_library { @@ -45,7 +50,11 @@ cc_library { export_include_dirs: localIncludeFiles, static_libs: staticLibraries, shared_libs: sharedLibraries, + header_libs: HeaderLibraries, name: "libbufferhub", + export_header_lib_headers: [ + "libnativebase_headers", + ], } cc_test { diff --git a/libs/vr/libbufferhub/include/private/dvr/native_buffer.h b/libs/vr/libbufferhub/include/private/dvr/native_buffer.h index b4ef2f50d7..a54579f032 100644 --- a/libs/vr/libbufferhub/include/private/dvr/native_buffer.h +++ b/libs/vr/libbufferhub/include/private/dvr/native_buffer.h @@ -4,9 +4,9 @@ #include <EGL/egl.h> #include <EGL/eglext.h> #include <log/log.h> -#include <system/window.h> #include <ui/ANativeObjectBase.h> #include <utils/RefBase.h> +#include <nativebase/nativebase.h> #include <private/dvr/buffer_hub_client.h> diff --git a/libs/vr/libbufferhubqueue/Android.bp b/libs/vr/libbufferhubqueue/Android.bp index 0fa1f01aad..2a3f5fc289 100644 --- a/libs/vr/libbufferhubqueue/Android.bp +++ b/libs/vr/libbufferhubqueue/Android.bp @@ -40,6 +40,10 @@ sharedLibraries = [ "libgui", ] +headerLibraries = [ + "libnativebase_headers", +] + cc_library { name: "libbufferhubqueue", cflags: [ @@ -51,6 +55,7 @@ cc_library { export_static_lib_headers: staticLibraries, static_libs: staticLibraries, shared_libs: sharedLibraries, + header_libs: headerLibraries, } subdirs = ["tests"] diff --git a/libs/vr/libbufferhubqueue/buffer_hub_queue_producer.cpp b/libs/vr/libbufferhubqueue/buffer_hub_queue_producer.cpp index 5121508622..e0a3a34d2d 100644 --- a/libs/vr/libbufferhubqueue/buffer_hub_queue_producer.cpp +++ b/libs/vr/libbufferhubqueue/buffer_hub_queue_producer.cpp @@ -2,6 +2,7 @@ #include <inttypes.h> #include <log/log.h> +#include <system/window.h> namespace android { namespace dvr { diff --git a/libs/vr/libdisplay/graphics.cpp b/libs/vr/libdisplay/graphics.cpp index 36f8095475..cc140af7b6 100644 --- a/libs/vr/libdisplay/graphics.cpp +++ b/libs/vr/libdisplay/graphics.cpp @@ -27,7 +27,7 @@ #include <private/dvr/sensor_constants.h> #include <private/dvr/vsync_client.h> -#include <android/native_window.h> +#include <system/window.h> #ifndef EGL_CONTEXT_MAJOR_VERSION #define EGL_CONTEXT_MAJOR_VERSION 0x3098 diff --git a/libs/vr/libdisplay/include/private/dvr/dummy_native_window.h b/libs/vr/libdisplay/include/private/dvr/dummy_native_window.h index b03eeaa9e9..b9c1067852 100644 --- a/libs/vr/libdisplay/include/private/dvr/dummy_native_window.h +++ b/libs/vr/libdisplay/include/private/dvr/dummy_native_window.h @@ -3,6 +3,7 @@ #include <android/native_window.h> #include <ui/ANativeObjectBase.h> +#include <system/window.h> namespace android { namespace dvr { diff --git a/libs/vr/libdvr/dvr_internal.h b/libs/vr/libdvr/dvr_internal.h index 89bef09871..6431f1cfd8 100644 --- a/libs/vr/libdvr/dvr_internal.h +++ b/libs/vr/libdvr/dvr_internal.h @@ -44,6 +44,8 @@ ProducerQueue* GetProducerQueueFromDvrWriteBufferQueue( extern "C" { +struct ANativeWindow; + struct DvrWriteBuffer { std::shared_ptr<android::dvr::BufferProducer> write_buffer; }; diff --git a/opengl/libagl/Android.mk b/opengl/libagl/Android.mk index 4b08749b22..c7635e27c7 100644 --- a/opengl/libagl/Android.mk +++ b/opengl/libagl/Android.mk @@ -26,7 +26,7 @@ LOCAL_CFLAGS += -DLOG_TAG=\"libagl\" LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES LOCAL_CFLAGS += -fvisibility=hidden -LOCAL_SHARED_LIBRARIES := libcutils libhardware libutils liblog libpixelflinger libETC1 libui +LOCAL_SHARED_LIBRARIES := libcutils libhardware libutils liblog libpixelflinger libETC1 libui libnativewindow LOCAL_SRC_FILES_arm += fixed_asm.S iterators.S LOCAL_CFLAGS_arm += -fstrict-aliasing diff --git a/opengl/libagl/egl.cpp b/opengl/libagl/egl.cpp index 04f6d6d1a3..b79051c499 100644 --- a/opengl/libagl/egl.cpp +++ b/opengl/libagl/egl.cpp @@ -56,6 +56,24 @@ EGLBoolean EGLAPI eglSetSwapRectangleANDROID(EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height); + +typedef struct egl_native_pixmap_t +{ + int32_t version; /* must be 32 */ + int32_t width; + int32_t height; + int32_t stride; + uint8_t* data; + uint8_t format; + uint8_t rfu[3]; + union { + uint32_t compressedFormat; + int32_t vstride; + }; + int32_t reserved; +} egl_native_pixmap_t; + + // ---------------------------------------------------------------------------- namespace android { diff --git a/opengl/tests/hwc/Android.bp b/opengl/tests/hwc/Android.bp index b6e6f0eed9..425f3740e4 100644 --- a/opengl/tests/hwc/Android.bp +++ b/opengl/tests/hwc/Android.bp @@ -34,6 +34,10 @@ cc_library_static { "libglTest", "libtestUtil", ], + shared_libs: [ + "libui", + "libnativewindow" + ], defaults: ["hwc_tests_defaults"], } @@ -48,6 +52,7 @@ cc_defaults { "liblog", "libui", "libutils", + "libnativewindow" ], static_libs: [ diff --git a/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp b/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp index 8217540215..6e843d9f33 100644 --- a/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp +++ b/services/surfaceflinger/DisplayHardware/VirtualDisplaySurface.cpp @@ -22,6 +22,7 @@ #include <gui/BufferItem.h> #include <gui/BufferQueue.h> #include <gui/IProducerListener.h> +#include <system/window.h> // --------------------------------------------------------------------------- namespace android { diff --git a/services/surfaceflinger/LayerRejecter.cpp b/services/surfaceflinger/LayerRejecter.cpp index 0b302ebe03..f1524956ee 100644 --- a/services/surfaceflinger/LayerRejecter.cpp +++ b/services/surfaceflinger/LayerRejecter.cpp @@ -17,6 +17,7 @@ #include "LayerRejecter.h" #include <gui/BufferItem.h> +#include <system/window.h> #include "clz.h" diff --git a/vulkan/include/vulkan/vk_android_native_buffer.h b/vulkan/include/vulkan/vk_android_native_buffer.h index 43a9a9c20d..d3e5f0f6b1 100644 --- a/vulkan/include/vulkan/vk_android_native_buffer.h +++ b/vulkan/include/vulkan/vk_android_native_buffer.h @@ -17,7 +17,7 @@ #ifndef __VK_ANDROID_NATIVE_BUFFER_H__ #define __VK_ANDROID_NATIVE_BUFFER_H__ -#include <system/window.h> +#include <cutils/native_handle.h> #include <vulkan/vulkan.h> #ifdef __cplusplus diff --git a/vulkan/libvulkan/swapchain.cpp b/vulkan/libvulkan/swapchain.cpp index caa2674d7b..cb893aa912 100644 --- a/vulkan/libvulkan/swapchain.cpp +++ b/vulkan/libvulkan/swapchain.cpp @@ -22,6 +22,7 @@ #include <sync/sync.h> #include <utils/StrongPointer.h> #include <utils/Vector.h> +#include <system/window.h> #include "driver.h" |