Bug 264626

Summary: x11-toolkits/swt: improve usage
Product: Ports & Packages Reporter: huanghwh
Component: Individual Port(s)Assignee: Max Brazhnikov <makc>
Status: New ---    
Severity: Affects Only Me Flags: bugzilla: maintainer-feedback? (makc)
Priority: ---    
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
swt.diff
none
Test code
none
without patch
none
with patch none

Description huanghwh 2022-06-12 07:37:58 UTC
Created attachment 234631 [details]
swt.diff

Some improvements:
- pack native so files into swt.jar, reduce some false alarm
- set ASYNC_EXEC_TIMEOUT_MS = 1000 is more better
- Image.java patch: fixed black area and and vertical bar with org.eclipse.ui.forms.widgets.Section.TITLE_BAR on HiDPI 2x scale
Comment 1 Max Brazhnikov freebsd_committer freebsd_triage 2022-06-16 10:04:50 UTC
(In reply to huanghwh from comment #0)

> pack native so files into swt.jar, reduce some false alarm

Could you provide more info? 

> set ASYNC_EXEC_TIMEOUT_MS = 1000 is more better

You're changing it again, so what the difference does it make? "Better" or "worst" are subjective, could you explain what's wrong with upstream 10000 and why 1000 is better.
Comment 2 huanghwh 2022-06-16 22:59:01 UTC
without packing so in jar, when run org.eclipse.swt.examples.browserexample.BrowserExample, got this:

SWT Webkit.java Error: Could not find webkit extension. BrowserFunction functionality will not be available. 
(swt version: 4946r21) SWT Glue code version: 56.0 info: +BrowserFunction with private GDBus, +WebKitExtension Folder versioning, +WebKitExtension OSGI support, +setUrl(..postData..), setCookie(), getCookie +mouseDown/Focus +WebKit2 only
WebKit2Gtk version 2.34.6
Please report this issue *with steps to reproduce* via:
 https://bugs.eclipse.org/bugs/enter_bug.cgi?alias=&assigned_to=platform-swt-inbox%40eclipse.org&attach_text=&blocked=&bug_file_loc=http%3A%2F%2F&bug_severity=normal&bug_status=NEW&comment=&component=SWT&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&defined_groups=1&dependson=&description=&flag_type-1=X&flag_type-11=X&flag_type-12=X&flag_type-13=X&flag_type-14=X&flag_type-15=X&flag_type-16=X&flag_type-2=X&flag_type-4=X&flag_type-6=X&flag_type-7=X&flag_type-8=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=Linux&product=Platform&qa_contact=&rep_platform=PC&requestee_type-1=&requestee_type-2=&short_desc=webkit2_BrowserProblem
For bug report, please atatch this stack trace:
java.lang.Throwable: 
	at org.eclipse.swt.browser.WebKit.getStackTrace(Unknown Source)
	at org.eclipse.swt.browser.WebKit.getInternalErrorMsg(Unknown Source)
	at org.eclipse.swt.browser.WebKit.access$200(Unknown Source)
	at org.eclipse.swt.browser.WebKit$WebKitExtension.initializeWebExtensions_callback(Unknown Source)
	at org.eclipse.swt.internal.webkit.WebKitGTK.webkit_web_view_load_uri(Native Method)
	at org.eclipse.swt.browser.WebKit.setUrl(Unknown Source)
	at org.eclipse.swt.browser.Browser.setUrl(Unknown Source)
	at org.eclipse.swt.browser.Browser.setUrl(Unknown Source)
	at org.eclipse.swt.examples.browserexample.BrowserExample.<init>(BrowserExample.java:96)
	at org.eclipse.swt.examples.browserexample.BrowserExample.main(BrowserExample.java:355)

> set ASYNC_EXEC_TIMEOUT_MS = 1000 is more better

when run net-p2p/vuze, if set ASYNC_EXEC_TIMEOUT_MS = 100, this error is so often:

SWT call to Webkit timed out after 100ms. No return value will be provided.
Possible reasons:
1) Problem: Your javascript needs more than 100ms to execute.
   Solution: Don't run such javascript, it blocks Eclipse's UI. SWT currently allows such code to complete, but this error is thrown 
     and the return value of execute()/evalute() will be false/null.

