am f579bb92: am cde433c5: Merge "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." into ics-mr1
* commit 'f579bb92c2032cd27aef72a1654c006933b22bbd': 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.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user