summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2009-12-10 14:44:45 -0800
committerJason Sams <rjsams@android.com>2010-02-11 18:13:59 -0800
commitb7cac95f928bf5b02f4a2a914c3a43014c2469f8 (patch)
treea126ed0f2b6147d4f835b14d8fbbcf7c4e35c683
parentfcdc30736467201cc8b7b365a969f4db75c44637 (diff)
downloadandroid_packages_wallpapers_MagicSmoke-b7cac95f928bf5b02f4a2a914c3a43014c2469f8.tar.gz
android_packages_wallpapers_MagicSmoke-b7cac95f928bf5b02f4a2a914c3a43014c2469f8.tar.bz2
android_packages_wallpapers_MagicSmoke-b7cac95f928bf5b02f4a2a914c3a43014c2469f8.zip
DO NOT MERGE. Port live wallpaper changes from Froyo to Eclair for Droid support.
Fix the magic smoke wallpaper so it doesn't jump after turning the screen on. Update to new RS texture API. Add uses-feature for live wallpapers.
-rw-r--r--AndroidManifest.xml2
-rw-r--r--res/raw/clouds.rs7
-rw-r--r--src/com/android/magicsmoke/MagicSmokeRS.java31
3 files changed, 21 insertions, 19 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 5e79225..7df637e 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -21,6 +21,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.magicsmoke">
+ <uses-feature android:name="android.software.live_wallpaper" />
+
<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" />
<uses-permission android:name="android.permission.BIND_WALLPAPER" />
diff --git a/res/raw/clouds.rs b/res/raw/clouds.rs
index a6ab846..a1f3b18 100644
--- a/res/raw/clouds.rs
+++ b/res/raw/clouds.rs
@@ -288,9 +288,10 @@ int main(int launchID) {
int now = uptimeMillis();
timedelta = ((float)(now - lastuptime)) / 44.f;
lastuptime = now;
- if (timedelta > 100) {
- // If we didn't render anything for several seconds, just pretend time stopped.
- timedelta = 1;
+ if (timedelta > 3) {
+ // Limit the step adjustment factor to 3, so we don't get a sudden jump
+ // after coming back from sleep.
+ timedelta = 3;
}
i = State->mPreset;
diff --git a/src/com/android/magicsmoke/MagicSmokeRS.java b/src/com/android/magicsmoke/MagicSmokeRS.java
index 03a1106..f11b704 100644
--- a/src/com/android/magicsmoke/MagicSmokeRS.java
+++ b/src/com/android/magicsmoke/MagicSmokeRS.java
@@ -16,7 +16,6 @@
package com.android.magicsmoke;
-import static android.renderscript.ProgramFragment.EnvMode.REPLACE;
import static android.renderscript.Sampler.Value.LINEAR;
import static android.renderscript.Sampler.Value.WRAP;
@@ -76,7 +75,7 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange
private Sampler mSampler;
private Allocation[] mSourceTextures;
private Allocation[] mRealTextures;
-
+
private ProgramVertex mPVBackground;
private ProgramVertex.MatrixAllocation mPVAlloc;
@@ -95,7 +94,7 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange
private Context mContext;
private SharedPreferences mSharedPref;
-
+
static class Preset {
Preset(int processmode, int backcol, int locol, int hicol, float mul, int mask,
boolean rot, int blend, boolean texswap, boolean premul) {
@@ -146,9 +145,9 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange
new Preset(2, 0x6060ff, 0x000070, 0xffffff, 2.5f, 0x1f, true, 0, false, false),
new Preset(3, 0x0000f0, 0x000000, 0xffffff, 2.0f, 0x0f, true, 0, true, false),
};
-
+
private float mTouchY;
-
+
MagicSmokeRS(Context context, int width, int height) {
super(width, height);
mWidth = width;
@@ -182,7 +181,7 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange
mWorldState.mPreMul = mPreset[p].mPreMul ? 1 : 0;
mWorldState.mBlendFunc = mPreset[p].mBlendFunc;
}
-
+
@Override
public void resize(int width, int height) {
super.resize(width, height);
@@ -211,7 +210,7 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange
mState.data(mWorldState);
}
}
-
+
@Override
public void setOffset(float xOffset, float yOffset, float xStep, float yStep,
int xPixels, int yPixels) {
@@ -233,10 +232,10 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange
makeNewState();
mState.data(mWorldState);
}
-
+
float alphafactor;
Type mTextureType;
-
+
void loadBitmap(int id, int index, String name, float alphamul, int lowcol, int highcol) {
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
@@ -259,7 +258,7 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange
int highcol = mPreset[mWorldState.mPreset].mHighColor;
//Log.i("@@@@", "preset " + mWorldState.mPreset + ", mul: " + alphamul +
// ", colors: " + Integer.toHexString(lowcol) + "/" + Integer.toHexString(highcol));
-
+
// TODO: using different high and low colors for each layer offers some cool effects too
loadBitmap(R.drawable.noise1, 0, "Tnoise1", alphamul, lowcol, highcol);
loadBitmap(R.drawable.noise2, 1, "Tnoise2", alphamul, lowcol, highcol);
@@ -267,7 +266,7 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange
loadBitmap(R.drawable.noise4, 3, "Tnoise4", alphamul, lowcol, highcol);
loadBitmap(R.drawable.noise5, 4, "Tnoise5", alphamul, lowcol, highcol);
}
-
+
@Override
protected ScriptC createScript() {
@@ -289,13 +288,13 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange
mSourceTextures = new Allocation[5];
mRealTextures = new Allocation[5];
-
+
Type.Builder tb = new Type.Builder(mRS, Element.RGBA_8888(mRS));
tb.add(Dimension.X, 256);
tb.add(Dimension.Y, 256);
mTextureType = tb.create();
loadBitmaps();
-
+
Sampler.Builder samplerBuilder = new Sampler.Builder(mRS);
samplerBuilder.setMin(LINEAR);
samplerBuilder.setMag(LINEAR);
@@ -304,9 +303,9 @@ class MagicSmokeRS extends RenderScriptScene implements OnSharedPreferenceChange
mSampler = samplerBuilder.create();
{
- ProgramFragment.Builder builder = new ProgramFragment.Builder(mRS, null, null);
- builder.setTexEnable(true, 0);
- builder.setTexEnvMode(ProgramFragment.EnvMode.MODULATE, 0);
+ ProgramFragment.Builder builder = new ProgramFragment.Builder(mRS);
+ builder.setTexture(ProgramFragment.Builder.EnvMode.REPLACE,
+ ProgramFragment.Builder.Format.RGBA, 0);
mPfBackground = builder.create();
mPfBackground.setName("PFBackground");
mPfBackground.bindSampler(mSampler, 0);