2) However, if you believe that your application should execute as expected (in under100 ms),
 then it might be a deadlock in SWT/Browser/webkit2 logic.
 I.e, it might be a bug in SWT (e.g this does not occur on Windows/Cocoa, but occurs on Linux). If you believe it to be a bug in SWT, then
Please report this issue *with steps to reproduce* via:
 https://bugs.eclipse.org/bugs/enter_bug.cgi?alias=&assigned_to=platform-swt-inbox%40eclipse.org&attach_text=&blocked=&bug_file_loc=http%3A%2F%2F&bug_severity=normal&bug_status=NEW&comment=&component=SWT&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&defined_groups=1&dependson=&description=&flag_type-1=X&flag_type-11=X&flag_type-12=X&flag_type-13=X&flag_type-14=X&flag_type-15=X&flag_type-16=X&flag_type-2=X&flag_type-4=X&flag_type-6=X&flag_type-7=X&flag_type-8=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=Linux&product=Platform&qa_contact=&rep_platform=PC&requestee_type-1=&requestee_type-2=&short_desc=webkit2_BrowserProblem
For bug report, please atatch this stack trace:
java.lang.Throwable: 
	at org.eclipse.swt.browser.WebKit.getStackTrace(Unknown Source)
	at org.eclipse.swt.browser.WebKit.getInternalErrorMsg(Unknown Source)
	at org.eclipse.swt.browser.WebKit.access$200(Unknown Source)
	at org.eclipse.swt.browser.WebKit$Webkit2AsyncToSync.execAsyncAndWaitForReturn(Unknown Source)
	at org.eclipse.swt.browser.WebKit$Webkit2AsyncToSync.runjavascript(Unknown Source)
	at org.eclipse.swt.browser.WebKit.execute(Unknown Source)
	at org.eclipse.swt.browser.Browser.execute(Unknown Source)
	at org.gudy.azureus2.ui.swt.BrowserWrapperSWT.execute(Unknown Source)
	at com.aelitis.azureus.ui.swt.browser.BrowserContext$11.runSupport(Unknown Source)
	at org.gudy.azureus2.core3.util.AERunnable.run(Unknown Source)
	at org.gudy.azureus2.ui.swt.Utils.execSWTThread(Unknown Source)
	at org.gudy.azureus2.ui.swt.Utils.execSWTThread(Unknown Source)
	at com.aelitis.azureus.ui.swt.browser.BrowserContext.executeInBrowser(Unknown Source)
	at com.aelitis.azureus.ui.swt.browser.BrowserContext.sendBrowserMessage(Unknown Source)
	at com.aelitis.azureus.ui.swt.browser.BrowserContext.sendBrowserMessage(Unknown Source)
	at com.aelitis.azureus.ui.swt.skin.SWTSkinObjectBrowser$7.runSupport(Unknown Source)
	at org.gudy.azureus2.core3.util.AERunnable.run(Unknown Source)
	at org.eclipse.swt.widgets.RunnableLock.run(Unknown Source)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Unknown Source)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Unknown Source)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
	at org.gudy.azureus2.ui.swt.mainwindow.SWTThread.<init>(Unknown Source)
	at org.gudy.azureus2.ui.swt.mainwindow.SWTThread.createInstance(Unknown Source)
	at com.aelitis.azureus.ui.swt.Initializer.<init>(Unknown Source)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at org.gudy.azureus2.ui.swt.Main.<init>(Unknown Source)
	at org.gudy.azureus2.ui.swt.Main.main(Unknown Source)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.aelitis.azureus.launcher.MainExecutor$1.run(Unknown Source)
	at java.base/java.lang.Thread.run(Thread.java:829)

 Additional information about the error is as following:
 The following javascript was executed:
try { az.msg.dispatch('browser', 'shown') } catch ( e ) { }
Comment 3 huanghwh 2022-06-16 23:03:15 UTC
Created attachment 234737 [details]
Test code
Comment 4 huanghwh 2022-06-16 23:04:45 UTC
Created attachment 234738 [details]
without patch
Comment 5 huanghwh 2022-06-16 23:05:25 UTC
Created attachment 234739 [details]
with patch
Comment 6 huanghwh 2022-06-16 23:07:08 UTC
> - Image.java patch: fixed black area and and vertical bar with org.eclipse.ui.forms.widgets.Section.TITLE_BAR on HiDPI 2x scale

HelloWord4.java can show the bug.