From c86a3104b2ae1068e9917ce33ad4e2b885d691c7 Mon Sep 17 00:00:00 2001 From: jules Date: Wed, 26 Mar 2014 16:16:04 +0000 Subject: [PATCH] Avoided re-entrancy in Desktop::getKioskModeComponent --- modules/juce_gui_basics/components/juce_Desktop.cpp | 6 ++++++ modules/juce_gui_basics/components/juce_Desktop.h | 1 + 2 files changed, 7 insertions(+) diff --git a/modules/juce_gui_basics/components/juce_Desktop.cpp b/modules/juce_gui_basics/components/juce_Desktop.cpp index 5deb49089f..dd377622ef 100644 --- a/modules/juce_gui_basics/components/juce_Desktop.cpp +++ b/modules/juce_gui_basics/components/juce_Desktop.cpp @@ -26,6 +26,7 @@ Desktop::Desktop() : mouseSources (new MouseInputSource::SourceList()), mouseClickCounter (0), mouseWheelCounter (0), kioskModeComponent (nullptr), + kioskModeReentrant (false), allowedOrientations (allOrientations), masterScaleFactor ((float) getDefaultMasterScale()) { @@ -340,6 +341,11 @@ void Desktop::Displays::refresh() //============================================================================== void Desktop::setKioskModeComponent (Component* componentToUse, const bool allowMenusAndBars) { + if (kioskModeReentrant) + return; + + const ScopedValueSetter setter (kioskModeReentrant, true, false); + if (kioskModeComponent != componentToUse) { // agh! Don't delete or remove a component from the desktop while it's still the kiosk component! diff --git a/modules/juce_gui_basics/components/juce_Desktop.h b/modules/juce_gui_basics/components/juce_Desktop.h index 5900004a13..05911629e9 100644 --- a/modules/juce_gui_basics/components/juce_Desktop.h +++ b/modules/juce_gui_basics/components/juce_Desktop.h @@ -426,6 +426,7 @@ private: Component* kioskModeComponent; Rectangle kioskComponentOriginalBounds; + bool kioskModeReentrant; int allowedOrientations; float masterScaleFactor;