Skip to content

Commit edcc730

Browse files
author
Arpit Singh
committed
[10/n Dispatcher refactor] Move obscuring related methods to WindowInfo
In this CL we move following methods of WindowInfo subclass 1. isWindowObscured 2. isWindowObscuredAtPoint 3. findWallpaperWindowBelow Bug: 367661487 Bug: 245989146 Test: atest inputflinger_tests Flag: EXEMPT refactor Change-Id: Ie7a00d485ee3a7299ce76318ad0252491606f5d0
1 parent ae8afff commit edcc730

2 files changed

Lines changed: 26 additions & 26 deletions

File tree

services/inputflinger/dispatcher/InputDispatcher.cpp

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2504,9 +2504,9 @@ InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime, const Motio
25042504
if (isSplit) {
25052505
targetFlags |= InputTarget::Flags::SPLIT;
25062506
}
2507-
if (isWindowObscuredAtPointLocked(windowHandle, x, y)) {
2507+
if (mWindowInfos.isWindowObscuredAtPoint(windowHandle, x, y)) {
25082508
targetFlags |= InputTarget::Flags::WINDOW_IS_OBSCURED;
2509-
} else if (isWindowObscuredLocked(windowHandle)) {
2509+
} else if (mWindowInfos.isWindowObscured(windowHandle)) {
25102510
targetFlags |= InputTarget::Flags::WINDOW_IS_PARTIALLY_OBSCURED;
25112511
}
25122512

@@ -2537,7 +2537,8 @@ InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime, const Motio
25372537
if (isDownOrPointerDown && targetFlags.test(InputTarget::Flags::FOREGROUND) &&
25382538
windowHandle->getInfo()->inputConfig.test(
25392539
gui::WindowInfo::InputConfig::DUPLICATE_TOUCH_TO_WALLPAPER)) {
2540-
sp<WindowInfoHandle> wallpaper = findWallpaperWindowBelow(windowHandle);
2540+
sp<WindowInfoHandle> wallpaper =
2541+
mWindowInfos.findWallpaperWindowBelow(windowHandle);
25412542
if (wallpaper != nullptr) {
25422543
ftl::Flags<InputTarget::Flags> wallpaperFlags =
25432544
InputTarget::Flags::WINDOW_IS_OBSCURED |
@@ -2650,9 +2651,9 @@ InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime, const Motio
26502651
if (isSplit) {
26512652
targetFlags |= InputTarget::Flags::SPLIT;
26522653
}
2653-
if (isWindowObscuredAtPointLocked(newTouchedWindowHandle, x, y)) {
2654+
if (mWindowInfos.isWindowObscuredAtPoint(newTouchedWindowHandle, x, y)) {
26542655
targetFlags |= InputTarget::Flags::WINDOW_IS_OBSCURED;
2655-
} else if (isWindowObscuredLocked(newTouchedWindowHandle)) {
2656+
} else if (mWindowInfos.isWindowObscured(newTouchedWindowHandle)) {
26562657
targetFlags |= InputTarget::Flags::WINDOW_IS_PARTIALLY_OBSCURED;
26572658
}
26582659

@@ -3177,29 +3178,27 @@ bool InputDispatcher::isTouchTrustedLocked(
31773178
return true;
31783179
}
31793180

3180-
bool InputDispatcher::isWindowObscuredAtPointLocked(const sp<WindowInfoHandle>& windowHandle,
3181-
float x, float y) const {
3181+
bool InputDispatcher::DispatcherWindowInfo::isWindowObscuredAtPoint(
3182+
const sp<WindowInfoHandle>& windowHandle, float x, float y) const {
31823183
ui::LogicalDisplayId displayId = windowHandle->getInfo()->displayId;
3183-
const std::vector<sp<WindowInfoHandle>>& windowHandles =
3184-
mWindowInfos.getWindowHandlesForDisplay(displayId);
3184+
const std::vector<sp<WindowInfoHandle>>& windowHandles = getWindowHandlesForDisplay(displayId);
31853185
for (const sp<WindowInfoHandle>& otherHandle : windowHandles) {
31863186
if (windowHandle == otherHandle) {
31873187
break; // All future windows are below us. Exit early.
31883188
}
31893189
const WindowInfo* otherInfo = otherHandle->getInfo();
31903190
if (canBeObscuredBy(windowHandle, otherHandle) &&
3191-
windowOccludesTouchAt(*otherInfo, displayId, x, y,
3192-
mWindowInfos.getDisplayTransform(displayId))) {
3191+
windowOccludesTouchAt(*otherInfo, displayId, x, y, getDisplayTransform(displayId))) {
31933192
return true;
31943193
}
31953194
}
31963195
return false;
31973196
}
31983197

3199-
bool InputDispatcher::isWindowObscuredLocked(const sp<WindowInfoHandle>& windowHandle) const {
3198+
bool InputDispatcher::DispatcherWindowInfo::isWindowObscured(
3199+
const sp<WindowInfoHandle>& windowHandle) const {
32003200
ui::LogicalDisplayId displayId = windowHandle->getInfo()->displayId;
3201-
const std::vector<sp<WindowInfoHandle>>& windowHandles =
3202-
mWindowInfos.getWindowHandlesForDisplay(displayId);
3201+
const std::vector<sp<WindowInfoHandle>>& windowHandles = getWindowHandlesForDisplay(displayId);
32033202
const WindowInfo* windowInfo = windowHandle->getInfo();
32043203
for (const sp<WindowInfoHandle>& otherHandle : windowHandles) {
32053204
if (windowHandle == otherHandle) {
@@ -7049,7 +7048,7 @@ bool InputDispatcher::shouldDropInput(
70497048
if (windowHandle->getInfo()->inputConfig.test(WindowInfo::InputConfig::DROP_INPUT) ||
70507049
(windowHandle->getInfo()->inputConfig.test(
70517050
WindowInfo::InputConfig::DROP_INPUT_IF_OBSCURED) &&
7052-
isWindowObscuredLocked(windowHandle))) {
7051+
mWindowInfos.isWindowObscured(windowHandle))) {
70537052
ALOGW("Dropping %s event targeting %s as requested by the input configuration {%s} on "
70547053
"display %s.",
70557054
ftl::enum_string(entry.type).c_str(), windowHandle->getName().c_str(),
@@ -7102,7 +7101,7 @@ void InputDispatcher::slipWallpaperTouch(ftl::Flags<InputTarget::Flags> targetFl
71027101
const sp<WindowInfoHandle> oldWallpaper =
71037102
oldHasWallpaper ? state.getWallpaperWindow(deviceId) : nullptr;
71047103
const sp<WindowInfoHandle> newWallpaper =
7105-
newHasWallpaper ? findWallpaperWindowBelow(newWindowHandle) : nullptr;
7104+
newHasWallpaper ? mWindowInfos.findWallpaperWindowBelow(newWindowHandle) : nullptr;
71067105
if (oldWallpaper == newWallpaper) {
71077106
return;
71087107
}
@@ -7139,7 +7138,7 @@ void InputDispatcher::transferWallpaperTouch(
71397138
const sp<WindowInfoHandle> oldWallpaper =
71407139
oldHasWallpaper ? state.getWallpaperWindow(deviceId) : nullptr;
71417140
const sp<WindowInfoHandle> newWallpaper =
7142-
newHasWallpaper ? findWallpaperWindowBelow(toWindowHandle) : nullptr;
7141+
newHasWallpaper ? mWindowInfos.findWallpaperWindowBelow(toWindowHandle) : nullptr;
71437142
if (oldWallpaper == newWallpaper) {
71447143
return;
71457144
}
@@ -7171,10 +7170,10 @@ void InputDispatcher::transferWallpaperTouch(
71717170
}
71727171
}
71737172

7174-
sp<WindowInfoHandle> InputDispatcher::findWallpaperWindowBelow(
7173+
sp<WindowInfoHandle> InputDispatcher::DispatcherWindowInfo::findWallpaperWindowBelow(
71757174
const sp<WindowInfoHandle>& windowHandle) const {
71767175
const std::vector<sp<WindowInfoHandle>>& windowHandles =
7177-
mWindowInfos.getWindowHandlesForDisplay(windowHandle->getInfo()->displayId);
7176+
getWindowHandlesForDisplay(windowHandle->getInfo()->displayId);
71787177
bool foundWindow = false;
71797178
for (const sp<WindowInfoHandle>& otherHandle : windowHandles) {
71807179
if (!foundWindow && otherHandle != windowHandle) {

services/inputflinger/dispatcher/InputDispatcher.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,14 @@ class InputDispatcher : public android::InputDispatcherInterface {
325325
TouchOcclusionInfo computeTouchOcclusionInfo(
326326
const sp<android::gui::WindowInfoHandle>& windowHandle, float x, float y) const;
327327

328+
bool isWindowObscured(const sp<android::gui::WindowInfoHandle>& windowHandle) const;
329+
330+
bool isWindowObscuredAtPoint(const sp<android::gui::WindowInfoHandle>& windowHandle,
331+
float x, float y) const;
332+
333+
sp<android::gui::WindowInfoHandle> findWallpaperWindowBelow(
334+
const sp<android::gui::WindowInfoHandle>& windowHandle) const;
335+
328336
std::string dumpDisplayAndWindowInfo() const;
329337

330338
private:
@@ -639,10 +647,6 @@ class InputDispatcher : public android::InputDispatcherInterface {
639647

640648
bool isTouchTrustedLocked(const DispatcherWindowInfo::TouchOcclusionInfo& occlusionInfo) const
641649
REQUIRES(mLock);
642-
bool isWindowObscuredAtPointLocked(const sp<android::gui::WindowInfoHandle>& windowHandle,
643-
float x, float y) const REQUIRES(mLock);
644-
bool isWindowObscuredLocked(const sp<android::gui::WindowInfoHandle>& windowHandle) const
645-
REQUIRES(mLock);
646650
std::string getApplicationWindowLabel(const InputApplicationHandle* applicationHandle,
647651
const sp<android::gui::WindowInfoHandle>& windowHandle);
648652

@@ -795,9 +799,6 @@ class InputDispatcher : public android::InputDispatcherInterface {
795799
const std::unique_ptr<trace::EventTrackerInterface>& traceTracker)
796800
REQUIRES(mLock);
797801

798-
sp<android::gui::WindowInfoHandle> findWallpaperWindowBelow(
799-
const sp<android::gui::WindowInfoHandle>& windowHandle) const REQUIRES(mLock);
800-
801802
/** Stores the value of the input flag for per device input latency metrics. */
802803
const bool mPerDeviceInputLatencyMetricsFlag =
803804
com::android::input::flags::enable_per_device_input_latency_metrics();

0 commit comments

Comments
 (0)