|
|
@@ -145,11 +145,6 @@ public: |
|
|
|
{
|
|
|
|
ScopedPointer<MessageManagerLock> mmLock;
|
|
|
|
|
|
|
|
const Rectangle<int> screenBounds (component.getTopLevelComponent()->getScreenBounds());
|
|
|
|
|
|
|
|
if (lastScreenBounds != screenBounds)
|
|
|
|
updateViewportSize (false);
|
|
|
|
|
|
|
|
const bool isUpdating = needsUpdate.compareAndSetBool (0, 1);
|
|
|
|
|
|
|
|
if (context.renderComponents && isUpdating)
|
|
|
@@ -161,6 +156,8 @@ public: |
|
|
|
mmLock = new MessageManagerLock (this); // need to acquire this before locking the context.
|
|
|
|
if (! mmLock->lockWasGained())
|
|
|
|
return false;
|
|
|
|
|
|
|
|
updateViewportSize (false);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (! context.makeActive())
|
|
|
@@ -219,13 +216,19 @@ public: |
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void checkViewportBounds()
|
|
|
|
{
|
|
|
|
const Rectangle<int> screenBounds (component.getTopLevelComponent()->getScreenBounds());
|
|
|
|
|
|
|
|
if (lastScreenBounds != screenBounds)
|
|
|
|
updateViewportSize (true);
|
|
|
|
}
|
|
|
|
|
|
|
|
void paintComponent()
|
|
|
|
{
|
|
|
|
// you mustn't set your own cached image object when attaching a GL context!
|
|
|
|
jassert (get (component) == this);
|
|
|
|
|
|
|
|
updateViewportSize (false);
|
|
|
|
|
|
|
|
if (! ensureFrameBufferSize())
|
|
|
|
return;
|
|
|
|
|
|
|
@@ -463,7 +466,8 @@ void OpenGLContext::NativeContext::renderCallback() |
|
|
|
#endif
|
|
|
|
|
|
|
|
//==============================================================================
|
|
|
|
class OpenGLContext::Attachment : public ComponentMovementWatcher
|
|
|
|
class OpenGLContext::Attachment : public ComponentMovementWatcher,
|
|
|
|
private Timer
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Attachment (OpenGLContext& c, Component& comp)
|
|
|
@@ -564,10 +568,14 @@ private: |
|
|
|
comp.setCachedComponentImage (newCachedImage);
|
|
|
|
newCachedImage->start(); // (must wait until this is attached before starting its thread)
|
|
|
|
newCachedImage->updateViewportSize (true);
|
|
|
|
|
|
|
|
startTimer (400);
|
|
|
|
}
|
|
|
|
|
|
|
|
void detach()
|
|
|
|
{
|
|
|
|
stopTimer();
|
|
|
|
|
|
|
|
Component& comp = *getComponent();
|
|
|
|
|
|
|
|
#if JUCE_MAC
|
|
|
@@ -580,6 +588,12 @@ private: |
|
|
|
comp.setCachedComponentImage (nullptr);
|
|
|
|
context.nativeContext = nullptr;
|
|
|
|
}
|
|
|
|
|
|
|
|
void timerCallback() override
|
|
|
|
{
|
|
|
|
if (CachedImage* const cachedImage = CachedImage::get (*getComponent()))
|
|
|
|
cachedImage->checkViewportBounds();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
//==============================================================================
|
|
|
|