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

Commit ccd34846 authored by rongliu's avatar rongliu
Browse files

Pass correct window type and app id to hw composer.

1. Set -1 as default value for window type and app id.
2. When send layer information to hal, layers inherit type and app id from parent node when
parent node has valid type/appId.
3. Add window type and app id to SurfaceFlinger dumpsys.

Bug: 74622357
Test: Manual test. Several things verified:
1. Android settings layer, status bar layer, nav bar layer have valid window type and appId
when start android settings.
2. Layers without buffer have window type -1 and app id -1.
3. When send layers to hal, Chrome SurfaceView layer inherit type and app id from
its parent (MainActivity layer).

Change-Id: I8d6ad274ca18b61d1bbf6b28f7def5160b55b1e7
Merged-In: I8d6ad274ca18b61d1bbf6b28f7def5160b55b1e7
parent 558e1ef0
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -47,8 +47,8 @@ public:
    ~BpSurfaceComposerClient() override;
    ~BpSurfaceComposerClient() override;


    status_t createSurface(const String8& name, uint32_t width, uint32_t height, PixelFormat format,
    status_t createSurface(const String8& name, uint32_t width, uint32_t height, PixelFormat format,
                           uint32_t flags, const sp<IBinder>& parent, uint32_t windowType,
                           uint32_t flags, const sp<IBinder>& parent, int32_t windowType,
                           uint32_t ownerUid, sp<IBinder>* handle,
                           int32_t ownerUid, sp<IBinder>* handle,
                           sp<IGraphicBufferProducer>* gbp) override {
                           sp<IGraphicBufferProducer>* gbp) override {
        return callRemote<decltype(&ISurfaceComposerClient::createSurface)>(Tag::CREATE_SURFACE,
        return callRemote<decltype(&ISurfaceComposerClient::createSurface)>(Tag::CREATE_SURFACE,
                                                                            name, width, height,
                                                                            name, width, height,
+4 −4
Original line number Original line Diff line number Diff line
@@ -609,8 +609,8 @@ sp<SurfaceControl> SurfaceComposerClient::createSurface(
        PixelFormat format,
        PixelFormat format,
        uint32_t flags,
        uint32_t flags,
        SurfaceControl* parent,
        SurfaceControl* parent,
        uint32_t windowType,
        int32_t windowType,
        uint32_t ownerUid)
        int32_t ownerUid)
{
{
    sp<SurfaceControl> s;
    sp<SurfaceControl> s;
    createSurfaceChecked(name, w, h, format, &s, flags, parent, windowType, ownerUid);
    createSurfaceChecked(name, w, h, format, &s, flags, parent, windowType, ownerUid);
@@ -625,8 +625,8 @@ status_t SurfaceComposerClient::createSurfaceChecked(
        sp<SurfaceControl>* outSurface,
        sp<SurfaceControl>* outSurface,
        uint32_t flags,
        uint32_t flags,
        SurfaceControl* parent,
        SurfaceControl* parent,
        uint32_t windowType,
        int32_t windowType,
        uint32_t ownerUid)
        int32_t ownerUid)
{
{
    sp<SurfaceControl> sur;
    sp<SurfaceControl> sur;
    status_t err = NO_ERROR;
    status_t err = NO_ERROR;
+2 −2
Original line number Original line Diff line number Diff line
@@ -49,8 +49,8 @@ public:
     * Requires ACCESS_SURFACE_FLINGER permission
     * Requires ACCESS_SURFACE_FLINGER permission
     */
     */
    virtual status_t createSurface(const String8& name, uint32_t w, uint32_t h, PixelFormat format,
    virtual status_t createSurface(const String8& name, uint32_t w, uint32_t h, PixelFormat format,
                                   uint32_t flags, const sp<IBinder>& parent, uint32_t windowType,
                                   uint32_t flags, const sp<IBinder>& parent, int32_t windowType,
                                   uint32_t ownerUid, sp<IBinder>* handle,
                                   int32_t ownerUid, sp<IBinder>* handle,
                                   sp<IGraphicBufferProducer>* gbp) = 0;
                                   sp<IGraphicBufferProducer>* gbp) = 0;


    /*
    /*
+4 −4
Original line number Original line Diff line number Diff line
@@ -111,8 +111,8 @@ public:
            PixelFormat format, // pixel-format desired
            PixelFormat format, // pixel-format desired
            uint32_t flags = 0, // usage flags
            uint32_t flags = 0, // usage flags
            SurfaceControl* parent = nullptr, // parent
            SurfaceControl* parent = nullptr, // parent
            uint32_t windowType = 0, // from WindowManager.java (STATUS_BAR, INPUT_METHOD, etc.)
            int32_t windowType = -1, // from WindowManager.java (STATUS_BAR, INPUT_METHOD, etc.)
            uint32_t ownerUid = 0 // UID of the task
            int32_t ownerUid = -1 // UID of the task
    );
    );


    status_t createSurfaceChecked(
    status_t createSurfaceChecked(
@@ -123,8 +123,8 @@ public:
            sp<SurfaceControl>* outSurface,
            sp<SurfaceControl>* outSurface,
            uint32_t flags = 0, // usage flags
            uint32_t flags = 0, // usage flags
            SurfaceControl* parent = nullptr, // parent
            SurfaceControl* parent = nullptr, // parent
            uint32_t windowType = 0, // from WindowManager.java (STATUS_BAR, INPUT_METHOD, etc.)
            int32_t windowType = -1, // from WindowManager.java (STATUS_BAR, INPUT_METHOD, etc.)
            uint32_t ownerUid = 0 // UID of the task
            int32_t ownerUid = -1 // UID of the task
    );
    );


    //! Create a virtual display
    //! Create a virtual display
+4 −4
Original line number Original line Diff line number Diff line
@@ -143,7 +143,7 @@ status_t Client::onTransact(
status_t Client::createSurface(
status_t Client::createSurface(
        const String8& name,
        const String8& name,
        uint32_t w, uint32_t h, PixelFormat format, uint32_t flags,
        uint32_t w, uint32_t h, PixelFormat format, uint32_t flags,
        const sp<IBinder>& parentHandle, uint32_t windowType, uint32_t ownerUid,
        const sp<IBinder>& parentHandle, int32_t windowType, int32_t ownerUid,
        sp<IBinder>* handle,
        sp<IBinder>* handle,
        sp<IGraphicBufferProducer>* gbp)
        sp<IGraphicBufferProducer>* gbp)
{
{
@@ -180,13 +180,13 @@ status_t Client::createSurface(
        PixelFormat format;
        PixelFormat format;
        uint32_t flags;
        uint32_t flags;
        sp<Layer>* parent;
        sp<Layer>* parent;
        uint32_t windowType;
        int32_t windowType;
        uint32_t ownerUid;
        int32_t ownerUid;
    public:
    public:
        MessageCreateLayer(SurfaceFlinger* flinger,
        MessageCreateLayer(SurfaceFlinger* flinger,
                const String8& name, Client* client,
                const String8& name, Client* client,
                uint32_t w, uint32_t h, PixelFormat format, uint32_t flags,
                uint32_t w, uint32_t h, PixelFormat format, uint32_t flags,
                sp<IBinder>* handle, uint32_t windowType, uint32_t ownerUid,
                sp<IBinder>* handle, int32_t windowType, int32_t ownerUid,
                sp<IGraphicBufferProducer>* gbp,
                sp<IGraphicBufferProducer>* gbp,
                sp<Layer>* parent)
                sp<Layer>* parent)
            : flinger(flinger), client(client),
            : flinger(flinger), client(client),
Loading