From 3ed50c3f09b90a7ca6754e1df7192fe038e18ecb Mon Sep 17 00:00:00 2001 From: hogliux Date: Mon, 18 May 2015 13:05:14 +0100 Subject: [PATCH] Fix divide-by-zero issue in screen dpi calculation on raspberry pi --- modules/juce_gui_basics/native/juce_linux_Windowing.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/juce_gui_basics/native/juce_linux_Windowing.cpp b/modules/juce_gui_basics/native/juce_linux_Windowing.cpp index 674266d0de..07edce4667 100644 --- a/modules/juce_gui_basics/native/juce_linux_Windowing.cpp +++ b/modules/juce_gui_basics/native/juce_linux_Windowing.cpp @@ -1215,8 +1215,12 @@ private: e.usableBounds = e.totalBounds.withZeroOrigin(); // Support for usable area is not implemented in JUCE yet e.topLeftScaled = e.totalBounds.getTopLeft(); e.isMain = (mainDisplay == screens->outputs[j]) && (i == 0); - e.dpi = ((static_cast (crtc->width) * 25.4 * 0.5) / static_cast (output->mm_width)) - + ((static_cast (crtc->height) * 25.4 * 0.5) / static_cast (output->mm_height)); + e.dpi = getDisplayDPI (0); + + // The raspberry pi returns a zero sized display, so we need to guard for divide-by-zero + if (output->mm_width > 0 && output->mm_height > 0) + e.dpi = ((static_cast (crtc->width) * 25.4 * 0.5) / static_cast (output->mm_width)) + + ((static_cast (crtc->height) * 25.4 * 0.5) / static_cast (output->mm_height)); e.scale = masterScale * getScaleForDisplay (output->name, e);