On 1/26/2010 2:57 PM, Pavel Tisnovsky wrote:
Artem Ananiev wrote:
I've added synchronization of scrolling using method
SunToolkit.realSync(), it seems to works perfectly on RHEL x86_64 +
Gnome and Fedora 10 i386 + Gnome. Thanks Anthony Petrov for his tip!

the problem looks really, really strange... Util.waitForIdle() is
implemented exactly the same way: as a call to realSync() - while you
wrote that calling waitForIdle() didn't help.

Please, postpone your fix (don't integrate into AWT gate repository)
and check if Util.waitForIdle() does the job. realSync() is a
low-level and private Sun's API, so I'd prefer having it in a single
place (in Util) so we can change it easily, if necessary (e.g. when
realSync() becomes public).

Yes, you are right, Util.waitForIdle() simply calls realSync(). It is
interesting - without this sync (waifForIdle/realSync, does not matter
which I use) this test always fails on my machine (i.e. it does not
selects all lines of TextArea), with sync included it fails "only" in
circa 1/10 of its run. At this time, I don't plan to push this patch as
it isn't 100% correct.

realSync() only deals with events - native and Java - but it doesn't cover things like native animations (e.g. on Vista/Seven with Aero enabled, a window is not minimized instantly, but can be animated, and realSync() couldn't be used to track this animation is over or in progress). That's why sometimes, in rare cases, a simple Thread.sleep() is a way to go.

Thanks,

Artem

Thanks,

Artem

This patch can be applied to OpenJDK7 too.

Thanks in advance
Pavel Tisnovsky
Red Hat QA



Reply via email to