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

Commit b2d8f7e2 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Expose interface for setting stop layer" into main

parents 7d5cf2f8 e96cc906
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -2707,14 +2707,16 @@ status_t SurfaceComposerClient::createSurfaceChecked(const String8& name, uint32
    return err;
}

sp<SurfaceControl> SurfaceComposerClient::mirrorSurface(SurfaceControl* mirrorFromSurface) {
sp<SurfaceControl> SurfaceComposerClient::mirrorSurface(SurfaceControl* mirrorFromSurface,
                                                        SurfaceControl* stopAt) {
    if (mirrorFromSurface == nullptr) {
        return nullptr;
    }

    sp<IBinder> mirrorFromHandle = mirrorFromSurface->getHandle();
    sp<IBinder> stopAtHandle = stopAt ? stopAt->getHandle() : nullptr;
    gui::CreateSurfaceResult result;
    const binder::Status status = mClient->mirrorSurface(mirrorFromHandle, &result);
    const binder::Status status = mClient->mirrorSurface(mirrorFromHandle, stopAtHandle, &result);
    const status_t err = statusTFromBinderStatus(status);
    if (err == NO_ERROR) {
        return sp<SurfaceControl>::make(this, result.handle, result.layerId,
+1 −1
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ interface ISurfaceComposerClient {
     */
    FrameStats getLayerFrameStats(IBinder handle);

    CreateSurfaceResult mirrorSurface(IBinder mirrorFromHandle);
    CreateSurfaceResult mirrorSurface(IBinder mirrorFromHandle, @nullable IBinder stopAtHandle);

    CreateSurfaceResult mirrorDisplay(long displayId);

+13 −1
Original line number Diff line number Diff line
@@ -389,7 +389,19 @@ public:
    //      A               A'
    //      |               |
    //      B               B'
    sp<SurfaceControl> mirrorSurface(SurfaceControl* mirrorFromSurface);
    //
    // The mirrored hierarchy will exclude all layers z-ordered above the layer specified by
    // stopAt. With stopAt specified as B:
    //
    //  Real Hierarchy    Mirror
    //                      SC (value that's returned)
    //                      |
    //      A               A'
    //      |
    //      B
    //
    sp<SurfaceControl> mirrorSurface(SurfaceControl* mirrorFromSurface,
                                     SurfaceControl* stopAt = nullptr);

    sp<SurfaceControl> mirrorDisplay(DisplayId displayId);

+2 −1
Original line number Diff line number Diff line
@@ -99,10 +99,11 @@ binder::Status Client::getLayerFrameStats(const sp<IBinder>& handle, gui::FrameS
}

binder::Status Client::mirrorSurface(const sp<IBinder>& mirrorFromHandle,
                                     const sp<IBinder>& stopAtHandle,
                                     gui::CreateSurfaceResult* outResult) {
    LayerCreationArgs args(mFlinger.get(), sp<Client>::fromExisting(this), "MirrorRoot",
                           0 /* flags */, gui::LayerMetadata());
    status_t status = mFlinger->mirrorLayer(args, mirrorFromHandle, *outResult);
    status_t status = mFlinger->mirrorLayer(args, mirrorFromHandle, stopAtHandle, *outResult);
    return binderStatusFromStatusT(status);
}

+1 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ private:
                                      gui::FrameStats* outStats) override;

    binder::Status mirrorSurface(const sp<IBinder>& mirrorFromHandle,
                                 const sp<IBinder>& stopAtHandle,
                                 gui::CreateSurfaceResult* outResult) override;

    binder::Status mirrorDisplay(int64_t displayId, gui::CreateSurfaceResult* outResult) override;
Loading