gq.java 9.19 KB
import android.support.v4.os.TraceCompat;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.Adapter;
import android.support.v7.widget.RecyclerView.LayoutManager;
import android.support.v7.widget.RecyclerView.LayoutManager.LayoutPrefetchRegistry;
import android.support.v7.widget.RecyclerView.Recycler;
import android.support.v7.widget.RecyclerView.State;
import android.support.v7.widget.RecyclerView.ViewHolder;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.concurrent.TimeUnit;

public final class gq
  implements Runnable
{
  public static final ThreadLocal<gq> a = new ThreadLocal();
  static Comparator<gq.b> e = new Comparator() {};
  public ArrayList<RecyclerView> b = new ArrayList();
  long c;
  public long d;
  private ArrayList<gq.b> f = new ArrayList();
  
  private static RecyclerView.ViewHolder a(RecyclerView paramRecyclerView, int paramInt, long paramLong)
  {
    int j = paramRecyclerView.f.b();
    int i = 0;
    RecyclerView.ViewHolder localViewHolder;
    if (i < j)
    {
      localViewHolder = RecyclerView.a(paramRecyclerView.f.c(i));
      if ((localViewHolder.b == paramInt) && (!localViewHolder.h()))
      {
        i = 1;
        label53:
        if (i == 0) {
          break label77;
        }
        paramRecyclerView = null;
      }
    }
    label77:
    RecyclerView.Recycler localRecycler;
    do
    {
      return paramRecyclerView;
      i += 1;
      break;
      i = 0;
      break label53;
      localRecycler = paramRecyclerView.d;
      localViewHolder = localRecycler.a(paramInt, paramLong);
      paramRecyclerView = localViewHolder;
    } while (localViewHolder == null);
    if (localViewHolder.j())
    {
      localRecycler.recycleView(localViewHolder.itemView);
      return localViewHolder;
    }
    localRecycler.a(localViewHolder, false);
    return localViewHolder;
  }
  
  public final void a(RecyclerView paramRecyclerView, int paramInt1, int paramInt2)
  {
    if ((paramRecyclerView.isAttachedToWindow()) && (this.c == 0L))
    {
      this.c = paramRecyclerView.getNanoTime();
      paramRecyclerView.post(this);
    }
    paramRecyclerView = paramRecyclerView.E;
    paramRecyclerView.a = paramInt1;
    paramRecyclerView.b = paramInt2;
  }
  
  public final void run()
  {
    for (;;)
    {
      int j;
      try
      {
        TraceCompat.beginSection("RV Prefetch");
        bool = this.b.isEmpty();
        if (bool) {
          return;
        }
        long l1 = TimeUnit.MILLISECONDS.toNanos(((RecyclerView)this.b.get(0)).getDrawingTime());
        if (l1 == 0L) {
          return;
        }
        long l2 = l1 + this.d;
        int m = this.b.size();
        j = 0;
        int i = 0;
        Object localObject1;
        int k;
        if (j < m)
        {
          localObject1 = (RecyclerView)this.b.get(j);
          ((RecyclerView)localObject1).E.a((RecyclerView)localObject1, false);
          k = ((RecyclerView)localObject1).E.d;
          j += 1;
          i = k + i;
          continue;
        }
        this.f.ensureCapacity(i);
        i = 0;
        j = 0;
        Object localObject4;
        gq.a locala;
        if (j < m)
        {
          localObject4 = (RecyclerView)this.b.get(j);
          locala = ((RecyclerView)localObject4).E;
          int n = Math.abs(locala.a) + Math.abs(locala.b);
          k = 0;
          if (k >= locala.d * 2) {
            break label657;
          }
          if (i >= this.f.size())
          {
            localObject1 = new gq.b();
            this.f.add(localObject1);
            int i1 = locala.c[(k + 1)];
            if (i1 > n) {
              break label651;
            }
            bool = true;
            ((gq.b)localObject1).a = bool;
            ((gq.b)localObject1).b = n;
            ((gq.b)localObject1).c = i1;
            ((gq.b)localObject1).d = ((RecyclerView)localObject4);
            ((gq.b)localObject1).e = locala.c[k];
            k += 2;
            i += 1;
            continue;
          }
          localObject1 = (gq.b)this.f.get(i);
          continue;
        }
        Collections.sort(this.f, e);
        i = 0;
        if (i < this.f.size())
        {
          localObject1 = (gq.b)this.f.get(i);
          if (((gq.b)localObject1).d != null)
          {
            if (((gq.b)localObject1).a)
            {
              l1 = Long.MAX_VALUE;
              localObject4 = a(((gq.b)localObject1).d, ((gq.b)localObject1).e, l1);
              if ((localObject4 == null) || (((RecyclerView.ViewHolder)localObject4).a == null)) {
                continue;
              }
              localObject4 = (RecyclerView)((RecyclerView.ViewHolder)localObject4).a.get();
              if (localObject4 == null) {
                continue;
              }
              if ((((RecyclerView)localObject4).w) && (((RecyclerView)localObject4).f.b() != 0)) {
                ((RecyclerView)localObject4).a();
              }
              locala = ((RecyclerView)localObject4).E;
              locala.a((RecyclerView)localObject4, true);
              j = locala.d;
              if (j == 0) {
                continue;
              }
            }
            try
            {
              TraceCompat.beginSection("RV Nested Prefetch");
              RecyclerView.State localState = ((RecyclerView)localObject4).F;
              RecyclerView.Adapter localAdapter = ((RecyclerView)localObject4).l;
              localState.c = 1;
              localState.d = localAdapter.getItemCount();
              localState.e = false;
              localState.f = false;
              localState.g = false;
              localState.h = false;
              j = 0;
              if (j < locala.d * 2)
              {
                a((RecyclerView)localObject4, locala.c[j], l2);
                j += 2;
                continue;
                l1 = l2;
                continue;
              }
              TraceCompat.endSection();
              ((gq.b)localObject1).a = false;
              ((gq.b)localObject1).b = 0;
              ((gq.b)localObject1).c = 0;
              ((gq.b)localObject1).d = null;
              ((gq.b)localObject1).e = 0;
              i += 1;
              continue;
            }
            finally
            {
              TraceCompat.endSection();
            }
          }
        }
        this.c = 0L;
      }
      finally
      {
        this.c = 0L;
        TraceCompat.endSection();
      }
      TraceCompat.endSection();
      return;
      label651:
      boolean bool = false;
      continue;
      label657:
      j += 1;
    }
  }
  
  public static final class a
    implements RecyclerView.LayoutManager.LayoutPrefetchRegistry
  {
    int a;
    int b;
    int[] c;
    int d;
    
    public final void a()
    {
      if (this.c != null) {
        Arrays.fill(this.c, -1);
      }
    }
    
    final void a(RecyclerView paramRecyclerView, boolean paramBoolean)
    {
      this.d = 0;
      if (this.c != null) {
        Arrays.fill(this.c, -1);
      }
      RecyclerView.LayoutManager localLayoutManager = paramRecyclerView.m;
      if ((paramRecyclerView.l != null) && (localLayoutManager != null) && (localLayoutManager.isItemPrefetchEnabled()))
      {
        if (!paramBoolean) {
          break label101;
        }
        if (!paramRecyclerView.e.d()) {
          localLayoutManager.collectInitialPrefetchPositions(paramRecyclerView.l.getItemCount(), this);
        }
      }
      for (;;)
      {
        if (this.d > localLayoutManager.w)
        {
          localLayoutManager.w = this.d;
          localLayoutManager.x = paramBoolean;
          paramRecyclerView.d.a();
        }
        return;
        label101:
        if (!paramRecyclerView.hasPendingAdapterUpdates()) {
          localLayoutManager.collectAdjacentPrefetchPositions(this.a, this.b, paramRecyclerView.F, this);
        }
      }
    }
    
    public final boolean a(int paramInt)
    {
      boolean bool2 = false;
      boolean bool1 = bool2;
      int j;
      int i;
      if (this.c != null)
      {
        j = this.d;
        i = 0;
      }
      for (;;)
      {
        bool1 = bool2;
        if (i < j * 2)
        {
          if (this.c[i] == paramInt) {
            bool1 = true;
          }
        }
        else {
          return bool1;
        }
        i += 2;
      }
    }
    
    public final void addPosition(int paramInt1, int paramInt2)
    {
      if (paramInt2 < 0) {
        throw new IllegalArgumentException("Pixel distance must be non-negative");
      }
      int i = this.d * 2;
      if (this.c == null)
      {
        this.c = new int[4];
        Arrays.fill(this.c, -1);
      }
      for (;;)
      {
        this.c[i] = paramInt1;
        this.c[(i + 1)] = paramInt2;
        this.d += 1;
        return;
        if (i >= this.c.length)
        {
          int[] arrayOfInt = this.c;
          this.c = new int[i * 2];
          System.arraycopy(arrayOfInt, 0, this.c, 0, arrayOfInt.length);
        }
      }
    }
  }
  
  static final class b
  {
    public boolean a;
    public int b;
    public int c;
    public RecyclerView d;
    public int e;
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/gq.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */