Merge change I12c14a85 into eclair

* changes:
  Use push from script. Remove old readback and instant animation code.
This commit is contained in:
Android (Google) Code Review
2009-10-06 19:25:57 -04:00
3 changed files with 61 additions and 99 deletions
+30 -22
View File
@@ -19,11 +19,31 @@ float g_DT;
int g_LastTime;
int g_PageCount;
float g_Zoom;
float g_ZoomTarget;
// Drawing constants, should be parameters ======
#define VIEW_ANGLE 1.28700222f
float g_OldPosPage;
float g_OldPosVelocity;
float g_OldZoom;
void updateReadback() {
if ((g_OldPosPage != g_PosPage) ||
(g_OldPosVelocity != g_PosVelocity) ||
(g_OldZoom != g_Zoom)) {
g_OldPosPage = g_PosPage;
g_OldPosVelocity = g_PosVelocity;
g_OldZoom = g_Zoom;
int i[3];
i[0] = g_PosPage * (1 << 16);
i[1] = g_PosVelocity * (1 << 16);
i[2] = g_OldZoom * (1 << 16);
sendToClient(&i[0], 1, 12, 1);
}
}
void init() {
g_AttractionTable[0] = 6.5f;
g_AttractionTable[1] = 6.5f;
@@ -50,7 +70,6 @@ void init() {
g_LastTouchDown = 0;
g_LastPositionX = 0;
g_Zoom = 0;
g_ZoomTarget = 0;
}
void move() {
@@ -97,16 +116,6 @@ void touchUp() {
g_LastTouchDown = 0;
}
void setZoomTarget() {
g_ZoomTarget = state->zoomTarget;
//debugF("zoom target", g_ZoomTarget);
}
void setZoom() {
readback->zoom = g_Zoom = g_ZoomTarget = state->zoom;
//debugF("zoom", g_ZoomTarget);
}
int
count_pages(int iconCount)
{
@@ -301,8 +310,8 @@ main(int launchID)
g_LastTime = newTime;
//debugF("zoom", g_Zoom);
if (g_Zoom != g_ZoomTarget) {
float dz = (g_ZoomTarget - g_Zoom) * g_DT * 5;
if (g_Zoom != state->zoomTarget) {
float dz = (state->zoomTarget - g_Zoom) * g_DT * 5;
if (dz && (fabsf(dz) < 0.03f)) {
if (dz > 0) {
dz = 0.03f;
@@ -310,22 +319,22 @@ main(int launchID)
dz = -0.03f;
}
}
if (fabsf(g_Zoom - g_ZoomTarget) < fabsf(dz)) {
g_Zoom = g_ZoomTarget;
if (fabsf(g_Zoom - state->zoomTarget) < fabsf(dz)) {
g_Zoom = state->zoomTarget;
} else {
g_Zoom += dz;
}
readback->zoom = g_Zoom;
updateReadback();
}
// Set clear value to dim the background based on the zoom position.
if (g_Zoom < 0.001f) {
if ((g_Zoom < 0.001f) && (state->zoomTarget < 0.001f)) {
pfClearColor(0.0f, 0.0f, 0.0f, 0.0f);
// When we're zoomed out and not tracking motion events, reset the pos to 0.
if (!g_LastTouchDown) {
g_PosPage = 0;
}
return 1; // 0;
return 1;//0;
} else if (g_Zoom < 0.85f) {
pfClearColor(0.0f, 0.0f, 0.0f, g_Zoom);
} else {
@@ -337,8 +346,7 @@ main(int launchID)
g_PageCount = count_pages(iconCount);
updatePos(0.1f);
readback->posX = g_PosPage;
readback->velocity = g_PosVelocity;
updateReadback();
//debugF(" draw g_PosPage", g_PosPage);
@@ -393,6 +401,6 @@ main(int launchID)
// Bug workaround where the last frame is not always displayed
// So we keep rendering until the bug is fixed.
return 1; //(g_PosVelocity != 0) || fracf(g_PosPage) || g_Zoom != g_ZoomTarget);
return 1;//(g_PosVelocity != 0) || fracf(g_PosPage) || (g_Zoom != state->zoomTarget);
}
+29 -75
View File
@@ -45,7 +45,6 @@ import android.graphics.Canvas;
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 @@ public class AllAppsView extends RSSurfaceView
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 @@ public class AllAppsView extends RSSurfaceView
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 @@ public class AllAppsView extends RSSurfaceView
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 @@ public class AllAppsView extends RSSurfaceView
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 @@ public class AllAppsView extends RSSurfaceView
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 @@ public class AllAppsView extends RSSurfaceView
* @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 @@ public class AllAppsView extends RSSurfaceView
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 @@ public class AllAppsView extends RSSurfaceView
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 @@ public class AllAppsView extends RSSurfaceView
Params mParams;
State mState;
Readback mReadback;
class BaseAlloc {
Allocation mAlloc;
@@ -489,10 +452,23 @@ public class AllAppsView extends RSSurfaceView
}
}
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 class AllAppsView extends RSSurfaceView
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 @@ public class AllAppsView extends RSSurfaceView
}
}
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 @@ public class AllAppsView extends RSSurfaceView
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 @@ public class AllAppsView extends RSSurfaceView
private void initData() {
mParams = new Params();
mState = new State();
mReadback = new Readback();
final Utilities.BubbleText bubble = new Utilities.BubbleText(getContext());
@@ -716,7 +673,6 @@ public class AllAppsView extends RSSurfaceView
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 @@ public class AllAppsView extends RSSurfaceView
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);
}
+2 -2
View File
@@ -1595,7 +1595,7 @@ public final class Launcher extends Activity
}
void showAllApps() {
mAllAppsGrid.zoom(1.0f, true);
mAllAppsGrid.zoom(1.0f);
//mWorkspace.hide();
// TODO: fade these two too
@@ -1605,7 +1605,7 @@ public final class Launcher extends Activity
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