Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit cc73c5c

Browse files
authored
Replace LinkedLists that are used as a queue in android FlutterRenderer with ArrayDeques (#51494)
Inspired by #50767. [As their documentation notes](https://docs.oracle.com/javase/8/docs/api/java/util/ArrayDeque.html), `ArrayDeque`s are generally faster than LinkedList when used as a queue. Fixes flutter/flutter#143721 [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
1 parent c46bd77 commit cc73c5c

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

shell/platform/android/io/flutter/embedding/engine/renderer/FlutterRenderer.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@
2929
import java.io.IOException;
3030
import java.lang.ref.WeakReference;
3131
import java.nio.ByteBuffer;
32+
import java.util.ArrayDeque;
3233
import java.util.ArrayList;
3334
import java.util.HashMap;
3435
import java.util.HashSet;
3536
import java.util.Iterator;
36-
import java.util.LinkedList;
3737
import java.util.List;
3838
import java.util.Set;
3939
import java.util.concurrent.atomic.AtomicLong;
@@ -445,7 +445,7 @@ final class ImageReaderSurfaceProducer
445445

446446
private Object lock = new Object();
447447
// REQUIRED: The following fields must only be accessed when lock is held.
448-
private final LinkedList<PerImageReader> imageReaderQueue = new LinkedList<PerImageReader>();
448+
private final ArrayDeque<PerImageReader> imageReaderQueue = new ArrayDeque<PerImageReader>();
449449
private final HashMap<ImageReader, PerImageReader> perImageReaders =
450450
new HashMap<ImageReader, PerImageReader>();
451451
private PerImage lastDequeuedImage = null;
@@ -465,7 +465,7 @@ public PerImage(Image image, long queuedTime) {
465465
/** Internal class: state held per ImageReader. */
466466
private class PerImageReader {
467467
public final ImageReader reader;
468-
private final LinkedList<PerImage> imageQueue = new LinkedList<PerImage>();
468+
private final ArrayDeque<PerImage> imageQueue = new ArrayDeque<PerImage>();
469469
private boolean closed = false;
470470

471471
private final ImageReader.OnImageAvailableListener onImageAvailableListener =

0 commit comments

Comments
 (0)