[Coordinated Graphics] Move CompositingCoordinator from platform to WebKit2 layer
[WebKit-https.git] / Source / WebKit2 / WebProcess / WebPage / CoordinatedGraphics / UpdateAtlas.h
index 7cefe9c979421586273f4e0cd309a20234c71ad1..0d9cac4d52ef23de736b5d17df937a85f94e99e7 100644 (file)
@@ -1,5 +1,6 @@
 /*
  Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies)
+ Copyright (C) 2012 Company 100, Inc.
 
  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Library General Public
 #define UpdateAtlas_h
 
 #include "AreaAllocator.h"
-#include "IntSize.h"
-#include "ShareableSurface.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;
@@ -32,24 +36,24 @@ class IntPoint;
 
 namespace WebKit {
 
-class UpdateAtlasClient {
-public:
-    virtual void createUpdateAtlas(int atlasID, const ShareableSurface::Handle&) = 0;
-    virtual void removeUpdateAtlas(int atlasID) = 0;
-};
-
 class UpdateAtlas {
     WTF_MAKE_NONCOPYABLE(UpdateAtlas);
 public:
-    UpdateAtlas(UpdateAtlasClient*, int dimension, ShareableBitmap::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(int& 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();
-    ShareableBitmap::Flags flags() const { return m_flags; }
+    bool supportsAlpha() const { return m_surface->supportsAlpha(); }
 
     void addTimeInactive(double seconds)
     {
@@ -61,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<ShareableSurface> m_surface;
-    ShareableSurface::Handle m_handle;
+    Client* m_client;
+    std::unique_ptr<GeneralAreaAllocator> m_areaAllocator;
+    RefPtr<WebCore::CoordinatedSurface> m_surface;
     double m_inactivityInSeconds;
-    int m_ID;
-    bool m_isVaild;
+    uint32_t m_ID;
 };
 
-}
-#endif
+} // namespace WebKit
+
+#endif // USE(COORDINATED_GRAPHICS)
 #endif // UpdateAtlas_h