am 4344f209: am 99333315: Merge "Ensure we have a GL context before deleting View layers Bug #7391098" into jb-mr1-dev
* commit '4344f20959b6591f484d20012a398d7fefe8a8fb': Ensure we have a GL context before deleting View layers Bug #7391098
This commit is contained in:
@@ -1525,30 +1525,6 @@ public abstract class HardwareRenderer {
|
|||||||
((GLES20TextureLayer) layer).setSurfaceTexture(surfaceTexture);
|
((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
|
@Override
|
||||||
boolean safelyRun(Runnable action) {
|
boolean safelyRun(Runnable action) {
|
||||||
boolean needsContext = true;
|
boolean needsContext = true;
|
||||||
@@ -1573,6 +1549,35 @@ public abstract class HardwareRenderer {
|
|||||||
return true;
|
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
|
@Override
|
||||||
void destroyHardwareResources(final View view) {
|
void destroyHardwareResources(final View view) {
|
||||||
if (view != null) {
|
if (view != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user