Is it valid to call JComponent#paintImmediately on a non-EDT thread (yet)?

Philip Race philip.race at oracle.com
Fri Nov 17 18:42:46 UTC 2023


No, the code that calls setText() is where it starts.

-phil.

On 11/17/23 2:51 AM, Nikita Provotorov wrote:
> Thanks for the response!
> However I'd like to clarify: is it correct to say that the current 
> implementation of sun.awt.X11.XTextAreaPeer#repaintText 
> <https://github.com/openjdk/jdk/blob/8ec6b8de3bb3d7aeebdcb45d761b18cce3bab75e/src/java.desktop/unix/classes/sun/awt/X11/XTextAreaPeer.java#L258> is 
> wrong because it doesn't make sure if 
> /javax.swing.JComponent#paintImmediately/ is called on EDT only(e.g. 
> via/SwingUtilities#invokeLater/)?
>
> Best regards,
> Nikita Provotorov
>
>
> On Thu, Nov 16, 2023 at 9:30 PM Philip Race <philip.race at oracle.com> 
> wrote:
>
>     Because (like in this case), an AWT component might actually be
>     implemented using Swing,
>     the recommendation is to treat AWT components like Swing, and
>     update them only on the EDT.
>
>     -phil.
>
>     On 11/15/23 4:01 PM, Nikita Provotorov wrote:
>>     Hello!
>>     I've discovered that on X11 platforms a call
>>     of java.awt.TextComponent#setText can lead to a call
>>     of javax.swing.JComponent#paintImmediately(java.awt.Rectangle) on
>>     the same thread.
>>     Since java.awt.TextComponent#setText is allowed to be called on
>>     any thread (because it's AWT, not Swing),
>>     JComponent#paintImmediately may be called outside of EDT. Is this
>>     a valid behavior?
>>
>>     The following stacktrace shows how exactly this can happen:
>>
>>         at javax.swing.JComponent.paintImmediately
>>         at sun.awt.X11.XTextAreaPeer$AWTTextArea.repaintNow
>>         at sun.awt.X11.XTextAreaPeer.repaintText
>>         at sun.awt.X11.XTextAreaPeer.setText
>>         at java.awt.TextComponent.setText
>>
>>
>>     Best regards,
>>     Nikita Provotorov
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/client-libs-dev/attachments/20231117/985f5103/attachment.htm>


More information about the client-libs-dev mailing list