From 93c47f10285df8311601fa94ab3c627b0d0cd4be Mon Sep 17 00:00:00 2001 From: Alex Sakhartchouk Date: Fri, 11 Nov 2011 11:49:45 -0800 Subject: Fixing a race condition in RSSurfaceView. Bug 5601083 When destroy is called shortly after creation, RS tries to set a surface on a partially destroyed context. Change-Id: I7a382a701efde3264e5cd9b9a9b428ade5eb4a9a --- graphics/java/android/renderscript/RSSurfaceView.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'graphics/java/android/renderscript/RSSurfaceView.java') diff --git a/graphics/java/android/renderscript/RSSurfaceView.java b/graphics/java/android/renderscript/RSSurfaceView.java index 199952c..20eb93f 100644 --- a/graphics/java/android/renderscript/RSSurfaceView.java +++ b/graphics/java/android/renderscript/RSSurfaceView.java @@ -30,7 +30,7 @@ import android.view.SurfaceHolder; import android.view.SurfaceView; /** - * The Surface View for a graphics renderscript (RenderScriptGL) to draw on. + * The Surface View for a graphics renderscript (RenderScriptGL) to draw on. */ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder mSurfaceHolder; @@ -77,7 +77,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback * This method is part of the SurfaceHolder.Callback interface, and is * not normally called or subclassed by clients of RSSurfaceView. */ - public void surfaceDestroyed(SurfaceHolder holder) { + public synchronized void surfaceDestroyed(SurfaceHolder holder) { // Surface will be destroyed when we return if (mRS != null) { mRS.setSurface(null, 0, 0); @@ -88,7 +88,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback * This method is part of the SurfaceHolder.Callback interface, and is * not normally called or subclassed by clients of RSSurfaceView. */ - public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { + public synchronized void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { if (mRS != null) { mRS.setSurface(holder, w, h); } @@ -125,7 +125,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback return rs; } - public void destroyRenderScriptGL() { + public synchronized void destroyRenderScriptGL() { mRS.destroy(); mRS = null; } -- cgit v1.1