Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2653)

Unified Diff: Source/platform/graphics/paint/DisplayItem.h

Issue 1193433004: Blink-side contiguous allocation of display items. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add ListContainer::AllocateAndConstructWithArguments and a TODO in DisplayItemList::findMatchingIte… Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/platform/graphics/paint/DisplayItem.h
diff --git a/Source/platform/graphics/paint/DisplayItem.h b/Source/platform/graphics/paint/DisplayItem.h
index e8c65223544cb87e83e2dcad1400997dc500a883..5efe48b12779563256a60058dff4e0edd81816ed 100644
--- a/Source/platform/graphics/paint/DisplayItem.h
+++ b/Source/platform/graphics/paint/DisplayItem.h
@@ -6,6 +6,7 @@
#define DisplayItem_h
#include "platform/PlatformExport.h"
+#include "platform/graphics/ListContainer.h"
#include "platform/graphics/paint/DisplayItemClient.h"
#include "wtf/Assertions.h"
#include "wtf/PassOwnPtr.h"
@@ -24,7 +25,7 @@ class WebDisplayItemList;
class PLATFORM_EXPORT DisplayItem {
public:
enum {
- // Must be kept in sync with core/layout/PaintPhase.h.
+ // Must be kept in sync with core/paint/PaintPhase.h.
PaintPhaseMax = 12,
};
@@ -177,6 +178,18 @@ public:
TypeLast = UninitializedType
};
+ DisplayItem(const DisplayItemClientWrapper& client, Type type)
+ : m_client(client.displayItemClient())
+ , m_scopeContainer(nullptr)
+ , m_scopeId(0)
+ , m_type(type)
+ , m_skippedCache(false)
+ , m_ignoredFromList(false)
+#ifndef NDEBUG
+ , m_clientDebugString(client.debugName())
+#endif
+ { }
+
struct Id {
Id(DisplayItemClient c, Type t) : client(c), type(t), scopeId(0), scopeContainer(nullptr)
{
@@ -304,6 +317,9 @@ public:
virtual bool drawsContent() const { return false; }
+ bool ignoreFromDisplayList() const { return m_ignoredFromList; }
+ void setIgnoredFromDisplayList() { m_ignoredFromList = true; }
+
#ifndef NDEBUG
static WTF::String typeAsDebugString(DisplayItem::Type);
const WTF::String& clientDebugString() const { return m_clientDebugString; }
@@ -311,25 +327,29 @@ public:
virtual void dumpPropertiesAsDebugString(WTF::StringBuilder&) const;
#endif
-protected:
- DisplayItem(const DisplayItemClientWrapper& client, Type type)
- : m_client(client.displayItemClient())
+private:
+ // The default DisplayItem constructor is only used by ListContainer::appendByMoving
+ // where an inavlid DisplaItem is constructed at the source location.
+ friend DisplayItem* ListContainer<DisplayItem>::appendByMoving<DisplayItem>(DisplayItem*);
+ DisplayItem()
+ : m_client(nullptr)
, m_scopeContainer(nullptr)
, m_scopeId(0)
- , m_type(type)
+ , m_type(UninitializedType)
, m_skippedCache(false)
+ , m_ignoredFromList(true)
#ifndef NDEBUG
- , m_clientDebugString(client.debugName())
+ , m_clientDebugString("invalid")
#endif
{ }
-private:
const DisplayItemClient m_client;
DisplayItemClient m_scopeContainer;
int m_scopeId;
static_assert(TypeLast < (1 << 16), "DisplayItem::Type should fit in 16 bits");
const Type m_type : 16;
unsigned m_skippedCache : 1;
+ unsigned m_ignoredFromList : 1;
#ifndef NDEBUG
WTF::String m_clientDebugString;
« no previous file with comments | « Source/platform/graphics/paint/CompositingDisplayItem.h ('k') | Source/platform/graphics/paint/DisplayItem.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698