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; RectangleList invalid (viewportArea); invalid.subtract (validArea); validArea = viewportArea; if (! invalid.isEmpty()) { clearRegionInFrameBuffer (invalid, (float) scale); { ScopedPointer<LowLevelGraphicsContext> g (createOpenGLGraphicsContext (context, cachedImageFrameBuffer)); g->addTransform (AffineTransform::scale ((float) scale)); g->clipToRectangleList (invalid); paintOwner (*g); JUCE_CHECK_OPENGL_ERROR } if (! context.isActive()) context.makeActive(); }
void paintComponent() { if (needsUpdate) { MessageManagerLock mm (this); if (! mm.lockWasGained()) return; needsUpdate = false; // you mustn't set your own cached image object when attaching a GL context! jassert (get (component) == this); const Rectangle<int> bounds (component.getLocalBounds()); if (! ensureFrameBufferSize (bounds.getWidth(), bounds.getHeight())) return; RectangleList invalid (bounds); invalid.subtract (validArea); validArea = bounds; if (! invalid.isEmpty()) { clearRegionInFrameBuffer (invalid); { ScopedPointer<LowLevelGraphicsContext> g (createOpenGLGraphicsContext (context, cachedImageFrameBuffer)); g->clipToRectangleList (invalid); paintOwner (*g); JUCE_CHECK_OPENGL_ERROR } if (! context.isActive()) context.makeActive(); } JUCE_CHECK_OPENGL_ERROR }