summaryrefslogtreecommitdiff
path: root/src/screen_xywh.cxx
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2011-01-07 12:39:51 +0000
committerAlbrecht Schlosser <albrechts.fltk@online.de>2011-01-07 12:39:51 +0000
commitcdaff761f7259e9a0bafa349257abf538afe4b9f (patch)
tree629db8740ced41dd05dd510a53511f8080441d43 /src/screen_xywh.cxx
parent3c25646121df925034cd3f306e8b8a0dcefcb2b5 (diff)
src/screen_xywh.cxx:
Fix X11 screen_init() if Xinerama is available, but not active. Still investigating why there are nonsense dpi values under Cygwin/X11, but maybe this is an X server problem. test/hello.cxx: Extended test statements - don't forget to remove before release. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8210 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/screen_xywh.cxx')
-rw-r--r--src/screen_xywh.cxx21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/screen_xywh.cxx b/src/screen_xywh.cxx
index 6becbf979..9ed788d0b 100644
--- a/src/screen_xywh.cxx
+++ b/src/screen_xywh.cxx
@@ -56,7 +56,7 @@ typedef BOOL (WINAPI* fl_gmi_func)(HMONITOR, LPMONITORINFO);
static fl_gmi_func fl_gmi = NULL; // used to get a proc pointer for GetMonitorInfoA
static RECT screens[16];
-static int dpi[16][2] = { { 0.0f, 0.0f } };
+static float dpi[16][2];
static BOOL CALLBACK screen_cb(HMONITOR mon, HDC, LPRECT r, LPARAM) {
if (num_screens >= 16) return TRUE;
@@ -135,14 +135,19 @@ static void screen_init() {
if (XineramaIsActive(fl_display)) {
screens = XineramaQueryScreens(fl_display, &num_screens);
- } else num_screens = 1;
-
- int i;
- for (i=0; i<num_screens; i++) {
- int mm = DisplayWidthMM(fl_display, i);
- dpi[i][0] = mm ? screens[i].width*25.4f/mm : 0.0f;
+ int i;
+ for (i=0; i<num_screens; i++) {
+ int mm = DisplayWidthMM(fl_display, i);
+ dpi[i][0] = mm ? screens[i].width*25.4f/mm : 0.0f;
+ mm = DisplayHeightMM(fl_display, fl_screen);
+ dpi[i][1] = mm ? screens[i].height*25.4f/mm : dpi[i][0];
+ }
+ } else { // ! XineramaIsActive()
+ num_screens = 1;
+ int mm = DisplayWidthMM(fl_display, fl_screen);
+ dpi[0][0] = mm ? Fl::w()*25.4f/mm : 0.0f;
mm = DisplayHeightMM(fl_display, fl_screen);
- dpi[i][1] = mm ? screens[i].height*25.4f/mm : dpi[i][0];
+ dpi[0][1] = mm ? Fl::h()*25.4f/mm : dpi[0][0];
}
}
#else