summaryrefslogtreecommitdiff
path: root/src/screen_xywh.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2011-01-07 01:33:29 +0000
committerMatthias Melcher <fltk@matthiasm.com>2011-01-07 01:33:29 +0000
commitecc423c2f11c1b3df730bb41feccc8d8a6814f5d (patch)
tree5ed2f65bac2735fa679dc4366569f1ffce790f7a /src/screen_xywh.cxx
parent308c6bc3077da11f2727d059e8bc5776b43138ce (diff)
DPI fixed for Xinerama?
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8206 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/screen_xywh.cxx')
-rw-r--r--src/screen_xywh.cxx19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/screen_xywh.cxx b/src/screen_xywh.cxx
index d8cd96a5e..c8536501a 100644
--- a/src/screen_xywh.cxx
+++ b/src/screen_xywh.cxx
@@ -128,7 +128,7 @@ static void screen_init() {
// Screen data...
static XineramaScreenInfo *screens;
-static float dpi[2];
+static float dpi[16][2];
static void screen_init() {
if (!fl_display) fl_open_display();
@@ -136,11 +136,14 @@ static void screen_init() {
if (XineramaIsActive(fl_display)) {
screens = XineramaQueryScreens(fl_display, &num_screens);
} else num_screens = 1;
-
- int mm = DisplayWidthMM(fl_display, fl_screen);
- dpi[0] = mm ? monitor.w()*25.4f/mm : 0.0f;
- mm = DisplayHeightMM(fl_display, fl_screen);
- dpi[1] = mm ? monitor.h()*25.4f/mm : dpi[0];
+
+ int i;
+ for (i=0; i<num_screens; i++) {
+ int mm = DisplayWidthMM(fl_display, i);
+ dpi[0] = mm ? screens[i].width*25.4f/mm : 0.0f;
+ mm = DisplayHeightMM(fl_display, fl_screen);
+ dpi[1] = mm ? screens[i].height*25.4f/mm : dpi[0];
+ }
}
#else
static XRectangle screen;
@@ -300,8 +303,8 @@ void Fl::screen_dpi(float &h, float &v, int n)
}
#elif HAVE_XINERAMA
if (n >= 0 && n < num_screens) {
- h = dpi[0];
- v = dpi[1];
+ h = dpi[n][0];
+ v = dpi[n][1];
}
#else
if (n >= 0 && n < num_screens) {