Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a4c472bc authored by Carlos Martinez Romero's avatar Carlos Martinez Romero Committed by Android (Google) Code Review
Browse files

Merge "Use view::Surface instead of IGBPs in OutputConfiguration" into main

parents 6066cef8 0cc2e2cd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -264,6 +264,7 @@ filegroup {
        "DisplayEventDispatcher.cpp",
        "DisplayEventReceiver.cpp",
        "FenceMonitor.cpp",
        "Flags.cpp",
        "GLConsumer.cpp",
        "IConsumerListener.cpp",
        "IGraphicBufferConsumer.cpp",

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
+23 −3
Original line number Diff line number Diff line
@@ -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) && \
@@ -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
+16 −0
Original line number Diff line number Diff line
@@ -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;
+4 −0
Original line number Diff line number Diff line
@@ -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 {