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

Commit 6b512040 authored by Arpit Singh's avatar Arpit Singh
Browse files

Add display topology to input dump

Add display topology to dump in Dispatcher and Choreographer for
debugging.

Bug: 245989146
Test: dumpsys input
Flag: EXEMPT log only update
Change-Id: I8e9eb4d5c3c88e1cb6aeaa35db07006b003aad93
parent 269580ec
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -46,6 +46,8 @@ struct DisplayTopologyAdjacentDisplay {
    DisplayTopologyPosition position;
    // The offset in DP of the adjacent display, relative to the source display.
    float offsetDp;

    std::string dump() const;
};

/**
@@ -57,6 +59,7 @@ struct DisplayTopologyGraph {
    std::unordered_map<ui::LogicalDisplayId, int> displaysDensity;

    bool isValid() const;
    std::string dump() const;
};

} // namespace android
+39 −0
Original line number Diff line number Diff line
@@ -17,15 +17,20 @@
#define LOG_TAG "DisplayTopologyValidator"

#include <android-base/logging.h>
#include <android-base/stringprintf.h>
#include <ftl/enum.h>
#include <input/DisplayTopologyGraph.h>
#include <input/PrintTools.h>
#include <ui/LogicalDisplayId.h>

#include <algorithm>

#define INDENT "  "

namespace android {

namespace {

DisplayTopologyPosition getOppositePosition(DisplayTopologyPosition position) {
    switch (position) {
        case DisplayTopologyPosition::LEFT:
@@ -95,11 +100,45 @@ bool validateDensities(const android::DisplayTopologyGraph& displayTopologyGraph
    return true;
}

std::string logicalDisplayIdToString(const ui::LogicalDisplayId& displayId) {
    return base::StringPrintf("displayId(%d)", displayId.val());
}

std::string adjacentDisplayToString(const DisplayTopologyAdjacentDisplay& adjacentDisplay) {
    return adjacentDisplay.dump();
}

std::string adjacentDisplayVectorToString(
        const std::vector<DisplayTopologyAdjacentDisplay>& adjacentDisplays) {
    return dumpVector(adjacentDisplays, adjacentDisplayToString);
}

} // namespace

std::string DisplayTopologyAdjacentDisplay::dump() const {
    std::string dump;
    dump += base::StringPrintf("DisplayTopologyAdjacentDisplay: {displayId: %d, position: %s, "
                               "offsetDp: %f}",
                               displayId.val(), ftl::enum_string(position).c_str(), offsetDp);
    return dump;
}

bool DisplayTopologyGraph::isValid() const {
    return validatePrimaryDisplay(*this) && validateTopologyGraph(*this) &&
            validateDensities(*this);
}

std::string DisplayTopologyGraph::dump() const {
    std::string dump;
    dump += base::StringPrintf("PrimaryDisplayId: %d\n", primaryDisplayId.val());
    dump += base::StringPrintf("TopologyGraph:\n");
    dump += addLinePrefix(dumpMap(graph, logicalDisplayIdToString, adjacentDisplayVectorToString),
                          INDENT);
    dump += "\n";
    dump += base::StringPrintf("DisplaysDensity:\n");
    dump += addLinePrefix(dumpMap(displaysDensity, logicalDisplayIdToString), INDENT);
    dump += "\n";
    return dump;
}

} // namespace android
+3 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include "PointerChoreographer.h"

#define INDENT "  "
#define INDENT2 "    "

namespace android {

@@ -647,6 +648,8 @@ void PointerChoreographer::dump(std::string& dump) {
        std::string pointerControllerDump = addLinePrefix(drawingTabletController->dump(), INDENT);
        dump += INDENT + std::to_string(deviceId) + " : " + pointerControllerDump;
    }
    dump += INDENT "DisplayTopologyGraph:\n";
    dump += addLinePrefix(mTopology.dump(), INDENT2);
    dump += "\n";
}

+3 −0
Original line number Diff line number Diff line
@@ -5222,6 +5222,9 @@ std::string InputDispatcher::DispatcherWindowInfo::dumpDisplayAndWindowInfo() co
    } else {
        dump += "Displays: <none>\n";
    }
    dump += "DisplayTopologyGraph:\n";
    dump += addLinePrefix(mTopology.dump(), INDENT);
    dump += "\n";
    return dump;
}