Skip to content

Commit 62272b2

Browse files
committed
X11: move to gtk4 from gtk3
1 parent 1fe5011 commit 62272b2

3 files changed

Lines changed: 20 additions & 22 deletions

File tree

build/debian/control.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Build-Depends:
1818
libruis-render-opengl-dev (>= 0.1.63),
1919
libruis-render-opengles-dev (>= 0.1.50),
2020
libegl1-mesa-dev,
21-
libgtk-3-dev,
21+
libgtk-4-dev,
2222
libwayland-dev,
2323
libxkbcommon-dev,
2424
libsdl2-dev

src/makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ define ruisapp_rules
6363

6464
else ifeq ($(os), linux)
6565
# use -isystem instead of -I to prevent clang-tidy follow the includes from these locations
66-
this_cxxflags += $$(patsubst -I%,-isystem%,$$(shell pkg-config --cflags gdk-3.0))
67-
this_ldlibs += $$(shell pkg-config --libs gdk-3.0)
66+
this_cxxflags += $$(patsubst -I%,-isystem%,$$(shell pkg-config --cflags gtk4))
67+
this_ldlibs += $$(shell pkg-config --libs gtk4)
6868

6969
this_ldlibs += -l GLEW
7070

src/ruisapp/glue/linux/xorg/display.hxx

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
2121

2222
#pragma once
2323

24-
#include <gdk/gdk.h>
24+
#include <gtk/gtk.h>
2525

2626
#ifdef RUISAPP_RENDER_OPENGL
2727
# include <GL/glx.h>
@@ -78,24 +78,22 @@ public:
7878
display_wrapper() :
7979
xorg_input_method(this->xorg_display),
8080
scale_factor([]() {
81-
// get scale factor
82-
gdk_init(nullptr, nullptr);
83-
84-
// GDK-4 version commented out because GDK-4 is not available in Debian 11
85-
86-
// auto display_name = DisplayString(ww.display.display);
87-
// std::cout << "display name = " << display_name << std::endl;
88-
// auto disp = gdk_display_open(display_name);
89-
// utki::assert(disp, SL);
90-
// std::cout << "gdk display name = " << gdk_display_get_name(disp) << std::endl;
91-
// auto surf = gdk_surface_new_toplevel (disp);
92-
// utki::assert(surf, SL);
93-
// auto mon = gdk_display_get_monitor_at_surface (disp, surf);
94-
// utki::assert(mon, SL);
95-
// int sf = gdk_monitor_get_scale_factor(mon);
96-
97-
// GDK-3 version
98-
int sf = gdk_window_get_scale_factor(gdk_get_default_root_window());
81+
gtk_init();
82+
83+
auto disp = gdk_display_open(
84+
// We have to use NULL here because on Wayland it cannot connect to :0 X display even if XWayland is enabled,
85+
// because the display name in that case is 'wayland-0'.
86+
// Using NULL here makes it detect the correct display automatically.
87+
NULL
88+
);
89+
utki::assert(disp, SL);
90+
std::cout << "gdk display name = " << gdk_display_get_name(disp) << std::endl;
91+
auto surf = gdk_surface_new_toplevel(disp);
92+
utki::assert(surf, SL);
93+
auto mon = gdk_display_get_monitor_at_surface(disp, surf);
94+
utki::assert(mon, SL);
95+
int sf = gdk_monitor_get_scale_factor(mon);
96+
9997
auto scale_factor = ruis::real(sf);
10098

10199
std::cout << "display scale factor = " << scale_factor << std::endl;

0 commit comments

Comments
 (0)