diff options
author | 2020-07-24 11:46:21 -0700 | |
---|---|---|
committer | 2020-08-11 17:24:39 -0700 | |
commit | 85b4420759474ce6ec77ef1a962838c0f381dac9 (patch) | |
tree | 24862e380a82d0e17aa7c6b6c5ba7b702726903d | |
parent | de7a38f44ba8397a0ce38d00ffe12518f837e7ce (diff) |
Add prefix to transform dump to align the data better
In some cases, we want to add indentations to every line of the
transform dump. Added a prefix argument so the matrix dumped can be
aligned based on the caller.
Also cleaned up how rotation and transformation are logged. If it's one
of the known values, it will just log the string and not the full int
value.
Test: InputDispatcher and InputTransport dumps
Change-Id: I86ed949931fdb233c62349fec9a6749298cccad2
-rw-r--r-- | libs/input/InputTransport.cpp | 4 | ||||
-rw-r--r-- | libs/ui/Transform.cpp | 71 | ||||
-rw-r--r-- | libs/ui/include/ui/Transform.h | 4 | ||||
-rw-r--r-- | services/inputflinger/dispatcher/InputDispatcher.cpp | 2 | ||||
-rw-r--r-- | services/inputflinger/dispatcher/InputTarget.cpp | 7 |
5 files changed, 57 insertions, 31 deletions
diff --git a/libs/input/InputTransport.cpp b/libs/input/InputTransport.cpp index b088ee714a..79e15c10d7 100644 --- a/libs/input/InputTransport.cpp +++ b/libs/input/InputTransport.cpp @@ -481,13 +481,13 @@ status_t InputPublisher::publishMotionEvent( } if (DEBUG_TRANSPORT_ACTIONS) { std::string transformString; - transform.dump(transformString, ""); + transform.dump(transformString, "transform", " "); ALOGD("channel '%s' publisher ~ publishMotionEvent: seq=%u, deviceId=%d, source=0x%x, " "displayId=%" PRId32 ", " "action=0x%x, actionButton=0x%08x, flags=0x%x, edgeFlags=0x%x, " "metaState=0x%x, buttonState=0x%x, classification=%s," "xPrecision=%f, yPrecision=%f, downTime=%" PRId64 ", eventTime=%" PRId64 ", " - "pointerCount=%" PRIu32 " transform=%s", + "pointerCount=%" PRIu32 " \n%s", mChannel->getName().c_str(), seq, deviceId, source, displayId, action, actionButton, flags, edgeFlags, metaState, buttonState, motionClassificationToString(classification), xPrecision, yPrecision, downTime, diff --git a/libs/ui/Transform.cpp b/libs/ui/Transform.cpp index 5424a3ca9e..6b1bb40bd8 100644 --- a/libs/ui/Transform.cpp +++ b/libs/ui/Transform.cpp @@ -457,7 +457,43 @@ mat4 Transform::asMatrix4() const { return m; } -void Transform::dump(std::string& out, const char* name) const { +static std::string rotationToString(const uint32_t rotationFlags) { + switch (rotationFlags) { + case Transform::ROT_0: + return "ROT_0"; + case Transform::FLIP_H: + return "FLIP_H"; + case Transform::FLIP_V: + return "FLIP_V"; + case Transform::ROT_90: + return "ROT_90"; + case Transform::ROT_180: + return "ROT_180"; + case Transform::ROT_270: + return "ROT_270"; + case Transform::ROT_INVALID: + default: + return "ROT_INVALID"; + } +} + +static std::string transformToString(const uint32_t transform) { + if (transform == Transform::IDENTITY) { + return "IDENTITY"; + } + + if (transform == Transform::UNKNOWN) { + return "UNKNOWN"; + } + + std::string out; + if (transform & Transform::SCALE) out.append("SCALE "); + if (transform & Transform::ROTATE) out.append("ROTATE "); + if (transform & Transform::TRANSLATE) out.append("TRANSLATE"); + return out; +} + +void Transform::dump(std::string& out, const char* name, const char* prefix) const { using android::base::StringAppendF; type(); // Ensure the information in mType is up to date @@ -465,38 +501,29 @@ void Transform::dump(std::string& out, const char* name) const { const uint32_t type = mType; const uint32_t orient = type >> 8; - StringAppendF(&out, "%s 0x%08x (", name, orient); + out += prefix; + out += name; + out += " "; if (orient & ROT_INVALID) { - out.append("ROT_INVALID "); - } else { - if (orient & ROT_90) { - out.append("ROT_90 "); - } else { - out.append("ROT_0 "); - } - if (orient & FLIP_V) out.append("FLIP_V "); - if (orient & FLIP_H) out.append("FLIP_H "); + StringAppendF(&out, "0x%08x ", orient); } + out += "(" + rotationToString(orient) + ") "; - StringAppendF(&out, ") 0x%02x (", type); - - if (!(type & (SCALE | ROTATE | TRANSLATE))) out.append("IDENTITY "); - if (type & SCALE) out.append("SCALE "); - if (type & ROTATE) out.append("ROTATE "); - if (type & TRANSLATE) out.append("TRANSLATE "); - - out.append(")\n"); + if (type & UNKNOWN) { + StringAppendF(&out, "0x%02x ", type); + } + out += "(" + transformToString(type) + ")\n"; for (size_t i = 0; i < 3; i++) { - StringAppendF(&out, " %.4f %.4f %.4f\n", static_cast<double>(mMatrix[0][i]), + StringAppendF(&out, "%s %.4f %.4f %.4f\n", prefix, static_cast<double>(mMatrix[0][i]), static_cast<double>(mMatrix[1][i]), static_cast<double>(mMatrix[2][i])); } } -void Transform::dump(const char* name) const { +void Transform::dump(const char* name, const char* prefix) const { std::string out; - dump(out, name); + dump(out, name, prefix); ALOGD("%s", out.c_str()); } diff --git a/libs/ui/include/ui/Transform.h b/libs/ui/include/ui/Transform.h index 2612e821d0..4c463bf7f1 100644 --- a/libs/ui/include/ui/Transform.h +++ b/libs/ui/include/ui/Transform.h @@ -104,8 +104,8 @@ public: Transform inverse() const; // for debugging - void dump(std::string& result, const char* name) const; - void dump(const char* name) const; + void dump(std::string& result, const char* name, const char* prefix = "") const; + void dump(const char* name, const char* prefix = "") const; static RotationFlags toRotationFlags(Rotation); diff --git a/services/inputflinger/dispatcher/InputDispatcher.cpp b/services/inputflinger/dispatcher/InputDispatcher.cpp index 44f26b0de8..5d716665af 100644 --- a/services/inputflinger/dispatcher/InputDispatcher.cpp +++ b/services/inputflinger/dispatcher/InputDispatcher.cpp @@ -4245,7 +4245,7 @@ void InputDispatcher::dumpDispatchStateLocked(std::string& dump) { "ms\n", windowInfo->ownerPid, windowInfo->ownerUid, millis(windowInfo->dispatchingTimeout)); - windowInfo->transform.dump(dump, INDENT4 "transform="); + windowInfo->transform.dump(dump, "transform", INDENT4); } } else { dump += INDENT2 "Windows: <none>\n"; diff --git a/services/inputflinger/dispatcher/InputTarget.cpp b/services/inputflinger/dispatcher/InputTarget.cpp index f6958d4666..d39113b286 100644 --- a/services/inputflinger/dispatcher/InputTarget.cpp +++ b/services/inputflinger/dispatcher/InputTarget.cpp @@ -74,10 +74,10 @@ const ui::Transform& InputTarget::getDefaultPointerTransform() const { } std::string InputTarget::getPointerInfoString() const { - std::string out; + std::string out = "\n"; if (useDefaultPointerTransform()) { const ui::Transform& transform = getDefaultPointerTransform(); - transform.dump(out, "default"); + transform.dump(out, "default", " "); return out; } @@ -86,9 +86,8 @@ std::string InputTarget::getPointerInfoString() const { continue; } - out += "\n"; const std::string name = "pointerId " + std::to_string(i) + ":"; - pointerTransforms[i].dump(out, name.c_str()); + pointerTransforms[i].dump(out, name.c_str(), " "); } return out; } |