On Tue, 10 Jun 2025 07:40:07 GMT, Sergey Bylokhov <s...@openjdk.org> wrote:

>>> Yes, we can do that. I had the idea to use it so that UnlinkObjects() would 
>>> be invoked by the EDT, which would eliminate the race condition.
>> 
>> Looks like the UnlinkObjects and _GetScreenImOn is already  executed under 
>> the same lock:
>>  - WComponentPeer.dispose->AwtObject::_Dispose()->Lock on 
>> SyncCS->WM_AWT_DISPOSEPDATA->awt_Component.cpp.dispose()->UnlinkObjects()
>>  - WWindowPeer.getScreenImOn()->SyncCall()->Lock on 
>> SyncCS->AwtWindow._GetScreenImOn()
>> 
>> I think the only thing you should do is to replace the usage of 
>> JNI_GET_PDATA by the JNI_CHECK_PEER_GOTO and add a label "ret" at the end so 
>> default value of "result" will be returned.
>
> check how the _SetFocusableWindow is implemented below.

Hello @mrserb,

> I think the only thing you should do is to replace the usage of JNI_GET_PDATA 
> by the JNI_CHECK_PEER_GOTO and add a label "ret" at the end so default value 
> of "result" will be returned.

Yes, In the latest changes, I followed that approach to ensure that the peer is 
not yet destroyed in _GetScreenImOn() as explain in my latest comment. So if 
you agree I will remove the lock.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/25619#discussion_r2137650714

Reply via email to