11d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chungpackage com.android.phasebeam;
21d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung
31d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chungimport android.content.Context;
41d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chungimport android.renderscript.RSSurfaceView;
51d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chungimport android.renderscript.RenderScriptGL;
61d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chungimport android.view.SurfaceHolder;
71d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung
81d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chungpublic class PhaseBeamView extends RSSurfaceView {
91d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung
101d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung    private RenderScriptGL mRS;
111d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung    private PhaseBeamRS mRender;
121d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung
131d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung    public PhaseBeamView(Context context) {
141d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung        super(context);
151d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung        setFocusable(true);
161d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung        setFocusableInTouchMode(true);
171d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung    }
181d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung
191d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
201d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung        super.surfaceChanged(holder, format, w, h);
211d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung
221d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung        if (mRS == null) {
231d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung            RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
241d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung            mRS = createRenderScriptGL(sc);
251d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung            mRS.setSurface(holder, w, h);
261d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung
271d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung            mRender = new PhaseBeamRS();
281d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung            mRender.init(240, mRS, getResources(), w, h);
291d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung        }
301d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung
311d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung    }
321d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung
331d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung    @Override
341d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung    protected void onDetachedFromWindow() {
351d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung        if (mRS != null) {
361d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung            mRS.setSurface(null, 0, 0);
371d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung            mRS = null;
381d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung            destroyRenderScriptGL();
391d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung        }
401d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung    }
411d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung
421d1672900d5f7625022d4fcc89b36dc3137dcb62Winson Chung}
43