On 4/5/17, 12:52 PM, Semyon Sadetsky wrote:
Okay. Thank you to you all!

The root cause why we need to add sync is a new way to grab/ungrab focus used 
in the GTK3 glass implementation.

The GTK2 way to grab/ungrab is still applicable in GTK3 though it is 
deprecated. But the used GTK3 grab/ungrab is deprecated as well since version 
3.20 (Ubuntu 16.04 LTS has 3.18 assigned, but newer OS versions will come with 
higher number).

David, do you think we could use the same GTK2 grab/ungrab for GTK3 to avoid 
sync?
I am OK with that.

Also, I found some other potential issues in the GTK3 implementation.

1. gdk_device_manager_get_client_pointer() is used for getting pointer position and 
for D&D pointer grab, and the documentation to this function says:

You should use this function seldomly, only in code that isn’t triggered by aGdkEvent 
<https://developer.gnome.org/gdk3/stable/gdk3-Event-Structures.html#GdkEvent>and 
there aren’t other means to get a meaningfulGdkDevice 
<https://developer.gnome.org/gdk3/stable/GdkDevice.html>to operate on.

but we are using it in processing of GDK_BUTTON_PRESS, GDK_BUTTON_RELEASE and 
GDK_DRAG_STATUS events.

2. GList obtained by gdk_device_manager_list_devices() during grab/ungrab 
operations is not freed,  so it causes memory leak.

I will file bug for 1. and for 2. if the new GDK3 grab/ungrab will be preserved.

--Semyon


On 04/04/2017 04:53 PM, Kevin Rushforth wrote:
I raised the same concern in the JBS issue, especially for mouse and keyboard 
events.

-- Kevin


Jim Graham wrote:
I don't think I was specifically involved in AWT fixes for that issue, but the 
concerns that David raises are all valid and Phil correctly points out that 
this is much worse in a network display environment...

            ...jim

On 4/4/17 3:53 PM, Philip Race wrote:
AWT used to have really bad at X11 remote display and
it was looked at a few times and I think it was improved
noticeably when we could get rid of  "round trip" requests.
I think Jim had a hand in some of that work.

So I am sure a round trip - or similar - is bad for performance.

If you want to measure the effect of such change, remote display to
your desktop from a machine in a geographically distant site.

It is the latency that kills performance, not the bandwidth.

-phil.

On 4/4/17, 3:43 PM, David Hill wrote:
On 4/4/17, 1:27 PM, Semyon Sadetsky wrote:
Hello Kevin & David,

Please review the fix for jfx9:

bug: https://bugs.openjdk.java.net/browse/JDK-8176844

webrev: http://cr.openjdk.java.net/~ssadetsky/8176844/

--Semyon


Semyon,

I have been sitting here for a while thinking about adding
gdk_display_sync(gdk_display_get_default());

I can see why this might address many issues, as it flushes the pipeline and 
waits for the X11 server to catch up.
That is balanced out by a historical distrust of using XSync in any situation 
where the consequences.

Part of me thinks it is minimal overhead though, the other part does not like 
stalling the asynchronous X11 design.

The other part of me would like to use this only for the window events that 
need it, instead of all of them.

and I found this in hte GTK docs:
gdk_events_pending ()
Waits for a GraphicsExpose or NoExpose event from the X server. This is used in 
the GtkText and GtkCList widgets in
GTK+ to make sure any GraphicsExpose events are handled before the widget is 
scrolled.

so perhaps this should be used in some cases (like setVisible).

sigh.

Will try to make up my mind tomorrow.

Dave.




--
David Hill<david.h...@oracle.com>
Java Embedded Development

"A man's feet should be planted in his country, but his eyes should survey the 
world."
-- George Santayana (1863 - 1952)

Reply via email to