ThreadedCoordinatedLayerTreeHost.h [plain text]
#ifndef ThreadedCoordinatedLayerTreeHost_h
#define ThreadedCoordinatedLayerTreeHost_h
#if USE(COORDINATED_GRAPHICS_THREADED)
#include "CoordinatedLayerTreeHost.h"
#include "ThreadedCompositor.h"
namespace WebCore {
class GraphicsContext;
class GraphicsLayer;
struct CoordinatedGraphicsState;
}
namespace WebKit {
class WebPage;
class ThreadedCoordinatedLayerTreeHost final : public CoordinatedLayerTreeHost {
public:
static Ref<ThreadedCoordinatedLayerTreeHost> create(WebPage&);
virtual ~ThreadedCoordinatedLayerTreeHost();
private:
explicit ThreadedCoordinatedLayerTreeHost(WebPage&);
void scrollNonCompositedContents(const WebCore::IntRect& scrollRect) override;
void sizeDidChange(const WebCore::IntSize&) override;
void deviceOrPageScaleFactorChanged() override;
void contentsSizeChanged(const WebCore::IntSize&) override;
void didChangeViewportProperties(const WebCore::ViewportAttributes&) override;
#if PLATFORM(GTK)
void setNativeSurfaceHandleForCompositing(uint64_t) override;
#endif
class CompositorClient final : public ThreadedCompositor::Client {
WTF_MAKE_NONCOPYABLE(CompositorClient);
public:
CompositorClient(ThreadedCoordinatedLayerTreeHost& layerTreeHost)
: m_layerTreeHost(layerTreeHost)
{
}
private:
void setVisibleContentsRect(const WebCore::FloatRect& rect, const WebCore::FloatPoint& trajectoryVector, float scale) override
{
m_layerTreeHost.setVisibleContentsRect(rect, trajectoryVector, scale);
}
void purgeBackingStores() override
{
m_layerTreeHost.purgeBackingStores();
}
void renderNextFrame() override
{
m_layerTreeHost.renderNextFrame();
}
void commitScrollOffset(uint32_t layerID, const WebCore::IntSize& offset) override
{
m_layerTreeHost.commitScrollOffset(layerID, offset);
}
ThreadedCoordinatedLayerTreeHost& m_layerTreeHost;
};
void didScaleFactorChanged(float scale, const WebCore::IntPoint& origin);
void setVisibleContentsRect(const WebCore::FloatRect&, const WebCore::FloatPoint&, float);
void didFlushRootLayer(const WebCore::FloatRect&) override { }
void commitSceneState(const WebCore::CoordinatedGraphicsState&) override;
WebCore::IntPoint m_prevScrollPosition;
CompositorClient m_compositorClient;
RefPtr<ThreadedCompositor> m_compositor;
float m_lastScaleFactor { 1 };
WebCore::IntPoint m_lastScrollPosition;
};
}
#endif // USE(COORDINATED_GRAPHICS_THREADED)
#endif // ThreadedCoordinatedLayerTreeHost_h