Summary: | [GTK] Crash in WebCore::PlatformDisplayX11::supportsXComposite when running under Wayland | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Michael Catanzaro <mcatanzaro> | ||||||||||
Component: | WebKitGTK | Assignee: | Nobody <webkit-unassigned> | ||||||||||
Status: | RESOLVED FIXED | ||||||||||||
Severity: | Normal | CC: | bugs-noreply, cgarcia, mcatanzaro | ||||||||||
Priority: | P2 | ||||||||||||
Version: | WebKit Nightly Build | ||||||||||||
Hardware: | PC | ||||||||||||
OS: | Linux | ||||||||||||
See Also: | https://bugzilla.redhat.com/show_bug.cgi?id=1387180 | ||||||||||||
Attachments: |
|
Description
Michael Catanzaro
2016-11-18 05:13:08 PST
Why does ephy search provider use WebKit at all? WebKit requires a display to work, so when the shared display is created we try to guess the display to create. In the GTK+ port we ask gtk+ first for the default display, if the application called gtk_init we will always have either a X11 or Wayland display. If application didn't call gtk_init, we create our own display that is X11 display if webkit is built with X11 support. We should try to connect to wayland first and then to X11, like gtk+ does. Created attachment 295408 [details]
Patch
I think this should work.
I don't know why it fails to build in the bots, it builds fine locally. Created attachment 295412 [details]
Try to fix the build on the bots
Created attachment 295413 [details]
Fix EFL build
Created attachment 295415 [details]
Fix EFL build
(In reply to comment #1) > Why does ephy search provider use WebKit at all? https://bugzilla.gnome.org/show_bug.cgi?id=741595 Not sure if it can be avoided because that was two years ago and the bug doesn't have a backtrace. :( Ah here's a backtrace: https://bugzilla.redhat.com/show_bug.cgi?id=1174007 Looks like the search provider was trying to import bookmarks from Firefox. Wow. Comment on attachment 295415 [details] Fix EFL build View in context: https://bugs.webkit.org/attachment.cgi?id=295415&action=review Thanks. > Source/WebCore/platform/graphics/PlatformDisplay.h:74 > + PlatformDisplay(NativeDisplayOwned = NativeDisplayOwned::No); It doesn't matter much because the constructor is protected and not public, but without the explicit keyword you've created an implicit conversion between NativeDisplayOwned and PlatformDisplay, which is definitely undesired. So please add the explicit keyword before landing. Also, consider getting rid of the default argument. Our code will be more robust to future modification if you have to always pass NativeDisplayOwned when creating the display. Committed r209064: <http://trac.webkit.org/changeset/209064> |