Loading core/java/android/app/Activity.java +45 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.HashMap; import org.codeaurora.Performance; /** * An activity is a single, focused thing that the user can do. Almost all Loading Loading @@ -662,7 +663,15 @@ public class Activity extends ContextThemeWrapper Window.Callback, KeyEvent.Callback, OnCreateContextMenuListener, ComponentCallbacks2, Window.OnWindowDismissedCallback { private static Performance mPerf = null; private static int mDragBoostPossible = -1; private static int mPerfLockDuration = -1; private static int mAsCpuBoost = -1; private static int mAsSchedBoost = -1; private static int mAsPcDisblBoost = -1; private static final String TAG = "Activity"; private static final boolean DEBUG_LIFECYCLE = false; /** Standard activity result: operation canceled. */ Loading Loading @@ -2733,6 +2742,42 @@ public class Activity extends ContextThemeWrapper * @return boolean Return true if this event was consumed. */ public boolean dispatchTouchEvent(MotionEvent ev) { String currentActivity = getPackageName(); if(mDragBoostPossible == -1) { mDragBoostPossible = 0; String[] activityList = getResources().getStringArray( com.android.internal.R.array.boost_activityList); if(activityList != null){ for (String match : activityList) { if (currentActivity.indexOf(match) != -1){ mDragBoostPossible = 1; break; } } } } if (mDragBoostPossible == 1) { if (mPerf == null){ mPerf = new Performance(); } if(mPerfLockDuration == -1){ mPerfLockDuration = getResources().getInteger( com.android.internal.R.integer.ascrollboost_timeout); mAsCpuBoost = getResources().getInteger( com.android.internal.R.integer.ascrollboost_cpuboost); mAsSchedBoost = getResources().getInteger( com.android.internal.R.integer.ascrollboost_schedboost); mAsPcDisblBoost = getResources().getInteger( com.android.internal.R.integer.ascrollboost_pcdisbl); } mPerf.perfLockAcquireTouch(ev, getResources().getDisplayMetrics(), mPerfLockDuration, mAsSchedBoost, mAsCpuBoost, mAsPcDisblBoost); } if (ev.getAction() == MotionEvent.ACTION_DOWN) { onUserInteraction(); } Loading core/java/android/widget/OverScroller.java +4 −1 Original line number Diff line number Diff line Loading @@ -616,6 +616,7 @@ public class OverScroller { private int lBoostSchedBoost = 0; private int lBoostPcDisblBoost = 0; private int lBoostKsmBoost = 0; private int lBoostPreferIdle = 0; static { float x_min = 0.0f; Loading Loading @@ -675,6 +676,8 @@ public class OverScroller { com.android.internal.R.integer.flingboost_pcdisbl_param); lBoostKsmBoost = context.getResources().getInteger( com.android.internal.R.integer.flingboost_ksmboost_param); lBoostPreferIdle = context.getResources().getInteger( com.android.internal.R.integer.flingboost_preferidle_param); } } Loading Loading @@ -808,7 +811,7 @@ public class OverScroller { lBoostTimeOut = mDuration; } mPerf.perfLockAcquire(lBoostTimeOut, lBoostPcDisblBoost, lBoostSchedBoost, lBoostCpuBoost, lBoostKsmBoost); lBoostCpuBoost, lBoostKsmBoost,lBoostPreferIdle); } } Loading core/java/android/widget/Scroller.java +4 −1 Original line number Diff line number Diff line Loading @@ -121,6 +121,7 @@ public class Scroller { private int lBoostSchedBoost = 0; private int lBoostPcDisblBoost = 0; private int lBoostKsmBoost = 0; private int lBoostPreferIdle =0; // A context-specific coefficient adjusted to physical values. Loading Loading @@ -207,6 +208,8 @@ public class Scroller { com.android.internal.R.integer.scrollboost_pcdisbl_param); lBoostKsmBoost = context.getResources().getInteger( com.android.internal.R.integer.scrollboost_ksmboost_param); lBoostPreferIdle = context.getResources().getInteger( com.android.internal.R.integer.scrollboost_preferidle_param); } Loading Loading @@ -437,7 +440,7 @@ public class Scroller { lBoostTimeOut = mDuration; } mPerf.perfLockAcquire(lBoostTimeOut, lBoostPcDisblBoost, lBoostSchedBoost, lBoostCpuBoost, lBoostKsmBoost); lBoostCpuBoost, lBoostKsmBoost,lBoostPreferIdle); } } Loading core/java/com/android/server/net/NetlinkTracker.java +6 −6 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ public class NetlinkTracker extends BaseNetworkObserver { private final String TAG; public interface Callback { public void update(); public void update(LinkProperties lp); } private final String mInterfaceName; Loading Loading @@ -112,7 +112,7 @@ public class NetlinkTracker extends BaseNetworkObserver { changed = mLinkProperties.addLinkAddress(address); } if (changed) { mCallback.update(); mCallback.update(new LinkProperties(mLinkProperties)); } } } Loading @@ -126,7 +126,7 @@ public class NetlinkTracker extends BaseNetworkObserver { changed = mLinkProperties.removeLinkAddress(address); } if (changed) { mCallback.update(); mCallback.update(new LinkProperties(mLinkProperties)); } } } Loading @@ -140,7 +140,7 @@ public class NetlinkTracker extends BaseNetworkObserver { changed = mLinkProperties.addRoute(route); } if (changed) { mCallback.update(); mCallback.update(new LinkProperties(mLinkProperties)); } } } Loading @@ -154,7 +154,7 @@ public class NetlinkTracker extends BaseNetworkObserver { changed = mLinkProperties.removeRoute(route); } if (changed) { mCallback.update(); mCallback.update(new LinkProperties(mLinkProperties)); } } } Loading @@ -168,7 +168,7 @@ public class NetlinkTracker extends BaseNetworkObserver { synchronized (this) { mDnsServerRepository.setDnsServersOn(mLinkProperties); } mCallback.update(); mCallback.update(new LinkProperties(mLinkProperties)); } } } Loading core/java/org/codeaurora/Performance.java +142 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ package org.codeaurora; import android.util.Log; import android.view.MotionEvent; import android.util.DisplayMetrics; public class Performance { Loading Loading @@ -72,6 +74,9 @@ public class Performance /** @hide */ public static final int CPUS_ON_LIMIT_2 = 0x8FD; /** @hide */ public static final int CPUS_ON_LIMIT_3 = 0x8FC; /** @hide */ public static final int SCHED_PREFER_IDLE = 0x3E01; /** @hide */ public static final int SCHED_MIGRATE_COST = 0x3F01; /* The following are the PerfLock API return values*/ /** @hide */ public static final int REQUEST_FAILED = -1; /** @hide */ public static final int REQUEST_SUCCEEDED = 0; Loading @@ -88,6 +93,143 @@ public class Performance return rc; } private static boolean isFlingEnabled = false; /* Tunables Begin. Can be moved to config.xml */ /* Division factor */ private int mDivFact = 6; /* Min drag in horizontal,vertical (abs pixels) */ private int mWDragPix = 12; private int mHDragPix = 12; /* fling boost duration (msec) */ private int mFlingBoostDuration = 1500; /* Tunables End. */ class TouchInfo { /* Touch start position */ private int mStartX = 0; private int mStartY = 0; /* Touch current position */ private int mCurX = 0; private int mCurY = 0; /* Width, Height to declare fling */ private int mMinFlingW = 0; private int mMinFlingH = 0; /* Width, Height to declare drag */ private int mMinDragW = 0; private int mMinDragH = 0; /* Note: All coordinates are density normalized values */ private void reset() { mStartX = mStartY = mCurX = mCurY = 0; mMinFlingH = mMinFlingW = mMinDragH = mMinDragW = 0; isFlingEnabled = false; } /* update current x,y coordinates */ private void setXY(int dx, int dy) { mCurX = dx; mCurY = dy; } /* Set fling min width, height */ private void setFlingWH(int dw, int dh) { mMinFlingW = dw; mMinFlingH = dh; } /* Set drag min width, height */ private void setDragWH(int dw, int dh) { mMinDragW = dw; mMinDragH = dh; } private void setStartXY(int dx, int dy) { mStartX = mCurX = dx; mStartY = mCurY = dy; } }; private static TouchInfo mTouchInfo = null; /* The following two functions are the PerfLock APIs*/ /** &hide */ public int perfLockAcquireTouch(MotionEvent ev, DisplayMetrics metrics, int duration, int... list) { int rc = REQUEST_FAILED; if (mTouchInfo == null) mTouchInfo = new TouchInfo(); final int actionMasked = ev.getActionMasked(); final int pointerIndex = ev.getActionIndex(); final int y = (int) ev.getY(pointerIndex); final int x = (int) ev.getX(pointerIndex); int dx = (int)((x * 1f)/metrics.density); int dy = (int)((y * 1f)/metrics.density); boolean ret = true; switch (actionMasked) { case MotionEvent.ACTION_DOWN: { mTouchInfo.reset(); mTouchInfo.setStartXY(dx, dy); mTouchInfo.setFlingWH( (int)((metrics.widthPixels * 1f)/(mDivFact * metrics.density)), (int)((metrics.heightPixels * 1f)/(mDivFact * metrics.density))); mTouchInfo.setDragWH((int)(mWDragPix * 1f/metrics.density), (int)(mHDragPix * 1f/metrics.density)); return rc; } case MotionEvent.ACTION_MOVE: { int xdiff = dx - mTouchInfo.mCurX; int ydiff = dy - mTouchInfo.mCurY; if (xdiff < 0) xdiff *= -1; if (ydiff < 0) ydiff *= -1; mTouchInfo.setXY(dx, dy); if ((xdiff > mTouchInfo.mMinDragW) || (ydiff > mTouchInfo.mMinDragH)){ ret = false; } if (ret == true) return rc; break; } case MotionEvent.ACTION_UP: { int xdiff = dx - mTouchInfo.mCurX; int ydiff = dy - mTouchInfo.mCurY; if (xdiff < 0) xdiff *= -1; if (ydiff < 0) ydiff *= -1; if ((xdiff > mTouchInfo.mMinDragW) || (ydiff > mTouchInfo.mMinDragH)){ ret = false; } mTouchInfo.reset(); if (ret == true){ return rc; } break; } case MotionEvent.ACTION_CANCEL: { mTouchInfo.reset(); return rc; } default: return rc; } rc = REQUEST_SUCCEEDED; handle = native_perf_lock_acq(handle, duration, list); if (handle == 0) rc = REQUEST_FAILED; return rc; } /** &hide */ public int perfLockRelease() { return native_perf_lock_rel(handle); Loading Loading
core/java/android/app/Activity.java +45 −0 Original line number Diff line number Diff line Loading @@ -101,6 +101,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.HashMap; import org.codeaurora.Performance; /** * An activity is a single, focused thing that the user can do. Almost all Loading Loading @@ -662,7 +663,15 @@ public class Activity extends ContextThemeWrapper Window.Callback, KeyEvent.Callback, OnCreateContextMenuListener, ComponentCallbacks2, Window.OnWindowDismissedCallback { private static Performance mPerf = null; private static int mDragBoostPossible = -1; private static int mPerfLockDuration = -1; private static int mAsCpuBoost = -1; private static int mAsSchedBoost = -1; private static int mAsPcDisblBoost = -1; private static final String TAG = "Activity"; private static final boolean DEBUG_LIFECYCLE = false; /** Standard activity result: operation canceled. */ Loading Loading @@ -2733,6 +2742,42 @@ public class Activity extends ContextThemeWrapper * @return boolean Return true if this event was consumed. */ public boolean dispatchTouchEvent(MotionEvent ev) { String currentActivity = getPackageName(); if(mDragBoostPossible == -1) { mDragBoostPossible = 0; String[] activityList = getResources().getStringArray( com.android.internal.R.array.boost_activityList); if(activityList != null){ for (String match : activityList) { if (currentActivity.indexOf(match) != -1){ mDragBoostPossible = 1; break; } } } } if (mDragBoostPossible == 1) { if (mPerf == null){ mPerf = new Performance(); } if(mPerfLockDuration == -1){ mPerfLockDuration = getResources().getInteger( com.android.internal.R.integer.ascrollboost_timeout); mAsCpuBoost = getResources().getInteger( com.android.internal.R.integer.ascrollboost_cpuboost); mAsSchedBoost = getResources().getInteger( com.android.internal.R.integer.ascrollboost_schedboost); mAsPcDisblBoost = getResources().getInteger( com.android.internal.R.integer.ascrollboost_pcdisbl); } mPerf.perfLockAcquireTouch(ev, getResources().getDisplayMetrics(), mPerfLockDuration, mAsSchedBoost, mAsCpuBoost, mAsPcDisblBoost); } if (ev.getAction() == MotionEvent.ACTION_DOWN) { onUserInteraction(); } Loading
core/java/android/widget/OverScroller.java +4 −1 Original line number Diff line number Diff line Loading @@ -616,6 +616,7 @@ public class OverScroller { private int lBoostSchedBoost = 0; private int lBoostPcDisblBoost = 0; private int lBoostKsmBoost = 0; private int lBoostPreferIdle = 0; static { float x_min = 0.0f; Loading Loading @@ -675,6 +676,8 @@ public class OverScroller { com.android.internal.R.integer.flingboost_pcdisbl_param); lBoostKsmBoost = context.getResources().getInteger( com.android.internal.R.integer.flingboost_ksmboost_param); lBoostPreferIdle = context.getResources().getInteger( com.android.internal.R.integer.flingboost_preferidle_param); } } Loading Loading @@ -808,7 +811,7 @@ public class OverScroller { lBoostTimeOut = mDuration; } mPerf.perfLockAcquire(lBoostTimeOut, lBoostPcDisblBoost, lBoostSchedBoost, lBoostCpuBoost, lBoostKsmBoost); lBoostCpuBoost, lBoostKsmBoost,lBoostPreferIdle); } } Loading
core/java/android/widget/Scroller.java +4 −1 Original line number Diff line number Diff line Loading @@ -121,6 +121,7 @@ public class Scroller { private int lBoostSchedBoost = 0; private int lBoostPcDisblBoost = 0; private int lBoostKsmBoost = 0; private int lBoostPreferIdle =0; // A context-specific coefficient adjusted to physical values. Loading Loading @@ -207,6 +208,8 @@ public class Scroller { com.android.internal.R.integer.scrollboost_pcdisbl_param); lBoostKsmBoost = context.getResources().getInteger( com.android.internal.R.integer.scrollboost_ksmboost_param); lBoostPreferIdle = context.getResources().getInteger( com.android.internal.R.integer.scrollboost_preferidle_param); } Loading Loading @@ -437,7 +440,7 @@ public class Scroller { lBoostTimeOut = mDuration; } mPerf.perfLockAcquire(lBoostTimeOut, lBoostPcDisblBoost, lBoostSchedBoost, lBoostCpuBoost, lBoostKsmBoost); lBoostCpuBoost, lBoostKsmBoost,lBoostPreferIdle); } } Loading
core/java/com/android/server/net/NetlinkTracker.java +6 −6 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ public class NetlinkTracker extends BaseNetworkObserver { private final String TAG; public interface Callback { public void update(); public void update(LinkProperties lp); } private final String mInterfaceName; Loading Loading @@ -112,7 +112,7 @@ public class NetlinkTracker extends BaseNetworkObserver { changed = mLinkProperties.addLinkAddress(address); } if (changed) { mCallback.update(); mCallback.update(new LinkProperties(mLinkProperties)); } } } Loading @@ -126,7 +126,7 @@ public class NetlinkTracker extends BaseNetworkObserver { changed = mLinkProperties.removeLinkAddress(address); } if (changed) { mCallback.update(); mCallback.update(new LinkProperties(mLinkProperties)); } } } Loading @@ -140,7 +140,7 @@ public class NetlinkTracker extends BaseNetworkObserver { changed = mLinkProperties.addRoute(route); } if (changed) { mCallback.update(); mCallback.update(new LinkProperties(mLinkProperties)); } } } Loading @@ -154,7 +154,7 @@ public class NetlinkTracker extends BaseNetworkObserver { changed = mLinkProperties.removeRoute(route); } if (changed) { mCallback.update(); mCallback.update(new LinkProperties(mLinkProperties)); } } } Loading @@ -168,7 +168,7 @@ public class NetlinkTracker extends BaseNetworkObserver { synchronized (this) { mDnsServerRepository.setDnsServersOn(mLinkProperties); } mCallback.update(); mCallback.update(new LinkProperties(mLinkProperties)); } } } Loading
core/java/org/codeaurora/Performance.java +142 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ package org.codeaurora; import android.util.Log; import android.view.MotionEvent; import android.util.DisplayMetrics; public class Performance { Loading Loading @@ -72,6 +74,9 @@ public class Performance /** @hide */ public static final int CPUS_ON_LIMIT_2 = 0x8FD; /** @hide */ public static final int CPUS_ON_LIMIT_3 = 0x8FC; /** @hide */ public static final int SCHED_PREFER_IDLE = 0x3E01; /** @hide */ public static final int SCHED_MIGRATE_COST = 0x3F01; /* The following are the PerfLock API return values*/ /** @hide */ public static final int REQUEST_FAILED = -1; /** @hide */ public static final int REQUEST_SUCCEEDED = 0; Loading @@ -88,6 +93,143 @@ public class Performance return rc; } private static boolean isFlingEnabled = false; /* Tunables Begin. Can be moved to config.xml */ /* Division factor */ private int mDivFact = 6; /* Min drag in horizontal,vertical (abs pixels) */ private int mWDragPix = 12; private int mHDragPix = 12; /* fling boost duration (msec) */ private int mFlingBoostDuration = 1500; /* Tunables End. */ class TouchInfo { /* Touch start position */ private int mStartX = 0; private int mStartY = 0; /* Touch current position */ private int mCurX = 0; private int mCurY = 0; /* Width, Height to declare fling */ private int mMinFlingW = 0; private int mMinFlingH = 0; /* Width, Height to declare drag */ private int mMinDragW = 0; private int mMinDragH = 0; /* Note: All coordinates are density normalized values */ private void reset() { mStartX = mStartY = mCurX = mCurY = 0; mMinFlingH = mMinFlingW = mMinDragH = mMinDragW = 0; isFlingEnabled = false; } /* update current x,y coordinates */ private void setXY(int dx, int dy) { mCurX = dx; mCurY = dy; } /* Set fling min width, height */ private void setFlingWH(int dw, int dh) { mMinFlingW = dw; mMinFlingH = dh; } /* Set drag min width, height */ private void setDragWH(int dw, int dh) { mMinDragW = dw; mMinDragH = dh; } private void setStartXY(int dx, int dy) { mStartX = mCurX = dx; mStartY = mCurY = dy; } }; private static TouchInfo mTouchInfo = null; /* The following two functions are the PerfLock APIs*/ /** &hide */ public int perfLockAcquireTouch(MotionEvent ev, DisplayMetrics metrics, int duration, int... list) { int rc = REQUEST_FAILED; if (mTouchInfo == null) mTouchInfo = new TouchInfo(); final int actionMasked = ev.getActionMasked(); final int pointerIndex = ev.getActionIndex(); final int y = (int) ev.getY(pointerIndex); final int x = (int) ev.getX(pointerIndex); int dx = (int)((x * 1f)/metrics.density); int dy = (int)((y * 1f)/metrics.density); boolean ret = true; switch (actionMasked) { case MotionEvent.ACTION_DOWN: { mTouchInfo.reset(); mTouchInfo.setStartXY(dx, dy); mTouchInfo.setFlingWH( (int)((metrics.widthPixels * 1f)/(mDivFact * metrics.density)), (int)((metrics.heightPixels * 1f)/(mDivFact * metrics.density))); mTouchInfo.setDragWH((int)(mWDragPix * 1f/metrics.density), (int)(mHDragPix * 1f/metrics.density)); return rc; } case MotionEvent.ACTION_MOVE: { int xdiff = dx - mTouchInfo.mCurX; int ydiff = dy - mTouchInfo.mCurY; if (xdiff < 0) xdiff *= -1; if (ydiff < 0) ydiff *= -1; mTouchInfo.setXY(dx, dy); if ((xdiff > mTouchInfo.mMinDragW) || (ydiff > mTouchInfo.mMinDragH)){ ret = false; } if (ret == true) return rc; break; } case MotionEvent.ACTION_UP: { int xdiff = dx - mTouchInfo.mCurX; int ydiff = dy - mTouchInfo.mCurY; if (xdiff < 0) xdiff *= -1; if (ydiff < 0) ydiff *= -1; if ((xdiff > mTouchInfo.mMinDragW) || (ydiff > mTouchInfo.mMinDragH)){ ret = false; } mTouchInfo.reset(); if (ret == true){ return rc; } break; } case MotionEvent.ACTION_CANCEL: { mTouchInfo.reset(); return rc; } default: return rc; } rc = REQUEST_SUCCEEDED; handle = native_perf_lock_acq(handle, duration, list); if (handle == 0) rc = REQUEST_FAILED; return rc; } /** &hide */ public int perfLockRelease() { return native_perf_lock_rel(handle); Loading