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

Commit 027538de authored by Siarhei Vishniakou's avatar Siarhei Vishniakou
Browse files

Update the callers of windowinfoslistener

This now returns a result-wrapped infos update.

Bug: 404661556
Flag: EXEMPT refactor
Test: none
Change-Id: I66b10487ca80bbe74f338752f486b068f175e95b
parent a02ae06a
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -13,7 +13,6 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#undef ANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION // TODO:remove this and fix code

#define LOG_TAG "WindowInfosListener"

@@ -136,27 +135,30 @@ jlong nativeCreate(JNIEnv* env, jclass clazz, jobject obj) {
}

void destroyNativeService(void* ptr) {
    WindowInfosListener* listener = reinterpret_cast<WindowInfosListener*>(ptr);
    sp<WindowInfosListener> listener =
            sp<WindowInfosListener>::fromExisting(reinterpret_cast<WindowInfosListener*>(ptr));
    SurfaceComposerClient::getDefault()->removeWindowInfosListener(listener);
    listener->decStrong((void*)nativeCreate);
}

jobject nativeRegister(JNIEnv* env, jclass clazz, jlong ptr) {
    sp<WindowInfosListener> listener = reinterpret_cast<WindowInfosListener*>(ptr);
    gui::WindowInfosUpdate initialInfo;
    SurfaceComposerClient::getDefault()->addWindowInfosListener(listener, &initialInfo);
    sp<WindowInfosListener> listener =
            sp<WindowInfosListener>::fromExisting(reinterpret_cast<WindowInfosListener*>(ptr));
    android::base::Result<gui::WindowInfosUpdate> result =
            SurfaceComposerClient::getDefault()->addWindowInfosListener(std::move(listener));

    ScopedLocalRef<jobjectArray> jWindowHandlesArray(env,
                                                     fromWindowInfos(env, initialInfo.windowInfos));
                                                     fromWindowInfos(env, result->windowInfos));
    ScopedLocalRef<jobjectArray> jDisplayInfoArray(env,
                                                   fromDisplayInfos(env, initialInfo.displayInfos));
                                                   fromDisplayInfos(env, result->displayInfos));

    return env->NewObject(gPairClassInfo.clazz, gPairClassInfo.ctor, jWindowHandlesArray.get(),
                          jDisplayInfoArray.get());
}

void nativeUnregister(JNIEnv* env, jclass clazz, jlong ptr) {
    sp<WindowInfosListener> listener = reinterpret_cast<WindowInfosListener*>(ptr);
    sp<WindowInfosListener> listener =
            sp<WindowInfosListener>::fromExisting(reinterpret_cast<WindowInfosListener*>(ptr));
    SurfaceComposerClient::getDefault()->removeWindowInfosListener(listener);
}

+5 −4
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <SkBlendMode.h>
#include <SkCanvas.h>
#include <SkColor.h>
#include <android-base/logging.h>
#include <android-base/stringprintf.h>
#include <android-base/thread_annotations.h>
#include <ftl/enum.h>
@@ -105,10 +106,10 @@ PointerController::PointerController(const sp<PointerControllerPolicyInterface>&
      : PointerController(
                policy, looper, spriteController,
                [](const sp<android::gui::WindowInfosListener>& listener) {
                    gui::WindowInfosUpdate initialInfo;
                    SurfaceComposerClient::getDefault()->addWindowInfosListener(listener,
                                                                                &initialInfo);
                    return initialInfo.displayInfos;
                    android::base::Result<gui::WindowInfosUpdate> result =
                            SurfaceComposerClient::getDefault()->addWindowInfosListener(listener);
                    LOG_IF(FATAL, !result.ok()) << "Can't add window info listener";
                    return result->displayInfos;
                },
                [](const sp<android::gui::WindowInfosListener>& listener) {
                    SurfaceComposerClient::getDefault()->removeWindowInfosListener(listener);