.class final Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; .super Ljava/lang/Object; .source "HardwareConfigState.java" # static fields .field private static final FD_SIZE_LIST:Ljava/io/File; .field private static final MAXIMUM_FDS_FOR_HARDWARE_CONFIGS:I = 0x2bc .field private static final MINIMUM_DECODES_BETWEEN_FD_CHECKS:I = 0x32 .field private static final MIN_HARDWARE_DIMENSION:I = 0x80 .field private static volatile instance:Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; # instance fields .field private volatile decodesSinceLastFdCheck:I .field private volatile isHardwareConfigAllowed:Z # direct methods .method static constructor ()V .registers 2 .line 40 new-instance v0, Ljava/io/File; const-string v1, "/proc/self/fd" invoke-direct {v0, v1}, Ljava/io/File;->(Ljava/lang/String;)V sput-object v0, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->FD_SIZE_LIST:Ljava/io/File; return-void .end method .method private constructor ()V .registers 2 .line 70 invoke-direct {p0}, Ljava/lang/Object;->()V const/4 v0, 0x1 .line 55 iput-boolean v0, p0, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->isHardwareConfigAllowed:Z return-void .end method .method static getInstance()Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; .registers 2 .line 60 sget-object v0, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->instance:Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; if-nez v0, :cond_17 .line 61 const-class v0, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; monitor-enter v0 .line 62 :try_start_7 sget-object v1, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->instance:Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; if-nez v1, :cond_12 .line 63 new-instance v1, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; invoke-direct {v1}, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->()V sput-object v1, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->instance:Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; .line 65 :cond_12 monitor-exit v0 goto :goto_17 :catchall_14 move-exception v1 monitor-exit v0 :try_end_16 .catchall {:try_start_7 .. :try_end_16} :catchall_14 throw v1 .line 67 :cond_17 :goto_17 sget-object v0, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->instance:Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState; return-object v0 .end method .method private declared-synchronized isFdSizeBelowHardwareLimit()Z .registers 7 const-string v0, ", limit 700" const-string v1, "Excluding HARDWARE bitmap config because we\'re over the file descriptor limit, file descriptors " monitor-enter p0 .line 103 :try_start_5 iget v2, p0, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->decodesSinceLastFdCheck:I const/4 v3, 0x1 add-int/2addr v2, v3 iput v2, p0, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->decodesSinceLastFdCheck:I const/16 v4, 0x32 if-lt v2, v4, :cond_44 const/4 v2, 0x0 .line 104 iput v2, p0, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->decodesSinceLastFdCheck:I .line 105 sget-object v4, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->FD_SIZE_LIST:Ljava/io/File; invoke-virtual {v4}, Ljava/io/File;->list()[Ljava/lang/String; move-result-object v4 array-length v4, v4 const/16 v5, 0x2bc if-ge v4, v5, :cond_1e goto :goto_1f :cond_1e move v3, v2 .line 106 :goto_1f iput-boolean v3, p0, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->isHardwareConfigAllowed:Z .line 108 iget-boolean v2, p0, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->isHardwareConfigAllowed:Z if-nez v2, :cond_44 const-string v2, "Downsampler" const/4 v3, 0x5 invoke-static {v2, v3}, Landroid/util/Log;->isLoggable(Ljava/lang/String;I)Z move-result v2 if-eqz v2, :cond_44 .line 109 const-string v2, "Downsampler" new-instance v3, Ljava/lang/StringBuilder; invoke-direct {v3, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; move-result-object v1 invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object v0 invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v0 invoke-static {v2, v0}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I .line 116 :cond_44 iget-boolean v0, p0, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->isHardwareConfigAllowed:Z :try_end_46 .catchall {:try_start_5 .. :try_end_46} :catchall_48 monitor-exit p0 return v0 :catchall_48 move-exception v0 :try_start_49 monitor-exit p0 :try_end_4a .catchall {:try_start_49 .. :try_end_4a} :catchall_48 throw v0 .end method # virtual methods .method setHardwareConfigIfAllowed(IILandroid/graphics/BitmapFactory$Options;Lcom/bumptech/glide/load/DecodeFormat;ZZ)Z .registers 8 const/4 p4, 0x0 if-eqz p5, :cond_24 .line 83 sget p5, Landroid/os/Build$VERSION;->SDK_INT:I const/16 v0, 0x1a if-lt p5, v0, :cond_24 if-eqz p6, :cond_c goto :goto_24 :cond_c const/16 p5, 0x80 if-lt p1, p5, :cond_1a if-lt p2, p5, :cond_1a .line 93 invoke-direct {p0}, Lcom/bumptech/glide/load/resource/bitmap/HardwareConfigState;->isFdSizeBelowHardwareLimit()Z move-result p1 if-eqz p1, :cond_1a const/4 p1, 0x1 goto :goto_1b :cond_1a move p1, p4 :goto_1b if-eqz p1, :cond_23 .line 96 sget-object p2, Landroid/graphics/Bitmap$Config;->HARDWARE:Landroid/graphics/Bitmap$Config; iput-object p2, p3, Landroid/graphics/BitmapFactory$Options;->inPreferredConfig:Landroid/graphics/Bitmap$Config; .line 97 iput-boolean p4, p3, Landroid/graphics/BitmapFactory$Options;->inMutable:Z :cond_23 return p1 :cond_24 :goto_24 return p4 .end method