Skip to content

Commit 032fa73

Browse files
committed
[GTK] Fix gdk_monitor_get_scale_factor on Gtk 4 on X11
Fixes a number of "Gdk-CRITICAL **: 14:38:20.208: gdk_monitor_get_scale_factor: assertion 'GDK_IS_MONITOR (monitor)' failed" warnings in the console. This doesn't make SWT fail but it's better to play safe. See https://gitlab.gnome.org/GNOME/gtk/-/issues/5075 for some background information.
1 parent 15c0a34 commit 032fa73

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/graphics/Device.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,8 +1099,12 @@ protected int getDeviceZoom() {
10991099
monitor = GDK.gdk_display_get_monitor_at_point(display, 0, 0);
11001100
}
11011101

1102-
int scale = GDK.gdk_monitor_get_scale_factor(monitor);
1103-
dpi = dpi * scale;
1102+
// GDK can return null monitor in some cases thus play safe
1103+
// See https://gitlab.gnome.org/GNOME/gtk/-/issues/5075 for details
1104+
if (monitor != 0) {
1105+
int scale = GDK.gdk_monitor_get_scale_factor(monitor);
1106+
dpi = dpi * scale;
1107+
}
11041108

11051109
return DPIUtil.mapDPIToZoom (dpi);
11061110
}

bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2690,7 +2690,7 @@ public Monitor[] getMonitors() {
26902690
monitor.y = geometry.y;
26912691
monitor.width = geometry.width;
26922692
monitor.height = geometry.height;
2693-
if (!OS.isX11()) {
2693+
if (!OS.isX11() || GTK.GTK4) {
26942694
int scaleFactor = (int) GDK.gdk_monitor_get_scale_factor(gdkMonitor);
26952695
monitor.zoom = scaleFactor * 100;
26962696
} else {

0 commit comments

Comments
 (0)