176d6ea97b0d3e64787398a179e015443dde9c024Winson Chungpackage com.android.noisefield; 276d6ea97b0d3e64787398a179e015443dde9c024Winson Chung 376d6ea97b0d3e64787398a179e015443dde9c024Winson Chungimport android.content.Context; 476d6ea97b0d3e64787398a179e015443dde9c024Winson Chungimport android.renderscript.RSSurfaceView; 576d6ea97b0d3e64787398a179e015443dde9c024Winson Chungimport android.renderscript.RenderScriptGL; 676d6ea97b0d3e64787398a179e015443dde9c024Winson Chungimport android.view.SurfaceHolder; 776d6ea97b0d3e64787398a179e015443dde9c024Winson Chung 876d6ea97b0d3e64787398a179e015443dde9c024Winson Chungpublic class NoiseFieldView extends RSSurfaceView { 976d6ea97b0d3e64787398a179e015443dde9c024Winson Chung 1076d6ea97b0d3e64787398a179e015443dde9c024Winson Chung private RenderScriptGL mRS; 1176d6ea97b0d3e64787398a179e015443dde9c024Winson Chung private NoiseFieldRS mRender; 1276d6ea97b0d3e64787398a179e015443dde9c024Winson Chung 1376d6ea97b0d3e64787398a179e015443dde9c024Winson Chung public NoiseFieldView(Context context) { 1476d6ea97b0d3e64787398a179e015443dde9c024Winson Chung super(context); 1576d6ea97b0d3e64787398a179e015443dde9c024Winson Chung setFocusable(true); 1676d6ea97b0d3e64787398a179e015443dde9c024Winson Chung setFocusableInTouchMode(true); 1776d6ea97b0d3e64787398a179e015443dde9c024Winson Chung } 1876d6ea97b0d3e64787398a179e015443dde9c024Winson Chung 1976d6ea97b0d3e64787398a179e015443dde9c024Winson Chung public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 2076d6ea97b0d3e64787398a179e015443dde9c024Winson Chung super.surfaceChanged(holder, format, w, h); 2176d6ea97b0d3e64787398a179e015443dde9c024Winson Chung 2276d6ea97b0d3e64787398a179e015443dde9c024Winson Chung if (mRS == null) { 2376d6ea97b0d3e64787398a179e015443dde9c024Winson Chung RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); 2476d6ea97b0d3e64787398a179e015443dde9c024Winson Chung mRS = createRenderScriptGL(sc); 2576d6ea97b0d3e64787398a179e015443dde9c024Winson Chung mRS.setSurface(holder, w, h); 2676d6ea97b0d3e64787398a179e015443dde9c024Winson Chung 2776d6ea97b0d3e64787398a179e015443dde9c024Winson Chung mRender = new NoiseFieldRS(); 2876d6ea97b0d3e64787398a179e015443dde9c024Winson Chung mRender.init(240, mRS, getResources(), w, h); 2976d6ea97b0d3e64787398a179e015443dde9c024Winson Chung } 3076d6ea97b0d3e64787398a179e015443dde9c024Winson Chung } 3176d6ea97b0d3e64787398a179e015443dde9c024Winson Chung 3276d6ea97b0d3e64787398a179e015443dde9c024Winson Chung @Override 3376d6ea97b0d3e64787398a179e015443dde9c024Winson Chung protected void onDetachedFromWindow() { 3476d6ea97b0d3e64787398a179e015443dde9c024Winson Chung if (mRS != null) { 3576d6ea97b0d3e64787398a179e015443dde9c024Winson Chung mRS.setSurface(null, 0, 0); 3676d6ea97b0d3e64787398a179e015443dde9c024Winson Chung mRS = null; 3776d6ea97b0d3e64787398a179e015443dde9c024Winson Chung destroyRenderScriptGL(); 3876d6ea97b0d3e64787398a179e015443dde9c024Winson Chung } 3976d6ea97b0d3e64787398a179e015443dde9c024Winson Chung } 4076d6ea97b0d3e64787398a179e015443dde9c024Winson Chung 414f6e266df7b4384c43deeac4643a79dcf1063636Leon Hong}