Loading libs/gui/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -264,6 +264,7 @@ filegroup { "DisplayEventDispatcher.cpp", "DisplayEventReceiver.cpp", "FenceMonitor.cpp", "Flags.cpp", "GLConsumer.cpp", "IConsumerListener.cpp", "IGraphicBufferConsumer.cpp", Loading libs/gui/Flags.cpp 0 → 100644 +73 −0 Original line number Diff line number Diff line /* * Copyright 2024 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. */ #include <gui/Flags.h> #include <gui/IGraphicBufferProducer.h> #include <gui/Surface.h> #include <gui/view/Surface.h> namespace android { namespace flagtools { sp<SurfaceType> surfaceToSurfaceType(const sp<Surface>& surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return surface; #else return surface->getIGraphicBufferProducer(); #endif } sp<IGraphicBufferProducer> surfaceTypeToIGBP(const sp<SurfaceType>& surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return surface->getIGraphicBufferProducer(); #else return surface; #endif } bool isSurfaceTypeValid(const sp<SurfaceType>& surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return Surface::isValid(surface); #else return surface != nullptr; #endif } ParcelableSurfaceType toParcelableSurfaceType(const view::Surface& surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return surface; #else return surface.graphicBufferProducer; #endif } ParcelableSurfaceType convertSurfaceTypeToParcelable(sp<SurfaceType> surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return view::Surface::fromSurface(surface); #else return surface; #endif } sp<SurfaceType> convertParcelableSurfaceTypeToSurface(const ParcelableSurfaceType& surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return surface.toSurface(); #else return surface; #endif } } // namespace flagtools } // namespace android No newline at end of file libs/gui/include/gui/Flags.h +23 −3 Original line number Diff line number Diff line Loading @@ -17,8 +17,15 @@ #pragma once #include <com_android_graphics_libgui_flags.h> #include <gui/IGraphicBufferProducer.h> #include <gui/Surface.h> #include <utils/StrongPointer.h> namespace android { class IGraphicBufferProducer; class Surface; namespace view { class Surface; } #define WB_CAMERA3_AND_PROCESSORS_WITH_DEPENDENCIES \ (COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CAMERA3_AND_PROCESSORS) && \ Loading @@ -31,6 +38,19 @@ #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES typedef android::Surface SurfaceType; typedef android::view::Surface ParcelableSurfaceType; #else typedef android::IGraphicBufferProducer SurfaceType; typedef android::sp<android::IGraphicBufferProducer> ParcelableSurfaceType; #endif namespace flagtools { sp<SurfaceType> surfaceToSurfaceType(const sp<Surface>& surface); ParcelableSurfaceType toParcelableSurfaceType(const view::Surface& surface); sp<IGraphicBufferProducer> surfaceTypeToIGBP(const sp<SurfaceType>& surface); bool isSurfaceTypeValid(const sp<SurfaceType>& surface); ParcelableSurfaceType convertSurfaceTypeToParcelable(sp<SurfaceType> surface); sp<SurfaceType> convertParcelableSurfaceTypeToSurface(const ParcelableSurfaceType& surface); } // namespace flagtools } // namespace android libs/gui/include/gui/view/Surface.h +16 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,22 @@ class Surface : public Parcelable { sp<android::Surface> toSurface() const; status_t getUniqueId(/* out */ uint64_t* id) const; bool isEmpty() const; bool operator==(const Surface& other) const { return graphicBufferProducer == other.graphicBufferProducer; } bool operator!=(const Surface& other) const { return !(*this == other); } bool operator==(const sp<android::Surface> other) const { if (other == nullptr) return graphicBufferProducer == nullptr; return graphicBufferProducer == other->getIGraphicBufferProducer(); } bool operator!=(const sp<android::Surface> other) const { return !(*this == other); } bool operator<(const Surface& other) const { return graphicBufferProducer < other.graphicBufferProducer; } bool operator>(const Surface& other) const { return other < *this; } #endif virtual status_t writeToParcel(Parcel* parcel) const override; Loading libs/gui/view/Surface.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,10 @@ status_t Surface::getUniqueId(uint64_t* out_id) const { } return OK; } bool Surface::isEmpty() const { return graphicBufferProducer == nullptr; } #endif std::string Surface::toString() const { Loading Loading
libs/gui/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -264,6 +264,7 @@ filegroup { "DisplayEventDispatcher.cpp", "DisplayEventReceiver.cpp", "FenceMonitor.cpp", "Flags.cpp", "GLConsumer.cpp", "IConsumerListener.cpp", "IGraphicBufferConsumer.cpp", Loading
libs/gui/Flags.cpp 0 → 100644 +73 −0 Original line number Diff line number Diff line /* * Copyright 2024 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. */ #include <gui/Flags.h> #include <gui/IGraphicBufferProducer.h> #include <gui/Surface.h> #include <gui/view/Surface.h> namespace android { namespace flagtools { sp<SurfaceType> surfaceToSurfaceType(const sp<Surface>& surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return surface; #else return surface->getIGraphicBufferProducer(); #endif } sp<IGraphicBufferProducer> surfaceTypeToIGBP(const sp<SurfaceType>& surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return surface->getIGraphicBufferProducer(); #else return surface; #endif } bool isSurfaceTypeValid(const sp<SurfaceType>& surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return Surface::isValid(surface); #else return surface != nullptr; #endif } ParcelableSurfaceType toParcelableSurfaceType(const view::Surface& surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return surface; #else return surface.graphicBufferProducer; #endif } ParcelableSurfaceType convertSurfaceTypeToParcelable(sp<SurfaceType> surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return view::Surface::fromSurface(surface); #else return surface; #endif } sp<SurfaceType> convertParcelableSurfaceTypeToSurface(const ParcelableSurfaceType& surface) { #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES return surface.toSurface(); #else return surface; #endif } } // namespace flagtools } // namespace android No newline at end of file
libs/gui/include/gui/Flags.h +23 −3 Original line number Diff line number Diff line Loading @@ -17,8 +17,15 @@ #pragma once #include <com_android_graphics_libgui_flags.h> #include <gui/IGraphicBufferProducer.h> #include <gui/Surface.h> #include <utils/StrongPointer.h> namespace android { class IGraphicBufferProducer; class Surface; namespace view { class Surface; } #define WB_CAMERA3_AND_PROCESSORS_WITH_DEPENDENCIES \ (COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(WB_CAMERA3_AND_PROCESSORS) && \ Loading @@ -31,6 +38,19 @@ #if WB_LIBCAMERASERVICE_WITH_DEPENDENCIES typedef android::Surface SurfaceType; typedef android::view::Surface ParcelableSurfaceType; #else typedef android::IGraphicBufferProducer SurfaceType; typedef android::sp<android::IGraphicBufferProducer> ParcelableSurfaceType; #endif namespace flagtools { sp<SurfaceType> surfaceToSurfaceType(const sp<Surface>& surface); ParcelableSurfaceType toParcelableSurfaceType(const view::Surface& surface); sp<IGraphicBufferProducer> surfaceTypeToIGBP(const sp<SurfaceType>& surface); bool isSurfaceTypeValid(const sp<SurfaceType>& surface); ParcelableSurfaceType convertSurfaceTypeToParcelable(sp<SurfaceType> surface); sp<SurfaceType> convertParcelableSurfaceTypeToSurface(const ParcelableSurfaceType& surface); } // namespace flagtools } // namespace android
libs/gui/include/gui/view/Surface.h +16 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,22 @@ class Surface : public Parcelable { sp<android::Surface> toSurface() const; status_t getUniqueId(/* out */ uint64_t* id) const; bool isEmpty() const; bool operator==(const Surface& other) const { return graphicBufferProducer == other.graphicBufferProducer; } bool operator!=(const Surface& other) const { return !(*this == other); } bool operator==(const sp<android::Surface> other) const { if (other == nullptr) return graphicBufferProducer == nullptr; return graphicBufferProducer == other->getIGraphicBufferProducer(); } bool operator!=(const sp<android::Surface> other) const { return !(*this == other); } bool operator<(const Surface& other) const { return graphicBufferProducer < other.graphicBufferProducer; } bool operator>(const Surface& other) const { return other < *this; } #endif virtual status_t writeToParcel(Parcel* parcel) const override; Loading
libs/gui/view/Surface.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,10 @@ status_t Surface::getUniqueId(uint64_t* out_id) const { } return OK; } bool Surface::isEmpty() const { return graphicBufferProducer == nullptr; } #endif std::string Surface::toString() const { Loading