Community
Participate
Working Groups
displayToolTipNear(...) method in ToolTipHelper uses Timer to schedule expiration. However, canceling is done within Display.getDefault().syncExec(...), and it sometimes happens that two threads wait on each other causing a hang. This can be easily fixed by changing syncExec to asyncExec. Note that this code that involves syncExec hasn't changed in a while, but there were some jdk changes (in Timer class) that seem to expose the problem in this case. The fix is attached.
Created attachment 187773 [details] Patch
Even better would be to avoid using Timer, since it spawns a new thread. It turns out SWT supports timers already: Display.getDefault().timerExec(5000, new Runnable()...)
(In reply to comment #1) > Created attachment 187773 [details] > Patch Reviewed with Alex Boyko and he agrees so committed to R3_6_maintenance and HEAD.