RFR: 4200096: OffScreenImageSource.removeConsumer NullPointerException [v6]
Jeremy
duke at openjdk.org
Fri Apr 21 23:18:46 UTC 2023
On Fri, 21 Apr 2023 21:31:54 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:
>> Jeremy has updated the pull request incrementally with one additional commit since the last revision:
>>
>> 4200096: removing whitespace diffs
>>
>> prrace pointed out this branch introduced some pointless whitespace changes.
>> https://github.com/openjdk/jdk/pull/13408#discussion_r1164740594
>
> src/java.desktop/share/classes/sun/awt/image/OffScreenImageSource.java line 208:
>
>> 206: // ImageConsumer detaches itself from this ImageProducer mid-production.
>> 207:
>> 208: if (theConsumer != null) {
>
> Do we need here and a few lines above save the theConsumer to the local, then check to null, then call imageComplete?
My understanding is:
This ticket focuses on the use case where an ImageConsumer detaches itself from this OffScreenImageSource mid-production by calling `removeConsumer(ImageConsumer)`. So in this situation: I'd argue no, the ImageConsumer should not get an `imageComplete(int)` notification. Because it opted to remove itself.
Does this answer your question, or are you considering a different use case?
(Note: `addConsumer` is synchronized, so it's *usually* reasonable to assume the field `OffScreeImageSource#theConsumer` acts *mostly* like a local variable. I could contrive a new failing test case if one ImageConsumer called `addConsumer(newDifferentConsumer)` while receiving a notification, but that's a separate discussion. It's beyond the scope of this ticket, and (to my knowledge) it's a contrived edge case that nobody has ever actually complained about in the real world. And it would fail with or without the changes in this PR...)
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13408#discussion_r1174219442
More information about the client-libs-dev
mailing list