diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2011-01-07 01:33:29 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2011-01-07 01:33:29 +0000 |
| commit | ecc423c2f11c1b3df730bb41feccc8d8a6814f5d (patch) | |
| tree | 5ed2f65bac2735fa679dc4366569f1ffce790f7a /src/screen_xywh.cxx | |
| parent | 308c6bc3077da11f2727d059e8bc5776b43138ce (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.cxx | 19 |
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) { |
