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