157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk/*
257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * Copyright (C) 2012 The Android Open Source Project
357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk *
457fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * Licensed under the Apache License, Version 2.0 (the "License");
557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * you may not use this file except in compliance with the License.
657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * You may obtain a copy of the License at
757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk *
857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk *      http://www.apache.org/licenses/LICENSE-2.0
957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk *
1057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * Unless required by applicable law or agreed to in writing, software
1157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * distributed under the License is distributed on an "AS IS" BASIS,
1257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * See the License for the specific language governing permissions and
1457fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk * limitations under the License.
1557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk */
1657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk
1757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukpackage com.android.testapp;
1857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk
1957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.renderscript.RSSurfaceView;
2057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.renderscript.RenderScript;
2157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.renderscript.RenderScriptGL;
2257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk
2357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.content.Context;
2457fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.content.res.Resources;
2557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.util.Log;
2657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.view.Surface;
2757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.view.SurfaceHolder;
2857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukimport android.view.SurfaceView;
2957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk
3057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchoukpublic class SimpleAppView extends RSSurfaceView {
3157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk
3257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk    public SimpleAppView(Context context) {
3357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk        super(context);
3457fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk    }
3557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk
3657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk    private RenderScriptGL mRS;
3757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk    SimpleAppRS mRender;
3857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk
3957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
4057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk        super.surfaceChanged(holder, format, w, h);
4157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk        if (mRS == null) {
4257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk            RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
4357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk            sc.setDepth(16, 24);
44b23b58ad343ccbf8835c7067698a60fc6bc1a870Alex Sakhartchouk            sc.setSamples(1, 2, 1);
4557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk            mRS = createRenderScriptGL(sc);
4657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk            mRS.setSurface(holder, w, h);
4757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk            mRender = new SimpleAppRS();
4857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk            mRender.init(mRS, getResources(), w, h);
4957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk        }
5057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk    }
5157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk
5257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk    @Override
5357fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk    protected void onDetachedFromWindow() {
5457fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk        if (mRS != null) {
5557fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk            mRender = null;
5657fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk            mRS = null;
5757fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk            destroyRenderScriptGL();
5857fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk        }
5957fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk    }
6057fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk}
6157fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk
6257fc7109e4e1ec0a32d1661779e8d7babab0279bAlex Sakhartchouk
63