Skip to content

Commit 07429ff

Browse files
gmackallreidbaker
authored andcommitted
Replace LinkedLists that are used as a queue in android FlutterRenderer with ArrayDeques (flutter#51494)
Inspired by flutter#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 b4bfd45 commit 07429ff

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;
@@ -437,7 +437,7 @@ final class ImageReaderSurfaceProducer
437437

438438
private Object lock = new Object();
439439
// REQUIRED: The following fields must only be accessed when lock is held.
440-
private final LinkedList<PerImageReader> imageReaderQueue = new LinkedList<PerImageReader>();
440+
private final ArrayDeque<PerImageReader> imageReaderQueue = new ArrayDeque<PerImageReader>();
441441
private final HashMap<ImageReader, PerImageReader> perImageReaders =
442442
new HashMap<ImageReader, PerImageReader>();
443443
private PerImage lastDequeuedImage = null;
@@ -457,7 +457,7 @@ public PerImage(Image image, long queuedTime) {
457457
/** Internal class: state held per ImageReader. */
458458
private class PerImageReader {
459459
public final ImageReader reader;
460-
private final LinkedList<PerImage> imageQueue = new LinkedList<PerImage>();
460+
private final ArrayDeque<PerImage> imageQueue = new ArrayDeque<PerImage>();
461461
private boolean closed = false;
462462

463463
private final ImageReader.OnImageAvailableListener onImageAvailableListener =

0 commit comments

Comments
 (0)