Loading include/ui/InputDispatcher.h +3 −1 Original line number Diff line number Diff line Loading @@ -219,6 +219,8 @@ struct InputWindow { * motion events to be delivered to them with AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED. */ bool isTrustedOverlay() const; bool supportsSplitTouch() const; }; Loading Loading @@ -946,7 +948,7 @@ private: struct TouchedWindow { const InputWindow* window; int32_t targetFlags; BitSet32 pointerIds; BitSet32 pointerIds; // zero unless target flag FLAG_SPLIT is set sp<InputChannel> channel; }; struct TouchState { Loading libs/ui/InputDispatcher.cpp +7 −9 Original line number Diff line number Diff line Loading @@ -157,6 +157,10 @@ bool InputWindow::isTrustedOverlay() const { || layoutParamsType == TYPE_SECURE_SYSTEM_OVERLAY; } bool InputWindow::supportsSplitTouch() const { return layoutParamsFlags & InputWindow::FLAG_SPLIT_TOUCH; } // --- InputDispatcher --- Loading Loading @@ -1110,8 +1114,7 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime, } // Figure out whether splitting will be allowed for this window. if (newTouchedWindow && (newTouchedWindow->layoutParamsFlags & InputWindow::FLAG_SPLIT_TOUCH)) { if (newTouchedWindow && newTouchedWindow->supportsSplitTouch()) { // New window supports splitting. isSplit = true; } else if (isSplit) { Loading Loading @@ -2648,13 +2651,8 @@ bool InputDispatcher::transferTouchFocus(const sp<InputChannel>& fromChannel, mTouchState.windows.removeAt(i); int32_t newTargetFlags = 0; if (oldTargetFlags & InputTarget::FLAG_FOREGROUND) { newTargetFlags |= InputTarget::FLAG_FOREGROUND; if (toWindow->layoutParamsFlags & InputWindow::FLAG_SPLIT_TOUCH) { newTargetFlags |= InputTarget::FLAG_SPLIT; } } int32_t newTargetFlags = oldTargetFlags & (InputTarget::FLAG_FOREGROUND | InputTarget::FLAG_SPLIT); mTouchState.addOrUpdateWindow(toWindow, newTargetFlags, pointerIds); found = true; Loading Loading
include/ui/InputDispatcher.h +3 −1 Original line number Diff line number Diff line Loading @@ -219,6 +219,8 @@ struct InputWindow { * motion events to be delivered to them with AMOTION_EVENT_FLAG_WINDOW_IS_OBSCURED. */ bool isTrustedOverlay() const; bool supportsSplitTouch() const; }; Loading Loading @@ -946,7 +948,7 @@ private: struct TouchedWindow { const InputWindow* window; int32_t targetFlags; BitSet32 pointerIds; BitSet32 pointerIds; // zero unless target flag FLAG_SPLIT is set sp<InputChannel> channel; }; struct TouchState { Loading
libs/ui/InputDispatcher.cpp +7 −9 Original line number Diff line number Diff line Loading @@ -157,6 +157,10 @@ bool InputWindow::isTrustedOverlay() const { || layoutParamsType == TYPE_SECURE_SYSTEM_OVERLAY; } bool InputWindow::supportsSplitTouch() const { return layoutParamsFlags & InputWindow::FLAG_SPLIT_TOUCH; } // --- InputDispatcher --- Loading Loading @@ -1110,8 +1114,7 @@ int32_t InputDispatcher::findTouchedWindowTargetsLocked(nsecs_t currentTime, } // Figure out whether splitting will be allowed for this window. if (newTouchedWindow && (newTouchedWindow->layoutParamsFlags & InputWindow::FLAG_SPLIT_TOUCH)) { if (newTouchedWindow && newTouchedWindow->supportsSplitTouch()) { // New window supports splitting. isSplit = true; } else if (isSplit) { Loading Loading @@ -2648,13 +2651,8 @@ bool InputDispatcher::transferTouchFocus(const sp<InputChannel>& fromChannel, mTouchState.windows.removeAt(i); int32_t newTargetFlags = 0; if (oldTargetFlags & InputTarget::FLAG_FOREGROUND) { newTargetFlags |= InputTarget::FLAG_FOREGROUND; if (toWindow->layoutParamsFlags & InputWindow::FLAG_SPLIT_TOUCH) { newTargetFlags |= InputTarget::FLAG_SPLIT; } } int32_t newTargetFlags = oldTargetFlags & (InputTarget::FLAG_FOREGROUND | InputTarget::FLAG_SPLIT); mTouchState.addOrUpdateWindow(toWindow, newTargetFlags, pointerIds); found = true; Loading