diff options
author | Alex Sakhartchouk <alexst@google.com> | 2011-11-11 11:49:45 -0800 |
---|---|---|
committer | Alex Sakhartchouk <alexst@google.com> | 2011-11-11 11:49:45 -0800 |
commit | 93c47f10285df8311601fa94ab3c627b0d0cd4be (patch) | |
tree | 54f8630bc5e79440c073a583c63a848e32d69bb5 | |
parent | 99898de902c36687be126b33ee8a4858d26871ac (diff) | |
download | frameworks_base-93c47f10285df8311601fa94ab3c627b0d0cd4be.zip frameworks_base-93c47f10285df8311601fa94ab3c627b0d0cd4be.tar.gz frameworks_base-93c47f10285df8311601fa94ab3c627b0d0cd4be.tar.bz2 |
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
-rw-r--r-- | graphics/java/android/renderscript/RSSurfaceView.java | 8 |
1 files changed, 4 insertions, 4 deletions
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; } |