Merge "Ensure we have a GL context before deleting View layers Bug #7391098" into jb-mr1-dev
This commit is contained in:
@@ -1525,30 +1525,6 @@ public abstract class HardwareRenderer {
|
||||
((GLES20TextureLayer) layer).setSurfaceTexture(surfaceTexture);
|
||||
}
|
||||
|
||||
@Override
|
||||
void destroyLayers(View view) {
|
||||
if (view != null && isEnabled() && checkCurrent() != SURFACE_STATE_ERROR) {
|
||||
if (mCanvas != null) {
|
||||
mCanvas.clearLayerUpdates();
|
||||
}
|
||||
destroyHardwareLayer(view);
|
||||
GLES20Canvas.flushCaches(GLES20Canvas.FLUSH_CACHES_LAYERS);
|
||||
}
|
||||
}
|
||||
|
||||
private static void destroyHardwareLayer(View view) {
|
||||
view.destroyLayer(true);
|
||||
|
||||
if (view instanceof ViewGroup) {
|
||||
ViewGroup group = (ViewGroup) view;
|
||||
|
||||
int count = group.getChildCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
destroyHardwareLayer(group.getChildAt(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean safelyRun(Runnable action) {
|
||||
boolean needsContext = true;
|
||||
@@ -1573,6 +1549,35 @@ public abstract class HardwareRenderer {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
void destroyLayers(final View view) {
|
||||
if (view != null) {
|
||||
safelyRun(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (mCanvas != null) {
|
||||
mCanvas.clearLayerUpdates();
|
||||
}
|
||||
destroyHardwareLayer(view);
|
||||
GLES20Canvas.flushCaches(GLES20Canvas.FLUSH_CACHES_LAYERS);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private static void destroyHardwareLayer(View view) {
|
||||
view.destroyLayer(true);
|
||||
|
||||
if (view instanceof ViewGroup) {
|
||||
ViewGroup group = (ViewGroup) view;
|
||||
|
||||
int count = group.getChildCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
destroyHardwareLayer(group.getChildAt(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
void destroyHardwareResources(final View view) {
|
||||
if (view != null) {
|
||||
|
||||
Reference in New Issue
Block a user