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
diff --git a/libs/input/DisplayTopologyGraph.cpp b/libs/input/DisplayTopologyGraph.cpp
index 7ad9f16..934f2e8 100644
--- a/libs/input/DisplayTopologyGraph.cpp
+++ b/libs/input/DisplayTopologyGraph.cpp
@@ -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 @@
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