glide icon indicating copy to clipboard operation
glide copied to clipboard

Glide Compose: java.lang.IllegalArgumentException caused by sideEffect run asynchronously

Open hehua2008 opened this issue 1 year ago • 0 comments
trafficstars

The GlideNode call to reproduce the bug: ->1st onNewReuest -> invalidateDraw -> onAttach -> launchRequest(schedule 1st sideEffect)

-> 2nd onNewRequest(requestBuilder not changed but loadingPlaceholder or errorPlaceholder changed -> restartLoad=true) -> launchRequest(schedule 2nd sideEffect)

-> 1st sideEffect run and (currentJob=newValue) -> 2nd sideEffect run (requestBuilder not changed) but Preconditions.checkArgument(currentJob == null) throw java.lang.IllegalArgumentException

e.g:

    val placeholderPair = remember(loadingPainter, failurePainter) {
        placeholder(loadingPainter) to placeholder(failurePainter)
    }
    val switch = Random.nextBoolean()

    GlideImage(
        model = url,
        contentDescription = url,
        contentScale = ContentScale.FillWidth,
        loading = if (!switch) placeholderPair.first else placeholderPair.second,
        failure = if (!switch) placeholderPair.second else placeholderPair.first,
        modifier = modifier
            .fillMaxWidth()
            .aspectRatio(1f)
    )

hehua2008 avatar Apr 01 '24 00:04 hehua2008