[Coordinated Graphics] Move CompositingCoordinator from platform to WebKit2 layer
[WebKit-https.git] / Source / WebKit2 / WebProcess / WebPage / CoordinatedGraphics / UpdateAtlas.h
index 0f4aaa67760785d2326d1ea79e2699ed7b93c0f3..0d9cac4d52ef23de736b5d17df937a85f94e99e7 100644 (file)
 #define UpdateAtlas_h
 
 #include "AreaAllocator.h"
-#include "IntSize.h"
-#include "WebCoordinatedSurface.h"
+#include <WebCore/CoordinatedSurface.h>
+#include <WebCore/IntSize.h>
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefPtr.h>
 
 #if USE(COORDINATED_GRAPHICS)
+
 namespace WebCore {
 class GraphicsContext;
 class IntPoint;
@@ -33,22 +36,22 @@ class IntPoint;
 
 namespace WebKit {
 
-class UpdateAtlasClient {
-public:
-    virtual void createUpdateAtlas(uint32_t atlasID, const WebCoordinatedSurface::Handle&) = 0;
-    virtual void removeUpdateAtlas(uint32_t atlasID) = 0;
-};
-
 class UpdateAtlas {
     WTF_MAKE_NONCOPYABLE(UpdateAtlas);
 public:
-    UpdateAtlas(UpdateAtlasClient*, int dimension, CoordinatedSurface::Flags);
+    class Client {
+    public:
+        virtual void createUpdateAtlas(uint32_t /* id */, PassRefPtr<WebCore::CoordinatedSurface>) = 0;
+        virtual void removeUpdateAtlas(uint32_t /* id */) = 0;
+    };
+
+    UpdateAtlas(Client*, int dimension, WebCore::CoordinatedSurface::Flags);
     ~UpdateAtlas();
 
     inline WebCore::IntSize size() const { return m_surface->size(); }
 
-    // Returns a null pointer of there is no available buffer.
-    PassOwnPtr<WebCore::GraphicsContext> beginPaintingOnAvailableBuffer(uint32_t& atlasID, const WebCore::IntSize&, WebCore::IntPoint& offset);
+    // Returns false if there is no available buffer.
+    bool paintOnAvailableBuffer(const WebCore::IntSize&, uint32_t& atlasID, WebCore::IntPoint& offset, WebCore::CoordinatedSurface::Client*);
     void didSwapBuffers();
     bool supportsAlpha() const { return m_surface->supportsAlpha(); }
 
@@ -62,22 +65,20 @@ public:
         const double inactiveSecondsTolerance = 3;
         return m_inactivityInSeconds > inactiveSecondsTolerance;
     }
-    bool isInUse() const { return m_areaAllocator; }
+    bool isInUse() const { return !!m_areaAllocator; }
 
 private:
     void buildLayoutIfNeeded();
 
 private:
-    UpdateAtlasClient* m_client;
-    OwnPtr<GeneralAreaAllocator> m_areaAllocator;
-    ShareableBitmap::Flags m_flags;
-    RefPtr<CoordinatedSurface> m_surface;
-    WebCoordinatedSurface::Handle m_handle;
+    Client* m_client;
+    std::unique_ptr<GeneralAreaAllocator> m_areaAllocator;
+    RefPtr<WebCore::CoordinatedSurface> m_surface;
     double m_inactivityInSeconds;
     uint32_t m_ID;
-    bool m_isValid;
 };
 
-}
-#endif
+} // namespace WebKit
+
+#endif // USE(COORDINATED_GRAPHICS)
 #endif // UpdateAtlas_h