File tree 2 files changed +17
-1
lines changed
src/main/java/com/bumptech/glide/load/resource/gif
test/src/test/java/com/bumptech/glide/load/resource/gif
2 files changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -268,7 +268,11 @@ void onFrameReady(DelayTarget delayTarget) {
268
268
// already incremented the frame pointer and can't decode the same frame again. Instead we'll
269
269
// just hang on to this next frame until start() or clear() are called.
270
270
if (!isRunning ) {
271
- pendingTarget = delayTarget ;
271
+ if (startFromFirstFrame ) {
272
+ handler .obtainMessage (FrameLoaderCallback .MSG_CLEAR , delayTarget ).sendToTarget ();
273
+ } else {
274
+ pendingTarget = delayTarget ;
275
+ }
272
276
return ;
273
277
}
274
278
Original file line number Diff line number Diff line change @@ -338,6 +338,18 @@ public void onFrameReady_whenNotRunning_callsFrameReadyWithNewFrameOnStart() {
338
338
assertThat (loader .getCurrentFrame ()).isEqualTo (expected );
339
339
}
340
340
341
+ @ Test
342
+ public void onFrameReady_whenInvisible_setVisibleLater () {
343
+ loader = createGifFrameLoader (/*handler=*/ null );
344
+ // The target is invisible at this point.
345
+ loader .unsubscribe (callback );
346
+ loader .setNextStartFromFirstFrame ();
347
+ DelayTarget loaded = mock (DelayTarget .class );
348
+ when (loaded .getResource ()).thenReturn (Bitmap .createBitmap (100 , 100 , Bitmap .Config .ARGB_8888 ));
349
+ loader .onFrameReady (loaded );
350
+ loader .subscribe (callback );
351
+ }
352
+
341
353
@ Test
342
354
public void startFromFirstFrame_withPendingFrame_clearsPendingFrame () {
343
355
loader = createGifFrameLoader (/*handler=*/ null );
You can’t perform that action at this time.
0 commit comments