CoordinatedDrawingArea.h [plain text]
#ifndef CoordinatedDrawingArea_h
#define CoordinatedDrawingArea_h
#if USE(COORDINATED_GRAPHICS)
#include "DrawingArea.h"
#include "LayerTreeHost.h"
#include <WebCore/Region.h>
#include <wtf/RunLoop.h>
namespace WebKit {
class CoordinatedDrawingArea : public DrawingArea {
public:
CoordinatedDrawingArea(WebPage&, const WebPageCreationParameters&);
virtual ~CoordinatedDrawingArea();
void layerHostDidFlushLayers();
private:
virtual void setNeedsDisplay() override;
virtual void setNeedsDisplayInRect(const WebCore::IntRect&) override;
virtual void scroll(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollDelta);
virtual void pageBackgroundTransparencyChanged() override;
virtual void setLayerTreeStateIsFrozen(bool);
virtual bool layerTreeStateIsFrozen() const { return m_layerTreeStateIsFrozen; }
virtual LayerTreeHost* layerTreeHost() const { return m_layerTreeHost.get(); }
virtual void forceRepaint();
virtual bool forceRepaintAsync(uint64_t callbackID);
virtual void setPaintingEnabled(bool);
virtual void updatePreferences(const WebPreferencesStore&) override;
virtual void mainFrameContentSizeChanged(const WebCore::IntSize&) override;
virtual WebCore::GraphicsLayerFactory* graphicsLayerFactory() override;
virtual void setRootCompositingLayer(WebCore::GraphicsLayer*) override;
virtual void scheduleCompositingLayerFlush() override;
virtual void scheduleCompositingLayerFlushImmediately() override;
#if USE(COORDINATED_GRAPHICS_MULTIPROCESS)
virtual void didReceiveCoordinatedLayerTreeHostMessage(IPC::Connection&, IPC::MessageDecoder&);
#endif
virtual void viewStateDidChange(WebCore::ViewState::Flags, bool , const Vector<uint64_t>& ) override;
virtual void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) override;
virtual void updateBackingStoreState(uint64_t backingStoreStateID, bool respondImmediately, float deviceScaleFactor, const WebCore::IntSize&, const WebCore::IntSize& scrollOffset);
virtual void didUpdate();
virtual void suspendPainting();
virtual void resumePainting();
void sendDidUpdateBackingStoreState();
void enterAcceleratedCompositingMode(WebCore::GraphicsLayer*);
void exitAcceleratedCompositingModeSoon();
bool exitAcceleratedCompositingModePending() const { return m_exitCompositingTimer.isActive(); }
void exitAcceleratedCompositingMode() { }
void scheduleDisplay();
void displayTimerFired();
void display();
void display(UpdateInfo&);
uint64_t m_backingStoreStateID;
WebCore::Region m_dirtyRegion;
WebCore::IntRect m_scrollRect;
WebCore::IntSize m_scrollOffset;
bool m_isPaintingEnabled;
bool m_inUpdateBackingStoreState;
bool m_shouldSendDidUpdateBackingStoreState;
bool m_isWaitingForDidUpdate;
bool m_compositingAccordingToProxyMessages;
bool m_layerTreeStateIsFrozen;
bool m_wantsToExitAcceleratedCompositingMode;
bool m_isPaintingSuspended;
RunLoop::Timer<CoordinatedDrawingArea> m_displayTimer;
RunLoop::Timer<CoordinatedDrawingArea> m_exitCompositingTimer;
RefPtr<LayerTreeHost> m_layerTreeHost;
};
}
#endif // USE(COORDINATED_GRAPHICS)
#endif // CoordinatedDrawingArea_h