diff options
author | Marco Nelissen <marcone@google.com> | 2009-12-10 14:44:45 -0800 |
---|---|---|
committer | Jason Sams <rjsams@android.com> | 2010-02-11 18:13:59 -0800 |
commit | b7cac95f928bf5b02f4a2a914c3a43014c2469f8 (patch) | |
tree | a126ed0f2b6147d4f835b14d8fbbcf7c4e35c683 | |
parent | fcdc30736467201cc8b7b365a969f4db75c44637 (diff) | |
download | android_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.xml | 2 | ||||
-rw-r--r-- | res/raw/clouds.rs | 7 | ||||
-rw-r--r-- | src/com/android/magicsmoke/MagicSmokeRS.java | 31 |
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); |