File 0004-Don-t-crash-when-switching-to-full-screen-in-non-X11.patch of Package wxWidgets-3_0
From a6b14c2ed1b653a3b7d30911ca5bbab0f7b78b14 Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Wed, 19 Nov 2014 13:29:23 +0000
Subject: [PATCH 4/5] Don't crash when switching to full screen in non
X11-based wxGTK.
Only use internal X11 display if we're running in a such environment.
See #16688.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78160 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
src/gtk/toplevel.cpp | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp
index 511324a..62cfe1a 100644
--- a/src/gtk/toplevel.cpp
+++ b/src/gtk/toplevel.cpp
@@ -852,10 +852,19 @@ bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long)
m_fsIsShowing = show;
+ wxX11FullScreenMethod method = wxX11_FS_WMSPEC;
+ Display* xdpy = NULL;
+ Window xroot = None;
+
#ifdef GDK_WINDOWING_X11
- Display* xdpy = GDK_DISPLAY_XDISPLAY(gtk_widget_get_display(m_widget));
- Window xroot = GDK_WINDOW_XID(gtk_widget_get_root_window(m_widget));
- wxX11FullScreenMethod method = wxGetFullScreenMethodX11(xdpy, (WXWindow)xroot);
+ GdkDisplay *display = gtk_widget_get_display(m_widget);
+
+ if (GDK_IS_X11_DISPLAY(display))
+ {
+ xdpy = GDK_DISPLAY_XDISPLAY(display);
+ xroot = GDK_WINDOW_XID(gtk_widget_get_root_window(m_widget));
+ method = wxGetFullScreenMethodX11(xdpy, (WXWindow)xroot);
+ }
// NB: gtk_window_fullscreen() uses freedesktop.org's WMspec extensions
// to switch to fullscreen, which is not always available. We must
@@ -870,7 +879,7 @@ bool wxTopLevelWindowGTK::ShowFullScreen(bool show, long)
gtk_window_unfullscreen( GTK_WINDOW( m_widget ) );
}
#ifdef GDK_WINDOWING_X11
- else
+ else if (xdpy != NULL)
{
GdkWindow* window = gtk_widget_get_window(m_widget);
Window xid = GDK_WINDOW_XID(window);
--
2.7.0