Merge change 21010

* changes:
  Grass has graduated from an RS experiment to a real live wallpaper.
diff --git a/libs/rs/java/Grass/Android.mk b/libs/rs/java/Grass/Android.mk
deleted file mode 100644
index ce5294e..0000000
--- a/libs/rs/java/Grass/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# Copyright (C) 2009 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-#LOCAL_STATIC_JAVA_LIBRARIES := android.renderscript
-
-LOCAL_PACKAGE_NAME := GrassRS
-
-include $(BUILD_PACKAGE)
diff --git a/libs/rs/java/Grass/AndroidManifest.xml b/libs/rs/java/Grass/AndroidManifest.xml
deleted file mode 100644
index a40f378..0000000
--- a/libs/rs/java/Grass/AndroidManifest.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.grass.rs">
-
-    <application android:label="GrassRS">
-
-        <activity
-            android:name="Grass"
-            android:theme="@android:style/Theme.NoTitleBar">
-
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-
-        </activity>
-
-    </application>
-
-</manifest>
diff --git a/libs/rs/java/Grass/res/drawable-hdpi/night.jpg b/libs/rs/java/Grass/res/drawable-hdpi/night.jpg
deleted file mode 100644
index 77cd7f4..0000000
--- a/libs/rs/java/Grass/res/drawable-hdpi/night.jpg
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Grass/res/drawable-hdpi/sky.jpg b/libs/rs/java/Grass/res/drawable-hdpi/sky.jpg
deleted file mode 100644
index a12fe20..0000000
--- a/libs/rs/java/Grass/res/drawable-hdpi/sky.jpg
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Grass/res/drawable-hdpi/sunrise.jpg b/libs/rs/java/Grass/res/drawable-hdpi/sunrise.jpg
deleted file mode 100644
index db016b2..0000000
--- a/libs/rs/java/Grass/res/drawable-hdpi/sunrise.jpg
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Grass/res/drawable-hdpi/sunset.jpg b/libs/rs/java/Grass/res/drawable-hdpi/sunset.jpg
deleted file mode 100644
index 49bb0c6..0000000
--- a/libs/rs/java/Grass/res/drawable-hdpi/sunset.jpg
+++ /dev/null
Binary files differ
diff --git a/libs/rs/java/Grass/res/raw/grass.c b/libs/rs/java/Grass/res/raw/grass.c
deleted file mode 100644
index 1490012..0000000
--- a/libs/rs/java/Grass/res/raw/grass.c
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright (C) 2009 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#pragma version(1)
-#pragma stateVertex(PVBackground)
-#pragma stateFragment(PFBackground)
-#pragma stateFragmentStore(PFSBackground)
-
-#define RSID_STATE 0
-#define RSID_FRAME_COUNT 0
-#define RSID_BLADES_COUNT 1
-#define RSID_WIDTH 2
-#define RSID_HEIGHT 3
-
-#define RSID_BLADES 1
-#define BLADE_STRUCT_FIELDS_COUNT 12
-#define BLADE_STRUCT_ANGLE 0
-#define BLADE_STRUCT_SIZE 1
-#define BLADE_STRUCT_XPOS 2
-#define BLADE_STRUCT_YPOS 3
-#define BLADE_STRUCT_OFFSET 4
-#define BLADE_STRUCT_SCALE 5
-#define BLADE_STRUCT_LENGTHX 6
-#define BLADE_STRUCT_LENGTHY 7
-#define BLADE_STRUCT_HARDNESS 8
-#define BLADE_STRUCT_H 9
-#define BLADE_STRUCT_S 10
-#define BLADE_STRUCT_B 11
-
-#define TESSELATION 2.0f
-
-#define MAX_BEND 0.09f
-
-#define MIDNIGHT 0.0f
-#define MORNING 0.375f
-#define AFTERNOON 0.6f
-#define DUSK 0.8f
-
-#define SECONDS_IN_DAY 24.0f * 3600.0f
-
-#define PI 3.1415926f
-
-#define REAL_TIME 0
-
-float time(int frameCount) {
-    if (REAL_TIME) {
-        return (hour() * 3600.0f + minute() * 60.0f + second()) / SECONDS_IN_DAY;
-    }
-    return (frameCount % 180) / 180.0f;
-}
-
-void alpha(float a) {
-    color(1.0f, 1.0f, 1.0f, a);
-}
-
-void drawNight(int width, int height) {
-    bindTexture(NAMED_PFBackground, 0, NAMED_TNight);
-    drawRect(width - 512.0f, -32.0f, width, 1024.0f - 32.0f, 0.0f);
-}
-
-void drawSunrise(int width, int height) {
-    bindTexture(NAMED_PFBackground, 0, NAMED_TSunrise);
-    drawRect(0.0f, 0.0f, width, height, 0.0f);
-}
-
-void drawNoon(int width, int height) {
-    bindTexture(NAMED_PFBackground, 0, NAMED_TSky);
-    drawRect(0.0f, 0.0f, width, height, 0.0f);
-}
-
-void drawSunset(int width, int height) {
-    bindTexture(NAMED_PFBackground, 0, NAMED_TSunset);
-    drawRect(0.0f, 0.0f, width, height, 0.0f);
-}
-
-void drawBlade(int index, float now, int frameCount) {
-    float *bladeStruct = loadArrayF(RSID_BLADES, index);
-    float offset = bladeStruct[BLADE_STRUCT_OFFSET];
-    float scale = bladeStruct[BLADE_STRUCT_SCALE];
-    float angle = bladeStruct[BLADE_STRUCT_ANGLE];
-    float hardness = bladeStruct[BLADE_STRUCT_HARDNESS];
-    
-    float xpos = bladeStruct[BLADE_STRUCT_XPOS];
-    float ypos = bladeStruct[BLADE_STRUCT_YPOS];
-
-    float lengthX = bladeStruct[BLADE_STRUCT_LENGTHX];
-    float lengthY = bladeStruct[BLADE_STRUCT_LENGTHY];
-
-    int size = bladeStruct[BLADE_STRUCT_SIZE];
-
-    float h = bladeStruct[BLADE_STRUCT_H];
-    float s = bladeStruct[BLADE_STRUCT_S];
-    float b = bladeStruct[BLADE_STRUCT_B];
-
-    float newB = 1.0f;
-    if (now >= MIDNIGHT && now < MORNING) {
-        newB = now / MORNING;
-    }
-
-    if (now >= AFTERNOON && now < DUSK) {
-        newB = 1.0f - normf(AFTERNOON, DUSK, now);
-    }
-
-    if (now >= DUSK) {
-        newB = 0.0f;
-    }
-
-    hsb(h, s, lerpf(0, b, newB), 1.0f);
-
-    float newAngle = turbulencef2(xpos * 0.006f, frameCount * 0.006f, 4.0f) - 0.5f;
-    newAngle /= 2.0f;
-    angle = clampf(angle + (newAngle + offset - angle) * 0.15f, -MAX_BEND, MAX_BEND);
-
-    float currentAngle = PI / 2.0f;
-
-    float bottomX = xpos;
-    float bottomY = ypos;
-
-    int i = size * TESSELATION;
-    float lx = lengthX / TESSELATION;
-    float ly = lengthY / TESSELATION;
-    float ss = 4.0f / i + scale / TESSELATION;
-    float sh = 0.5f / TESSELATION;
-    float d = angle * hardness / TESSELATION;
-
-    for ( ; i > 0; i--) {
-        float topX = bottomX - cosf(currentAngle) * size * lx;
-        float topY = bottomY - sinf(currentAngle) * size * ly;
-        currentAngle += d;
-
-        float spi = (i - 1) * ss;
-        float si = i * ss;
-
-        drawQuad(topX + spi, topY, 0.0f,
-                 topX - spi, topY, 0.0f,
-                 bottomX - si, bottomY + sh, 0.0f,
-                 bottomX + si, bottomY + sh, 0.0f);
-
-        bottomX = topX;
-        bottomY = topY;
-    }
-
-    storeF(RSID_BLADES, index + BLADE_STRUCT_ANGLE, angle);
-}
-
-void drawBlades(float now, int frameCount) {
-    // For anti-aliasing
-    bindTexture(NAMED_PFBackground, 0, NAMED_TAa);
-
-    int bladesCount = loadI32(RSID_STATE, RSID_BLADES_COUNT);
-    int count = bladesCount * BLADE_STRUCT_FIELDS_COUNT;
-
-    int i = 0;
-    for ( ; i < count; i += BLADE_STRUCT_FIELDS_COUNT) {
-        drawBlade(i, now, frameCount);
-    }
-}
-
-int main(int launchID) {
-    int width = loadI32(RSID_STATE, RSID_WIDTH);
-    int height = loadI32(RSID_STATE, RSID_HEIGHT);
-
-    int frameCount = loadI32(RSID_STATE, RSID_FRAME_COUNT);
-    float now = time(frameCount);
-    alpha(1.0f);
-
-    if (now >= MIDNIGHT && now < MORNING) {
-        drawNight(width, height);
-        alpha(normf(MIDNIGHT, MORNING, now));
-        drawSunrise(width, height);
-    } else if (now >= MORNING && now < AFTERNOON) {
-        drawSunrise(width, height);
-        alpha(normf(MORNING, AFTERNOON, now));
-        drawNoon(width, height);
-    } else if (now >= AFTERNOON && now < DUSK) {
-        drawNoon(width, height);
-        alpha(normf(AFTERNOON, DUSK, now));
-        drawSunset(width, height);
-    } else if (now >= DUSK) {
-        drawNight(width, height);
-        alpha(1.0f - normf(DUSK, 1.0f, now));
-        drawSunset(width, height);
-    }
-
-    drawBlades(now, frameCount);
-
-    frameCount++;
-    storeI32(RSID_STATE, RSID_FRAME_COUNT, frameCount);
-
-    return 1;
-}
diff --git a/libs/rs/java/Grass/src/com/android/grass/rs/Grass.java b/libs/rs/java/Grass/src/com/android/grass/rs/Grass.java
deleted file mode 100644
index 260fcee..0000000
--- a/libs/rs/java/Grass/src/com/android/grass/rs/Grass.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.grass.rs;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-public class Grass extends Activity {
-    private GrassView mView;
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-
-        mView = new GrassView(this);
-        setContentView(mView);
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        mView.onResume();
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        mView.onPause();
-
-        Runtime.getRuntime().exit(0);
-    }
-}
diff --git a/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java b/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java
deleted file mode 100644
index 7af600f..0000000
--- a/libs/rs/java/Grass/src/com/android/grass/rs/GrassRS.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.grass.rs;
-
-import android.content.res.Resources;
-import android.renderscript.Sampler;
-import static android.renderscript.ProgramFragment.EnvMode.*;
-import static android.renderscript.ProgramStore.DepthFunc.*;
-import static android.renderscript.ProgramStore.BlendSrcFunc;
-import static android.renderscript.ProgramStore.BlendDstFunc;
-import android.renderscript.RenderScript;
-import android.renderscript.ProgramFragment;
-import android.renderscript.ProgramStore;
-import android.renderscript.Allocation;
-import android.renderscript.ProgramVertex;
-import static android.renderscript.Element.*;
-import static android.util.MathUtils.*;
-import android.renderscript.ScriptC;
-import android.renderscript.Type;
-import android.renderscript.Dimension;
-import static android.renderscript.Sampler.Value.*;
-
-import java.util.TimeZone;
-
-class GrassRS {
-    private static final int RSID_STATE = 0;
-    private static final int RSID_STATE_FRAMECOUNT = 0;
-    private static final int RSID_STATE_BLADES_COUNT = 1;
-    private static final int RSID_STATE_WIDTH = 2;
-    private static final int RSID_STATE_HEIGHT = 3;
-
-    private static final int TEXTURES_COUNT = 5;
-
-    private static final int RSID_BLADES = 1;
-    private static final int BLADES_COUNT = 100;
-    private static final int BLADE_STRUCT_FIELDS_COUNT = 12;
-    private static final int BLADE_STRUCT_ANGLE = 0;
-    private static final int BLADE_STRUCT_SIZE = 1;
-    private static final int BLADE_STRUCT_XPOS = 2;
-    private static final int BLADE_STRUCT_YPOS = 3;
-    private static final int BLADE_STRUCT_OFFSET = 4;
-    private static final int BLADE_STRUCT_SCALE = 5;
-    private static final int BLADE_STRUCT_LENGTHX = 6;
-    private static final int BLADE_STRUCT_LENGTHY = 7;
-    private static final int BLADE_STRUCT_HARDNESS = 8;
-    private static final int BLADE_STRUCT_H = 9;
-    private static final int BLADE_STRUCT_S = 10;
-    private static final int BLADE_STRUCT_B = 11;
-
-    private Resources mResources;
-    private RenderScript mRS;
-
-    private final int mWidth;
-    private final int mHeight;
-
-    private ScriptC mScript;
-    private Sampler mSampler;
-    private ProgramFragment mPfBackground;
-    private ProgramStore mPfsBackground;
-    private ProgramVertex mPvBackground;
-    private ProgramVertex.MatrixAllocation mPvOrthoAlloc;
-
-    private Allocation[] mTextures;
-
-    private Allocation mState;
-    private Allocation mBlades;
-
-    public GrassRS(int width, int height) {
-        mWidth = width;
-        mHeight = height;
-    }
-
-    public void init(RenderScript rs, Resources res) {
-        mRS = rs;
-        mResources = res;
-        initRS();
-    }
-
-    public void destroy() {
-        mScript.destroy();
-        mSampler.destroy();
-        mPfBackground.destroy();
-        mPfsBackground.destroy();
-        mPvBackground.destroy();
-        mPvOrthoAlloc.mAlloc.destroy();
-        for (Allocation a : mTextures) {
-            a.destroy();
-        }
-        mState.destroy();
-        mBlades.destroy();
-    }
-
-    @Override
-    protected void finalize() throws Throwable {
-        try {
-            destroy();
-        } finally {
-            super.finalize();
-        }
-    }
-
-    private void initRS() {
-        createProgramVertex();
-        createProgramFragmentStore();
-        createProgramFragment();
-        createScriptStructures();
-        loadTextures();
-
-        ScriptC.Builder sb = new ScriptC.Builder(mRS);
-        sb.setScript(mResources, R.raw.grass);
-        sb.setRoot(true);
-        mScript = sb.create();
-        mScript.setClearColor(0.0f, 0.0f, 0.0f, 1.0f);
-        mScript.setTimeZone(TimeZone.getDefault().getID());
-
-        mScript.bindAllocation(mState, RSID_STATE);
-        mScript.bindAllocation(mBlades, RSID_BLADES);
-
-        mRS.contextBindRootScript(mScript);
-    }
-
-    private void createScriptStructures() {
-        final int[] data = new int[4];
-        mState = Allocation.createSized(mRS, USER_I32, data.length);
-        data[RSID_STATE_FRAMECOUNT] = 0;
-        data[RSID_STATE_BLADES_COUNT] = BLADES_COUNT;
-        data[RSID_STATE_WIDTH] = mWidth;
-        data[RSID_STATE_HEIGHT] = mHeight;
-        mState.data(data);
-
-        final float[] blades = new float[BLADES_COUNT * BLADE_STRUCT_FIELDS_COUNT];
-        mBlades = Allocation.createSized(mRS, USER_FLOAT, blades.length);
-        for (int i = 0; i < blades.length; i+= BLADE_STRUCT_FIELDS_COUNT) {
-            createBlade(blades, i);
-        }
-        mBlades.data(blades);
-    }
-
-    private void createBlade(float[] blades, int index) {
-        //noinspection PointlessArithmeticExpression
-        blades[index + BLADE_STRUCT_ANGLE] = 0.0f;
-        blades[index + BLADE_STRUCT_SIZE] = random(4.0f) + 4.0f;
-        blades[index + BLADE_STRUCT_XPOS] = random(mWidth);
-        blades[index + BLADE_STRUCT_YPOS] = mHeight;
-        blades[index + BLADE_STRUCT_OFFSET] = random(0.2f) - 0.1f;
-        blades[index + BLADE_STRUCT_SCALE] = random(0.6f) + 0.2f;
-        blades[index + BLADE_STRUCT_LENGTHX] = random(4.5f) + 3.0f;
-        blades[index + BLADE_STRUCT_LENGTHY] = random(5.5f) + 2.0f;
-        blades[index + BLADE_STRUCT_HARDNESS] = random(1.0f) + 0.2f;
-        blades[index + BLADE_STRUCT_H] = random(0.02f) + 0.2f;
-        blades[index + BLADE_STRUCT_S] = random(0.22f) + 0.78f;
-        blades[index + BLADE_STRUCT_B] = random(0.65f) + 0.35f;
-    }
-
-    private void loadTextures() {
-        mTextures = new Allocation[TEXTURES_COUNT];
-
-        final Allocation[] textures = mTextures;
-        textures[0] = loadTexture(R.drawable.night, "TNight");
-        textures[1] = loadTexture(R.drawable.sunrise, "TSunrise");
-        textures[2] = loadTexture(R.drawable.sky, "TSky");
-        textures[3] = loadTexture(R.drawable.sunset, "TSunset");
-        textures[4] = generateTextureAlpha(4, 1, new int[] { 0x00FFFF00 }, "TAa");
-
-        final int count = textures.length;
-        for (int i = 0; i < count; i++) {
-            final Allocation texture = textures[i];
-            texture.uploadToTexture(0);
-        }
-    }
-
-    private Allocation generateTextureAlpha(int width, int height, int[] data, String name) {
-        final Type.Builder builder = new Type.Builder(mRS, A_8);
-        builder.add(Dimension.X, width);
-        builder.add(Dimension.Y, height);
-        
-        final Allocation allocation = Allocation.createTyped(mRS, builder.create());
-        allocation.data(data);
-        allocation.setName(name);
-        return allocation;
-    }
-
-    private Allocation loadTexture(int id, String name) {
-        final Allocation allocation = Allocation.createFromBitmapResource(mRS, mResources,
-                id, RGB_565, false);
-        allocation.setName(name);
-        return allocation;
-    }
-
-    private void createProgramFragment() {
-        Sampler.Builder bs = new Sampler.Builder(mRS);
-        bs.setMin(LINEAR);
-        bs.setMag(LINEAR);
-        bs.setWrapS(CLAMP);
-        bs.setWrapT(CLAMP);
-        mSampler = bs.create();
-
-        ProgramFragment.Builder b;
-        b = new ProgramFragment.Builder(mRS, null, null);
-        b.setTexEnable(true, 0);
-        b.setTexEnvMode(REPLACE, 0);
-        mPfBackground = b.create();
-        mPfBackground.setName("PFBackground");
-        mPfBackground.bindSampler(mSampler, 0);
-    }
-
-    private void createProgramFragmentStore() {
-        ProgramStore.Builder b;
-        b = new ProgramStore.Builder(mRS, null, null);
-
-        b.setDepthFunc(ALWAYS);
-        b.setBlendFunc(BlendSrcFunc.SRC_ALPHA, BlendDstFunc.ONE_MINUS_SRC_ALPHA);
-        b.setDitherEnable(true);
-        b.setDepthMask(false);
-        mPfsBackground = b.create();
-        mPfsBackground.setName("PFSBackground");
-    }
-
-    private void createProgramVertex() {
-        mPvOrthoAlloc = new ProgramVertex.MatrixAllocation(mRS);
-        mPvOrthoAlloc.setupOrthoWindow(mWidth, mHeight);
-
-        ProgramVertex.Builder pvb = new ProgramVertex.Builder(mRS, null, null);
-        pvb.setTextureMatrixEnable(true);
-        mPvBackground = pvb.create();
-        mPvBackground.bindAllocation(mPvOrthoAlloc);
-        mPvBackground.setName("PVBackground");
-    }
-}
diff --git a/libs/rs/java/Grass/src/com/android/grass/rs/GrassView.java b/libs/rs/java/Grass/src/com/android/grass/rs/GrassView.java
deleted file mode 100644
index c2b9a66..0000000
--- a/libs/rs/java/Grass/src/com/android/grass/rs/GrassView.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.grass.rs;
-
-import android.content.Context;
-import android.renderscript.RSSurfaceView;
-import android.renderscript.RenderScript;
-import android.view.SurfaceHolder;
-
-class GrassView extends RSSurfaceView {
-    private GrassRS mRender;
-
-    public GrassView(Context context) {
-        super(context);
-    }
-
-    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
-        super.surfaceChanged(holder, format, w, h);
-
-        RenderScript RS = createRenderScript();
-        mRender = new GrassRS(w, h);
-        mRender.init(RS, getResources());
-    }
-
-    @Override
-    public void surfaceDestroyed(SurfaceHolder holder) {
-        if (mRender != null) mRender.destroy();
-    }
-}