Bug 1430725 - dlsym gdk_wayland_display_get_wl_display() function, r?jhorak
MozReview-Commit-ID: 7TBNP1Q1YyO
--- a/widget/gtk/nsClipboardWayland.cpp
+++ b/widget/gtk/nsClipboardWayland.cpp
@@ -279,17 +279,22 @@ nsRetrievalContextWayland::nsRetrievalCo
: mInitialized(false),
mDataDeviceManager(nullptr),
mDataOffer(nullptr)
{
const gchar* charset;
g_get_charset(&charset);
mTextPlainLocale = g_strdup_printf("text/plain;charset=%s", charset);
- mDisplay = gdk_wayland_display_get_wl_display(gdk_display_get_default());
+ // Available as of GTK 3.8+
+ static auto sGdkWaylandDisplayGetWlDisplay =
+ (wl_display *(*)(GdkDisplay *))
+ dlsym(RTLD_DEFAULT, "gdk_wayland_display_get_wl_display");
+
+ mDisplay = sGdkWaylandDisplayGetWlDisplay(gdk_display_get_default());
wl_registry_add_listener(wl_display_get_registry(mDisplay),
&clipboard_registry_listener, this);
wl_display_roundtrip(mDisplay);
wl_display_roundtrip(mDisplay);
// We don't have Wayland support here so just give up
if (!mDataDeviceManager || !mSeat)
return;