diff --git a/src/xenia/ui/vulkan/vulkan_context.cc b/src/xenia/ui/vulkan/vulkan_context.cc index 50f51ad74..bc6600389 100644 --- a/src/xenia/ui/vulkan/vulkan_context.cc +++ b/src/xenia/ui/vulkan/vulkan_context.cc @@ -73,10 +73,6 @@ bool VulkanContext::Initialize() { #ifdef GDK_WINDOWING_X11 GtkWidget* window_handle = static_cast(target_window_->native_handle()); - GdkDisplay* gdk_display = gtk_widget_get_display(window_handle); - assert(GDK_IS_X11_DISPLAY(gdk_display)); - xcb_connection_t* connection = - XGetXCBConnection(gdk_x11_display_get_xdisplay(gdk_display)); xcb_window_t window = gdk_x11_window_get_xid(gtk_widget_get_window(window_handle)); VkXcbSurfaceCreateInfoKHR create_info; diff --git a/src/xenia/ui/window_gtk.cc b/src/xenia/ui/window_gtk.cc index 56248bd2d..7d11d316c 100644 --- a/src/xenia/ui/window_gtk.cc +++ b/src/xenia/ui/window_gtk.cc @@ -9,6 +9,8 @@ #include +#include + #include "xenia/base/assert.h" #include "xenia/base/logging.h" #include "xenia/base/platform_linux.h" @@ -81,6 +83,10 @@ void GTKWindow::Create() { NULL); g_signal_connect(G_OBJECT(window_), "event", G_CALLBACK(gtk_event_handler_), reinterpret_cast(this)); + + GdkDisplay* gdk_display = gtk_widget_get_display(window_); + assert(GDK_IS_X11_DISPLAY(gdk_display)); + connection_ = XGetXCBConnection(gdk_x11_display_get_xdisplay(gdk_display)); } bool GTKWindow::OnCreate() { diff --git a/src/xenia/ui/window_gtk.h b/src/xenia/ui/window_gtk.h index c20c0d5d6..ce28cfcd0 100644 --- a/src/xenia/ui/window_gtk.h +++ b/src/xenia/ui/window_gtk.h @@ -15,6 +15,7 @@ #include #include +#include #include "xenia/base/platform_linux.h" #include "xenia/ui/menu_item.h" @@ -31,7 +32,7 @@ class GTKWindow : public Window { ~GTKWindow() override; NativePlatformHandle native_platform_handle() const override { - return nullptr; + return connection_; } NativeWindowHandle native_handle() const override { return window_; } @@ -74,6 +75,7 @@ class GTKWindow : public Window { private: void Create(); GtkWidget* window_; + xcb_connection_t* connection_; friend void gtk_event_handler_(GtkWidget*, GdkEvent*, gpointer); bool HandleMouse(GdkEventAny* event);