diff --git a/modules/juce_gui_basics/components/juce_Component.cpp b/modules/juce_gui_basics/components/juce_Component.cpp index 94cfe3479d..53e64e1511 100644 --- a/modules/juce_gui_basics/components/juce_Component.cpp +++ b/modules/juce_gui_basics/components/juce_Component.cpp @@ -1810,6 +1810,14 @@ void Component::internalRepaintUnchecked (const Rectangle& area, const bool { if (flags.visibleFlag) { + if (cachedImage != nullptr) + { + if (isEntireComponent) + cachedImage->invalidateAll(); + else + cachedImage->invalidate (area); + } + if (flags.hasHeavyweightPeerFlag) { // if component methods are being called from threads other than the message @@ -1823,14 +1831,6 @@ void Component::internalRepaintUnchecked (const Rectangle& area, const bool } else { - if (cachedImage != nullptr) - { - if (isEntireComponent) - cachedImage->invalidateAll(); - else - cachedImage->invalidate (area); - } - if (parentComponent != nullptr) parentComponent->internalRepaint (ComponentHelpers::convertToParentSpace (*this, area)); } diff --git a/modules/juce_opengl/native/juce_OpenGL_win32.h b/modules/juce_opengl/native/juce_OpenGL_win32.h index 907b41a133..80e2b0604a 100644 --- a/modules/juce_opengl/native/juce_OpenGL_win32.h +++ b/modules/juce_opengl/native/juce_OpenGL_win32.h @@ -113,6 +113,7 @@ public: unsigned int getFrameBufferID() const noexcept { return 0; } private: + Component dummyComponent; ScopedPointer nativeWindow; HGLRC renderContext; HDC dc; @@ -137,7 +138,7 @@ private: void createNativeWindow (Component& component) { Component* topComp = component.getTopLevelComponent(); - nativeWindow = createNonRepaintingEmbeddedWindowsPeer (&component, topComp->getWindowHandle()); + nativeWindow = createNonRepaintingEmbeddedWindowsPeer (&dummyComponent, topComp->getWindowHandle()); updateWindowPosition (topComp->getLocalArea (&component, component.getLocalBounds())); nativeWindow->setVisible (true); dc = GetDC ((HWND) nativeWindow->getNativeHandle());