gdk_screen_get_monitor_width_mm returns -1


I'm trying to get the size of a monitor via gdk, but I always get -1
when measuing the size of a single monitor.

With the attached code, I get this result when using multi-monitor

Display has 2 screens
    Screen 0: 524mm x 1200mm --  has 1 monitors
        Monitor 0: 1920 x 1200 -- -1mm x -1mm
    Screen 1: 382mm x 1024mm --  has 1 monitors
        Monitor 0: 1280 x 1024 -- -1mm x -1mm

And this result when using xinerama

Display has 1 screens
    Screen 0: 873mm x 1200mm --  has 2 monitors
        Monitor 0: 1920 x 1200 -- -1mm x -1mm
        Monitor 1: 1280 x 1024 -- -1mm x -1mm

This does not change when I put some DisplaySize in the monitors
section in xorg.conf.

Is this a known bug? Or am I missing something?


Oscar Lazzarino
#include <gtk/gtk.h>
#include <stdio.h>

int main(int argc, char *argv[])
	int nScreens;
	int i, j;
	GdkDisplay *display;

	gtk_init (&argc, &argv);

	display = gdk_display_get_default();
	nScreens = gdk_display_get_n_screens(display);
	printf("Display has %d screens\n", nScreens);

	for (i=0; i<nScreens; i++)
		GdkScreen *screen;
		GdkRectangle screen_rect;
		int screen_w, screen_h;
		int nMonitors;

		screen = gdk_display_get_screen(display, i);
		screen_w = gdk_screen_get_width_mm(screen);
		screen_h = gdk_screen_get_height(screen);
		nMonitors = gdk_screen_get_n_monitors(screen);

		printf("    Screen %d: %dmm x %dmm --  has %d monitors\n", i, screen_w, screen_h, nMonitors);
		for (j=0; j<nMonitors; j++)
			GdkRectangle monitor_rect;
			int monitor_w, monitor_h;
			gdk_screen_get_monitor_geometry(screen, j, &monitor_rect);
			monitor_w = gdk_screen_get_monitor_width_mm(screen, j);
			monitor_h = gdk_screen_get_monitor_height_mm(screen, j);

			printf("        Monitor %d: %d x %d -- %dmm x %dmm\n", j,
					monitor_rect.width, monitor_rect.height,
					monitor_w, monitor_h);

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]