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

Commit f5ee31d6 authored by Zachary Kuznia's avatar Zachary Kuznia
Browse files

Remove change to event time when sending delayed events in ScreenMagnifier.

This was originally introduced in change id
Idd8539ffed7ba4892c5a916bd34910fd2ef50f75 to fix an issue with touch event
handling in TouchExplorer.  The original issue has been fixed, so this
workaround is no longer needed.

b/24470877

Change-Id: Ie2a782b162b837e9bdc4904a486ed292989f83d8
parent 024ce628
Loading
Loading
Loading
Loading
+2 −27
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.os.AsyncTask;
import android.os.Binder;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Property;
@@ -813,33 +812,12 @@ public final class ScreenMagnifier implements WindowManagerInternal.Magnificatio
            while (mDelayedEventQueue != null) {
                MotionEventInfo info = mDelayedEventQueue;
                mDelayedEventQueue = info.mNext;
                final long offset = SystemClock.uptimeMillis() - info.mCachedTimeMillis;
                MotionEvent event = obtainEventWithOffsetTimeAndDownTime(info.mEvent, offset);
                MotionEvent rawEvent = obtainEventWithOffsetTimeAndDownTime(info.mRawEvent, offset);
                ScreenMagnifier.this.onMotionEvent(event, rawEvent, info.mPolicyFlags);
                event.recycle();
                rawEvent.recycle();
                ScreenMagnifier.this.onMotionEvent(info.mEvent, info.mRawEvent,
                        info.mPolicyFlags);
                info.recycle();
            }
        }

        private MotionEvent obtainEventWithOffsetTimeAndDownTime(MotionEvent event, long offset) {
            final int pointerCount = event.getPointerCount();
            PointerCoords[] coords = getTempPointerCoordsWithMinSize(pointerCount);
            PointerProperties[] properties = getTempPointerPropertiesWithMinSize(pointerCount);
            for (int i = 0; i < pointerCount; i++) {
                event.getPointerCoords(i, coords[i]);
                event.getPointerProperties(i, properties[i]);
            }
            final long downTime = event.getDownTime() + offset;
            final long eventTime = event.getEventTime() + offset;
            return MotionEvent.obtain(downTime, eventTime,
                    event.getAction(), pointerCount, properties, coords,
                    event.getMetaState(), event.getButtonState(),
                    1.0f, 1.0f, event.getDeviceId(), event.getEdgeFlags(),
                    event.getSource(), event.getFlags());
        }

        private void clearDelayedMotionEvents() {
            while (mDelayedEventQueue != null) {
                MotionEventInfo info = mDelayedEventQueue;
@@ -915,7 +893,6 @@ public final class ScreenMagnifier implements WindowManagerInternal.Magnificatio
        public MotionEvent mEvent;
        public MotionEvent mRawEvent;
        public int mPolicyFlags;
        public long mCachedTimeMillis;

        public static MotionEventInfo obtain(MotionEvent event, MotionEvent rawEvent,
                int policyFlags) {
@@ -940,7 +917,6 @@ public final class ScreenMagnifier implements WindowManagerInternal.Magnificatio
            mEvent = MotionEvent.obtain(event);
            mRawEvent = MotionEvent.obtain(rawEvent);
            mPolicyFlags = policyFlags;
            mCachedTimeMillis = SystemClock.uptimeMillis();
        }

        public void recycle() {
@@ -964,7 +940,6 @@ public final class ScreenMagnifier implements WindowManagerInternal.Magnificatio
            mRawEvent.recycle();
            mRawEvent = null;
            mPolicyFlags = 0;
            mCachedTimeMillis = 0;
        }
    }