x11: deal with xrandr display size in millimeters being zero.

Xquartz on macOS reports a zero size, which leads to a division by zero here.
This commit is contained in:
Ryan C. Gordon 2017-01-04 09:33:47 -05:00
parent 082132a70c
commit 9d04205263
2 changed files with 4 additions and 3 deletions

View File

@ -3797,7 +3797,8 @@ SDL_SetWindowHitTest(SDL_Window * window, SDL_HitTest callback, void *userdata)
return 0; return 0;
} }
float SDL_ComputeDiagonalDPI(int hpix, int vpix, float hinches, float vinches) float
SDL_ComputeDiagonalDPI(int hpix, int vpix, float hinches, float vinches)
{ {
float den2 = hinches * hinches + vinches * vinches; float den2 = hinches * hinches + vinches * vinches;
if (den2 <= 0.0f) { if (den2 <= 0.0f) {

View File

@ -464,8 +464,8 @@ X11_InitModes_XRandR(_THIS)
displaydata->screen = screen; displaydata->screen = screen;
displaydata->visual = vinfo.visual; displaydata->visual = vinfo.visual;
displaydata->depth = vinfo.depth; displaydata->depth = vinfo.depth;
displaydata->hdpi = ((float) mode.w) * 25.4f / display_mm_width; displaydata->hdpi = display_mm_width ? (((float) mode.w) * 25.4f / display_mm_width) : 0.0f;
displaydata->vdpi = ((float) mode.h) * 25.4f / display_mm_height; displaydata->vdpi = display_mm_height ? (((float) mode.h) * 25.4f / display_mm_height) : 0.0f;
displaydata->ddpi = SDL_ComputeDiagonalDPI(mode.w, mode.h, ((float) display_mm_width) / 25.4f,((float) display_mm_height) / 25.4f); displaydata->ddpi = SDL_ComputeDiagonalDPI(mode.w, mode.h, ((float) display_mm_width) / 25.4f,((float) display_mm_height) / 25.4f);
displaydata->scanline_pad = scanline_pad; displaydata->scanline_pad = scanline_pad;
displaydata->x = display_x; displaydata->x = display_x;