602 {
603 PerImage r = null;
604 synchronized (lock) {
605 for (PerImageReader reader : imageReaderQueue) {
606 r = reader.dequeueImage();
607 if (r == null) {
608
609 continue;
610 }
611 if (VERBOSE_LOGS) {
612 if (lastDequeueTime != 0) {
613 long now = System.nanoTime();
614 long dequeueDelta = now - lastDequeueTime;
615 long queuedFor = now - r.queuedTime;
616 long scheduleDelay = now - lastScheduleTime;
618 TAG,
619 ""
620 + reader.reader.hashCode()
621 + " dequeued image="
622 + r.image.hashCode()
623 + " queuedFor= "
625 + " dequeueDelta="
627 + " scheduleDelay="
629 lastDequeueTime = now;
630 } else {
631 lastDequeueTime = System.nanoTime();
632 }
633 }
634 if (lastDequeuedImage != null) {
635 if (VERBOSE_LOGS) {
637 TAG,
638 ""
639 + lastReaderDequeuedFrom.reader.hashCode()
640 + " closing image="
641 + lastDequeuedImage.image.hashCode());
642 }
643
644
645
646 lastDequeuedImage.image.close();
647 lastDequeuedImage = null;
648 }
649
650
651 lastDequeuedImage = r;
652 lastReaderDequeuedFrom = reader;
653 break;
654 }
656 }
657 return r;
658 }
double deltaMillis(long deltaNanos)
void pruneImageReaderQueue()
void Log(const char *format,...) SK_PRINTF_LIKE(1