DisplayListWriterHandle.h [plain text]
#pragma once
#include "SharedDisplayListHandle.h"
#include <wtf/FastMalloc.h>
namespace WebKit {
class DisplayListWriterHandle : public SharedDisplayListHandle {
WTF_MAKE_NONCOPYABLE(DisplayListWriterHandle); WTF_MAKE_FAST_ALLOCATED;
public:
static Ref<DisplayListWriterHandle> create(WebCore::DisplayList::ItemBufferIdentifier identifier, Ref<SharedMemory>&& sharedMemory)
{
return adoptRef(*new DisplayListWriterHandle(identifier, WTFMove(sharedMemory)));
}
size_t writableOffset() const { return m_writableOffset; }
size_t availableCapacity() const;
bool moveWritableOffsetToStartIfPossible();
size_t advance(size_t amount) override;
WebCore::DisplayList::ItemBufferHandle createHandle() const;
bool tryToResume(SharedDisplayListHandle::ResumeReadingInformation&& info)
{
auto& header = this->header();
header.resumeReadingInfo = WTFMove(info);
return header.waitingStatus.compareExchangeWeak(SharedDisplayListHandle::WaitingStatus::Waiting, SharedDisplayListHandle::WaitingStatus::Resuming);
}
private:
DisplayListWriterHandle(WebCore::DisplayList::ItemBufferIdentifier identifier, Ref<SharedMemory>&& sharedMemory)
: SharedDisplayListHandle(identifier, WTFMove(sharedMemory))
, m_writableOffset(SharedDisplayListHandle::headerSize())
{
}
size_t m_writableOffset { 0 };
};
}