Merge change I12c14a85 into eclair
* changes: Use push from script. Remove old readback and instant animation code.
This commit is contained in:
+30
-22
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user