Changeset 161192 in webkit


Ignore:
Timestamp:
Jan 1, 2014, 10:34:02 AM (12 years ago)
Author:
Simon Fraser
Message:

Add a typedef for PlatformLayerID on GraphicsLayer, and migrate RemoteLayerTreeTransaction to use it
https://bugs.webkit.org/show_bug.cgi?id=126346

Source/WebCore:

Reviewed by Tim Horton.

Remote scrolling tree code is soon going to use RemoteLayerTreeTransaction::LayerID,
so it makes more sense to put this layerID type on GraphicsLayer as
GraphicsLayer::PlatformLayerID.

Also add some type cast macros for PlatformCALayer and subclasses, and use them
where appropriate.

  • platform/graphics/GraphicsLayer.h:
  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setName):

  • platform/graphics/ca/PlatformCALayer.h:

(WebCore::PlatformCALayer::isPlatformCALayerMac):
(WebCore::PlatformCALayer::isPlatformCALayerRemote):
(WebCore::PlatformCALayer::PlatformCALayer):

  • platform/graphics/ca/mac/PlatformCALayerMac.h:

Source/WebKit2:

Reviewed by Tim Horton.

Remote scrolling tree code is soon going to use RemoteLayerTreeTransaction::LayerID,
so it makes more sense to put this layerID type on GraphicsLayer as
GraphicsLayer::PlatformLayerID.

Also add some type cast macros for PlatformCALayer and subclasses, and use them
where appropriate.

  • Shared/mac/RemoteLayerTreePropertyApplier.h:
  • Shared/mac/RemoteLayerTreeTransaction.h:

(WebKit::RemoteLayerTreeTransaction::rootLayerID):
(WebKit::RemoteLayerTreeTransaction::changedLayers):
(WebKit::RemoteLayerTreeTransaction::destroyedLayers):

  • Shared/mac/RemoteLayerTreeTransaction.mm:

(WebKit::RemoteLayerTreeTransaction::decode):
(WebKit::RemoteLayerTreeTransaction::setRootLayerID):
(WebKit::RemoteLayerTreeTransaction::setDestroyedLayerIDs):
(WebKit::RemoteLayerTreeTextStream::operator<<):
(WebKit::dumpChangedLayers):
(WebKit::RemoteLayerTreeTransaction::description):

  • UIProcess/mac/RemoteLayerTreeHost.h:
  • UIProcess/mac/RemoteLayerTreeHost.mm:

(WebKit::RemoteLayerTreeHost::commit):
(WebKit::RemoteLayerTreeHost::getLayer):

  • WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp:

(WebKit::GraphicsLayerCARemote::primaryLayerID):

  • WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
  • WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:

(generateLayerID):

  • WebProcess/WebPage/mac/PlatformCALayerRemote.h:

(WebKit::PlatformCALayerRemote::layerID):

  • WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
