Launch on xwayland under Wayland if no EGL
On initialization, if wxWidgets was compiled without EGL support, check in environment variables if running under Wayland and if so tell GDK to prefer using an X11 backend, causing the program to launch under xwayland. Fix #1028 Signed-off-by: Rafael Kitover <rkitover@gmail.com>
This commit is contained in:
parent
93a24bee3c
commit
aca206a721
|
@ -47,6 +47,10 @@
|
||||||
#include "widgets/user-input-ctrl.h"
|
#include "widgets/user-input-ctrl.h"
|
||||||
#include "wxhead.h"
|
#include "wxhead.h"
|
||||||
|
|
||||||
|
#ifdef __WXGTK__
|
||||||
|
#include <gdk/gdk.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
// Resets the accelerator text for `menu_item` to the first keyboard input.
|
// Resets the accelerator text for `menu_item` to the first keyboard input.
|
||||||
|
@ -136,6 +140,15 @@ int main(int argc, char** argv) {
|
||||||
wxLog::SetLogLevel(wxLOG_Info);
|
wxLog::SetLogLevel(wxLOG_Info);
|
||||||
#endif // DEBUG
|
#endif // DEBUG
|
||||||
|
|
||||||
|
// Launch under xwayland on Wayland if EGL is not available.
|
||||||
|
#if defined(__WXGTK__) && !defined(HAVE_WAYLAND_EGL)
|
||||||
|
wxString xdg_session_type = wxGetenv("XDG_SESSION_TYPE");
|
||||||
|
wxString wayland_display = wxGetenv("WAYLAND_DISPLAY");
|
||||||
|
|
||||||
|
if (xdg_session_type == "wayland" || wayland_display.Contains("wayland"))
|
||||||
|
gdk_set_allowed_backends("x11,*");
|
||||||
|
#endif
|
||||||
|
|
||||||
// This will be freed on wxEntry exit.
|
// This will be freed on wxEntry exit.
|
||||||
wxApp::SetInstance(new wxvbamApp());
|
wxApp::SetInstance(new wxvbamApp());
|
||||||
return wxEntry(argc, argv);
|
return wxEntry(argc, argv);
|
||||||
|
|
Loading…
Reference in New Issue