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

Commit 53fc31e8 authored by Bernardo Rufino's avatar Bernardo Rufino
Browse files

Add touchableRegion to touch occlusion dump

And format type as decimal in case we can't name the enum.

Test: Verify logs
Change-Id: I0674f30597b67e3330f9053c7576fb7bf3dcf6ef
parent 854e1b95
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -115,10 +115,10 @@ public:
    // Do not specialize it to a large number to avoid performance issues.
    // The recommended maximum enum number to specialize is 64.
    template <typename E>
    static const std::string string(E val) {
    static const std::string string(E val, const char* fallbackFormat = "0x%08x") {
        std::string result;
        std::optional<std::string_view> enumString = enum_name(val);
        result += enumString ? enumString.value() : base::StringPrintf("0x%08x", val);
        result += enumString ? enumString.value() : base::StringPrintf(fallbackFormat, val);
        return result;
    }
};
+15 −12
Original line number Diff line number Diff line
@@ -204,12 +204,12 @@ static bool validateMotionEvent(int32_t action, int32_t actionButton, size_t poi
    return true;
}

static void dumpRegion(std::string& dump, const Region& region) {
static std::string dumpRegion(const Region& region) {
    if (region.isEmpty()) {
        dump += "<empty>";
        return;
        return "<empty>";
    }

    std::string dump;
    bool first = true;
    Region::const_iterator cur = region.begin();
    Region::const_iterator const tail = region.end();
@@ -222,6 +222,7 @@ static void dumpRegion(std::string& dump, const Region& region) {
        dump += StringPrintf("[%d,%d][%d,%d]", cur->left, cur->top, cur->right, cur->bottom);
        cur++;
    }
    return dump;
}

static std::string dumpQueue(const std::deque<DispatchEntry*>& queue, nsecs_t currentTime) {
@@ -2271,15 +2272,17 @@ InputDispatcher::TouchOcclusionInfo InputDispatcher::computeTouchOcclusionInfoLo

std::string InputDispatcher::dumpWindowForTouchOcclusion(const InputWindowInfo* info,
                                                         bool isTouchedWindow) const {
    return StringPrintf(INDENT2 "* %stype=%s, package=%s/%" PRId32 ", mode=%s, alpha=%.2f, "
    return StringPrintf(INDENT2
                        "* %stype=%s, package=%s/%" PRId32 ", mode=%s, alpha=%.2f, "
                        "frame=[%" PRId32 ",%" PRId32 "][%" PRId32 ",%" PRId32
                                "], window=%s, applicationInfo=%s, flags=%s\n",
                        "], touchableRegion=%s, window=%s, applicationInfo=%s, flags={%s}\n",
                        (isTouchedWindow) ? "[TOUCHED] " : "",
                        NamedEnum::string(info->type).c_str(), info->packageName.c_str(),
                        info->ownerUid, toString(info->touchOcclusionMode).c_str(), info->alpha,
                        info->frameLeft, info->frameTop, info->frameRight, info->frameBottom,
                        info->name.c_str(), info->applicationInfo.name.c_str(),
                        info->flags.string().c_str());
                        NamedEnum::string(info->type, "%" PRId32).c_str(),
                        info->packageName.c_str(), info->ownerUid,
                        toString(info->touchOcclusionMode).c_str(), info->alpha, info->frameLeft,
                        info->frameTop, info->frameRight, info->frameBottom,
                        dumpRegion(info->touchableRegion).c_str(), info->name.c_str(),
                        info->applicationInfo.name.c_str(), info->flags.string().c_str());
}

bool InputDispatcher::isTouchTrustedLocked(const TouchOcclusionInfo& occlusionInfo) const {
@@ -4484,7 +4487,7 @@ void InputDispatcher::dumpDispatchStateLocked(std::string& dump) {
                                         windowInfo->frameRight, windowInfo->frameBottom,
                                         windowInfo->globalScaleFactor,
                                         windowInfo->applicationInfo.name.c_str());
                    dumpRegion(dump, windowInfo->touchableRegion);
                    dump += dumpRegion(windowInfo->touchableRegion);
                    dump += StringPrintf(", inputFeatures=%s",
                                         windowInfo->inputFeatures.string().c_str());
                    dump += StringPrintf(", ownerPid=%d, ownerUid=%d, dispatchingTimeout=%" PRId64