<Swing Dev> <SwingDev> [9] Review request: 8033233 [JLightweightFrame] support default JViewport BLIT_SCROLL_MODE
Alexander Scherbatiy
alexandr.scherbatiy at oracle.com
Thu Jan 30 14:18:29 UTC 2014
Could you add a test to the fix?
Thanks,
Alexandr.
On 1/30/2014 5:49 PM, Anton V. Tarasov wrote:
> Hi all,
>
> Please review the fix.
>
> jira: https://bugs.openjdk.java.net/browse/JDK-8033233
> webrev: http://cr.openjdk.java.net/~ant/JDK-8033233/webrev.0
>
> Here I'm duplicating JIRA:
>
> The point of the fix is that it introduces a RepaintListener which can
> be added to a RepaintManager in order to get back notifications of
> repaints performed as BLITs. JLightweightFrame registers such a
> listener to its RM instance. JViewport is the source of those
> notifications. Now it works in default BLIT_SCROLL_MODE.
>
> Shortly, the mechanism of repainting of a JLF is the following. Once a
> JLF's child component is requesting repaint, an appropriate repaint
> runnable is scheduled by the RepaintManager (RM). The runnable is then
> gets dispatched by the RM which calls the paint() method of the root
> component, that is the JLF. JLF overrides this method in the way that
> after all the painting is done (super.paint) it initiates a pixel bits
> transfer to the host application (e.g. SwingNode). In case of
> JViewport, when it works in the default BLIT scroll mode, scrolling of
> the JViewport doesn't lead to a repaint runnable being dispatched.
> Instead, JViewport immediately repaints its content (via blitting +
> repainting a dirty area) and then tells the RM there's nothing to
> repaint (so the runnable scheduled is just skipped). As the result,
> the JLF doesn't get any notification of the update.
>
> As a workaround to this problem, JViewport had been forcibly switched
> to the BACKINGSTORE scroll mode, in which case it passes the whole
> repainting cycle.
>
> Regards,
> Anton.
More information about the swing-dev
mailing list