Location:
trunk/Source
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r161191 r161192  
     12014-01-01  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Add a typedef for PlatformLayerID on GraphicsLayer, and migrate RemoteLayerTreeTransaction to use it
     4        https://bugs.webkit.org/show_bug.cgi?id=126346
     5
     6        Reviewed by Tim Horton.
     7
     8        Remote scrolling tree code is soon going to use RemoteLayerTreeTransaction::LayerID,
     9        so it makes more sense to put this layerID type on GraphicsLayer as
     10        GraphicsLayer::PlatformLayerID.
     11       
     12        Also add some type cast macros for PlatformCALayer and subclasses, and use them
     13        where appropriate.
     14
     15        * platform/graphics/GraphicsLayer.h:
     16        * platform/graphics/ca/GraphicsLayerCA.cpp:
     17        (WebCore::GraphicsLayerCA::setName):
     18        * platform/graphics/ca/PlatformCALayer.h:
     19        (WebCore::PlatformCALayer::isPlatformCALayerMac):
     20        (WebCore::PlatformCALayer::isPlatformCALayerRemote):
     21        (WebCore::PlatformCALayer::PlatformCALayer):
     22        * platform/graphics/ca/mac/PlatformCALayerMac.h:
     23
    1242013-12-31  Simon Fraser  <simon.fraser@apple.com>
    225
  • trunk/Source/WebCore/platform/graphics/GraphicsLayer.h

    r160672 r161192  
    227227    static std::unique_ptr<GraphicsLayer> create(GraphicsLayerFactory*, GraphicsLayerClient*);
    228228   
     229    typedef uint64_t PlatformLayerID;
     230
    229231    virtual ~GraphicsLayer();
    230232
  • trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp

    r160672 r161192  
    390390    String caLayerDescription;
    391391
    392     if (!m_layer->isRemote())
     392    if (!m_layer->isPlatformCALayerRemote())
    393393        caLayerDescription = String::format("CALayer(%p) ", m_layer->platformLayer());
    394394
  • trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.h

    r160672 r161192  
    8181    virtual ~PlatformCALayer();
    8282
     83    virtual bool isPlatformCALayerMac() const { return false; }
     84    virtual bool isPlatformCALayerRemote() const { return false; }
     85
    8386    // This function passes the layer as a void* rather than a PlatformLayer because PlatformLayer
    8487    // is defined differently for Obj C and C++. This allows callers from both languages.
     
    99102
    100103    LayerType layerType() const { return m_layerType; }
    101     virtual bool isRemote() const { return false; }
    102104
    103105    virtual PlatformCALayer* superlayer() const = 0;
     
    212214        : m_layerType(layerType)
    213215        , m_owner(owner)
    214     {
    215 
    216     }
     216    { }
    217217
    218218    LayerType m_layerType;
     
    221221};
    222222
    223 }
     223#define PLATFORM_CALAYER_TYPE_CASTS(ToValueTypeName, predicate) \
     224    TYPE_CASTS_BASE(ToValueTypeName, WebCore::PlatformCALayer, object, object->predicate, object.predicate)
     225
     226} // namespace WebCore
    224227
    225228#endif // USE(ACCELERATED_COMPOSITING)
  • trunk/Source/WebCore/platform/graphics/ca/mac/PlatformCALayerMac.h

    r160672 r161192  
    149149private:
    150150    PlatformCALayerMac(LayerType, PlatformLayer*, PlatformCALayerClient* owner);
     151    virtual bool isPlatformCALayerMac() const OVERRIDE { return true; }
    151152
    152153    bool requiresCustomAppearanceUpdateOnBoundsChange() const;
     
    157158};
    158159
     160PLATFORM_CALAYER_TYPE_CASTS(PlatformCALayerMac, isPlatformCALayerMac())
     161
    159162} // namespace WebCore
    160163
  • trunk/Source/WebKit2/ChangeLog

    r161189 r161192  
     12014-01-01  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Add a typedef for PlatformLayerID on GraphicsLayer, and migrate RemoteLayerTreeTransaction to use it
     4        https://bugs.webkit.org/show_bug.cgi?id=126346
     5
     6        Reviewed by Tim Horton.
     7       
     8        Remote scrolling tree code is soon going to use RemoteLayerTreeTransaction::LayerID,
     9        so it makes more sense to put this layerID type on GraphicsLayer as
     10        GraphicsLayer::PlatformLayerID.
     11       
     12        Also add some type cast macros for PlatformCALayer and subclasses, and use them
     13        where appropriate.
     14
     15        * Shared/mac/RemoteLayerTreePropertyApplier.h:
     16        * Shared/mac/RemoteLayerTreeTransaction.h:
     17        (WebKit::RemoteLayerTreeTransaction::rootLayerID):
     18        (WebKit::RemoteLayerTreeTransaction::changedLayers):
     19        (WebKit::RemoteLayerTreeTransaction::destroyedLayers):
     20        * Shared/mac/RemoteLayerTreeTransaction.mm:
     21        (WebKit::RemoteLayerTreeTransaction::decode):
     22        (WebKit::RemoteLayerTreeTransaction::setRootLayerID):
     23        (WebKit::RemoteLayerTreeTransaction::setDestroyedLayerIDs):
     24        (WebKit::RemoteLayerTreeTextStream::operator<<):
     25        (WebKit::dumpChangedLayers):
     26        (WebKit::RemoteLayerTreeTransaction::description):
     27        * UIProcess/mac/RemoteLayerTreeHost.h:
     28        * UIProcess/mac/RemoteLayerTreeHost.mm:
     29        (WebKit::RemoteLayerTreeHost::commit):
     30        (WebKit::RemoteLayerTreeHost::getLayer):
     31        * WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp:
     32        (WebKit::GraphicsLayerCARemote::primaryLayerID):
     33        * WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
     34        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
     35        (generateLayerID):
     36        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
     37        (WebKit::PlatformCALayerRemote::layerID):
     38        * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
     39
    1402014-01-01  Martin Robinson  <mrobinson@igalia.com>
    241
  • trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h

    r158691 r161192  
    3434class RemoteLayerTreePropertyApplier {
    3535public:
    36     typedef HashMap<RemoteLayerTreeTransaction::LayerID, CALayer *> RelatedLayerMap;
     36    typedef HashMap<WebCore::GraphicsLayer::PlatformLayerID, CALayer *> RelatedLayerMap;
    3737    static void applyPropertiesToLayer(CALayer *, RemoteLayerTreeTransaction::LayerProperties, RelatedLayerMap);
    3838    static void disableActionsForLayer(CALayer *);
  • trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h

    r161148 r161192  
    4848class RemoteLayerTreeTransaction {
    4949public:
    50     typedef uint64_t LayerID;
    51 
    5250    enum LayerChange {
    5351        NoChange = 0,
     
    8785        static bool decode(IPC::ArgumentDecoder&, LayerCreationProperties&);
    8886
    89         LayerID layerID;
     87        WebCore::GraphicsLayer::PlatformLayerID layerID;
    9088        WebCore::PlatformCALayer::LayerType type;
    9189
     
    109107
    110108        String name;
    111         Vector<LayerID> children;
     109        Vector<WebCore::GraphicsLayer::PlatformLayerID> children;
    112110        WebCore::FloatPoint3D position;
    113111        WebCore::FloatSize size;
     
    124122        bool masksToBounds;
    125123        bool opaque;
    126         LayerID maskLayerID;
     124        WebCore::GraphicsLayer::PlatformLayerID maskLayerID;
    127125        WebCore::FloatRect contentsRect;
    128126        float contentsScale;
     
    143141    static bool decode(IPC::ArgumentDecoder&, RemoteLayerTreeTransaction&);
    144142
    145     LayerID rootLayerID() const { return m_rootLayerID; }
    146     void setRootLayerID(LayerID rootLayerID);
     143    WebCore::GraphicsLayer::PlatformLayerID rootLayerID() const { return m_rootLayerID; }
     144    void setRootLayerID(WebCore::GraphicsLayer::PlatformLayerID);
    147145    void layerPropertiesChanged(PlatformCALayerRemote*, LayerProperties&);
    148146    void setCreatedLayers(Vector<LayerCreationProperties>);
    149     void setDestroyedLayerIDs(Vector<LayerID>);
     147    void setDestroyedLayerIDs(Vector<WebCore::GraphicsLayer::PlatformLayerID>);
    150148
    151149#if !defined(NDEBUG) || !LOG_DISABLED
     
    155153
    156154    Vector<LayerCreationProperties> createdLayers() const { return m_createdLayers; }
    157     HashMap<LayerID, LayerProperties> changedLayers() const { return m_changedLayerProperties; }
    158     Vector<LayerID> destroyedLayers() const { return m_destroyedLayerIDs; }
     155    HashMap<WebCore::GraphicsLayer::PlatformLayerID, LayerProperties> changedLayers() const { return m_changedLayerProperties; }
     156    Vector<WebCore::GraphicsLayer::PlatformLayerID> destroyedLayers() const { return m_destroyedLayerIDs; }
    159157
    160158private:
    161     LayerID m_rootLayerID;
    162     HashMap<LayerID, LayerProperties> m_changedLayerProperties;
     159    WebCore::GraphicsLayer::PlatformLayerID m_rootLayerID;
     160    HashMap<WebCore::GraphicsLayer::PlatformLayerID, LayerProperties> m_changedLayerProperties;
    163161    Vector<LayerCreationProperties> m_createdLayers;
    164     Vector<LayerID> m_destroyedLayerIDs;
     162    Vector<WebCore::GraphicsLayer::PlatformLayerID> m_destroyedLayerIDs;
    165163};
    166164
  • trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm

    r161148 r161192  
    360360    if (!decoder.decode(result.m_destroyedLayerIDs))
    361361        return false;
    362     for (LayerID layerID : result.m_destroyedLayerIDs) {
     362
     363    for (auto layerID : result.m_destroyedLayerIDs) {
    363364        if (!layerID)
    364365            return false;
     
    368369}
    369370
    370 void RemoteLayerTreeTransaction::setRootLayerID(LayerID rootLayerID)
     371void RemoteLayerTreeTransaction::setRootLayerID(GraphicsLayer::PlatformLayerID rootLayerID)
    371372{
    372373    ASSERT_ARG(rootLayerID, rootLayerID);
     
    385386}
    386387
    387 void RemoteLayerTreeTransaction::setDestroyedLayerIDs(Vector<LayerID> destroyedLayerIDs)
     388void RemoteLayerTreeTransaction::setDestroyedLayerIDs(Vector<GraphicsLayer::PlatformLayerID> destroyedLayerIDs)
    388389{
    389390    m_destroyedLayerIDs = std::move(destroyedLayerIDs);
     
    407408    RemoteLayerTreeTextStream& operator<<(Color);
    408409    RemoteLayerTreeTextStream& operator<<(FloatRect);
    409     RemoteLayerTreeTextStream& operator<<(const Vector<RemoteLayerTreeTransaction::LayerID>& layers);
     410    RemoteLayerTreeTextStream& operator<<(const Vector<WebCore::GraphicsLayer::PlatformLayerID>& layers);
    410411    RemoteLayerTreeTextStream& operator<<(const FilterOperations&);
    411412
     
    538539}
    539540
    540 RemoteLayerTreeTextStream& RemoteLayerTreeTextStream::operator<<(const Vector<RemoteLayerTreeTransaction::LayerID>& layers)
     541RemoteLayerTreeTextStream& RemoteLayerTreeTextStream::operator<<(const Vector<GraphicsLayer::PlatformLayerID>& layers)
    541542{
    542543    RemoteLayerTreeTextStream& ts = *this;
     
    568569}
    569570
    570 static void dumpChangedLayers(RemoteLayerTreeTextStream& ts, const HashMap<RemoteLayerTreeTransaction::LayerID, RemoteLayerTreeTransaction::LayerProperties>& changedLayerProperties)
     571static void dumpChangedLayers(RemoteLayerTreeTextStream& ts, const HashMap<GraphicsLayer::PlatformLayerID, RemoteLayerTreeTransaction::LayerProperties>& changedLayerProperties)
    571572{
    572573    if (changedLayerProperties.isEmpty())
     
    578579
    579580    // Dump the layer properties sorted by layer ID.
    580     Vector<RemoteLayerTreeTransaction::LayerID> layerIDs;
     581    Vector<GraphicsLayer::PlatformLayerID> layerIDs;
    581582    copyKeysToVector(changedLayerProperties, layerIDs);
    582583    std::sort(layerIDs.begin(), layerIDs.end());
     
    594595
    595596        if (layerProperties.changedProperties & RemoteLayerTreeTransaction::ChildrenChanged)
    596             dumpProperty<Vector<RemoteLayerTreeTransaction::LayerID>>(ts, "children", layerProperties.children);
     597            dumpProperty<Vector<GraphicsLayer::PlatformLayerID>>(ts, "children", layerProperties.children);
    597598
    598599        if (layerProperties.changedProperties & RemoteLayerTreeTransaction::PositionChanged)
     
    639640
    640641        if (layerProperties.changedProperties & RemoteLayerTreeTransaction::MaskLayerChanged)
    641             dumpProperty<RemoteLayerTreeTransaction::LayerID>(ts, "maskLayer", layerProperties.maskLayerID);
     642            dumpProperty<GraphicsLayer::PlatformLayerID>(ts, "maskLayer", layerProperties.maskLayerID);
    642643
    643644        if (layerProperties.changedProperties & RemoteLayerTreeTransaction::ContentsRectChanged)
     
    742743
    743744    if (!m_destroyedLayerIDs.isEmpty())
    744         dumpProperty<Vector<RemoteLayerTreeTransaction::LayerID>>(ts, "destroyed-layers", m_destroyedLayerIDs);
     745        dumpProperty<Vector<GraphicsLayer::PlatformLayerID>>(ts, "destroyed-layers", m_destroyedLayerIDs);
    745746
    746747    ts << ")\n";
  • trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.h

    r161148 r161192  
    5151    void commit(const RemoteLayerTreeTransaction&);
    5252
    53     CALayer *getLayer(RemoteLayerTreeTransaction::LayerID);
     53    CALayer *getLayer(WebCore::GraphicsLayer::PlatformLayerID) const;
    5454    CALayer *createLayer(RemoteLayerTreeTransaction::LayerCreationProperties);
    5555
     
    5757
    5858    CALayer *m_rootLayer;
    59     HashMap<RemoteLayerTreeTransaction::LayerID, RetainPtr<CALayer>> m_layers;
     59    HashMap<WebCore::GraphicsLayer::PlatformLayerID, RetainPtr<CALayer>> m_layers;
    6060};
    6161
  • trunk/Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm

    r160464 r161192  
    6969
    7070    for (auto changedLayer : transaction.changedLayers()) {
    71         RemoteLayerTreeTransaction::LayerID layerID = changedLayer.key;
     71        auto layerID = changedLayer.key;
    7272        const auto& properties = changedLayer.value;
    7373
     
    9191}
    9292
    93 CALayer *RemoteLayerTreeHost::getLayer(RemoteLayerTreeTransaction::LayerID layerID)
     93CALayer *RemoteLayerTreeHost::getLayer(GraphicsLayer::PlatformLayerID layerID) const
    9494{
    9595    return m_layers.get(layerID).get();
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/GraphicsLayerCARemote.cpp

    r158647 r161192  
    3939}
    4040
     41GraphicsLayer::PlatformLayerID GraphicsLayerCARemote::primaryLayerID() const
     42{
     43    return toPlatformCALayerRemote(platformCALayer())->layerID();
     44}
     45
    4146#if ENABLE(CSS_FILTERS)
    4247bool GraphicsLayerCARemote::filtersCanBeComposited(const FilterOperations& filters)
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/GraphicsLayerCARemote.h

    r159948 r161192  
    4545
    4646    virtual ~GraphicsLayerCARemote();
     47   
     48    PlatformLayerID primaryLayerID() const;
    4749
    4850#if ENABLE(CSS_FILTERS)
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp

    r161013 r161192  
    4848using namespace WebKit;
    4949
    50 static RemoteLayerTreeTransaction::LayerID generateLayerID()
    51 {
    52     static RemoteLayerTreeTransaction::LayerID layerID;
     50static WebCore::GraphicsLayer::PlatformLayerID generateLayerID()
     51{
     52    static WebCore::GraphicsLayer::PlatformLayerID layerID;
    5353    return ++layerID;
    54 }
    55 
    56 static PlatformCALayerRemote* toPlatformCALayerRemote(PlatformCALayer* layer)
    57 {
    58     ASSERT_WITH_SECURITY_IMPLICATION(!layer || layer->isRemote());
    59     return static_cast<PlatformCALayerRemote*>(layer);
    6054}
    6155
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.h

    r160672 r161192  
    4545    virtual ~PlatformCALayerRemote();
    4646
    47     RemoteLayerTreeTransaction::LayerID layerID() { return m_layerID; }
    48 
    49     virtual bool isRemote() const OVERRIDE { return true; }
     47    WebCore::GraphicsLayer::PlatformLayerID layerID() { return m_layerID; }
    5048
    5149    virtual bool usesTiledBackingLayer() const OVERRIDE { return layerType() == LayerTypePageTiledBackingLayer || layerType() == LayerTypeTiledBackingLayer; }
     
    158156
    159157private:
     158    virtual bool isPlatformCALayerRemote() const OVERRIDE { return false; }
    160159    void ensureBackingStore();
    161160    void removeSublayer(PlatformCALayerRemote*);
     
    163162    bool requiresCustomAppearanceUpdateOnBoundsChange() const;
    164163
    165     RemoteLayerTreeTransaction::LayerID m_layerID;
     164    const WebCore::GraphicsLayer::PlatformLayerID m_layerID;
    166165    RemoteLayerTreeTransaction::LayerProperties m_properties;
    167166    WebCore::PlatformCALayerList m_children;
     
    173172};
    174173
     174PLATFORM_CALAYER_TYPE_CASTS(PlatformCALayerRemote, isPlatformCALayerRemote())
     175
    175176} // namespace WebKit
    176177
  • trunk/Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerTreeContext.h

    r160052 r161192  
    7575
    7676    Vector<RemoteLayerTreeTransaction::LayerCreationProperties> m_createdLayers;
    77     Vector<RemoteLayerTreeTransaction::LayerID> m_destroyedLayers;
     77    Vector<WebCore::GraphicsLayer::PlatformLayerID> m_destroyedLayers;
    7878
    7979    bool m_isFlushingSuspended;
Note: See TracChangeset for help on using the changeset viewer.