diff --git a/extra/firefox/build b/extra/firefox/build index 8de29159..82400d0e 100755 --- a/extra/firefox/build +++ b/extra/firefox/build @@ -1,12 +1,9 @@ #!/bin/sh -e -for p in *.patch; do +for p in no-x11/*.patch *.patch; do patch -p1 < "$p" done -mv widget/x11/keysym2ucs.c widget/gtk/keysym2ucs.c -mv widget/x11/keysym2ucs.h widget/gtk/keysym2ucs.h - # Build autoconf 2.13 for Firefox's sole use. # See: https://bugzilla.mozilla.org/show_bug.cgi?id=104642 ( @@ -70,6 +67,7 @@ ac_add_options --enable-alsa ac_add_options --enable-strip ac_add_options --enable-release ac_add_options --enable-rust-simd +ac_add_options --enable-audio-backends=alsa ac_add_options --enable-install-strip ac_add_options --enable-official-branding ac_add_options --enable-application=browser @@ -95,7 +93,6 @@ ac_add_options --disable-callgrind ac_add_options --disable-profiling ac_add_options --disable-necko-wifi ac_add_options --disable-crashreporter -ac_add_options --disable-pulseaudio ac_add_options --disable-accessibility ac_add_options --disable-debug ac_add_options --disable-debug-symbols diff --git a/extra/firefox/checksums b/extra/firefox/checksums index 4d5b456c..1c5c4a32 100644 --- a/extra/firefox/checksums +++ b/extra/firefox/checksums @@ -1,9 +1,10 @@ -76d22279ce99588a728bb2d034064be0d5918b5900631f2148d4565b8a72e00b +664c0cc4e0fb70886aa4e652d144996045d533a18eebc7d61093103cbb2d5e7f +5a5089d5ddec57e0f41b1370ace7907d1b74df96b57be53623b9f52f28f92121 f0611136bee505811e9ca11ca7ac188ef5323a8e2ef19cffd3edb3cf08fd791e 3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f f0e8bb1f9b7eb0b01285495a2699df3a4b766784c1765a8f1aeedf63c0806369 036d96991646d0449ed0aa952e4fbe21b476ce994abc276e49d30e686708bd37 ba6e380bc3d2cbd1b3a505ab97687498335c334d8a4be7f465ad30ee366806c7 86ce49e650dd117f0f2928a7f810a58df526b1087c274d35eeb9c5bbf09eac5b +7f0fc610ea9c39d18d4cd3f0bdec35d3579dd844fd964421207fb26d8c52700f 4a232e3aa3973894a58c126b9e901c924d4e1ca3e00c4fc82d08de4b880183a9 -b70872a93fb765a14ea9f8c539ee7713cb211f0f76fde29f21e4d52e43ae6816 diff --git a/extra/firefox/patches/no-dbus.patch b/extra/firefox/patches/no-dbus.patch new file mode 100644 index 00000000..6038bf3d --- /dev/null +++ b/extra/firefox/patches/no-dbus.patch @@ -0,0 +1,79 @@ +diff --git a/third_party/rust/audio_thread_priority/Cargo.toml b/third_party/rust/audio_thread_priority/Cargo.toml +index 188eced..dabc898 100644 +--- a/third_party/rust/audio_thread_priority/Cargo.toml ++++ b/third_party/rust/audio_thread_priority/Cargo.toml +@@ -34,7 +34,6 @@ optional = true + version = "0.15.0" + + [features] +-default = ["with_dbus", "winapi"] + terminal-logging = ["simple_logger"] + with_dbus = ["dbus"] + [target."cfg(target_os = \"linux\")".dependencies.dbus] +diff --git a/third_party/rust/audio_thread_priority/.cargo-checksum.json b/third_party/rust/audio_thread_priority/.cargo-checksum.json +index 7e535d3..2c7d591 100644 +--- a/third_party/rust/audio_thread_priority/.cargo-checksum.json ++++ b/third_party/rust/audio_thread_priority/.cargo-checksum.json +@@ -1 +1 @@ +-{"files":{"Cargo.toml":"f2a927f4fdf4171eb2111ad9f770fd113d058d6d7dffa10fce7bd7577edda582","LICENSE":"32ee9dbf6196874fc9d406c54a888a6c4cbb9aa4a7f35b46befeaff43a78fe85","Makefile":"0f9a771cfb30c7c4b9961d82fdca4e9e229a955bb2e636474a4101389e18e938","README.md":"c123692b3b50dd621b896a8269814d609cbf1e532b461bf4a77854ddd607eb7a","atp_test.cpp":"8075a040941a65fb9e3f7cbf0535853ca6661c3ac442ec35569b42b24bbec797","audio_thread_priority.h":"f0ecaf1b674f794cde0dc834028e074d4e4675d22ae96acf08b2ae1dceb3474e","generate_osx_bindings.sh":"06e4e03450f788ced18d31fff5660919e6f6ec1119ddace363ffeb82f0518a71","src/lib.rs":"975de6a74e0adb999a08bc41f08a3bd68fe11c154731bc12c43df546ddb32949","src/mach_sys.rs":"352560fcb9b41d877cff92e5b3b04d6dc68b1f30508ce4b9aed78940120a883e","src/rt_linux.rs":"4ea9f6eb1902aff0126d1b957be7f723d599e9a8bbd75ca8013a2820ef5fe68a","src/rt_mach.rs":"e4587fdf640df37f251e50c6c9313f6a73eae4d54f4b8a84cefc6bc730e94be8","src/rt_win.rs":"c41f6e277051a92f8d38939cf9d78ee6deea736a4686b3bcd185492e47e1650a"},"package":"8b7cd1bfd03dab20ad72e0c5e58d65818d62c0d199d8dec8361053d0f073dbae"} +\ No newline at end of file ++{"files":{"Cargo.toml":"7c54f0856a9ee89d9f7b92085b7605cea741f72ea0df60754f4fa0076a19d9d5","LICENSE":"32ee9dbf6196874fc9d406c54a888a6c4cbb9aa4a7f35b46befeaff43a78fe85","Makefile":"0f9a771cfb30c7c4b9961d82fdca4e9e229a955bb2e636474a4101389e18e938","README.md":"c123692b3b50dd621b896a8269814d609cbf1e532b461bf4a77854ddd607eb7a","atp_test.cpp":"8075a040941a65fb9e3f7cbf0535853ca6661c3ac442ec35569b42b24bbec797","audio_thread_priority.h":"f0ecaf1b674f794cde0dc834028e074d4e4675d22ae96acf08b2ae1dceb3474e","generate_osx_bindings.sh":"06e4e03450f788ced18d31fff5660919e6f6ec1119ddace363ffeb82f0518a71","src/lib.rs":"975de6a74e0adb999a08bc41f08a3bd68fe11c154731bc12c43df546ddb32949","src/mach_sys.rs":"352560fcb9b41d877cff92e5b3b04d6dc68b1f30508ce4b9aed78940120a883e","src/rt_linux.rs":"4ea9f6eb1902aff0126d1b957be7f723d599e9a8bbd75ca8013a2820ef5fe68a","src/rt_mach.rs":"e4587fdf640df37f251e50c6c9313f6a73eae4d54f4b8a84cefc6bc730e94be8","src/rt_win.rs":"c41f6e277051a92f8d38939cf9d78ee6deea736a4686b3bcd185492e47e1650a"},"package":"8b7cd1bfd03dab20ad72e0c5e58d65818d62c0d199d8dec8361053d0f073dbae"} +\ No newline at end of file +diff --git a/toolkit/components/remote/moz.build b/toolkit/components/remote/moz.build +index d3bab6cf..656b32c7 100644 +--- a/toolkit/components/remote/moz.build ++++ b/toolkit/components/remote/moz.build +@@ -26,7 +26,7 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": + "nsUnixRemoteServer.h", + "RemoteUtils.h", + ] +- else: ++ elif CONFIG["MOZ_X11"]: + SOURCES += [ + "nsGTKRemoteServer.cpp", + "nsXRemoteClient.cpp", +diff --git a/toolkit/components/remote/nsRemoteService.cpp b/toolkit/components/remote/nsRemoteService.cpp +index ef4b95cb..4941f213 100644 +--- a/toolkit/components/remote/nsRemoteService.cpp ++++ b/toolkit/components/remote/nsRemoteService.cpp +@@ -12,12 +12,14 @@ + + #ifdef MOZ_WIDGET_GTK + # include "mozilla/WidgetUtilsGtk.h" +-# ifdef MOZ_ENABLE_DBUS ++# if defined(MOZ_ENABLE_DBUS) + # include "nsDBusRemoteServer.h" + # include "nsDBusRemoteClient.h" +-# else ++# elif defined(MOZ_X11) + # include "nsGTKRemoteServer.h" + # include "nsXRemoteClient.h" ++# else ++# include "nsRemoteClient.h" + # endif + #elif defined(XP_WIN) + # include "nsWinRemoteServer.h" +@@ -102,8 +104,10 @@ RemoteResult nsRemoteService::StartClient(const char* aDesktopStartupID) { + #ifdef MOZ_WIDGET_GTK + # if defined(MOZ_ENABLE_DBUS) + client = MakeUnique(); +-# else ++# elif defined(MOZ_X11) + client = MakeUnique(); ++# else ++ return REMOTE_NOT_FOUND; + # endif + #elif defined(XP_WIN) + client = MakeUnique(); +@@ -146,8 +150,10 @@ void nsRemoteService::StartupServer() { + #ifdef MOZ_WIDGET_GTK + # if defined(MOZ_ENABLE_DBUS) + mRemoteServer = MakeUnique(); +-# else ++# elif defined(MOZ_X11) + mRemoteServer = MakeUnique(); ++# else ++ return; + # endif + #elif defined(XP_WIN) + mRemoteServer = MakeUnique(); diff --git a/extra/firefox/patches/no-x11.patch b/extra/firefox/patches/no-x11.patch deleted file mode 100644 index f133eee1..00000000 --- a/extra/firefox/patches/no-x11.patch +++ /dev/null @@ -1,1670 +0,0 @@ -diff --git a/gfx/angle/moz.build.common b/gfx/angle/moz.build.common -index 8769a2fe96..6976853b35 100644 ---- a/gfx/angle/moz.build.common -+++ b/gfx/angle/moz.build.common -@@ -12,6 +12,9 @@ CXXFLAGS += CONFIG['MOZ_X11_CFLAGS'] - if CONFIG['INTEL_ARCHITECTURE']: - CXXFLAGS += CONFIG['SSE2_FLAGS'] - -+if not CONFIG['MOZ_X11']: -+ DEFINES['EGL_NO_X11'] = True -+ - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': - DEFINES['ANGLE_IS_WIN'] = True - -diff --git a/gfx/cairo/cairo/src/cairo-features.h b/gfx/cairo/cairo/src/cairo-features.h -index cfed9d9a2f..ad9abeaab1 100644 ---- a/gfx/cairo/cairo/src/cairo-features.h -+++ b/gfx/cairo/cairo/src/cairo-features.h -@@ -56,7 +56,6 @@ - #endif - - #ifdef MOZ_X11 --#define CAIRO_HAS_PS_SURFACE 1 - #define CAIRO_HAS_XLIB_XRENDER_SURFACE 0 - #define CAIRO_HAS_XLIB_SURFACE 1 - #endif -@@ -78,6 +77,7 @@ - #endif - - #define CAIRO_HAS_TEE_SURFACE 1 -+#define CAIRO_HAS_PS_SURFACE 1 - - #ifdef USE_FC_FREETYPE - #define CAIRO_HAS_FC_FONT 1 -diff --git a/gfx/gl/moz.build b/gfx/gl/moz.build -index 03434957cc..c4727d79a1 100644 ---- a/gfx/gl/moz.build -+++ b/gfx/gl/moz.build -@@ -13,10 +13,10 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa": - elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "uikit": - gl_provider = "EAGL" - elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": -- if CONFIG["MOZ_EGL_XRENDER_COMPOSITE"]: -- gl_provider = "EGL" -- else: -+ if CONFIG["MOZ_X11"]: - gl_provider = "GLX" -+ else: -+ gl_provider = "EGL" - elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android": - gl_provider = "EGL" - -@@ -117,7 +117,10 @@ elif gl_provider == "GLX": - EXPORTS += ["GLContextGLX.h", "GLXLibrary.h"] - - if CONFIG["MOZ_WAYLAND"]: -- SOURCES += ["GLContextProviderWayland.cpp", "SharedSurfaceDMABUF.cpp"] -+ SOURCES += ["SharedSurfaceDMABUF.cpp"] -+ -+if CONFIG["MOZ_X11"] and CONFIG["MOZ_WAYLAND"]: -+ SOURCES += ["GLContextProviderWayland.cpp"] - - UNIFIED_SOURCES += [ - "AndroidSurfaceTexture.cpp", -diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp -index 3861d3a..8dcad53 100644 ---- a/gfx/layers/client/TextureClient.cpp -+++ b/gfx/layers/client/TextureClient.cpp -@@ -48,8 +48,6 @@ - # include "mozilla/layers/TextureD3D11.h" - #endif - #ifdef MOZ_WAYLAND --# include -- - # include "gfxPlatformGtk.h" - # include "mozilla/layers/DMABUFTextureClientOGL.h" - # include "mozilla/widget/nsWaylandDisplay.h" -diff --git a/gfx/thebes/gfxPlatformGtk.cpp b/gfx/thebes/gfxPlatformGtk.cpp -index 1b46a2aab8..4a487e0b78 100644 ---- a/gfx/thebes/gfxPlatformGtk.cpp -+++ b/gfx/thebes/gfxPlatformGtk.cpp -@@ -31,12 +31,12 @@ - #include "mozilla/FontPropertyTypes.h" - #include "mozilla/gfx/2D.h" - #include "mozilla/gfx/Logging.h" --#include "mozilla/gfx/XlibDisplay.h" - #include "mozilla/Monitor.h" - #include "mozilla/Preferences.h" - #include "mozilla/StaticPrefs_gfx.h" - #include "mozilla/StaticPrefs_layers.h" - #include "mozilla/StaticPrefs_media.h" -+#include "mozilla/WidgetUtilsGtk.h" - #include "nsAppRunner.h" - #include "nsIGfxInfo.h" - #include "nsMathUtils.h" -@@ -53,6 +53,7 @@ - # include "GLXLibrary.h" - # include "mozilla/X11Util.h" - # include "SoftwareVsyncSource.h" -+# include "mozilla/gfx/XlibDisplay.h" - - /* Undefine the Status from Xlib since it will conflict with system headers on - * OSX */ -diff --git a/gfx/webrender_bindings/RenderCompositorOGLSWGL.cpp b/gfx/webrender_bindings/RenderCompositorOGLSWGL.cpp -index 00a6c3ef6d..78c4235268 100644 ---- a/gfx/webrender_bindings/RenderCompositorOGLSWGL.cpp -+++ b/gfx/webrender_bindings/RenderCompositorOGLSWGL.cpp -@@ -27,7 +27,6 @@ - #ifdef MOZ_WIDGET_GTK - # include "mozilla/widget/GtkCompositorWidget.h" - # include --# include - #endif - - namespace mozilla { -diff --git a/python/mozboot/mozboot/gentoo.py b/python/mozboot/mozboot/gentoo.py -index a33677a0a1..cb9e3dd338 100644 ---- a/python/mozboot/mozboot/gentoo.py -+++ b/python/mozboot/mozboot/gentoo.py -@@ -33,7 +33,6 @@ class GentooBootstrapper(LinuxBootstrapper, BaseBootstrapper): - "dev-libs/dbus-glib", - "media-sound/pulseaudio", - "x11-libs/gtk+:3", -- "x11-libs/libXt", - ] - ) - -diff --git a/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build b/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build -index a5cf9234d1..ddce223c19 100644 ---- a/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build -+++ b/third_party/libwebrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build -@@ -93,11 +93,9 @@ if CONFIG["OS_TARGET"] == "Linux": - DEFINES["USE_NSS_CERTS"] = "1" - DEFINES["USE_OZONE"] = "1" - DEFINES["USE_UDEV"] = True -- DEFINES["USE_X11"] = "1" - DEFINES["WEBRTC_LINUX"] = True - DEFINES["WEBRTC_POSIX"] = True - DEFINES["WEBRTC_USE_PIPEWIRE"] = True -- DEFINES["WEBRTC_USE_X11"] = True - DEFINES["_FILE_OFFSET_BITS"] = "64" - DEFINES["_GNU_SOURCE"] = True - DEFINES["_LARGEFILE64_SOURCE"] = True -@@ -115,14 +113,6 @@ if CONFIG["OS_TARGET"] == "Linux": - OS_LIBS += [ - "dl", - "rt", -- "X11", -- "Xcomposite", -- "Xdamage", -- "Xext", -- "Xfixes", -- "Xrandr", -- "Xrender", -- "Xtst" - ] - - SOURCES += [ -@@ -130,22 +120,26 @@ if CONFIG["OS_TARGET"] == "Linux": - ] - - UNIFIED_SOURCES += [ -- "/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc", - "/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_x11.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/shared_x_display.cc", - "/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_x11.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/window_finder_x11.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/window_list_utils.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x_atom_cache.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x_error_trap.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x_server_pixel_buffer.cc", -- "/third_party/libwebrtc/modules/desktop_capture/linux/x_window_property.cc", - "/third_party/libwebrtc/modules/desktop_capture/mouse_cursor_monitor_linux.cc", - "/third_party/libwebrtc/modules/desktop_capture/screen_capturer_linux.cc", - "/third_party/libwebrtc/modules/desktop_capture/window_capturer_linux.cc" - ] -+ -+ if CONFIG["MOZ_X11"]: -+ UNIFIED_SOURCES += [ -+ "/third_party/libwebrtc/modules/desktop_capture/linux/mouse_cursor_monitor_x11.cc", -+ "/third_party/libwebrtc/modules/desktop_capture/linux/screen_capturer_x11.cc", -+ "/third_party/libwebrtc/modules/desktop_capture/linux/shared_x_display.cc", -+ "/third_party/libwebrtc/modules/desktop_capture/linux/window_capturer_x11.cc", -+ "/third_party/libwebrtc/modules/desktop_capture/linux/window_finder_x11.cc", -+ "/third_party/libwebrtc/modules/desktop_capture/linux/window_list_utils.cc", -+ "/third_party/libwebrtc/modules/desktop_capture/linux/x_atom_cache.cc", -+ "/third_party/libwebrtc/modules/desktop_capture/linux/x_error_trap.cc", -+ "/third_party/libwebrtc/modules/desktop_capture/linux/x_server_pixel_buffer.cc", -+ "/third_party/libwebrtc/modules/desktop_capture/linux/x_window_property.cc" -+ ] - - if CONFIG["OS_TARGET"] == "OpenBSD": - -diff --git a/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn/moz.build b/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn/moz.build -index 4cf85ddfa7..e5873468ca 100644 ---- a/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn/moz.build -+++ b/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn/moz.build -@@ -53,10 +53,8 @@ if CONFIG["OS_TARGET"] == "Linux": - DEFINES["USE_NSS_CERTS"] = "1" - DEFINES["USE_OZONE"] = "1" - DEFINES["USE_UDEV"] = True -- DEFINES["USE_X11"] = "1" - DEFINES["WEBRTC_LINUX"] = True - DEFINES["WEBRTC_POSIX"] = True -- DEFINES["WEBRTC_USE_X11"] = True - DEFINES["_FILE_OFFSET_BITS"] = "64" - DEFINES["_GNU_SOURCE"] = True - DEFINES["_LARGEFILE64_SOURCE"] = True -@@ -67,14 +65,6 @@ if CONFIG["OS_TARGET"] == "Linux": - OS_LIBS += [ - "dl", - "rt", -- "X11", -- "Xcomposite", -- "Xdamage", -- "Xext", -- "Xfixes", -- "Xrandr", -- "Xrender", -- "Xtst" - ] - - if CONFIG["OS_TARGET"] == "OpenBSD": -diff --git a/third_party/libwebrtc/webrtc_gn/moz.build b/third_party/libwebrtc/webrtc_gn/moz.build -index 625bd0b5dd..2b0e2276c6 100644 ---- a/third_party/libwebrtc/webrtc_gn/moz.build -+++ b/third_party/libwebrtc/webrtc_gn/moz.build -@@ -71,7 +71,6 @@ if CONFIG["OS_TARGET"] == "Linux": - DEFINES["USE_NSS_CERTS"] = "1" - DEFINES["USE_OZONE"] = "1" - DEFINES["USE_UDEV"] = True -- DEFINES["USE_X11"] = "1" - DEFINES["WEBRTC_LINUX"] = True - DEFINES["WEBRTC_POSIX"] = True - DEFINES["_FILE_OFFSET_BITS"] = "64" -@@ -85,14 +84,6 @@ if CONFIG["OS_TARGET"] == "Linux": - "dl", - "m", - "rt", -- "X11", -- "Xcomposite", -- "Xdamage", -- "Xext", -- "Xfixes", -- "Xrandr", -- "Xrender", -- "Xtst" - ] - - if CONFIG["OS_TARGET"] == "OpenBSD": -diff --git a/toolkit/components/remote/moz.build b/toolkit/components/remote/moz.build -index d3bab6cf9a..656b32c7fa 100644 ---- a/toolkit/components/remote/moz.build -+++ b/toolkit/components/remote/moz.build -@@ -26,7 +26,7 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": - "nsUnixRemoteServer.h", - "RemoteUtils.h", - ] -- else: -+ elif CONFIG["MOZ_X11"]: - SOURCES += [ - "nsGTKRemoteServer.cpp", - "nsXRemoteClient.cpp", -diff --git a/toolkit/components/remote/nsRemoteService.cpp b/toolkit/components/remote/nsRemoteService.cpp -index b2499d8191..1d1dc42e9f 100644 ---- a/toolkit/components/remote/nsRemoteService.cpp -+++ b/toolkit/components/remote/nsRemoteService.cpp -@@ -12,12 +12,14 @@ - - #ifdef MOZ_WIDGET_GTK - # include "mozilla/WidgetUtilsGtk.h" --# include "nsGTKRemoteServer.h" --# ifdef MOZ_ENABLE_DBUS -+# if defined(MOZ_ENABLE_DBUS) - # include "nsDBusRemoteServer.h" - # include "nsDBusRemoteClient.h" --# else -+# elif defined(MOZ_X11) - # include "nsXRemoteClient.h" -+# include "nsGTKRemoteServer.h" -+# else -+# include "nsRemoteClient.h" - # endif - #elif defined(XP_WIN) - # include "nsWinRemoteServer.h" -@@ -102,8 +104,10 @@ RemoteResult nsRemoteService::StartClient(const char* aDesktopStartupID) { - #ifdef MOZ_WIDGET_GTK - # if defined(MOZ_ENABLE_DBUS) - client = MakeUnique(); --# else -+# elif defined(MOZ_X11) - client = MakeUnique(); -+# else -+ return REMOTE_NOT_FOUND; - # endif - #elif defined(XP_WIN) - client = MakeUnique(); -@@ -146,8 +150,10 @@ void nsRemoteService::StartupServer() { - #ifdef MOZ_WIDGET_GTK - # if defined(MOZ_ENABLE_DBUS) - mRemoteServer = MakeUnique(); --# else -+# elif defined(MOZ_X11) - mRemoteServer = MakeUnique(); -+# else -+ return; - # endif - #elif defined(XP_WIN) - mRemoteServer = MakeUnique(); -diff --git a/toolkit/moz.configure b/toolkit/moz.configure -index 539433a6ef..8599a3b838 100644 ---- a/toolkit/moz.configure -+++ b/toolkit/moz.configure -@@ -286,7 +286,7 @@ def toolkit_choices(target): - elif target.os == "Android": - return ("cairo-android",) - else: -- return ("cairo-gtk3", "cairo-gtk3-wayland") -+ return ("cairo-gtk3",) - - - @depends(toolkit_choices) -@@ -338,23 +338,24 @@ def toolkit_gtk(toolkit): - - # Wayland support - # ============================================================== --wayland_headers = pkg_check_modules( -- "MOZ_WAYLAND", -- "gtk+-wayland-3.0 >= 3.14 xkbcommon >= 0.4.1 libdrm >= 2.4", -- allow_missing=depends(full_toolkit)(lambda t: t == "cairo-gtk3"), -- when=depends(full_toolkit)(lambda t: t in ("cairo-gtk3", "cairo-gtk3-wayland")), -+option( -+ "--with-wayland", -+ help="{Enable wayland support|Disable wayland support}", - ) - -- --@depends(wayland_headers, toolkit_gtk, artifact_builds) --def wayland_headers(wayland, toolkit_gtk, artifacts): -- if toolkit_gtk and artifacts: -+@depends("--with-wayland", toolkit_gtk, artifact_builds) -+def with_wayland(value, toolkit_gtk, artifacts): -+ if value and toolkit_gtk or artifacts: - return True -- return wayland - -+wayland_headers = pkg_check_modules( -+ "MOZ_WAYLAND", -+ "gtk+-wayland-3.0 >= 3.14 xkbcommon >= 0.4.1 libdrm >= 2.4", -+ when=with_wayland, -+) - --set_config("MOZ_WAYLAND", depends_if(wayland_headers)(lambda _: True)) --set_define("MOZ_WAYLAND", depends_if(wayland_headers)(lambda _: True)) -+set_config("MOZ_WAYLAND", True, when=with_wayland) -+set_define("MOZ_WAYLAND", True, when=with_wayland) - - # GL Provider - # ============================================================== -@@ -376,7 +377,7 @@ def gl_provider_define(provider): - set_define("MOZ_GL_PROVIDER", gl_provider_define) - - --@depends(gl_provider, wayland_headers, toolkit_gtk) -+@depends(gl_provider, with_wayland, toolkit_gtk) - def gl_default_provider(value, wayland, toolkit_gtk): - if value: - return value -@@ -1197,11 +1198,20 @@ set_define("MOZ_RAW", depends_if("--enable-raw")(lambda _: True)) - - # X11 - # ============================================================== --set_config("MOZ_X11", True, when=toolkit_gtk) --set_define("MOZ_X11", True, when=toolkit_gtk) -+option( -+ "--with-x", -+ help="{Enable X11 support|Disable X11 support}", -+) -+ -+@depends("--with-x", toolkit_gtk) -+def with_x(value, toolkit_gtk): -+ if value and toolkit_gtk: -+ return True - -+set_config("MOZ_X11", True, when=with_x) -+set_define("MOZ_X11", True, when=with_x) - --@depends(webrtc, when=toolkit_gtk) -+@depends(webrtc, when=with_x) - def x11_libs(webrtc): - libs = [ - "x11", -@@ -1225,8 +1235,8 @@ def x11_libs(webrtc): - return libs - - --pkg_check_modules("MOZ_X11", x11_libs, when=toolkit_gtk) --pkg_check_modules("MOZ_X11_SM", ["ice", "sm"], cflags_only=True, when=toolkit_gtk) -+pkg_check_modules("MOZ_X11", x11_libs, when=with_x) -+pkg_check_modules("MOZ_X11_SM", ["ice", "sm"], cflags_only=True, when=with_x) - - - # ASan Reporter Addon -diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build -index b1e2b58621..576ec91669 100644 ---- a/toolkit/xre/moz.build -+++ b/toolkit/xre/moz.build -@@ -156,7 +156,7 @@ SOURCES += [ - "ProfileReset.cpp", - ] - --if CONFIG["MOZ_X11"]: -+if CONFIG["MOZ_X11"] or CONFIG["MOZ_WAYLAND"]: - UNIFIED_SOURCES += [ - "glxtest.cpp", - ] -@@ -187,7 +187,7 @@ include("/ipc/chromium/chromium-config.mozbuild") - - FINAL_LIBRARY = "xul" - --if CONFIG["MOZ_X11"]: -+if CONFIG["MOZ_X11"] or CONFIG["MOZ_WAYLAND"]: - DEFINES["USE_GLX_TEST"] = True - - for var in ( -diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp -index d997493..a6cef19 100644 ---- a/toolkit/xre/nsAppRunner.cpp -+++ b/toolkit/xre/nsAppRunner.cpp -@@ -4493,6 +4493,7 @@ static void PR_CALLBACK ReadAheadDlls_ThreadStart(void* arg) { - - #if defined(MOZ_WAYLAND) - bool IsWaylandEnabled() { -+# ifdef MOZ_X11 - const char* waylandDisplay = PR_GetEnv("WAYLAND_DISPLAY"); - if (!waylandDisplay) { - return false; -@@ -4513,6 +4514,9 @@ bool IsWaylandEnabled() { - return true; - } - } -+# else -+ return true; -+# endif - # ifdef EARLY_BETA_OR_EARLIER - // Enable by default when we're running on a recent enough GTK version. We'd - // like to check further details like compositor version and so on ideally -diff --git a/toolkit/xre/nsGDKErrorHandler.cpp b/toolkit/xre/nsGDKErrorHandler.cpp -index 421abdf12f..c7803cf973 100644 ---- a/toolkit/xre/nsGDKErrorHandler.cpp -+++ b/toolkit/xre/nsGDKErrorHandler.cpp -@@ -6,14 +6,18 @@ - #include "nsGDKErrorHandler.h" - - #include --#include -+#ifdef MOZ_X11 -+# include -+#endif - #include - #include - #include - - #include "nsDebug.h" - #include "nsString.h" --#include "nsX11ErrorHandler.h" -+#ifdef MOZ_X11 -+# include "nsX11ErrorHandler.h" -+#endif - - #include "prenv.h" - -@@ -26,6 +30,7 @@ - */ - static void GdkErrorHandler(const gchar* log_domain, GLogLevelFlags log_level, - const gchar* message, gpointer user_data) { -+#ifdef MOZ_X11 - if (strstr(message, "X Window System error")) { - XErrorEvent event; - nsDependentCString buffer(message); -@@ -96,6 +101,10 @@ static void GdkErrorHandler(const gchar* log_domain, GLogLevelFlags log_level, - g_log_default_handler(log_domain, log_level, message, user_data); - MOZ_CRASH_UNSAFE(message); - } -+#else -+ g_log_default_handler(log_domain, log_level, message, user_data); -+ MOZ_CRASH_UNSAFE(message); -+#endif - } - - void InstallGdkErrorHandler() { -@@ -103,7 +112,9 @@ void InstallGdkErrorHandler() { - (GLogLevelFlags)(G_LOG_LEVEL_ERROR | G_LOG_FLAG_FATAL | - G_LOG_FLAG_RECURSION), - GdkErrorHandler, nullptr); -+#ifdef MOZ_X11 - if (PR_GetEnv("MOZ_X_SYNC")) { - XSynchronize(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), X11True); - } -+#endif - } -diff --git a/widget/CompositorWidget.h b/widget/CompositorWidget.h -index 4d38bc6220..09e19945a9 100644 ---- a/widget/CompositorWidget.h -+++ b/widget/CompositorWidget.h -@@ -62,7 +62,7 @@ class CompositorWidgetDelegate { - }; - - // Platforms that support out-of-process widgets. --#if defined(XP_WIN) || defined(MOZ_X11) || defined(MOZ_WIDGET_ANDROID) -+#if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_ANDROID) - // CompositorWidgetParent should implement CompositorWidget and - // PCompositorWidgetParent. - class CompositorWidgetParent; -diff --git a/widget/gtk/GtkCompositorWidget.cpp b/widget/gtk/GtkCompositorWidget.cpp -index 89a8248bc0..2454006d0d 100644 ---- a/widget/gtk/GtkCompositorWidget.cpp -+++ b/widget/gtk/GtkCompositorWidget.cpp -@@ -49,9 +49,9 @@ GtkCompositorWidget::GtkCompositorWidget( - auto size = mClientSize.Lock(); - *size = aInitData.InitialClientSize(); - -- LOG("GtkCompositorWidget::GtkCompositorWidget() [%p] mXWindow %p " -+ LOG("GtkCompositorWidget::GtkCompositorWidget() [%p] aWindow %p " - "mIsRenderingSuspended %d\n", -- (void*)mWidget.get(), (void*)mXWindow, !!mIsRenderingSuspended); -+ (void*)mWidget.get(), (void*)aWindow, !!mIsRenderingSuspended); - } - - GtkCompositorWidget::~GtkCompositorWidget() { -diff --git a/widget/gtk/MozContainer.cpp b/widget/gtk/MozContainer.cpp -index 95832dc03d..0d6585c2d4 100644 ---- a/widget/gtk/MozContainer.cpp -+++ b/widget/gtk/MozContainer.cpp -@@ -9,7 +9,6 @@ - - #include - #include --#include - #include - #include "mozilla/WidgetUtilsGtk.h" - -diff --git a/widget/gtk/TaskbarProgress.cpp b/widget/gtk/TaskbarProgress.cpp -index 2aad109eab..396f39b5e7 100644 ---- a/widget/gtk/TaskbarProgress.cpp -+++ b/widget/gtk/TaskbarProgress.cpp -@@ -33,7 +33,6 @@ TaskbarProgress::~TaskbarProgress() { - NS_IMETHODIMP - TaskbarProgress::SetProgressState(nsTaskbarProgressState aState, - uint64_t aCurrentValue, uint64_t aMaxValue) { --#ifdef MOZ_X11 - NS_ENSURE_ARG_RANGE(aState, 0, STATE_PAUSED); - - if (aState == STATE_NO_PROGRESS || aState == STATE_INDETERMINATE) { -@@ -72,7 +71,6 @@ TaskbarProgress::SetProgressState(nsTaskbarProgressState aState, - ("GtkTaskbarProgress::SetProgressState progress: %lu", progress)); - - mPrimaryWindow->SetProgress(progress); --#endif - - return NS_OK; - } -diff --git a/widget/gtk/WindowSurfaceProvider.cpp b/widget/gtk/WindowSurfaceProvider.cpp -index 403af8e445..94ba1be0ff 100644 ---- a/widget/gtk/WindowSurfaceProvider.cpp -+++ b/widget/gtk/WindowSurfaceProvider.cpp -@@ -10,6 +10,7 @@ - #include "mozilla/gfx/Logging.h" - #include "mozilla/layers/LayersTypes.h" - #include "nsWindow.h" -+#include "WidgetUtilsGtk.h" - - #ifdef MOZ_WAYLAND - # include "mozilla/StaticPrefs_widget.h" -diff --git a/widget/gtk/components.conf b/widget/gtk/components.conf -index 38c07bd812..8f2c10894a 100644 ---- a/widget/gtk/components.conf -+++ b/widget/gtk/components.conf -@@ -76,53 +76,49 @@ Classes = [ - 'headers': ['/widget/gtk/nsApplicationChooser.h'], - 'processes': ProcessSelector.MAIN_PROCESS_ONLY, - }, -+ { -+ 'name': 'GfxInfo', -+ 'cid': '{d755a760-9f27-11df-0800-200c9a664242}', -+ 'contract_ids': ['@mozilla.org/gfx/info;1'], -+ 'type': 'mozilla::widget::GfxInfo', -+ 'headers': ['/widget/gtk/GfxInfo.h'], -+ 'init_method': 'Init', -+ 'processes': ProcessSelector.ALLOW_IN_GPU_PROCESS, -+ }, -+ { -+ 'js_name': 'clipboard', -+ 'cid': '{8b5314ba-db01-11d2-96ce-0060b0fb9956}', -+ 'contract_ids': ['@mozilla.org/widget/clipboard;1'], -+ 'interfaces': ['nsIClipboard'], -+ 'type': 'nsIClipboard', -+ 'processes': ProcessSelector.MAIN_PROCESS_ONLY, -+ 'overridable': True, -+ }, -+ { -+ 'cid': '{77221d5a-1dd2-11b2-8c69-c710f15d2ed5}', -+ 'contract_ids': ['@mozilla.org/widget/clipboardhelper;1'], -+ 'type': 'nsClipboardHelper', -+ 'headers': ['/widget/nsClipboardHelper.h'], -+ }, -+ { -+ 'cid': '{8b5314bb-db01-11d2-96ce-0060b0fb9956}', -+ 'contract_ids': ['@mozilla.org/widget/dragservice;1'], -+ 'singleton': True, -+ 'type': 'nsDragService', -+ 'headers': ['/widget/gtk/nsDragService.h'], -+ 'constructor': 'nsDragService::GetInstance', -+ 'processes': ProcessSelector.MAIN_PROCESS_ONLY, -+ }, -+ { -+ 'cid': '{6987230e-0098-4e78-bc5f-1493ee7519fa}', -+ 'contract_ids': ['@mozilla.org/widget/useridleservice;1'], -+ 'singleton': True, -+ 'type': 'nsUserIdleService', -+ 'headers': ['/widget/gtk/nsUserIdleServiceGTK.h'], -+ 'constructor': 'nsUserIdleServiceGTK::GetInstance', -+ }, - ] - --if defined('MOZ_X11'): -- Classes += [ -- { -- 'js_name': 'clipboard', -- 'cid': '{8b5314ba-db01-11d2-96ce-0060b0fb9956}', -- 'contract_ids': ['@mozilla.org/widget/clipboard;1'], -- 'interfaces': ['nsIClipboard'], -- 'type': 'nsIClipboard', -- 'processes': ProcessSelector.MAIN_PROCESS_ONLY, -- 'overridable': True, -- }, -- { -- 'cid': '{77221d5a-1dd2-11b2-8c69-c710f15d2ed5}', -- 'contract_ids': ['@mozilla.org/widget/clipboardhelper;1'], -- 'type': 'nsClipboardHelper', -- 'headers': ['/widget/nsClipboardHelper.h'], -- }, -- { -- 'cid': '{8b5314bb-db01-11d2-96ce-0060b0fb9956}', -- 'contract_ids': ['@mozilla.org/widget/dragservice;1'], -- 'singleton': True, -- 'type': 'nsDragService', -- 'headers': ['/widget/gtk/nsDragService.h'], -- 'constructor': 'nsDragService::GetInstance', -- 'processes': ProcessSelector.MAIN_PROCESS_ONLY, -- }, -- { -- 'name': 'GfxInfo', -- 'cid': '{d755a760-9f27-11df-0800-200c9a664242}', -- 'contract_ids': ['@mozilla.org/gfx/info;1'], -- 'type': 'mozilla::widget::GfxInfo', -- 'headers': ['/widget/gtk/GfxInfo.h'], -- 'init_method': 'Init', -- 'processes': ProcessSelector.ALLOW_IN_GPU_PROCESS, -- }, -- { -- 'cid': '{6987230e-0098-4e78-bc5f-1493ee7519fa}', -- 'contract_ids': ['@mozilla.org/widget/useridleservice;1'], -- 'singleton': True, -- 'type': 'nsUserIdleService', -- 'headers': ['/widget/gtk/nsUserIdleServiceGTK.h'], -- 'constructor': 'nsUserIdleServiceGTK::GetInstance', -- }, -- ] -- - if defined('NS_PRINTING'): - Classes += [ - { -diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build -index 4832cac..dfe7adb 100644 ---- a/widget/gtk/moz.build -+++ b/widget/gtk/moz.build -@@ -38,16 +38,24 @@ EXPORTS.mozilla += [ - ] - - EXPORTS.mozilla.widget += [ -+ "CompositorWidgetChild.h", -+ "CompositorWidgetParent.h", -+ "GtkCompositorWidget.h", -+ "InProcessGtkCompositorWidget.h", - "WindowSurface.h", - "WindowSurfaceProvider.h", - ] - - UNIFIED_SOURCES += [ - "AsyncGtkClipboardRequest.cpp", -+ "CompositorWidgetChild.cpp", -+ "CompositorWidgetParent.cpp", - "GfxInfo.cpp", - "gtk3drawing.cpp", - "GtkCompositorWidget.cpp", - "IMContextWrapper.cpp", -+ "InProcessGtkCompositorWidget.cpp", -+ "keysym2ucs.c", - "MozContainer.cpp", - "MPRISServiceHandler.cpp", - "NativeKeyBindings.cpp", -@@ -65,6 +73,7 @@ UNIFIED_SOURCES += [ - "nsLookAndFeel.cpp", - "nsSound.cpp", - "nsToolkit.cpp", -+ "nsUserIdleServiceGTK.cpp", - "nsWidgetFactory.cpp", - "ScreenHelperGTK.cpp", - "TaskbarProgress.cpp", -@@ -115,22 +124,12 @@ if CONFIG["MOZ_WAYLAND"]: - - if CONFIG["MOZ_X11"]: - UNIFIED_SOURCES += [ -- "CompositorWidgetChild.cpp", -- "CompositorWidgetParent.cpp", -- "InProcessGtkCompositorWidget.cpp", - "nsClipboardX11.cpp", - "nsShmImage.cpp", -- "nsUserIdleServiceGTK.cpp", - "WindowSurfaceX11.cpp", - "WindowSurfaceX11Image.cpp", - "WindowSurfaceX11SHM.cpp", - ] -- EXPORTS.mozilla.widget += [ -- "CompositorWidgetChild.h", -- "CompositorWidgetParent.h", -- "GtkCompositorWidget.h", -- "InProcessGtkCompositorWidget.h", -- ] - - if CONFIG["NS_PRINTING"]: - UNIFIED_SOURCES += [ -diff --git a/widget/gtk/mozgtk/mozgtk.c b/widget/gtk/mozgtk/mozgtk.c -index 677f9b3561..e375cab31f 100644 ---- a/widget/gtk/mozgtk/mozgtk.c -+++ b/widget/gtk/mozgtk/mozgtk.c -@@ -6,16 +6,4 @@ - - #include "mozilla/Types.h" - --#include --// Bug 1271100 --// We need to trick system Cairo into not using the XShm extension due to --// a race condition in it that results in frequent BadAccess errors. Cairo --// relies upon XShmQueryExtension to initially detect if XShm is available. --// So we define our own stub that always indicates XShm not being present. --// mozgtk loads before libXext/libcairo and so this stub will take priority. --// Our tree usage goes through xcb and remains unaffected by this. --// --// This is also used to force libxul to depend on the mozgtk library. If we --// ever can remove this workaround for system Cairo, we'll need something --// to replace it for that purpose. --MOZ_EXPORT Bool XShmQueryExtension(Display* aDisplay) { return False; } -+MOZ_EXPORT void PleaseLinkWithMe() {} -diff --git a/widget/gtk/mozwayland/mozwayland.c b/widget/gtk/mozwayland/mozwayland.c -index 1a86468b4f..eee67ed3a9 100644 ---- a/widget/gtk/mozwayland/mozwayland.c -+++ b/widget/gtk/mozwayland/mozwayland.c -@@ -8,7 +8,6 @@ - #include - #include "mozilla/Types.h" - #include --#include - #include - - union wl_argument; -diff --git a/widget/gtk/nsClipboard.cpp b/widget/gtk/nsClipboard.cpp -index 800fde7..f5e9ef7 100644 ---- a/widget/gtk/nsClipboard.cpp -+++ b/widget/gtk/nsClipboard.cpp -@@ -9,7 +9,9 @@ - - #include "nsArrayUtils.h" - #include "nsClipboard.h" --#include "nsClipboardX11.h" -+#if defined(MOZ_X11) -+# include "nsClipboardX11.h" -+#endif - #if defined(MOZ_WAYLAND) - # include "nsClipboardWayland.h" - #endif -@@ -36,7 +38,6 @@ - #include "imgIContainer.h" - - #include --#include - - #include "mozilla/Encoding.h" - -@@ -134,13 +135,17 @@ nsClipboard::~nsClipboard() { - NS_IMPL_ISUPPORTS(nsClipboard, nsIClipboard, nsIObserver) - - nsresult nsClipboard::Init(void) { -+#if defined(MOZ_X11) - if (widget::GdkIsX11Display()) { - mContext = new nsRetrievalContextX11(); -+ } -+#endif - #if defined(MOZ_WAYLAND) -- } else if (widget::GdkIsWaylandDisplay()) { -+ if (widget::GdkIsWaylandDisplay()) { - mContext = new nsRetrievalContextWayland(); -+ } - #endif -- } else { -+ if (!mContext) { - NS_WARNING("Missing nsRetrievalContext for nsClipboard!"); - return NS_OK; - } -diff --git a/widget/gtk/nsDragService.cpp b/widget/gtk/nsDragService.cpp -index ea57c4f3c0..5355fbe467 100644 ---- a/widget/gtk/nsDragService.cpp -+++ b/widget/gtk/nsDragService.cpp -@@ -23,7 +23,6 @@ - #include "prthread.h" - #include - #include --#include - #include "nsCRT.h" - #include "mozilla/BasicEvents.h" - #include "mozilla/Services.h" -@@ -34,7 +33,6 @@ - #include "mozilla/WidgetUtilsGtk.h" - #include "GRefPtr.h" - --#include "gfxXlibSurface.h" - #include "gfxContext.h" - #include "nsImageToPixbuf.h" - #include "nsPresContext.h" -diff --git a/widget/gtk/nsGtkKeyUtils.cpp b/widget/gtk/nsGtkKeyUtils.cpp -index 5f971b721a..d948ae58bf 100644 ---- a/widget/gtk/nsGtkKeyUtils.cpp -+++ b/widget/gtk/nsGtkKeyUtils.cpp -@@ -12,15 +12,16 @@ - #include - #include - #include --#include -+#ifdef MOZ_X11 -+# include -+# include -+# include "X11UndefineNone.h" -+#endif - #include - #include --#include --#include "X11UndefineNone.h" - #include "IMContextWrapper.h" - #include "WidgetUtils.h" - #include "WidgetUtilsGtk.h" --#include "keysym2ucs.h" - #include "nsContentUtils.h" - #include "nsGtkUtils.h" - #include "nsIBidiKeyboard.h" -@@ -28,6 +29,7 @@ - #include "nsReadableUtils.h" - #include "nsServiceManagerUtils.h" - #include "nsWindow.h" -+#include "keysym2ucs.h" - - #include "mozilla/ArrayUtils.h" - #include "mozilla/MouseEvents.h" -@@ -55,7 +57,9 @@ namespace widget { - - KeymapWrapper* KeymapWrapper::sInstance = nullptr; - guint KeymapWrapper::sLastRepeatableHardwareKeyCode = 0; -+#ifdef MOZ_X11 - Time KeymapWrapper::sLastRepeatableKeyTime = 0; -+#endif - KeymapWrapper::RepeatState KeymapWrapper::sRepeatState = - KeymapWrapper::NOT_PRESSED; - -@@ -354,9 +358,11 @@ KeymapWrapper::KeymapWrapper() - - g_object_ref(mGdkKeymap); - -+#ifdef MOZ_X11 - if (GdkIsX11Display()) { - InitXKBExtension(); - } -+#endif - - Init(); - } -@@ -373,17 +379,18 @@ void KeymapWrapper::Init() { - mModifierKeys.Clear(); - memset(mModifierMasks, 0, sizeof(mModifierMasks)); - -+#ifdef MOZ_X11 - if (GdkIsX11Display()) { - InitBySystemSettingsX11(); - } -+ gdk_window_add_filter(nullptr, FilterEvents, this); -+#endif - #ifdef MOZ_WAYLAND -- else { -+ if (GdkIsWaylandDisplay()) { - InitBySystemSettingsWayland(); - } - #endif - -- gdk_window_add_filter(nullptr, FilterEvents, this); -- - MOZ_LOG(gKeyLog, LogLevel::Info, - ("%p Init, CapsLock=0x%X, NumLock=0x%X, " - "ScrollLock=0x%X, Level3=0x%X, Level5=0x%X, " -@@ -395,6 +402,7 @@ void KeymapWrapper::Init() { - GetModifierMask(SUPER), GetModifierMask(HYPER))); - } - -+#ifdef MOZ_X11 - void KeymapWrapper::InitXKBExtension() { - PodZero(&mKeyboardState); - -@@ -626,6 +634,7 @@ void KeymapWrapper::InitBySystemSettingsX11() { - XFreeModifiermap(xmodmap); - XFree(xkeymap); - } -+#endif - - #ifdef MOZ_WAYLAND - void KeymapWrapper::SetModifierMask(xkb_keymap* aKeymap, -@@ -789,7 +798,9 @@ void KeymapWrapper::InitBySystemSettingsWayland() { - #endif - - KeymapWrapper::~KeymapWrapper() { -+#ifdef MOZ_X11 - gdk_window_remove_filter(nullptr, FilterEvents, this); -+#endif - if (mOnKeysChangedSignalHandle) { - g_signal_handler_disconnect(mGdkKeymap, mOnKeysChangedSignalHandle); - } -@@ -800,6 +811,7 @@ KeymapWrapper::~KeymapWrapper() { - MOZ_LOG(gKeyLog, LogLevel::Info, ("%p Destructor", this)); - } - -+#ifdef MOZ_X11 - /* static */ - GdkFilterReturn KeymapWrapper::FilterEvents(GdkXEvent* aXEvent, - GdkEvent* aGdkEvent, -@@ -913,6 +925,7 @@ GdkFilterReturn KeymapWrapper::FilterEvents(GdkXEvent* aXEvent, - - return GDK_FILTER_CONTINUE; - } -+#endif - - static void ResetBidiKeyboard() { - // Reset the bidi keyboard settings for the new GdkKeymap -@@ -1773,6 +1786,7 @@ void KeymapWrapper::InitKeyEvent(WidgetKeyboardEvent& aKeyEvent, - // state. It means if there're some pending modifier key press or - // key release events, the result isn't what we want. - guint modifierState = aGdkKeyEvent->state; -+#ifdef MOZ_X11 - GdkDisplay* gdkDisplay = gdk_display_get_default(); - if (aGdkKeyEvent->is_modifier && GdkIsX11Display(gdkDisplay)) { - Display* display = gdk_x11_display_get_xdisplay(gdkDisplay); -@@ -1790,6 +1804,7 @@ void KeymapWrapper::InitKeyEvent(WidgetKeyboardEvent& aKeyEvent, - } - } - } -+#endif - InitInputEvent(aKeyEvent, modifierState); - - switch (aGdkKeyEvent->keyval) { -@@ -2036,6 +2051,7 @@ bool KeymapWrapper::IsLatinGroup(guint8 aGroup) { - return result; - } - -+#ifdef MOZ_X11 - bool KeymapWrapper::IsAutoRepeatableKey(guint aHardwareKeyCode) { - uint8_t indexOfArray = aHardwareKeyCode / 8; - MOZ_ASSERT(indexOfArray < ArrayLength(mKeyboardState.auto_repeats), -@@ -2043,6 +2059,7 @@ bool KeymapWrapper::IsAutoRepeatableKey(guint aHardwareKeyCode) { - char bitMask = 1 << (aHardwareKeyCode % 8); - return (mKeyboardState.auto_repeats[indexOfArray] & bitMask) != 0; - } -+#endif - - /* static */ - bool KeymapWrapper::IsBasicLatinLetterOrNumeral(uint32_t aCharCode) { -diff --git a/widget/gtk/nsGtkKeyUtils.h b/widget/gtk/nsGtkKeyUtils.h -index 18188c9b00..59a61752bb 100644 ---- a/widget/gtk/nsGtkKeyUtils.h -+++ b/widget/gtk/nsGtkKeyUtils.h -@@ -12,8 +12,10 @@ - #include "nsIWidget.h" - #include "nsTArray.h" - --#include --#include -+#ifdef MOZ_X11 -+# include -+# include -+#endif - #ifdef MOZ_WAYLAND - # include - # include -@@ -248,8 +250,10 @@ class KeymapWrapper { - * Initializing methods. - */ - void Init(); -+#ifdef MOZ_X11 - void InitXKBExtension(); - void InitBySystemSettingsX11(); -+#endif - #ifdef MOZ_WAYLAND - void InitBySystemSettingsWayland(); - #endif -@@ -325,6 +329,7 @@ class KeymapWrapper { - */ - int mXKBBaseEventCode; - -+#ifdef MOZ_X11 - /** - * Only auto_repeats[] stores valid value. If you need to use other - * members, you need to listen notification events for them. -@@ -332,6 +337,7 @@ class KeymapWrapper { - * InitXKBExtension(). - */ - XKeyboardState mKeyboardState; -+#endif - - /** - * Pointer of the singleton instance. -@@ -342,15 +348,19 @@ class KeymapWrapper { - * Auto key repeat management. - */ - static guint sLastRepeatableHardwareKeyCode; -+#ifdef MOZ_X11 - static Time sLastRepeatableKeyTime; -+#endif - enum RepeatState { NOT_PRESSED, FIRST_PRESS, REPEATING }; - static RepeatState sRepeatState; - -+#ifdef MOZ_X11 - /** - * IsAutoRepeatableKey() returns true if the key supports auto repeat. - * Otherwise, false. - */ - bool IsAutoRepeatableKey(guint aHardwareKeyCode); -+#endif - - /** - * Signal handlers. -diff --git a/widget/gtk/nsPrintDialogGTK.cpp b/widget/gtk/nsPrintDialogGTK.cpp -index 8fb56543b7..9a562eb124 100644 ---- a/widget/gtk/nsPrintDialogGTK.cpp -+++ b/widget/gtk/nsPrintDialogGTK.cpp -@@ -5,6 +5,9 @@ - - #include - #include -+#ifdef MOZ_X11 -+# include -+#endif - #include - - #include "mozilla/ArrayUtils.h" -@@ -27,8 +30,6 @@ - #include "WidgetUtilsGtk.h" - #include "nsIObserverService.h" - --// for gdk_x11_window_get_xid --#include - #include - #include - #include -diff --git a/widget/gtk/nsUserIdleServiceGTK.cpp b/widget/gtk/nsUserIdleServiceGTK.cpp -index 884d52a6ca..4b2b04f09a 100644 ---- a/widget/gtk/nsUserIdleServiceGTK.cpp -+++ b/widget/gtk/nsUserIdleServiceGTK.cpp -@@ -17,6 +17,8 @@ using mozilla::LogLevel; - - static mozilla::LazyLogModule sIdleLog("nsIUserIdleService"); - -+#ifdef MOZ_X11 -+ - typedef bool (*_XScreenSaverQueryExtension_fn)(Display* dpy, int* event_base, - int* error_base); - -@@ -25,16 +27,20 @@ typedef XScreenSaverInfo* (*_XScreenSaverAllocInfo_fn)(void); - typedef void (*_XScreenSaverQueryInfo_fn)(Display* dpy, Drawable drw, - XScreenSaverInfo* info); - --static bool sInitialized = false; - static _XScreenSaverQueryExtension_fn _XSSQueryExtension = nullptr; - static _XScreenSaverAllocInfo_fn _XSSAllocInfo = nullptr; - static _XScreenSaverQueryInfo_fn _XSSQueryInfo = nullptr; - -+#endif -+ -+static bool sInitialized = false; -+ - static void Initialize() { - if (!mozilla::widget::GdkIsX11Display()) { - return; - } - -+#ifdef MOZ_X11 - // This will leak - See comments in ~nsUserIdleServiceGTK(). - PRLibrary* xsslib = PR_LoadLibrary("libXss.so.1"); - if (!xsslib) // ouch. -@@ -59,14 +65,15 @@ static void Initialize() { - MOZ_LOG(sIdleLog, LogLevel::Warning, ("Failed to get XSSQueryInfo!\n")); - - sInitialized = true; -+#endif - } - --nsUserIdleServiceGTK::nsUserIdleServiceGTK() : mXssInfo(nullptr) { -- Initialize(); --} -+nsUserIdleServiceGTK::nsUserIdleServiceGTK() { Initialize(); } - - nsUserIdleServiceGTK::~nsUserIdleServiceGTK() { -+#ifdef MOZ_X11 - if (mXssInfo) XFree(mXssInfo); -+#endif - - // It is not safe to unload libXScrnSaver until each display is closed because - // the library registers callbacks through XESetCloseDisplay (Bug 397607). -@@ -84,6 +91,7 @@ bool nsUserIdleServiceGTK::PollIdleTime(uint32_t* aIdleTime) { - // For some reason, we could not find xscreensaver. - return false; - } -+#ifdef MOZ_X11 - - // Ask xscreensaver about idle time: - *aIdleTime = 0; -@@ -109,6 +117,7 @@ bool nsUserIdleServiceGTK::PollIdleTime(uint32_t* aIdleTime) { - } - // If we get here, we couldn't get to XScreenSaver: - MOZ_LOG(sIdleLog, LogLevel::Warning, ("XSSQueryExtension returned false!\n")); -+#endif - return false; - } - -diff --git a/widget/gtk/nsUserIdleServiceGTK.h b/widget/gtk/nsUserIdleServiceGTK.h -index 9b9ba31846..f089f3b87d 100644 ---- a/widget/gtk/nsUserIdleServiceGTK.h -+++ b/widget/gtk/nsUserIdleServiceGTK.h -@@ -9,9 +9,11 @@ - #define nsUserIdleServiceGTK_h__ - - #include "nsUserIdleService.h" --#include --#include --#include -+ -+#ifdef MOZ_X11 -+# include -+# include -+# include - - typedef struct { - Window window; // Screen saver window -@@ -21,6 +23,7 @@ typedef struct { - unsigned long idle; // milliseconds idle - unsigned long event_mask; // event stuff - } XScreenSaverInfo; -+#endif - - class nsUserIdleServiceGTK : public nsUserIdleService { - public: -@@ -40,7 +43,9 @@ class nsUserIdleServiceGTK : public nsUserIdleService { - - private: - ~nsUserIdleServiceGTK(); -- XScreenSaverInfo* mXssInfo; -+#ifdef MOZ_X11 -+ XScreenSaverInfo* mXssInfo = nullptr; -+#endif - - protected: - nsUserIdleServiceGTK(); -diff --git a/widget/gtk/nsWidgetFactory.cpp b/widget/gtk/nsWidgetFactory.cpp -index d649c7e0bf..70b47d5124 100644 ---- a/widget/gtk/nsWidgetFactory.cpp -+++ b/widget/gtk/nsWidgetFactory.cpp -@@ -20,9 +20,7 @@ - #include "nsHTMLFormatConverter.h" - #include "HeadlessClipboard.h" - #include "IMContextWrapper.h" --#ifdef MOZ_X11 --# include "nsClipboard.h" --#endif -+#include "nsClipboard.h" - #include "TaskbarProgress.h" - #include "nsFilePicker.h" - #include "nsSound.h" -@@ -36,7 +34,6 @@ - using namespace mozilla; - using namespace mozilla::widget; - --#ifdef MOZ_X11 - NS_IMPL_COMPONENT_FACTORY(nsIClipboard) { - nsCOMPtr inst; - if (gfxPlatform::IsHeadless()) { -@@ -51,7 +48,6 @@ NS_IMPL_COMPONENT_FACTORY(nsIClipboard) { - - return inst.forget().downcast(); - } --#endif - - nsresult nsWidgetGtk2ModuleCtor() { return nsAppShellInit(); } - -diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp -index 59e01f0fea..12bdda1cd4 100644 ---- a/widget/gtk/nsWindow.cpp -+++ b/widget/gtk/nsWindow.cpp -@@ -58,7 +58,6 @@ - #include "mozilla/UniquePtrExtensions.h" - #include "mozilla/WidgetUtils.h" - #include "mozilla/WritingModes.h" --#include "mozilla/X11Util.h" - #include "mozilla/XREAppData.h" - #include "NativeKeyBindings.h" - #include "nsAppDirectoryServiceDefs.h" -@@ -90,7 +89,6 @@ - #include "ScreenHelperGTK.h" - #include "SystemTimeConverter.h" - #include "WidgetUtilsGtk.h" --#include "mozilla/X11Util.h" - - #ifdef ACCESSIBILITY - # include "mozilla/a11y/LocalAccessible.h" -@@ -108,6 +106,9 @@ - # include "GLContextEGL.h" // for GLContextEGL::FindVisual() - # include "WindowSurfaceX11Image.h" - # include "WindowSurfaceX11SHM.h" -+# include "mozilla/X11Util.h" -+using mozilla::gl::GLContextEGL; -+using mozilla::gl::GLContextGLX; - #endif - #ifdef MOZ_WAYLAND - # include "nsIClipboard.h" -@@ -118,8 +119,6 @@ using namespace mozilla; - using namespace mozilla::gfx; - using namespace mozilla::layers; - using namespace mozilla::widget; --using mozilla::gl::GLContextEGL; --using mozilla::gl::GLContextGLX; - - // Don't put more than this many rects in the dirty region, just fluff - // out to the bounding-box if there are more -@@ -267,15 +266,18 @@ static nsresult initialize_prefs(void); - static guint32 sLastUserInputTime = GDK_CURRENT_TIME; - static guint32 sRetryGrabTime; - -+#ifdef MOZ_X11 - static SystemTimeConverter& TimeConverter() { - static SystemTimeConverter sTimeConverterSingleton; - return sTimeConverterSingleton; - } -+#endif - - bool nsWindow::sTransparentMainWindow = false; - - namespace mozilla { - -+#ifdef MOZ_X11 - class CurrentX11TimeGetter { - public: - explicit CurrentX11TimeGetter(GdkWindow* aWindow) -@@ -323,6 +325,7 @@ class CurrentX11TimeGetter { - GdkWindow* mWindow; - TimeStamp mAsyncUpdateStart; - }; -+#endif - - } // namespace mozilla - -@@ -2510,6 +2513,7 @@ void nsWindow::SetSizeMode(nsSizeMode aMode) { - mSizeState = mSizeMode; - } - -+#ifdef MOZ_X11 - static bool GetWindowManagerName(GdkWindow* gdk_window, nsACString& wmName) { - if (!GdkIsX11Display()) { - return false; -@@ -2579,10 +2583,12 @@ static bool GetWindowManagerName(GdkWindow* gdk_window, nsACString& wmName) { - wmName = reinterpret_cast(prop_return); - return true; - } -+#endif - - #define kDesktopMutterSchema "org.gnome.mutter" - #define kDesktopDynamicWorkspacesKey "dynamic-workspaces" - -+#ifdef MOZ_X11 - static bool WorkspaceManagementDisabled(GdkWindow* gdk_window) { - if (Preferences::GetBool("widget.disable-workspace-management", false)) { - return true; -@@ -2627,8 +2633,10 @@ static bool WorkspaceManagementDisabled(GdkWindow* gdk_window) { - - return false; - } -+#endif - - void nsWindow::GetWorkspaceID(nsAString& workspaceID) { -+#ifdef MOZ_X11 - workspaceID.Truncate(); - - if (!GdkIsX11Display() || !mShell) { -@@ -2669,9 +2677,11 @@ void nsWindow::GetWorkspaceID(nsAString& workspaceID) { - LOG(" got workspace ID %d", (int32_t)wm_desktop[0]); - workspaceID.AppendInt((int32_t)wm_desktop[0]); - g_free(wm_desktop); -+#endif - } - - void nsWindow::MoveToWorkspace(const nsAString& workspaceIDStr) { -+#ifdef MOZ_X11 - nsresult rv = NS_OK; - int32_t workspaceID = workspaceIDStr.ToInteger(&rv); - -@@ -2716,6 +2726,7 @@ void nsWindow::MoveToWorkspace(const nsAString& workspaceIDStr) { - - XFlush(xdisplay); - LOG(" moved to workspace"); -+#endif - } - - using SetUserTimeFunc = void (*)(GdkWindow*, guint32); -@@ -2755,10 +2766,7 @@ guint32 nsWindow::GetLastUserInputTime() { - // WM_DELETE_WINDOW delete events, but not usually mouse motion nor - // button and key releases. Therefore use the most recent of - // gdk_x11_display_get_user_time and the last time that we have seen. -- GdkDisplay* gdkDisplay = gdk_display_get_default(); -- guint32 timestamp = GdkIsX11Display(gdkDisplay) -- ? gdk_x11_display_get_user_time(gdkDisplay) -- : gtk_get_current_event_time(); -+ guint32 timestamp = gtk_get_current_event_time(); - - if (sLastUserInputTime != GDK_CURRENT_TIME && - TimestampIsNewerThan(sLastUserInputTime, timestamp)) { -@@ -3013,6 +3021,7 @@ void nsWindow::UpdateClientOffsetFromFrameExtents() { - return; - } - -+#ifdef MOZ_X11 - GdkAtom cardinal_atom = gdk_x11_xatom_to_atom(XA_CARDINAL); - - GdkAtom type_returned; -@@ -3038,6 +3047,7 @@ void nsWindow::UpdateClientOffsetFromFrameExtents() { - - mClientOffset = nsIntPoint(left, top); - } -+#endif - - // Send a WindowMoved notification. This ensures that BrowserParent - // picks up the new client offset and sends it to the child process -@@ -3063,9 +3073,11 @@ gboolean nsWindow::OnPropertyNotifyEvent(GtkWidget* aWidget, - if (!mGdkWindow) { - return FALSE; - } -+#ifdef MOZ_X11 - if (GetCurrentTimeGetter()->PropertyNotifyHandler(aWidget, aEvent)) { - return TRUE; - } -+#endif - return FALSE; - } - -@@ -3203,9 +3215,11 @@ void* nsWindow::GetNativeData(uint32_t aDataType) { - return GetToplevelWidget(); - - case NS_NATIVE_WINDOW_WEBRTC_DEVICE_ID: -+#ifdef MOZ_X11 - if (GdkIsX11Display()) { - return (void*)GDK_WINDOW_XID(gdk_window_get_toplevel(mGdkWindow)); - } -+#endif - NS_WARNING( - "nsWindow::GetNativeData(): NS_NATIVE_WINDOW_WEBRTC_DEVICE_ID is not " - "handled on Wayland!"); -@@ -3226,11 +3240,13 @@ void* nsWindow::GetNativeData(uint32_t aDataType) { - return nullptr; - case NS_NATIVE_EGL_WINDOW: { - void* eglWindow = nullptr; -+#ifdef MOZ_X11 - if (GdkIsX11Display()) { - eglWindow = mGdkWindow ? (void*)GDK_WINDOW_XID(mGdkWindow) : nullptr; - } -+#endif - #ifdef MOZ_WAYLAND -- else { -+ if (GdkIsWaylandDisplay()) { - eglWindow = moz_container_wayland_get_egl_window( - mContainer, FractionalScaleFactor()); - } -@@ -3520,8 +3536,6 @@ gboolean nsWindow::OnExposeEvent(cairo_t* cr) { - nsIWidgetListener* listener = GetListener(); - if (!listener) return FALSE; - -- LOG("received expose event %p 0x%lx (rects follow):\n", mGdkWindow, -- GdkIsX11Display() ? gdk_x11_window_get_xid(mGdkWindow) : 0); - LayoutDeviceIntRegion exposeRegion; - if (!ExtractExposeRegion(exposeRegion, cr)) { - return FALSE; -@@ -4068,6 +4082,7 @@ void nsWindow::OnMotionNotifyEvent(GdkEventMotion* aEvent) { - MOZ_ASSERT(gdk_window, "gdk_window_get_toplevel should not return null"); - - bool canDrag = true; -+#ifdef MOZ_X11 - if (GdkIsX11Display()) { - // Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=789054 - // To avoid crashes disable double-click on WM without _NET_WM_MOVERESIZE. -@@ -4078,6 +4093,7 @@ void nsWindow::OnMotionNotifyEvent(GdkEventMotion* aEvent) { - canDrag = false; - } - } -+#endif - - if (canDrag) { - gdk_window_begin_move_drag(gdk_window, 1, aEvent->x_root, aEvent->y_root, -@@ -4519,6 +4535,7 @@ TimeStamp nsWindow::GetEventTimeStamp(guint32 aEventTime) { - - TimeStamp eventTimeStamp; - -+#ifdef MOZ_WAYLAND - if (GdkIsWaylandDisplay()) { - // Wayland compositors use monotonic time to set timestamps. - int64_t timestampTime = g_get_monotonic_time() / 1000; -@@ -4528,16 +4545,21 @@ TimeStamp nsWindow::GetEventTimeStamp(guint32 aEventTime) { - int64_t tick = - BaseTimeDurationPlatformUtils::TicksFromMilliseconds(timestampTime); - eventTimeStamp = TimeStamp::FromSystemTime(tick); -- } else { -+ } -+#endif -+#ifdef MOZ_X11 -+ if (GdkIsX11Display()) { - CurrentX11TimeGetter* getCurrentTime = GetCurrentTimeGetter(); - MOZ_ASSERT(getCurrentTime, - "Null current time getter despite having a window"); - eventTimeStamp = - TimeConverter().GetTimeStampFromSystemTime(aEventTime, *getCurrentTime); - } -+#endif - return eventTimeStamp; - } - -+#ifdef MOZ_X11 - mozilla::CurrentX11TimeGetter* nsWindow::GetCurrentTimeGetter() { - MOZ_ASSERT(mGdkWindow, "Expected mGdkWindow to be set"); - if (MOZ_UNLIKELY(!mCurrentTimeGetter)) { -@@ -4545,6 +4567,7 @@ mozilla::CurrentX11TimeGetter* nsWindow::GetCurrentTimeGetter() { - } - return mCurrentTimeGetter.get(); - } -+#endif - - gboolean nsWindow::OnKeyPressEvent(GdkEventKey* aEvent) { - LOG("OnKeyPressEvent"); -@@ -5210,8 +5233,8 @@ void nsWindow::EnableRenderingToWindow() { - GetShapedState()); - } - -- if (GdkIsWaylandDisplay()) { - #ifdef MOZ_WAYLAND -+ if (GdkIsWaylandDisplay()) { - moz_container_wayland_add_initial_draw_callback( - mContainer, [self = RefPtr{this}, this]() -> void { - LOG("moz_container_wayland initial create " -@@ -5219,11 +5242,15 @@ void nsWindow::EnableRenderingToWindow() { - self->ResumeCompositorHiddenWindow(); - self->WaylandStartVsync(); - }); -+ } - #endif -- } else { -+ -+#ifdef MOZ_X11 -+ if (GdkIsX11Display()) { - ResumeCompositorHiddenWindow(); - WaylandStartVsync(); - } -+#endif - } - - void nsWindow::DisableRenderingToWindow() { -@@ -5236,9 +5263,12 @@ void nsWindow::DisableRenderingToWindow() { - } - } - --Window nsWindow::GetX11Window() { -- return GdkIsX11Display() && mGdkWindow ? gdk_x11_window_get_xid(mGdkWindow) -- : X11None; -+uintptr_t nsWindow::GetX11Window() { -+#ifdef MOZ_X11 -+ return (uintptr_t)(GdkIsX11Display() && mGdkWindow ? gdk_x11_window_get_xid(mGdkWindow) : X11None); -+#else -+ return (uintptr_t) nullptr; -+#endif - } - - void nsWindow::EnsureGdkWindow() { -@@ -5324,9 +5354,6 @@ void nsWindow::ConfigureGdkWindow() { - if (mHasMappedToplevel) { - EnsureGrabs(); - } -- -- LOG(" finished, new GdkWindow %p XID 0x%lx\n", mGdkWindow, -- GdkIsX11Display() ? gdk_x11_window_get_xid(mGdkWindow) : 0); - } - - void nsWindow::ReleaseGdkWindow() { -@@ -5343,11 +5370,18 @@ void nsWindow::ReleaseGdkWindow() { - mSurfaceProvider.CleanupResources(); - } - -+extern "C" { -+// Make sure mozgtk gets linked -+MOZ_EXPORT void PleaseLinkWithMe(); -+} -+ - nsresult nsWindow::Create(nsIWidget* aParent, nsNativeWidget aNativeParent, - const LayoutDeviceIntRect& aRect, - nsWidgetInitData* aInitData) { - LOG("nsWindow::Create\n"); - -+ PleaseLinkWithMe(); -+ - // only set the base parent if we're going to be a dialog or a - // toplevel - nsIWidget* baseParent = -@@ -5865,10 +5899,6 @@ nsresult nsWindow::Create(nsIWidget* aParent, nsNativeWidget aNativeParent, - nullptr); - - LOG(" nsWindow type %d %s\n", mWindowType, mIsPIPWindow ? "PIP window" : ""); -- LOG(" mShell %p mContainer %p mGdkWindow %p XID 0x%lx\n", mShell, mContainer, -- mGdkWindow, -- (GdkIsX11Display() && mGdkWindow) ? gdk_x11_window_get_xid(mGdkWindow) -- : 0); - - // Set default application name when it's empty. - if (mGtkWindowAppName.IsEmpty()) { -@@ -6720,6 +6750,7 @@ void nsWindow::UpdateTitlebarTransparencyBitmap() { - cairo_surface_destroy(surface); - } - -+#ifdef MOZ_X11 - if (!mNeedsShow) { - Display* xDisplay = GDK_WINDOW_XDISPLAY(mGdkWindow); - Window xDrawable = GDK_WINDOW_XID(mGdkWindow); -@@ -6740,6 +6771,7 @@ void nsWindow::UpdateTitlebarTransparencyBitmap() { - - XFreePixmap(xDisplay, maskPixmap); - } -+#endif - } - - void nsWindow::GrabPointer(guint32 aTime) { -@@ -7013,7 +7045,7 @@ static bool IsFullscreenSupported(GtkWidget* aShell) { - GdkScreen* screen = gtk_widget_get_screen(aShell); - GdkAtom atom = gdk_atom_intern("_NET_WM_STATE_FULLSCREEN", FALSE); - return gdk_x11_screen_supports_net_wm_hint(screen, atom); --#elif -+#else - return true; - #endif - } -@@ -8297,6 +8329,7 @@ bool nsWindow::GetDragInfo(WidgetMouseEvent* aMouseEvent, GdkWindow** aWindow, - return false; - } - -+#ifdef MOZ_X11 - if (GdkIsX11Display()) { - // Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=789054 - // To avoid crashes disable double-click on WM without _NET_WM_MOVERESIZE. -@@ -8312,6 +8345,7 @@ bool nsWindow::GetDragInfo(WidgetMouseEvent* aMouseEvent, GdkWindow** aWindow, - } - } - } -+#endif - - // FIXME: It would be nice to have the widget position at the time - // of the event, but it's relatively unlikely that the widget has -diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h -index 48cfd89..669060f 100644 ---- a/widget/gtk/nsWindow.h -+++ b/widget/gtk/nsWindow.h -@@ -89,7 +89,9 @@ namespace mozilla { - enum class NativeKeyBindingsType : uint8_t; - - class TimeStamp; -+#ifdef MOZ_X11 - class CurrentX11TimeGetter; -+#endif - } // namespace mozilla - - class nsWindow final : public nsBaseWidget { -@@ -267,7 +269,9 @@ class nsWindow final : public nsBaseWidget { - - WidgetEventTime GetWidgetEventTime(guint32 aEventTime); - mozilla::TimeStamp GetEventTimeStamp(guint32 aEventTime); -+#ifdef MOZ_X11 - mozilla::CurrentX11TimeGetter* GetCurrentTimeGetter(); -+#endif - - void SetInputContext(const InputContext& aContext, - const InputContextAction& aAction) override; -@@ -465,7 +469,7 @@ class nsWindow final : public nsBaseWidget { - void DestroyChildWindows(); - GtkWidget* GetToplevelWidget(); - nsWindow* GetContainerWindow(); -- Window GetX11Window(); -+ uintptr_t GetX11Window(); - bool GetShapedState(); - void EnsureGdkWindow(); - void SetUrgencyHint(GtkWidget* top_window, bool state); -@@ -819,7 +823,9 @@ class nsWindow final : public nsBaseWidget { - */ - RefPtr mIMContext; - -+#ifdef MOZ_X11 - mozilla::UniquePtr mCurrentTimeGetter; -+#endif - static GtkWindowDecoration sGtkWindowDecoration; - - static bool sTransparentMainWindow; -diff --git a/widget/moz.build b/widget/moz.build -index 9cef92614b..8ad6c12c26 100644 ---- a/widget/moz.build -+++ b/widget/moz.build -@@ -271,9 +271,6 @@ if CONFIG["MOZ_INSTRUMENT_EVENT_LOOP"]: - - EXPORTS.ipc = ["nsGUIEventIPC.h"] - --if CONFIG["MOZ_X11"]: -- DIRS += ["x11"] -- - if toolkit in ("cocoa", "windows"): - UNIFIED_SOURCES += [ - "nsBaseClipboard.cpp", -@@ -318,7 +315,7 @@ if toolkit == "windows": - "windows/PCompositorWidget.ipdl", - "windows/PlatformWidgetTypes.ipdlh", - ] --elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk" and CONFIG["MOZ_X11"]: -+elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk": - IPDL_SOURCES = [ - "gtk/PCompositorWidget.ipdl", - "gtk/PlatformWidgetTypes.ipdlh", -diff --git a/widget/x11/moz.build b/widget/x11/moz.build -deleted file mode 100644 -index 81d345c0af..0000000000 ---- a/widget/x11/moz.build -+++ /dev/null -@@ -1,16 +0,0 @@ --# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- --# vim: set filetype=python: --# This Source Code Form is subject to the terms of the Mozilla Public --# License, v. 2.0. If a copy of the MPL was not distributed with this --# file, You can obtain one at http://mozilla.org/MPL/2.0/. -- --with Files("**"): -- BUG_COMPONENT = ("Core", "Widget: Gtk") -- --SOURCES += [ -- "keysym2ucs.c", --] -- --FINAL_LIBRARY = "xul" -- --CFLAGS += CONFIG["MOZ_X11_CFLAGS"] diff --git a/extra/firefox/sources b/extra/firefox/sources index ba243de3..7b37e18b 100644 --- a/extra/firefox/sources +++ b/extra/firefox/sources @@ -1,9 +1,10 @@ https://ftp.mozilla.org/pub/firefox/releases/VERSION/source/firefox-VERSION.source.tar.xz +https://github.com/ATiltedTree/firefox-wayland/archive/dbf17551a416c3357687411765b48755278bd94a.tar.gz no-x11 https://ftp.gnu.org/gnu/autoconf/autoconf-2.13.tar.gz autoconf2.13/ https://github.com/yasm/yasm/releases/download/v1.3.0/yasm-1.3.0.tar.gz yasm https://fossies.org/linux/misc/zip30.tar.gz zip https://fossies.org/linux/misc/unzip60.tar.gz unzip patches/fix-clang-as.patch patches/fix-linux-header.patch +patches/no-dbus.patch patches/no-fribidi.patch -patches/no-x11.patch diff --git a/extra/firefox/version b/extra/firefox/version index c9d9e885..d6ae78d6 100644 --- a/extra/firefox/version +++ b/extra/firefox/version @@ -1 +1 @@ -99.0.1 1 +100.0 1