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

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

Merge "Return WindowInfosUpdate when registering infos listener" into main

parents dbf3af83 8f6c0753
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -3442,12 +3442,11 @@ int SurfaceComposerClient::getGpuContextPriority() {
    return priority;
}

status_t SurfaceComposerClient::addWindowInfosListener(
        const sp<WindowInfosListener>& windowInfosListener,
        gui::WindowInfosUpdate* outInitialUpdate) {
android::base::Result<gui::WindowInfosUpdate> SurfaceComposerClient::addWindowInfosListener(
        sp<WindowInfosListener> windowInfosListener) {
    return WindowInfosListenerReporter::getInstance()
            ->addWindowInfosListener(windowInfosListener, ComposerServiceAIDL::getComposerService(),
                                     outInitialUpdate);
            ->addWindowInfosListener(std::move(windowInfosListener),
                                     ComposerServiceAIDL::getComposerService());
}

status_t SurfaceComposerClient::removeWindowInfosListener(
+6 −9
Original line number Diff line number Diff line
@@ -32,10 +32,9 @@ sp<WindowInfosListenerReporter> WindowInfosListenerReporter::getInstance() {
    return sInstance;
}

status_t WindowInfosListenerReporter::addWindowInfosListener(
        const sp<WindowInfosListener>& windowInfosListener,
        const sp<gui::ISurfaceComposer>& surfaceComposer,
        gui::WindowInfosUpdate* outInitialUpdate) {
android::base::Result<gui::WindowInfosUpdate> WindowInfosListenerReporter::addWindowInfosListener(
        sp<WindowInfosListener> windowInfosListener,
        const sp<gui::ISurfaceComposer>& surfaceComposer) {
    status_t status = OK;
    {
        std::scoped_lock lock(mListenersMutex);
@@ -50,15 +49,13 @@ status_t WindowInfosListenerReporter::addWindowInfosListener(
        }

        if (status == OK) {
            mWindowInfosListeners.insert(windowInfosListener);
            mWindowInfosListeners.emplace(std::move(windowInfosListener));
        }

        if (outInitialUpdate != nullptr) {
            *outInitialUpdate = mLastUpdate;
        }
        return mLastUpdate;
    }

    return status;
    return android::base::Error(status);
}

status_t WindowInfosListenerReporter::removeWindowInfosListener(
+3 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#include <unordered_map>
#include <unordered_set>

#include <android-base/result.h>
#include <binder/IBinder.h>

#include <utils/Errors.h>
@@ -911,8 +912,8 @@ public:
    static status_t removeTunnelModeEnabledListener(
            const sp<gui::ITunnelModeEnabledListener>& listener);

    status_t addWindowInfosListener(const sp<gui::WindowInfosListener>& windowInfosListener,
                                    gui::WindowInfosUpdate* outInitialUpdate);
    android::base::Result<gui::WindowInfosUpdate> addWindowInfosListener(
            sp<gui::WindowInfosListener> windowInfosListener);
    status_t removeWindowInfosListener(const sp<gui::WindowInfosListener>& windowInfosListener);

    static void notifyShutdown();
+3 −3
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

#pragma once

#include <android-base/result.h>
#include <android/gui/BnWindowInfosListener.h>
#include <android/gui/ISurfaceComposer.h>
#include <android/gui/IWindowInfosPublisher.h>
@@ -31,9 +32,8 @@ class WindowInfosListenerReporter : public gui::BnWindowInfosListener {
public:
    static sp<WindowInfosListenerReporter> getInstance();
    binder::Status onWindowInfosChanged(const gui::WindowInfosUpdate& update) override;
    status_t addWindowInfosListener(const sp<gui::WindowInfosListener>& windowInfosListener,
                                    const sp<gui::ISurfaceComposer>&,
                                    gui::WindowInfosUpdate* outInitialUpdate);
    android::base::Result<gui::WindowInfosUpdate> addWindowInfosListener(
            sp<gui::WindowInfosListener> windowInfosListener, const sp<gui::ISurfaceComposer>&);
    status_t removeWindowInfosListener(const sp<gui::WindowInfosListener>& windowInfosListener,
                                       const sp<gui::ISurfaceComposer>& surfaceComposer);
    void reconnect(const sp<gui::ISurfaceComposer>&);
+7 −4
Original line number Diff line number Diff line
@@ -107,12 +107,15 @@ PointerChoreographer::PointerChoreographer(InputListenerInterface& inputListener
      : PointerChoreographer(
                inputListener, policy,
                [](const sp<android::gui::WindowInfosListener>& listener) {
                    gui::WindowInfosUpdate initialInfo;
#if defined(__ANDROID__)
                    SurfaceComposerClient::getDefault()->addWindowInfosListener(listener,
                                                                                &initialInfo);
                    android::base::Result<android::gui::WindowInfosUpdate> result =
                            SurfaceComposerClient::getDefault()->addWindowInfosListener(listener);
                    LOG_IF(FATAL, !result.ok()) << "Can't add window listener, pointers won't work";
                    return result->windowInfos;
#else
                    gui::WindowInfosUpdate emptyUpdate;
                    return emptyUpdate.windowInfos;
#endif
                    return initialInfo.windowInfos;
                },
                [](const sp<android::gui::WindowInfosListener>& listener) {
#if defined(__ANDROID__)
Loading