Use push from script. Remove old readback and instant animation code.
diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java
index 93a6701..4cd017b 100644
--- a/src/com/android/launcher2/AllAppsView.java
+++ b/src/com/android/launcher2/AllAppsView.java
@@ -45,7 +45,6 @@
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
-import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.util.AttributeSet;
@@ -95,12 +94,10 @@
private int mMotionDownRawY;
private int mHomeButtonTop;
private long mTouchTime;
- private boolean mZoomSwipeInProgress;
static class Defines {
public static final int ALLOC_PARAMS = 0;
public static final int ALLOC_STATE = 1;
- public static final int ALLOC_READBACK = 2;
public static final int ALLOC_ICON_IDS = 3;
public static final int ALLOC_LABEL_IDS = 4;
public static final int ALLOC_X_BORDERS = 5;
@@ -224,7 +221,6 @@
mMotionDownRawX = (int)ev.getRawX();
mMotionDownRawY = (int)ev.getRawY();
mLastMotionX = x;
- mRollo.mReadback.read();
mRollo.mState.newPositionX = ev.getRawX() / mDefines.SCREEN_WIDTH_PX;
mRollo.mState.newTouchDown = 1;
@@ -232,7 +228,7 @@
if (!mRollo.checkClickOK()) {
mRollo.clearSelectedIcon();
} else {
- mRollo.selectIcon(x, y, mRollo.mReadback.posX);
+ mRollo.selectIcon(x, y, mRollo.mMessageProc.mPosX);
}
mRollo.mState.save();
mRollo.mInvokeMove.execute();
@@ -276,17 +272,12 @@
mRollo.mState.newTouchDown = 0;
mRollo.mState.newPositionX = ev.getRawX() / mDefines.SCREEN_WIDTH_PX;
- if (!mZoomSwipeInProgress) {
- mVelocity.computeCurrentVelocity(1000 /* px/sec */, mMaxFlingVelocity);
- mRollo.mState.flingVelocityX
- = mVelocity.getXVelocity() / mDefines.SCREEN_WIDTH_PX;
- mRollo.clearSelectedIcon();
- mRollo.mState.save();
- mRollo.mInvokeFling.execute();
- } else {
- mRollo.mState.save();
- mRollo.mInvokeMove.execute();
- }
+ mVelocity.computeCurrentVelocity(1000 /* px/sec */, mMaxFlingVelocity);
+ mRollo.mState.flingVelocityX
+ = mVelocity.getXVelocity() / mDefines.SCREEN_WIDTH_PX;
+ mRollo.clearSelectedIcon();
+ mRollo.mState.save();
+ mRollo.mInvokeFling.execute();
mLastMotionX = -10000;
if (mVelocity != null) {
@@ -316,7 +307,7 @@
return true;
}
int index = mRollo.mState.selectedIconIndex;
- Log.d(TAG, "long click! velocity=" + mRollo.mReadback.velocity + " index=" + index);
+ Log.d(TAG, "long click! velocity=" + mRollo.mMessageProc.mVelocity + " index=" + index);
if (mRollo.checkClickOK() && index >= 0 && index < mAllAppsList.size()) {
ApplicationInfo app = mAllAppsList.get(index);
@@ -348,7 +339,7 @@
* @param amount [0..1] 0 is hidden, 1 is open
* @param animate Whether to animate.
*/
- public void zoom(float amount, boolean animate) {
+ public void zoom(float amount) {
if (mRollo == null) {
return;
}
@@ -357,43 +348,18 @@
mRollo.clearSelectedIcon();
if (amount > 0.001f) {
// set in readback, so we're correct even before the next frame
- mRollo.mReadback.zoom = mRollo.mState.zoomTarget = amount;
- if (!animate) {
- mRollo.mState.zoom = amount;
- mRollo.mReadback.save();
- }
+ mRollo.mState.zoomTarget = amount;
} else {
mRollo.mState.zoomTarget = 0;
- if (!animate) {
- mRollo.mReadback.zoom = mRollo.mState.zoom = 0;
- mRollo.mReadback.save();
- }
}
mRollo.mState.save();
- if (!animate) {
- mRollo.mInvokeSetZoom.execute();
- } else {
- mRollo.mInvokeSetZoomTarget.execute();
- }
- mReadZoom.removeMessages(1);
- mReadZoom.sendEmptyMessageDelayed(1, 1000);
}
- Handler mReadZoom = new Handler() {
- public void handleMessage(Message msg) {
- if(mRollo != null && mRollo.mReadback != null) {
- // FIXME: These checks may indicate other problems.
- mRollo.mReadback.read();
- }
- }
- };
-
public boolean isVisible() {
if (mRollo == null) {
return false;
}
- //mRollo.mReadback.read();
- return mRollo.mReadback.zoom > 0.001f;
+ return mRollo.mMessageProc.mZoom > 0.001f;
}
@Override
@@ -444,8 +410,6 @@
private Script.Invokable mInvokeMove;
private Script.Invokable mInvokeFling;
- private Script.Invokable mInvokeSetZoomTarget;
- private Script.Invokable mInvokeSetZoom;
private Script.Invokable mInvokeTouchUp;
private ProgramStore mPSIcons;
@@ -478,7 +442,6 @@
Params mParams;
State mState;
- Readback mReadback;
class BaseAlloc {
Allocation mAlloc;
@@ -489,10 +452,23 @@
}
}
+ class AAMessage extends RenderScript.RSMessage {
+ public void run() {
+ mPosX = ((float)mData[0]) / (1 << 16);
+ mVelocity = ((float)mData[1]) / (1 << 16);
+ mZoom = ((float)mData[2]) / (1 << 16);
+ //Log.d("rs", "new msg " + mPosX + " " + mVelocity + " " + mZoom);
+ }
+ float mZoom;
+ float mPosX;
+ float mVelocity;
+ }
+ AAMessage mMessageProc;
+
private boolean checkClickOK() {
//android.util.Log.e("rs", "check click " + Float.toString(mReadback.velocity) + ", " + Float.toString(mReadback.posX));
- return (Math.abs(mReadback.velocity) < 0.1f) &&
- (Math.abs(mReadback.posX - Math.round(mReadback.posX)) < 0.1f);
+ return (Math.abs(mMessageProc.mVelocity) < 0.1f) &&
+ (Math.abs(mMessageProc.mPosX - Math.round(mMessageProc.mPosX)) < 0.1f);
}
class Params extends BaseAlloc {
@@ -521,7 +497,6 @@
public int selectedIconIndex = -1;
public int selectedIconTexture;
public float zoomTarget;
- public float zoom;
State() {
mType = Type.createFromClass(mRS, State.class, 1, "StateClass");
@@ -530,24 +505,6 @@
}
}
- class Readback extends BaseAlloc {
- public float posX;
- public float velocity;
- public float zoom;
-
- Readback() {
- mType = Type.createFromClass(mRS, Readback.class, 1, "ReadbackClass");
- mAlloc = Allocation.createTyped(mRS, mType);
- save();
- }
-
- void read() {
- if(mAlloc != null) {
- mAlloc.read(this);
- }
- }
- }
-
public RolloRS() {
}
@@ -670,6 +627,7 @@
private void initProgramStore() {
ProgramStore.Builder bs = new ProgramStore.Builder(mRS, null, null);
bs.setDepthFunc(ProgramStore.DepthFunc.ALWAYS);
+ bs.setColorMask(true,true,true,false);
bs.setDitherEnable(true);
bs.setBlendFunc(ProgramStore.BlendSrcFunc.SRC_ALPHA,
ProgramStore.BlendDstFunc.ONE_MINUS_SRC_ALPHA);
@@ -696,7 +654,6 @@
private void initData() {
mParams = new Params();
mState = new State();
- mReadback = new Readback();
final Utilities.BubbleText bubble = new Utilities.BubbleText(getContext());
@@ -716,7 +673,6 @@
mParams.save();
mState.save();
- mReadback.save();
mSelectionBitmap = Bitmap.createBitmap(Defines.ICON_TEXTURE_WIDTH_PX,
Defines.ICON_TEXTURE_HEIGHT_PX, Bitmap.Config.ARGB_8888);
@@ -734,23 +690,21 @@
sb.addDefines(mDefines);
sb.setType(mParams.mType, "params", Defines.ALLOC_PARAMS);
sb.setType(mState.mType, "state", Defines.ALLOC_STATE);
- sb.setType(mReadback.mType, "readback", Defines.ALLOC_READBACK);
mInvokeMove = sb.addInvokable("move");
mInvokeFling = sb.addInvokable("fling");
- mInvokeSetZoomTarget = sb.addInvokable("setZoomTarget");
- mInvokeSetZoom = sb.addInvokable("setZoom");
mInvokeTouchUp = sb.addInvokable("touchUp");
mScript = sb.create();
mScript.setClearColor(0.0f, 0.0f, 0.0f, 0.0f);
mScript.bindAllocation(mParams.mAlloc, Defines.ALLOC_PARAMS);
mScript.bindAllocation(mState.mAlloc, Defines.ALLOC_STATE);
- mScript.bindAllocation(mReadback.mAlloc, Defines.ALLOC_READBACK);
mScript.bindAllocation(mAllocIconID, Defines.ALLOC_ICON_IDS);
mScript.bindAllocation(mAllocLabelID, Defines.ALLOC_LABEL_IDS);
mScript.bindAllocation(mAllocTouchXBorders, Defines.ALLOC_X_BORDERS);
mScript.bindAllocation(mAllocTouchYBorders, Defines.ALLOC_Y_BORDERS);
+ mMessageProc = new AAMessage();
+ mRS.mMessageCallback = mMessageProc;
mRS.contextBindRootScript(mScript);
}
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 9360113..8f03402 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1595,7 +1595,7 @@
}
void showAllApps() {
- mAllAppsGrid.zoom(1.0f, true);
+ mAllAppsGrid.zoom(1.0f);
//mWorkspace.hide();
// TODO: fade these two too
@@ -1605,7 +1605,7 @@
void closeAllApps(boolean animated) {
if (mAllAppsGrid.isVisible()) {
- mAllAppsGrid.zoom(0.0f, animated);
+ mAllAppsGrid.zoom(0.0f);
mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus();
// TODO: fade these two too