Created
June 12, 2015 06:04
-
-
Save legendtang/c397d9b06f42f4448354 to your computer and use it in GitHub Desktop.
Samsung I9505 TouchWiz Lollipop Memory Leak Fix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.class final Lcom/android/server/display/ColorFade; | |
.super Ljava/lang/Object; | |
.source "ColorFade.java" | |
# annotations | |
.annotation system Ldalvik/annotation/MemberClasses; | |
value = { | |
Lcom/android/server/display/ColorFade$NaturalSurfaceLayout; | |
} | |
.end annotation | |
# static fields | |
.field private static final COLOR_FADE_LAYER:I = 0x40000001 | |
.field private static final DEBUG:Z = false | |
.field private static final DEJANK_FRAMES:I = 0x3 | |
.field public static final MODE_COOL_DOWN:I = 0x1 | |
.field public static final MODE_FADE:I = 0x2 | |
.field public static final MODE_WARM_UP:I = 0x0 | |
.field private static final TAG:Ljava/lang/String; = "ColorFade" | |
# instance fields | |
.field private mDisplayHeight:I | |
.field private final mDisplayId:I | |
.field private mDisplayLayerStack:I | |
.field private final mDisplayManagerInternal:Landroid/hardware/display/DisplayManagerInternal; | |
.field private mDisplayWidth:I | |
.field private mEglConfig:Landroid/opengl/EGLConfig; | |
.field private mEglContext:Landroid/opengl/EGLContext; | |
.field private mEglDisplay:Landroid/opengl/EGLDisplay; | |
.field private mEglSurface:Landroid/opengl/EGLSurface; | |
.field private final mGLBuffers:[I | |
.field private mGammaLoc:I | |
.field private mMode:I | |
.field private mOpacityLoc:I | |
.field private mPrepared:Z | |
.field private mProgram:I | |
.field private final mProjMatrix:[F | |
.field private mProjMatrixLoc:I | |
.field private mSaturationLoc:I | |
.field private mScaleLoc:I | |
.field private mSurface:Landroid/view/Surface; | |
.field private mSurfaceAlpha:F | |
.field private mSurfaceControl:Landroid/view/SurfaceControl; | |
.field private mSurfaceLayout:Lcom/android/server/display/ColorFade$NaturalSurfaceLayout; | |
.field private mSurfaceSession:Landroid/view/SurfaceSession; | |
.field private mSurfaceVisible:Z | |
.field private final mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
.field private mTexCoordLoc:I | |
.field private final mTexMatrix:[F | |
.field private mTexMatrixLoc:I | |
.field private final mTexNames:[I | |
.field private mTexNamesGenerated:Z | |
.field private mTexUnitLoc:I | |
.field private final mVertexBuffer:Ljava/nio/FloatBuffer; | |
.field private mVertexLoc:I | |
# direct methods | |
.method public constructor <init>(I)V | |
.locals 3 | |
.param p1, "displayId" # I | |
.prologue | |
const/16 v2, 0x10 | |
const/16 v1, 0x8 | |
.line 127 | |
invoke-direct {p0}, Ljava/lang/Object;-><init>()V | |
.line 98 | |
const/4 v0, 0x1 | |
new-array v0, v0, [I | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mTexNames:[I | |
.line 100 | |
new-array v0, v2, [F | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mTexMatrix:[F | |
.line 101 | |
new-array v0, v2, [F | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
.line 102 | |
const/4 v0, 0x2 | |
new-array v0, v0, [I | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mGLBuffers:[I | |
.line 109 | |
invoke-static {v1}, Lcom/android/server/display/ColorFade;->createNativeFloatBuffer(I)Ljava/nio/FloatBuffer; | |
move-result-object v0 | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mVertexBuffer:Ljava/nio/FloatBuffer; | |
.line 110 | |
invoke-static {v1}, Lcom/android/server/display/ColorFade;->createNativeFloatBuffer(I)Ljava/nio/FloatBuffer; | |
move-result-object v0 | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
.line 128 | |
iput p1, p0, Lcom/android/server/display/ColorFade;->mDisplayId:I | |
.line 129 | |
const-class v0, Landroid/hardware/display/DisplayManagerInternal; | |
invoke-static {v0}, Lcom/android/server/LocalServices;->getService(Ljava/lang/Class;)Ljava/lang/Object; | |
move-result-object v0 | |
check-cast v0, Landroid/hardware/display/DisplayManagerInternal; | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mDisplayManagerInternal:Landroid/hardware/display/DisplayManagerInternal; | |
.line 130 | |
return-void | |
.end method | |
.method private attachEglContext()Z | |
.locals 5 | |
.prologue | |
const/4 v0, 0x0 | |
.line 648 | |
iget-object v1, p0, Lcom/android/server/display/ColorFade;->mEglSurface:Landroid/opengl/EGLSurface; | |
if-nez v1, :cond_0 | |
.line 655 | |
:goto_0 | |
return v0 | |
.line 651 | |
:cond_0 | |
iget-object v1, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
iget-object v2, p0, Lcom/android/server/display/ColorFade;->mEglSurface:Landroid/opengl/EGLSurface; | |
iget-object v3, p0, Lcom/android/server/display/ColorFade;->mEglSurface:Landroid/opengl/EGLSurface; | |
iget-object v4, p0, Lcom/android/server/display/ColorFade;->mEglContext:Landroid/opengl/EGLContext; | |
invoke-static {v1, v2, v3, v4}, Landroid/opengl/EGL14;->eglMakeCurrent(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;Landroid/opengl/EGLSurface;Landroid/opengl/EGLContext;)Z | |
move-result v1 | |
if-nez v1, :cond_1 | |
.line 652 | |
const-string v1, "eglMakeCurrent" | |
invoke-static {v1}, Lcom/android/server/display/ColorFade;->logEglError(Ljava/lang/String;)V | |
goto :goto_0 | |
.line 655 | |
:cond_1 | |
const/4 v0, 0x1 | |
goto :goto_0 | |
.end method | |
.method private captureScreenshotTextureAndSetViewport()Z | |
.locals 10 | |
.prologue | |
const/4 v9, 0x1 | |
const/4 v0, 0x0 | |
.line 450 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->attachEglContext()Z | |
move-result v1 | |
if-nez v1, :cond_0 | |
.line 489 | |
:goto_0 | |
return v0 | |
.line 454 | |
:cond_0 | |
:try_start_0 | |
iget-boolean v1, p0, Lcom/android/server/display/ColorFade;->mTexNamesGenerated:Z | |
if-nez v1, :cond_2 | |
.line 455 | |
const/4 v1, 0x1 | |
iget-object v2, p0, Lcom/android/server/display/ColorFade;->mTexNames:[I | |
const/4 v3, 0x0 | |
invoke-static {v1, v2, v3}, Landroid/opengl/GLES20;->glGenTextures(I[II)V | |
.line 456 | |
const-string v1, "glGenTextures" | |
invoke-static {v1}, Lcom/android/server/display/ColorFade;->checkGlErrors(Ljava/lang/String;)Z | |
:try_end_0 | |
.catchall {:try_start_0 .. :try_end_0} :catchall_1 | |
move-result v1 | |
if-eqz v1, :cond_1 | |
.line 487 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
goto :goto_0 | |
.line 459 | |
:cond_1 | |
const/4 v0, 0x1 | |
:try_start_1 | |
iput-boolean v0, p0, Lcom/android/server/display/ColorFade;->mTexNamesGenerated:Z | |
.line 462 | |
:cond_2 | |
new-instance v8, Landroid/graphics/SurfaceTexture; | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexNames:[I | |
const/4 v1, 0x0 | |
aget v0, v0, v1 | |
invoke-direct {v8, v0}, Landroid/graphics/SurfaceTexture;-><init>(I)V | |
.line 463 | |
.local v8, "st":Landroid/graphics/SurfaceTexture; | |
new-instance v7, Landroid/view/Surface; | |
invoke-direct {v7, v8}, Landroid/view/Surface;-><init>(Landroid/graphics/SurfaceTexture;)V | |
:try_end_1 | |
.catchall {:try_start_1 .. :try_end_1} :catchall_1 | |
.line 465 | |
.local v7, "s":Landroid/view/Surface; | |
const/4 v0, 0x0 | |
:try_start_2 | |
invoke-static {v0}, Landroid/view/SurfaceControl;->getBuiltInDisplay(I)Landroid/os/IBinder; | |
move-result-object v0 | |
invoke-static {v0, v7}, Landroid/view/SurfaceControl;->screenshot(Landroid/os/IBinder;Landroid/view/Surface;)V | |
:try_end_2 | |
.catchall {:try_start_2 .. :try_end_2} :catchall_0 | |
.line 468 | |
:try_start_3 | |
invoke-virtual {v7}, Landroid/view/Surface;->release()V | |
.line 471 | |
invoke-virtual {v8}, Landroid/graphics/SurfaceTexture;->updateTexImage()V | |
.line 472 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexMatrix:[F | |
invoke-virtual {v8, v0}, Landroid/graphics/SurfaceTexture;->getTransformMatrix([F)V | |
.line 473 | |
invoke-virtual {v8}, Landroid/graphics/SurfaceTexture;->release()V | |
.line 478 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
const/4 v1, 0x0 | |
const/4 v2, 0x0 | |
invoke-virtual {v0, v1, v2}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
const/4 v1, 0x1 | |
const/4 v2, 0x0 | |
invoke-virtual {v0, v1, v2}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 479 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
const/4 v1, 0x2 | |
const/4 v2, 0x0 | |
invoke-virtual {v0, v1, v2}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
const/4 v1, 0x3 | |
const/high16 v2, 0x3f800000 # 1.0f | |
invoke-virtual {v0, v1, v2}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 480 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
const/4 v1, 0x4 | |
const/high16 v2, 0x3f800000 # 1.0f | |
invoke-virtual {v0, v1, v2}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
const/4 v1, 0x5 | |
const/high16 v2, 0x3f800000 # 1.0f | |
invoke-virtual {v0, v1, v2}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 481 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
const/4 v1, 0x6 | |
const/high16 v2, 0x3f800000 # 1.0f | |
invoke-virtual {v0, v1, v2}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
const/4 v1, 0x7 | |
const/4 v2, 0x0 | |
invoke-virtual {v0, v1, v2}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 484 | |
const/4 v0, 0x0 | |
const/4 v1, 0x0 | |
iget v2, p0, Lcom/android/server/display/ColorFade;->mDisplayWidth:I | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mDisplayHeight:I | |
invoke-static {v0, v1, v2, v3}, Landroid/opengl/GLES20;->glViewport(IIII)V | |
.line 485 | |
const/4 v1, 0x0 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mDisplayWidth:I | |
int-to-float v2, v0 | |
const/4 v3, 0x0 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mDisplayHeight:I | |
int-to-float v4, v0 | |
const/high16 v5, -0x40800000 # -1.0f | |
const/high16 v6, 0x3f800000 # 1.0f | |
move-object v0, p0 | |
invoke-direct/range {v0 .. v6}, Lcom/android/server/display/ColorFade;->ortho(FFFFFF)V | |
:try_end_3 | |
.catchall {:try_start_3 .. :try_end_3} :catchall_1 | |
.line 487 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
move v0, v9 | |
.line 489 | |
goto/16 :goto_0 | |
.line 468 | |
:catchall_0 | |
move-exception v0 | |
:try_start_4 | |
invoke-virtual {v7}, Landroid/view/Surface;->release()V | |
throw v0 | |
:try_end_4 | |
.catchall {:try_start_4 .. :try_end_4} :catchall_1 | |
.line 487 | |
.end local v7 # "s":Landroid/view/Surface; | |
.end local v8 # "st":Landroid/graphics/SurfaceTexture; | |
:catchall_1 | |
move-exception v0 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
throw v0 | |
.end method | |
.method private static checkGlErrors(Ljava/lang/String;)Z | |
.locals 1 | |
.param p0, "func" # Ljava/lang/String; | |
.prologue | |
.line 676 | |
const/4 v0, 0x1 | |
invoke-static {p0, v0}, Lcom/android/server/display/ColorFade;->checkGlErrors(Ljava/lang/String;Z)Z | |
move-result v0 | |
return v0 | |
.end method | |
.method private static checkGlErrors(Ljava/lang/String;Z)Z | |
.locals 5 | |
.param p0, "func" # Ljava/lang/String; | |
.param p1, "log" # Z | |
.prologue | |
.line 680 | |
const/4 v1, 0x0 | |
.line 682 | |
.local v1, "hadError":Z | |
:goto_0 | |
invoke-static {}, Landroid/opengl/GLES20;->glGetError()I | |
move-result v0 | |
.local v0, "error":I | |
if-eqz v0, :cond_1 | |
.line 683 | |
if-eqz p1, :cond_0 | |
.line 684 | |
const-string v2, "ColorFade" | |
new-instance v3, Ljava/lang/StringBuilder; | |
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V | |
invoke-virtual {v3, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v3 | |
const-string v4, " failed: error " | |
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v3 | |
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; | |
move-result-object v3 | |
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v3 | |
new-instance v4, Ljava/lang/Throwable; | |
invoke-direct {v4}, Ljava/lang/Throwable;-><init>()V | |
invoke-static {v2, v3, v4}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I | |
.line 686 | |
:cond_0 | |
const/4 v1, 0x1 | |
goto :goto_0 | |
.line 688 | |
:cond_1 | |
return v1 | |
.end method | |
.method private createEglContext()Z | |
.locals 11 | |
.prologue | |
const/4 v10, 0x1 | |
const/4 v2, 0x0 | |
.line 501 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
if-nez v0, :cond_1 | |
.line 502 | |
invoke-static {v2}, Landroid/opengl/EGL14;->eglGetDisplay(I)Landroid/opengl/EGLDisplay; | |
move-result-object v0 | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
.line 503 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
sget-object v4, Landroid/opengl/EGL14;->EGL_NO_DISPLAY:Landroid/opengl/EGLDisplay; | |
if-ne v0, v4, :cond_0 | |
.line 504 | |
const-string v0, "eglGetDisplay" | |
invoke-static {v0}, Lcom/android/server/display/ColorFade;->logEglError(Ljava/lang/String;)V | |
.line 548 | |
:goto_0 | |
return v2 | |
.line 508 | |
:cond_0 | |
const/4 v0, 0x2 | |
new-array v9, v0, [I | |
.line 509 | |
.local v9, "version":[I | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
invoke-static {v0, v9, v2, v9, v10}, Landroid/opengl/EGL14;->eglInitialize(Landroid/opengl/EGLDisplay;[II[II)Z | |
move-result v0 | |
if-nez v0, :cond_1 | |
.line 510 | |
const/4 v0, 0x0 | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
.line 511 | |
const-string v0, "eglInitialize" | |
invoke-static {v0}, Lcom/android/server/display/ColorFade;->logEglError(Ljava/lang/String;)V | |
goto :goto_0 | |
.line 516 | |
.end local v9 # "version":[I | |
:cond_1 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglConfig:Landroid/opengl/EGLConfig; | |
if-nez v0, :cond_3 | |
.line 517 | |
const/16 v0, 0xb | |
new-array v1, v0, [I | |
fill-array-data v1, :array_0 | |
.line 526 | |
.local v1, "eglConfigAttribList":[I | |
new-array v6, v10, [I | |
.line 527 | |
.local v6, "numEglConfigs":[I | |
new-array v3, v10, [Landroid/opengl/EGLConfig; | |
.line 528 | |
.local v3, "eglConfigs":[Landroid/opengl/EGLConfig; | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
array-length v5, v3 | |
move v4, v2 | |
move v7, v2 | |
invoke-static/range {v0 .. v7}, Landroid/opengl/EGL14;->eglChooseConfig(Landroid/opengl/EGLDisplay;[II[Landroid/opengl/EGLConfig;II[II)Z | |
move-result v0 | |
if-nez v0, :cond_2 | |
.line 530 | |
const-string v0, "eglChooseConfig" | |
invoke-static {v0}, Lcom/android/server/display/ColorFade;->logEglError(Ljava/lang/String;)V | |
goto :goto_0 | |
.line 533 | |
:cond_2 | |
aget-object v0, v3, v2 | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mEglConfig:Landroid/opengl/EGLConfig; | |
.line 536 | |
.end local v1 # "eglConfigAttribList":[I | |
.end local v3 # "eglConfigs":[Landroid/opengl/EGLConfig; | |
.end local v6 # "numEglConfigs":[I | |
:cond_3 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglContext:Landroid/opengl/EGLContext; | |
if-nez v0, :cond_4 | |
.line 537 | |
const/4 v0, 0x3 | |
new-array v8, v0, [I | |
fill-array-data v8, :array_1 | |
.line 541 | |
.local v8, "eglContextAttribList":[I | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
iget-object v4, p0, Lcom/android/server/display/ColorFade;->mEglConfig:Landroid/opengl/EGLConfig; | |
sget-object v5, Landroid/opengl/EGL14;->EGL_NO_CONTEXT:Landroid/opengl/EGLContext; | |
invoke-static {v0, v4, v5, v8, v2}, Landroid/opengl/EGL14;->eglCreateContext(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Landroid/opengl/EGLContext;[II)Landroid/opengl/EGLContext; | |
move-result-object v0 | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mEglContext:Landroid/opengl/EGLContext; | |
.line 543 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglContext:Landroid/opengl/EGLContext; | |
if-nez v0, :cond_4 | |
.line 544 | |
const-string v0, "eglCreateContext" | |
invoke-static {v0}, Lcom/android/server/display/ColorFade;->logEglError(Ljava/lang/String;)V | |
goto :goto_0 | |
.end local v8 # "eglContextAttribList":[I | |
:cond_4 | |
move v2, v10 | |
.line 548 | |
goto :goto_0 | |
.line 517 | |
:array_0 | |
.array-data 4 | |
0x3040 | |
0x4 | |
0x3024 | |
0x8 | |
0x3023 | |
0x8 | |
0x3022 | |
0x8 | |
0x3021 | |
0x8 | |
0x3038 | |
.end array-data | |
.line 537 | |
:array_1 | |
.array-data 4 | |
0x3098 | |
0x2 | |
0x3038 | |
.end array-data | |
.end method | |
.method private createEglSurface()Z | |
.locals 6 | |
.prologue | |
const/4 v2, 0x1 | |
const/4 v1, 0x0 | |
.line 590 | |
iget-object v3, p0, Lcom/android/server/display/ColorFade;->mEglSurface:Landroid/opengl/EGLSurface; | |
if-nez v3, :cond_0 | |
.line 591 | |
new-array v0, v2, [I | |
const/16 v3, 0x3038 | |
aput v3, v0, v1 | |
.line 595 | |
.local v0, "eglSurfaceAttribList":[I | |
iget-object v3, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
iget-object v4, p0, Lcom/android/server/display/ColorFade;->mEglConfig:Landroid/opengl/EGLConfig; | |
iget-object v5, p0, Lcom/android/server/display/ColorFade;->mSurface:Landroid/view/Surface; | |
invoke-static {v3, v4, v5, v0, v1}, Landroid/opengl/EGL14;->eglCreateWindowSurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Ljava/lang/Object;[II)Landroid/opengl/EGLSurface; | |
move-result-object v3 | |
iput-object v3, p0, Lcom/android/server/display/ColorFade;->mEglSurface:Landroid/opengl/EGLSurface; | |
.line 597 | |
iget-object v3, p0, Lcom/android/server/display/ColorFade;->mEglSurface:Landroid/opengl/EGLSurface; | |
if-nez v3, :cond_0 | |
.line 598 | |
const-string v2, "eglCreateWindowSurface" | |
invoke-static {v2}, Lcom/android/server/display/ColorFade;->logEglError(Ljava/lang/String;)V | |
.line 602 | |
.end local v0 # "eglSurfaceAttribList":[I | |
:goto_0 | |
return v1 | |
:cond_0 | |
move v1, v2 | |
goto :goto_0 | |
.end method | |
.method private static createNativeFloatBuffer(I)Ljava/nio/FloatBuffer; | |
.locals 2 | |
.param p0, "size" # I | |
.prologue | |
.line 666 | |
mul-int/lit8 v1, p0, 0x4 | |
invoke-static {v1}, Ljava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer; | |
move-result-object v0 | |
.line 667 | |
.local v0, "bb":Ljava/nio/ByteBuffer; | |
invoke-static {}, Ljava/nio/ByteOrder;->nativeOrder()Ljava/nio/ByteOrder; | |
move-result-object v1 | |
invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer; | |
.line 668 | |
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->asFloatBuffer()Ljava/nio/FloatBuffer; | |
move-result-object v1 | |
return-object v1 | |
.end method | |
.method private createSurface()Z | |
.locals 8 | |
.prologue | |
.line 552 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceSession:Landroid/view/SurfaceSession; | |
if-nez v0, :cond_0 | |
.line 553 | |
new-instance v0, Landroid/view/SurfaceSession; | |
invoke-direct {v0}, Landroid/view/SurfaceSession;-><init>()V | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceSession:Landroid/view/SurfaceSession; | |
.line 556 | |
:cond_0 | |
invoke-static {}, Landroid/view/SurfaceControl;->openTransaction()V | |
.line 558 | |
:try_start_0 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
:try_end_0 | |
.catchall {:try_start_0 .. :try_end_0} :catchall_0 | |
if-nez v0, :cond_1 | |
.line 561 | |
:try_start_1 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mMode:I | |
const/4 v1, 0x2 | |
if-ne v0, v1, :cond_2 | |
.line 562 | |
const v6, 0x20004 | |
.line 566 | |
.local v6, "flags":I | |
:goto_0 | |
new-instance v0, Landroid/view/SurfaceControl; | |
iget-object v1, p0, Lcom/android/server/display/ColorFade;->mSurfaceSession:Landroid/view/SurfaceSession; | |
const-string v2, "ColorFade" | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mDisplayWidth:I | |
iget v4, p0, Lcom/android/server/display/ColorFade;->mDisplayHeight:I | |
const/4 v5, -0x1 | |
invoke-direct/range {v0 .. v6}, Landroid/view/SurfaceControl;-><init>(Landroid/view/SurfaceSession;Ljava/lang/String;IIII)V | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
:try_end_1 | |
.catch Landroid/view/Surface$OutOfResourcesException; {:try_start_1 .. :try_end_1} :catch_0 | |
.catchall {:try_start_1 .. :try_end_1} :catchall_0 | |
.line 575 | |
.end local v6 # "flags":I | |
:cond_1 | |
:try_start_2 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
iget v1, p0, Lcom/android/server/display/ColorFade;->mDisplayLayerStack:I | |
invoke-virtual {v0, v1}, Landroid/view/SurfaceControl;->setLayerStack(I)V | |
.line 576 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
iget v1, p0, Lcom/android/server/display/ColorFade;->mDisplayWidth:I | |
iget v2, p0, Lcom/android/server/display/ColorFade;->mDisplayHeight:I | |
invoke-virtual {v0, v1, v2}, Landroid/view/SurfaceControl;->setSize(II)V | |
.line 577 | |
new-instance v0, Landroid/view/Surface; | |
invoke-direct {v0}, Landroid/view/Surface;-><init>()V | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mSurface:Landroid/view/Surface; | |
.line 578 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurface:Landroid/view/Surface; | |
iget-object v1, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
invoke-virtual {v0, v1}, Landroid/view/Surface;->copyFrom(Landroid/view/SurfaceControl;)V | |
.line 580 | |
new-instance v0, Lcom/android/server/display/ColorFade$NaturalSurfaceLayout; | |
iget-object v1, p0, Lcom/android/server/display/ColorFade;->mDisplayManagerInternal:Landroid/hardware/display/DisplayManagerInternal; | |
iget v2, p0, Lcom/android/server/display/ColorFade;->mDisplayId:I | |
iget-object v3, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
invoke-direct {v0, v1, v2, v3}, Lcom/android/server/display/ColorFade$NaturalSurfaceLayout;-><init>(Landroid/hardware/display/DisplayManagerInternal;ILandroid/view/SurfaceControl;)V | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceLayout:Lcom/android/server/display/ColorFade$NaturalSurfaceLayout; | |
.line 582 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceLayout:Lcom/android/server/display/ColorFade$NaturalSurfaceLayout; | |
invoke-virtual {v0}, Lcom/android/server/display/ColorFade$NaturalSurfaceLayout;->onDisplayTransaction()V | |
:try_end_2 | |
.catchall {:try_start_2 .. :try_end_2} :catchall_0 | |
.line 584 | |
invoke-static {}, Landroid/view/SurfaceControl;->closeTransaction()V | |
.line 586 | |
const/4 v0, 0x1 | |
:goto_1 | |
return v0 | |
.line 564 | |
:cond_2 | |
const/16 v6, 0x404 | |
.restart local v6 # "flags":I | |
goto :goto_0 | |
.line 569 | |
.end local v6 # "flags":I | |
:catch_0 | |
move-exception v7 | |
.line 570 | |
.local v7, "ex":Landroid/view/Surface$OutOfResourcesException; | |
:try_start_3 | |
const-string v0, "ColorFade" | |
const-string v1, "Unable to create surface." | |
invoke-static {v0, v1, v7}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I | |
:try_end_3 | |
.catchall {:try_start_3 .. :try_end_3} :catchall_0 | |
.line 571 | |
const/4 v0, 0x0 | |
.line 584 | |
invoke-static {}, Landroid/view/SurfaceControl;->closeTransaction()V | |
goto :goto_1 | |
.end local v7 # "ex":Landroid/view/Surface$OutOfResourcesException; | |
:catchall_0 | |
move-exception v0 | |
invoke-static {}, Landroid/view/SurfaceControl;->closeTransaction()V | |
throw v0 | |
.end method | |
.method private destroyEglSurface()V | |
.locals 2 | |
.prologue | |
.line 606 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglSurface:Landroid/opengl/EGLSurface; | |
if-eqz v0, :cond_1 | |
.line 607 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
iget-object v1, p0, Lcom/android/server/display/ColorFade;->mEglSurface:Landroid/opengl/EGLSurface; | |
invoke-static {v0, v1}, Landroid/opengl/EGL14;->eglDestroySurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)Z | |
move-result v0 | |
if-nez v0, :cond_0 | |
.line 608 | |
const-string v0, "eglDestroySurface" | |
invoke-static {v0}, Lcom/android/server/display/ColorFade;->logEglError(Ljava/lang/String;)V | |
.line 610 | |
:cond_0 | |
const/4 v0, 0x0 | |
iput-object v0, p0, Lcom/android/server/display/ColorFade;->mEglSurface:Landroid/opengl/EGLSurface; | |
.line 612 | |
:cond_1 | |
return-void | |
.end method | |
.method private destroyGLBuffers()V | |
.locals 3 | |
.prologue | |
.line 300 | |
const/4 v0, 0x2 | |
iget-object v1, p0, Lcom/android/server/display/ColorFade;->mGLBuffers:[I | |
const/4 v2, 0x0 | |
invoke-static {v0, v1, v2}, Landroid/opengl/GLES20;->glDeleteBuffers(I[II)V | |
.line 301 | |
const-string v0, "glDeleteBuffers" | |
invoke-static {v0}, Lcom/android/server/display/ColorFade;->checkGlErrors(Ljava/lang/String;)Z | |
.line 302 | |
return-void | |
.end method | |
.method private destroyGLShaders()V | |
.locals 1 | |
.prologue | |
.line 261 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
invoke-static {v0}, Landroid/opengl/GLES20;->glDeleteProgram(I)V | |
.line 262 | |
const-string v0, "glDeleteProgram" | |
invoke-static {v0}, Lcom/android/server/display/ColorFade;->checkGlErrors(Ljava/lang/String;)Z | |
.line 263 | |
return-void | |
.end method | |
.method private destroyScreenshotTexture()V | |
.locals 3 | |
.prologue | |
const/4 v2, 0x0 | |
.line 493 | |
iget-boolean v0, p0, Lcom/android/server/display/ColorFade;->mTexNamesGenerated:Z | |
if-eqz v0, :cond_0 | |
.line 494 | |
iput-boolean v2, p0, Lcom/android/server/display/ColorFade;->mTexNamesGenerated:Z | |
.line 495 | |
const/4 v0, 0x1 | |
iget-object v1, p0, Lcom/android/server/display/ColorFade;->mTexNames:[I | |
invoke-static {v0, v1, v2}, Landroid/opengl/GLES20;->glDeleteTextures(I[II)V | |
.line 496 | |
const-string v0, "glDeleteTextures" | |
invoke-static {v0}, Lcom/android/server/display/ColorFade;->checkGlErrors(Ljava/lang/String;)Z | |
.line 498 | |
:cond_0 | |
return-void | |
.end method | |
.method private destroySurface()V | |
.locals 2 | |
.prologue | |
const/4 v1, 0x0 | |
.line 615 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
if-eqz v0, :cond_0 | |
.line 616 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceLayout:Lcom/android/server/display/ColorFade$NaturalSurfaceLayout; | |
invoke-virtual {v0}, Lcom/android/server/display/ColorFade$NaturalSurfaceLayout;->dispose()V | |
.line 617 | |
iput-object v1, p0, Lcom/android/server/display/ColorFade;->mSurfaceLayout:Lcom/android/server/display/ColorFade$NaturalSurfaceLayout; | |
.line 618 | |
invoke-static {}, Landroid/view/SurfaceControl;->openTransaction()V | |
.line 620 | |
:try_start_0 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
invoke-virtual {v0}, Landroid/view/SurfaceControl;->destroy()V | |
.line 621 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurface:Landroid/view/Surface; | |
invoke-virtual {v0}, Landroid/view/Surface;->release()V | |
:try_end_0 | |
.catchall {:try_start_0 .. :try_end_0} :catchall_0 | |
.line 623 | |
invoke-static {}, Landroid/view/SurfaceControl;->closeTransaction()V | |
.line 625 | |
iput-object v1, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
.line 626 | |
const/4 v0, 0x0 | |
iput-boolean v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceVisible:Z | |
.line 627 | |
const/4 v0, 0x0 | |
iput v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceAlpha:F | |
.line 629 | |
:cond_0 | |
return-void | |
.line 623 | |
:catchall_0 | |
move-exception v0 | |
invoke-static {}, Landroid/view/SurfaceControl;->closeTransaction()V | |
throw v0 | |
.end method | |
.method private detachEglContext()V | |
.locals 4 | |
.prologue | |
.line 659 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
if-eqz v0, :cond_0 | |
.line 660 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
sget-object v1, Landroid/opengl/EGL14;->EGL_NO_SURFACE:Landroid/opengl/EGLSurface; | |
sget-object v2, Landroid/opengl/EGL14;->EGL_NO_SURFACE:Landroid/opengl/EGLSurface; | |
sget-object v3, Landroid/opengl/EGL14;->EGL_NO_CONTEXT:Landroid/opengl/EGLContext; | |
invoke-static {v0, v1, v2, v3}, Landroid/opengl/EGL14;->eglMakeCurrent(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;Landroid/opengl/EGLSurface;Landroid/opengl/EGLContext;)Z | |
.line 663 | |
:cond_0 | |
return-void | |
.end method | |
.method private drawFaded(FFFF)V | |
.locals 8 | |
.param p1, "opacity" # F | |
.param p2, "gamma" # F | |
.param p3, "saturation" # F | |
.param p4, "scale" # F | |
.prologue | |
const/16 v2, 0x1406 | |
const/4 v1, 0x2 | |
const v7, 0x8892 | |
const/4 v6, 0x1 | |
const/4 v3, 0x0 | |
.line 400 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
invoke-static {v0}, Landroid/opengl/GLES20;->glUseProgram(I)V | |
.line 403 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrixLoc:I | |
iget-object v4, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
invoke-static {v0, v6, v3, v4, v3}, Landroid/opengl/GLES20;->glUniformMatrix4fv(IIZ[FI)V | |
.line 404 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mTexMatrixLoc:I | |
iget-object v4, p0, Lcom/android/server/display/ColorFade;->mTexMatrix:[F | |
invoke-static {v0, v6, v3, v4, v3}, Landroid/opengl/GLES20;->glUniformMatrix4fv(IIZ[FI)V | |
.line 405 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mOpacityLoc:I | |
invoke-static {v0, p1}, Landroid/opengl/GLES20;->glUniform1f(IF)V | |
.line 406 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mGammaLoc:I | |
invoke-static {v0, p2}, Landroid/opengl/GLES20;->glUniform1f(IF)V | |
.line 407 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mSaturationLoc:I | |
invoke-static {v0, p3}, Landroid/opengl/GLES20;->glUniform1f(IF)V | |
.line 408 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mScaleLoc:I | |
invoke-static {v0, p4}, Landroid/opengl/GLES20;->glUniform1f(IF)V | |
.line 411 | |
const v0, 0x84c0 | |
invoke-static {v0}, Landroid/opengl/GLES20;->glActiveTexture(I)V | |
.line 412 | |
const v0, 0x8d65 | |
iget-object v4, p0, Lcom/android/server/display/ColorFade;->mTexNames:[I | |
aget v4, v4, v3 | |
invoke-static {v0, v4}, Landroid/opengl/GLES20;->glBindTexture(II)V | |
.line 415 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mGLBuffers:[I | |
aget v0, v0, v3 | |
invoke-static {v7, v0}, Landroid/opengl/GLES20;->glBindBuffer(II)V | |
.line 416 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mVertexLoc:I | |
invoke-static {v0}, Landroid/opengl/GLES20;->glEnableVertexAttribArray(I)V | |
.line 417 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mVertexLoc:I | |
move v4, v3 | |
move v5, v3 | |
invoke-static/range {v0 .. v5}, Landroid/opengl/GLES20;->glVertexAttribPointer(IIIZII)V | |
.line 419 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mGLBuffers:[I | |
aget v0, v0, v6 | |
invoke-static {v7, v0}, Landroid/opengl/GLES20;->glBindBuffer(II)V | |
.line 420 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordLoc:I | |
invoke-static {v0}, Landroid/opengl/GLES20;->glEnableVertexAttribArray(I)V | |
.line 421 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordLoc:I | |
move v4, v3 | |
move v5, v3 | |
invoke-static/range {v0 .. v5}, Landroid/opengl/GLES20;->glVertexAttribPointer(IIIZII)V | |
.line 423 | |
const/4 v0, 0x6 | |
const/4 v1, 0x4 | |
invoke-static {v0, v3, v1}, Landroid/opengl/GLES20;->glDrawArrays(III)V | |
.line 426 | |
const v0, 0x8d65 | |
invoke-static {v0, v3}, Landroid/opengl/GLES20;->glBindTexture(II)V | |
.line 427 | |
invoke-static {v7, v3}, Landroid/opengl/GLES20;->glBindBuffer(II)V | |
.line 428 | |
return-void | |
.end method | |
.method private initGLBuffers()Z | |
.locals 8 | |
.prologue | |
const/4 v7, 0x1 | |
const/4 v6, 0x0 | |
const v5, 0x8892 | |
const/4 v4, 0x0 | |
const v3, 0x8d65 | |
.line 267 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mVertexBuffer:Ljava/nio/FloatBuffer; | |
iget v1, p0, Lcom/android/server/display/ColorFade;->mDisplayWidth:I | |
int-to-float v1, v1 | |
iget v2, p0, Lcom/android/server/display/ColorFade;->mDisplayHeight:I | |
int-to-float v2, v2 | |
invoke-static {v0, v6, v6, v1, v2}, Lcom/android/server/display/ColorFade;->setQuad(Ljava/nio/FloatBuffer;FFFF)V | |
.line 270 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexNames:[I | |
aget v0, v0, v4 | |
invoke-static {v3, v0}, Landroid/opengl/GLES20;->glBindTexture(II)V | |
.line 271 | |
const/16 v0, 0x2800 | |
const/16 v1, 0x2600 | |
invoke-static {v3, v0, v1}, Landroid/opengl/GLES20;->glTexParameteri(III)V | |
.line 273 | |
const/16 v0, 0x2801 | |
const/16 v1, 0x2600 | |
invoke-static {v3, v0, v1}, Landroid/opengl/GLES20;->glTexParameteri(III)V | |
.line 275 | |
const/16 v0, 0x2802 | |
const v1, 0x812f | |
invoke-static {v3, v0, v1}, Landroid/opengl/GLES20;->glTexParameteri(III)V | |
.line 277 | |
const/16 v0, 0x2803 | |
const v1, 0x812f | |
invoke-static {v3, v0, v1}, Landroid/opengl/GLES20;->glTexParameteri(III)V | |
.line 279 | |
invoke-static {v3, v4}, Landroid/opengl/GLES20;->glBindTexture(II)V | |
.line 282 | |
const/4 v0, 0x2 | |
iget-object v1, p0, Lcom/android/server/display/ColorFade;->mGLBuffers:[I | |
invoke-static {v0, v1, v4}, Landroid/opengl/GLES20;->glGenBuffers(I[II)V | |
.line 285 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mGLBuffers:[I | |
aget v0, v0, v4 | |
invoke-static {v5, v0}, Landroid/opengl/GLES20;->glBindBuffer(II)V | |
.line 286 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mVertexBuffer:Ljava/nio/FloatBuffer; | |
invoke-virtual {v0}, Ljava/nio/FloatBuffer;->capacity()I | |
move-result v0 | |
mul-int/lit8 v0, v0, 0x4 | |
iget-object v1, p0, Lcom/android/server/display/ColorFade;->mVertexBuffer:Ljava/nio/FloatBuffer; | |
const v2, 0x88e4 | |
invoke-static {v5, v0, v1, v2}, Landroid/opengl/GLES20;->glBufferData(IILjava/nio/Buffer;I)V | |
.line 290 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mGLBuffers:[I | |
aget v0, v0, v7 | |
invoke-static {v5, v0}, Landroid/opengl/GLES20;->glBindBuffer(II)V | |
.line 291 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
invoke-virtual {v0}, Ljava/nio/FloatBuffer;->capacity()I | |
move-result v0 | |
mul-int/lit8 v0, v0, 0x4 | |
iget-object v1, p0, Lcom/android/server/display/ColorFade;->mTexCoordBuffer:Ljava/nio/FloatBuffer; | |
const v2, 0x88e4 | |
invoke-static {v5, v0, v1, v2}, Landroid/opengl/GLES20;->glBufferData(IILjava/nio/Buffer;I)V | |
.line 294 | |
invoke-static {v5, v4}, Landroid/opengl/GLES20;->glBindBuffer(II)V | |
.line 296 | |
return v7 | |
.end method | |
.method private initGLShaders(Landroid/content/Context;)Z | |
.locals 5 | |
.param p1, "context" # Landroid/content/Context; | |
.prologue | |
const/4 v2, 0x0 | |
.line 225 | |
const v3, 0x1100004 | |
const v4, 0x8b31 | |
invoke-direct {p0, p1, v3, v4}, Lcom/android/server/display/ColorFade;->loadShader(Landroid/content/Context;II)I | |
move-result v1 | |
.line 227 | |
.local v1, "vshader":I | |
const v3, 0x1100003 | |
const v4, 0x8b30 | |
invoke-direct {p0, p1, v3, v4}, Lcom/android/server/display/ColorFade;->loadShader(Landroid/content/Context;II)I | |
move-result v0 | |
.line 229 | |
.local v0, "fshader":I | |
invoke-static {}, Landroid/opengl/GLES20;->glReleaseShaderCompiler()V | |
.line 230 | |
if-eqz v1, :cond_0 | |
if-nez v0, :cond_1 | |
.line 257 | |
:cond_0 | |
:goto_0 | |
return v2 | |
.line 232 | |
:cond_1 | |
invoke-static {}, Landroid/opengl/GLES20;->glCreateProgram()I | |
move-result v3 | |
iput v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
.line 234 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
invoke-static {v3, v1}, Landroid/opengl/GLES20;->glAttachShader(II)V | |
.line 235 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
invoke-static {v3, v0}, Landroid/opengl/GLES20;->glAttachShader(II)V | |
.line 236 | |
invoke-static {v1}, Landroid/opengl/GLES20;->glDeleteShader(I)V | |
.line 237 | |
invoke-static {v0}, Landroid/opengl/GLES20;->glDeleteShader(I)V | |
.line 239 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
invoke-static {v3}, Landroid/opengl/GLES20;->glLinkProgram(I)V | |
.line 241 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
const-string/jumbo v4, "position" | |
invoke-static {v3, v4}, Landroid/opengl/GLES20;->glGetAttribLocation(ILjava/lang/String;)I | |
move-result v3 | |
iput v3, p0, Lcom/android/server/display/ColorFade;->mVertexLoc:I | |
.line 242 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
const-string/jumbo v4, "uv" | |
invoke-static {v3, v4}, Landroid/opengl/GLES20;->glGetAttribLocation(ILjava/lang/String;)I | |
move-result v3 | |
iput v3, p0, Lcom/android/server/display/ColorFade;->mTexCoordLoc:I | |
.line 244 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
const-string/jumbo v4, "proj_matrix" | |
invoke-static {v3, v4}, Landroid/opengl/GLES20;->glGetUniformLocation(ILjava/lang/String;)I | |
move-result v3 | |
iput v3, p0, Lcom/android/server/display/ColorFade;->mProjMatrixLoc:I | |
.line 245 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
const-string/jumbo v4, "tex_matrix" | |
invoke-static {v3, v4}, Landroid/opengl/GLES20;->glGetUniformLocation(ILjava/lang/String;)I | |
move-result v3 | |
iput v3, p0, Lcom/android/server/display/ColorFade;->mTexMatrixLoc:I | |
.line 247 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
const-string/jumbo v4, "opacity" | |
invoke-static {v3, v4}, Landroid/opengl/GLES20;->glGetUniformLocation(ILjava/lang/String;)I | |
move-result v3 | |
iput v3, p0, Lcom/android/server/display/ColorFade;->mOpacityLoc:I | |
.line 248 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
const-string v4, "gamma" | |
invoke-static {v3, v4}, Landroid/opengl/GLES20;->glGetUniformLocation(ILjava/lang/String;)I | |
move-result v3 | |
iput v3, p0, Lcom/android/server/display/ColorFade;->mGammaLoc:I | |
.line 249 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
const-string/jumbo v4, "saturation" | |
invoke-static {v3, v4}, Landroid/opengl/GLES20;->glGetUniformLocation(ILjava/lang/String;)I | |
move-result v3 | |
iput v3, p0, Lcom/android/server/display/ColorFade;->mSaturationLoc:I | |
.line 250 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
const-string/jumbo v4, "scale" | |
invoke-static {v3, v4}, Landroid/opengl/GLES20;->glGetUniformLocation(ILjava/lang/String;)I | |
move-result v3 | |
iput v3, p0, Lcom/android/server/display/ColorFade;->mScaleLoc:I | |
.line 251 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
const-string/jumbo v4, "texUnit" | |
invoke-static {v3, v4}, Landroid/opengl/GLES20;->glGetUniformLocation(ILjava/lang/String;)I | |
move-result v3 | |
iput v3, p0, Lcom/android/server/display/ColorFade;->mTexUnitLoc:I | |
.line 253 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mProgram:I | |
invoke-static {v3}, Landroid/opengl/GLES20;->glUseProgram(I)V | |
.line 254 | |
iget v3, p0, Lcom/android/server/display/ColorFade;->mTexUnitLoc:I | |
invoke-static {v3, v2}, Landroid/opengl/GLES20;->glUniform1i(II)V | |
.line 255 | |
invoke-static {v2}, Landroid/opengl/GLES20;->glUseProgram(I)V | |
.line 257 | |
const/4 v2, 0x1 | |
goto/16 :goto_0 | |
.end method | |
.method private loadShader(Landroid/content/Context;II)I | |
.locals 6 | |
.param p1, "context" # Landroid/content/Context; | |
.param p2, "resourceId" # I | |
.param p3, "type" # I | |
.prologue | |
const/4 v4, 0x0 | |
.line 204 | |
invoke-direct {p0, p1, p2}, Lcom/android/server/display/ColorFade;->readFile(Landroid/content/Context;I)Ljava/lang/String; | |
move-result-object v2 | |
.line 206 | |
.local v2, "source":Ljava/lang/String; | |
invoke-static {p3}, Landroid/opengl/GLES20;->glCreateShader(I)I | |
move-result v1 | |
.line 208 | |
.local v1, "shader":I | |
invoke-static {v1, v2}, Landroid/opengl/GLES20;->glShaderSource(ILjava/lang/String;)V | |
.line 209 | |
invoke-static {v1}, Landroid/opengl/GLES20;->glCompileShader(I)V | |
.line 211 | |
const/4 v3, 0x1 | |
new-array v0, v3, [I | |
.line 212 | |
.local v0, "compiled":[I | |
const v3, 0x8b81 | |
invoke-static {v1, v3, v0, v4}, Landroid/opengl/GLES20;->glGetShaderiv(II[II)V | |
.line 213 | |
aget v3, v0, v4 | |
if-nez v3, :cond_0 | |
.line 214 | |
const-string v3, "ColorFade" | |
new-instance v4, Ljava/lang/StringBuilder; | |
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v5, "Could not compile shader " | |
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v4 | |
invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; | |
move-result-object v4 | |
const-string v5, ", " | |
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v4 | |
invoke-virtual {v4, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; | |
move-result-object v4 | |
const-string v5, ":" | |
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v4 | |
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v4 | |
invoke-static {v3, v4}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I | |
.line 215 | |
const-string v3, "ColorFade" | |
invoke-static {v1}, Landroid/opengl/GLES20;->glGetShaderSource(I)Ljava/lang/String; | |
move-result-object v4 | |
invoke-static {v3, v4}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I | |
.line 216 | |
const-string v3, "ColorFade" | |
invoke-static {v1}, Landroid/opengl/GLES20;->glGetShaderInfoLog(I)Ljava/lang/String; | |
move-result-object v4 | |
invoke-static {v3, v4}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I | |
.line 217 | |
invoke-static {v1}, Landroid/opengl/GLES20;->glDeleteShader(I)V | |
.line 218 | |
const/4 v1, 0x0 | |
.line 221 | |
:cond_0 | |
return v1 | |
.end method | |
.method private static logEglError(Ljava/lang/String;)V | |
.locals 3 | |
.param p0, "func" # Ljava/lang/String; | |
.prologue | |
.line 672 | |
const-string v0, "ColorFade" | |
new-instance v1, Ljava/lang/StringBuilder; | |
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V | |
invoke-virtual {v1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v1 | |
const-string v2, " failed: error " | |
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v1 | |
invoke-static {}, Landroid/opengl/EGL14;->eglGetError()I | |
move-result v2 | |
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; | |
move-result-object v1 | |
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v1 | |
new-instance v2, Ljava/lang/Throwable; | |
invoke-direct {v2}, Ljava/lang/Throwable;-><init>()V | |
invoke-static {v0, v1, v2}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I | |
.line 673 | |
return-void | |
.end method | |
.method private ortho(FFFFFF)V | |
.locals 5 | |
.param p1, "left" # F | |
.param p2, "right" # F | |
.param p3, "bottom" # F | |
.param p4, "top" # F | |
.param p5, "znear" # F | |
.param p6, "zfar" # F | |
.prologue | |
const/high16 v3, 0x40000000 # 2.0f | |
const/4 v4, 0x0 | |
.line 431 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/4 v1, 0x0 | |
sub-float v2, p2, p1 | |
div-float v2, v3, v2 | |
aput v2, v0, v1 | |
.line 432 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/4 v1, 0x1 | |
aput v4, v0, v1 | |
.line 433 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/4 v1, 0x2 | |
aput v4, v0, v1 | |
.line 434 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/4 v1, 0x3 | |
aput v4, v0, v1 | |
.line 435 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/4 v1, 0x4 | |
aput v4, v0, v1 | |
.line 436 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/4 v1, 0x5 | |
sub-float v2, p4, p3 | |
div-float v2, v3, v2 | |
aput v2, v0, v1 | |
.line 437 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/4 v1, 0x6 | |
aput v4, v0, v1 | |
.line 438 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/4 v1, 0x7 | |
aput v4, v0, v1 | |
.line 439 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/16 v1, 0x8 | |
aput v4, v0, v1 | |
.line 440 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/16 v1, 0x9 | |
aput v4, v0, v1 | |
.line 441 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/16 v1, 0xa | |
const/high16 v2, -0x40000000 # -2.0f | |
sub-float v3, p6, p5 | |
div-float/2addr v2, v3 | |
aput v2, v0, v1 | |
.line 442 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/16 v1, 0xb | |
aput v4, v0, v1 | |
.line 443 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/16 v1, 0xc | |
add-float v2, p2, p1 | |
neg-float v2, v2 | |
sub-float v3, p2, p1 | |
div-float/2addr v2, v3 | |
aput v2, v0, v1 | |
.line 444 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/16 v1, 0xd | |
add-float v2, p4, p3 | |
neg-float v2, v2 | |
sub-float v3, p4, p3 | |
div-float/2addr v2, v3 | |
aput v2, v0, v1 | |
.line 445 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/16 v1, 0xe | |
add-float v2, p6, p5 | |
neg-float v2, v2 | |
sub-float v3, p6, p5 | |
div-float/2addr v2, v3 | |
aput v2, v0, v1 | |
.line 446 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mProjMatrix:[F | |
const/16 v1, 0xf | |
const/high16 v2, 0x3f800000 # 1.0f | |
aput v2, v0, v1 | |
.line 447 | |
return-void | |
.end method | |
.method private readFile(Landroid/content/Context;I)Ljava/lang/String; | |
.locals 5 | |
.param p1, "context" # Landroid/content/Context; | |
.param p2, "resourceId" # I | |
.prologue | |
.line 194 | |
:try_start_0 | |
invoke-virtual {p1}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; | |
move-result-object v2 | |
invoke-virtual {v2, p2}, Landroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream; | |
move-result-object v1 | |
.line 195 | |
.local v1, "stream":Ljava/io/InputStream; | |
new-instance v2, Ljava/lang/String; | |
new-instance v3, Ljava/io/InputStreamReader; | |
invoke-direct {v3, v1}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V | |
invoke-static {v3}, Llibcore/io/Streams;->readFully(Ljava/io/Reader;)Ljava/lang/String; | |
move-result-object v3 | |
invoke-direct {v2, v3}, Ljava/lang/String;-><init>(Ljava/lang/String;)V | |
:try_end_0 | |
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_0 | |
return-object v2 | |
.line 197 | |
.end local v1 # "stream":Ljava/io/InputStream; | |
:catch_0 | |
move-exception v0 | |
.line 198 | |
.local v0, "e":Ljava/io/IOException; | |
const-string v2, "ColorFade" | |
new-instance v3, Ljava/lang/StringBuilder; | |
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v4, "Unrecognized shader " | |
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v3 | |
invoke-static {p2}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; | |
move-result-object v4 | |
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v3 | |
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v3 | |
invoke-static {v2, v3}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I | |
.line 199 | |
new-instance v2, Ljava/lang/RuntimeException; | |
invoke-direct {v2, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V | |
throw v2 | |
.end method | |
.method private static setQuad(Ljava/nio/FloatBuffer;FFFF)V | |
.locals 2 | |
.param p0, "vtx" # Ljava/nio/FloatBuffer; | |
.param p1, "x" # F | |
.param p2, "y" # F | |
.param p3, "w" # F | |
.param p4, "h" # F | |
.prologue | |
.line 308 | |
const/4 v0, 0x0 | |
invoke-virtual {p0, v0, p1}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 309 | |
const/4 v0, 0x1 | |
invoke-virtual {p0, v0, p2}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 310 | |
const/4 v0, 0x2 | |
invoke-virtual {p0, v0, p1}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 311 | |
const/4 v0, 0x3 | |
add-float v1, p2, p4 | |
invoke-virtual {p0, v0, v1}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 312 | |
const/4 v0, 0x4 | |
add-float v1, p1, p3 | |
invoke-virtual {p0, v0, v1}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 313 | |
const/4 v0, 0x5 | |
add-float v1, p2, p4 | |
invoke-virtual {p0, v0, v1}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 314 | |
const/4 v0, 0x6 | |
add-float v1, p1, p3 | |
invoke-virtual {p0, v0, v1}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 315 | |
const/4 v0, 0x7 | |
invoke-virtual {p0, v0, p2}, Ljava/nio/FloatBuffer;->put(IF)Ljava/nio/FloatBuffer; | |
.line 316 | |
return-void | |
.end method | |
.method private showSurface(F)Z | |
.locals 3 | |
.param p1, "alpha" # F | |
.prologue | |
const/4 v2, 0x1 | |
.line 632 | |
iget-boolean v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceVisible:Z | |
if-eqz v0, :cond_0 | |
iget v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceAlpha:F | |
cmpl-float v0, v0, p1 | |
if-eqz v0, :cond_1 | |
.line 633 | |
:cond_0 | |
invoke-static {}, Landroid/view/SurfaceControl;->openTransaction()V | |
.line 635 | |
:try_start_0 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
const v1, 0x40000001 # 2.0000002f | |
invoke-virtual {v0, v1}, Landroid/view/SurfaceControl;->setLayer(I)V | |
.line 636 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
invoke-virtual {v0, p1}, Landroid/view/SurfaceControl;->setAlpha(F)V | |
.line 637 | |
iget-object v0, p0, Lcom/android/server/display/ColorFade;->mSurfaceControl:Landroid/view/SurfaceControl; | |
invoke-virtual {v0}, Landroid/view/SurfaceControl;->show()V | |
:try_end_0 | |
.catchall {:try_start_0 .. :try_end_0} :catchall_0 | |
.line 639 | |
invoke-static {}, Landroid/view/SurfaceControl;->closeTransaction()V | |
.line 641 | |
iput-boolean v2, p0, Lcom/android/server/display/ColorFade;->mSurfaceVisible:Z | |
.line 642 | |
iput p1, p0, Lcom/android/server/display/ColorFade;->mSurfaceAlpha:F | |
.line 644 | |
:cond_1 | |
return v2 | |
.line 639 | |
:catchall_0 | |
move-exception v0 | |
invoke-static {}, Landroid/view/SurfaceControl;->closeTransaction()V | |
throw v0 | |
.end method | |
# virtual methods | |
.method public dismiss()V | |
.locals 1 | |
.prologue | |
.line 330 | |
iget-boolean v0, p0, Lcom/android/server/display/ColorFade;->mPrepared:Z | |
if-eqz v0, :cond_0 | |
.line 331 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->attachEglContext()Z | |
.line 333 | |
:try_start_0 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->destroyScreenshotTexture()V | |
.line 334 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->destroyGLShaders()V | |
.line 335 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->destroyGLBuffers()V | |
.line 336 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->destroyEglSurface()V | |
:try_end_0 | |
.catchall {:try_start_0 .. :try_end_0} :catchall_0 | |
.line 338 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
.line 340 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->destroySurface()V | |
.line 341 | |
invoke-static {}, Landroid/opengl/GLES20;->glFlush()V | |
.line 342 | |
const/4 v0, 0x0 | |
iput-boolean v0, p0, Lcom/android/server/display/ColorFade;->mPrepared:Z | |
.line 344 | |
:cond_0 | |
return-void | |
.line 338 | |
:catchall_0 | |
move-exception v0 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
throw v0 | |
.end method | |
.method public draw(F)Z | |
.locals 11 | |
.param p1, "level" # F | |
.prologue | |
.line 358 | |
iget-boolean v7, p0, Lcom/android/server/display/ColorFade;->mPrepared:Z | |
if-nez v7, :cond_0 | |
.line 359 | |
const/4 v7, 0x0 | |
.line 391 | |
:goto_0 | |
return v7 | |
.line 362 | |
:cond_0 | |
iget v7, p0, Lcom/android/server/display/ColorFade;->mMode:I | |
const/4 v8, 0x2 | |
if-ne v7, v8, :cond_1 | |
.line 363 | |
const/high16 v7, 0x3f800000 # 1.0f | |
sub-float/2addr v7, p1 | |
invoke-direct {p0, v7}, Lcom/android/server/display/ColorFade;->showSurface(F)Z | |
move-result v7 | |
goto :goto_0 | |
.line 366 | |
:cond_1 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->attachEglContext()Z | |
move-result v7 | |
if-nez v7, :cond_2 | |
.line 367 | |
const/4 v7, 0x0 | |
goto :goto_0 | |
.line 371 | |
:cond_2 | |
const/4 v7, 0x0 | |
const/4 v8, 0x0 | |
const/4 v9, 0x0 | |
const/high16 v10, 0x3f800000 # 1.0f | |
:try_start_0 | |
invoke-static {v7, v8, v9, v10}, Landroid/opengl/GLES20;->glClearColor(FFFF)V | |
.line 372 | |
const/16 v7, 0x4000 | |
invoke-static {v7}, Landroid/opengl/GLES20;->glClear(I)V | |
.line 375 | |
const/high16 v7, 0x3f800000 # 1.0f | |
sub-float v2, v7, p1 | |
.line 376 | |
.local v2, "one_minus_level":F | |
const v7, 0x40490fdb # (float)Math.PI | |
mul-float/2addr v7, v2 | |
invoke-static {v7}, Landroid/util/FloatMath;->cos(F)F | |
move-result v0 | |
.line 377 | |
.local v0, "cos":F | |
const/4 v7, 0x0 | |
cmpg-float v7, v0, v7 | |
if-gez v7, :cond_3 | |
const/high16 v6, -0x40800000 # -1.0f | |
.line 378 | |
.local v6, "sign":F | |
:goto_1 | |
const/high16 v7, 0x40000000 # 2.0f | |
invoke-static {v2, v7}, Landroid/util/FloatMath;->pow(FF)F | |
move-result v7 | |
neg-float v7, v7 | |
const/high16 v8, 0x3f800000 # 1.0f | |
add-float v3, v7, v8 | |
.line 379 | |
.local v3, "opacity":F | |
const/high16 v7, 0x40800000 # 4.0f | |
invoke-static {p1, v7}, Landroid/util/FloatMath;->pow(FF)F | |
move-result v4 | |
.line 380 | |
.local v4, "saturation":F | |
const/high16 v7, 0x40000000 # 2.0f | |
invoke-static {v2, v7}, Landroid/util/FloatMath;->pow(FF)F | |
move-result v7 | |
neg-float v7, v7 | |
const/high16 v8, 0x3f800000 # 1.0f | |
add-float/2addr v7, v8 | |
const v8, 0x3dcccccd # 0.1f | |
mul-float/2addr v7, v8 | |
const v8, 0x3f666666 # 0.9f | |
add-float v5, v7, v8 | |
.line 381 | |
.local v5, "scale":F | |
const/high16 v7, 0x3f000000 # 0.5f | |
mul-float/2addr v7, v6 | |
const/high16 v8, 0x40000000 # 2.0f | |
invoke-static {v0, v8}, Landroid/util/FloatMath;->pow(FF)F | |
move-result v8 | |
mul-float/2addr v7, v8 | |
const/high16 v8, 0x3f000000 # 0.5f | |
add-float/2addr v7, v8 | |
const v8, 0x3f666666 # 0.9f | |
mul-float/2addr v7, v8 | |
const v8, 0x3dcccccd # 0.1f | |
add-float v1, v7, v8 | |
.line 382 | |
.local v1, "gamma":F | |
const/high16 v7, 0x3f800000 # 1.0f | |
div-float/2addr v7, v1 | |
invoke-direct {p0, v3, v7, v4, v5}, Lcom/android/server/display/ColorFade;->drawFaded(FFFF)V | |
.line 383 | |
const-string v7, "drawFrame" | |
invoke-static {v7}, Lcom/android/server/display/ColorFade;->checkGlErrors(Ljava/lang/String;)Z | |
:try_end_0 | |
.catchall {:try_start_0 .. :try_end_0} :catchall_0 | |
move-result v7 | |
if-eqz v7, :cond_4 | |
.line 384 | |
const/4 v7, 0x0 | |
.line 389 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
goto/16 :goto_0 | |
.line 377 | |
.end local v1 # "gamma":F | |
.end local v3 # "opacity":F | |
.end local v4 # "saturation":F | |
.end local v5 # "scale":F | |
.end local v6 # "sign":F | |
:cond_3 | |
const/high16 v6, 0x3f800000 # 1.0f | |
goto :goto_1 | |
.line 387 | |
.restart local v1 # "gamma":F | |
.restart local v3 # "opacity":F | |
.restart local v4 # "saturation":F | |
.restart local v5 # "scale":F | |
.restart local v6 # "sign":F | |
:cond_4 | |
:try_start_1 | |
iget-object v7, p0, Lcom/android/server/display/ColorFade;->mEglDisplay:Landroid/opengl/EGLDisplay; | |
iget-object v8, p0, Lcom/android/server/display/ColorFade;->mEglSurface:Landroid/opengl/EGLSurface; | |
invoke-static {v7, v8}, Landroid/opengl/EGL14;->eglSwapBuffers(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)Z | |
:try_end_1 | |
.catchall {:try_start_1 .. :try_end_1} :catchall_0 | |
.line 389 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
.line 391 | |
const/high16 v7, 0x3f800000 # 1.0f | |
invoke-direct {p0, v7}, Lcom/android/server/display/ColorFade;->showSurface(F)Z | |
move-result v7 | |
goto/16 :goto_0 | |
.line 389 | |
.end local v0 # "cos":F | |
.end local v1 # "gamma":F | |
.end local v2 # "one_minus_level":F | |
.end local v3 # "opacity":F | |
.end local v4 # "saturation":F | |
.end local v5 # "scale":F | |
.end local v6 # "sign":F | |
:catchall_0 | |
move-exception v7 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
throw v7 | |
.end method | |
.method public dump(Ljava/io/PrintWriter;)V | |
.locals 2 | |
.param p1, "pw" # Ljava/io/PrintWriter; | |
.prologue | |
.line 692 | |
invoke-virtual {p1}, Ljava/io/PrintWriter;->println()V | |
.line 693 | |
const-string v0, "Color Fade State:" | |
invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V | |
.line 694 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, " mPrepared=" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
iget-boolean v1, p0, Lcom/android/server/display/ColorFade;->mPrepared:Z | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V | |
.line 695 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, " mMode=" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
iget v1, p0, Lcom/android/server/display/ColorFade;->mMode:I | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V | |
.line 696 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, " mDisplayLayerStack=" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
iget v1, p0, Lcom/android/server/display/ColorFade;->mDisplayLayerStack:I | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V | |
.line 697 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, " mDisplayWidth=" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
iget v1, p0, Lcom/android/server/display/ColorFade;->mDisplayWidth:I | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V | |
.line 698 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, " mDisplayHeight=" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
iget v1, p0, Lcom/android/server/display/ColorFade;->mDisplayHeight:I | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V | |
.line 699 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, " mSurfaceVisible=" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
iget-boolean v1, p0, Lcom/android/server/display/ColorFade;->mSurfaceVisible:Z | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V | |
.line 700 | |
new-instance v0, Ljava/lang/StringBuilder; | |
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V | |
const-string v1, " mSurfaceAlpha=" | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
iget v1, p0, Lcom/android/server/display/ColorFade;->mSurfaceAlpha:F | |
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder; | |
move-result-object v0 | |
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; | |
move-result-object v0 | |
invoke-virtual {p1, v0}, Ljava/io/PrintWriter;->println(Ljava/lang/String;)V | |
.line 701 | |
return-void | |
.end method | |
.method public prepare(Landroid/content/Context;I)Z | |
.locals 6 | |
.param p1, "context" # Landroid/content/Context; | |
.param p2, "mode" # I | |
.prologue | |
const/4 v3, 0x1 | |
const/4 v2, 0x0 | |
.line 144 | |
iput p2, p0, Lcom/android/server/display/ColorFade;->mMode:I | |
.line 148 | |
iget-object v4, p0, Lcom/android/server/display/ColorFade;->mDisplayManagerInternal:Landroid/hardware/display/DisplayManagerInternal; | |
iget v5, p0, Lcom/android/server/display/ColorFade;->mDisplayId:I | |
invoke-virtual {v4, v5}, Landroid/hardware/display/DisplayManagerInternal;->getDisplayInfo(I)Landroid/view/DisplayInfo; | |
move-result-object v0 | |
.line 149 | |
.local v0, "displayInfo":Landroid/view/DisplayInfo; | |
iget v4, v0, Landroid/view/DisplayInfo;->layerStack:I | |
iput v4, p0, Lcom/android/server/display/ColorFade;->mDisplayLayerStack:I | |
.line 150 | |
invoke-virtual {v0}, Landroid/view/DisplayInfo;->getNaturalWidth()I | |
move-result v4 | |
iput v4, p0, Lcom/android/server/display/ColorFade;->mDisplayWidth:I | |
.line 151 | |
invoke-virtual {v0}, Landroid/view/DisplayInfo;->getNaturalHeight()I | |
move-result v4 | |
iput v4, p0, Lcom/android/server/display/ColorFade;->mDisplayHeight:I | |
.line 154 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->createSurface()Z | |
move-result v4 | |
if-eqz v4, :cond_0 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->createEglContext()Z | |
move-result v4 | |
if-eqz v4, :cond_0 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->createEglSurface()Z | |
move-result v4 | |
if-eqz v4, :cond_0 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->captureScreenshotTextureAndSetViewport()Z | |
move-result v4 | |
if-nez v4, :cond_2 | |
.line 156 | |
:cond_0 | |
invoke-virtual {p0}, Lcom/android/server/display/ColorFade;->dismiss()V | |
.line 189 | |
:cond_1 | |
:goto_0 | |
return v2 | |
.line 161 | |
:cond_2 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->attachEglContext()Z | |
move-result v4 | |
if-eqz v4, :cond_1 | |
.line 165 | |
:try_start_0 | |
invoke-direct {p0, p1}, Lcom/android/server/display/ColorFade;->initGLShaders(Landroid/content/Context;)Z | |
move-result v4 | |
if-eqz v4, :cond_3 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->initGLBuffers()Z | |
move-result v4 | |
if-eqz v4, :cond_3 | |
const-string/jumbo v4, "prepare" | |
invoke-static {v4}, Lcom/android/server/display/ColorFade;->checkGlErrors(Ljava/lang/String;)Z | |
move-result v4 | |
if-eqz v4, :cond_4 | |
.line 166 | |
:cond_3 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
.line 167 | |
invoke-virtual {p0}, Lcom/android/server/display/ColorFade;->dismiss()V | |
:try_end_0 | |
.catchall {:try_start_0 .. :try_end_0} :catchall_0 | |
.line 171 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
goto :goto_0 | |
:cond_4 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
.line 175 | |
iput-boolean v3, p0, Lcom/android/server/display/ColorFade;->mPrepared:Z | |
.line 184 | |
if-ne p2, v3, :cond_5 | |
.line 185 | |
const/4 v1, 0x0 | |
.local v1, "i":I | |
:goto_1 | |
const/4 v2, 0x3 | |
if-ge v1, v2, :cond_5 | |
.line 186 | |
const/high16 v2, 0x3f800000 # 1.0f | |
invoke-virtual {p0, v2}, Lcom/android/server/display/ColorFade;->draw(F)Z | |
.line 185 | |
add-int/lit8 v1, v1, 0x1 | |
goto :goto_1 | |
.line 171 | |
.end local v1 # "i":I | |
:catchall_0 | |
move-exception v2 | |
invoke-direct {p0}, Lcom/android/server/display/ColorFade;->detachEglContext()V | |
throw v2 | |
:cond_5 | |
move v2, v3 | |
.line 189 | |
goto :goto_0 | |
.end method |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment