From 2bde8e466a4451c7319e3a072d118917957d6554 Mon Sep 17 00:00:00 2001 From: Steve Block Date: Wed, 25 May 2011 19:08:45 +0100 Subject: Merge WebKit at r82507: Initial merge by git Change-Id: I60ce9d780725b58b45e54165733a8ffee23b683e --- Source/WebKit2/Shared/ShareableBitmap.cpp | 56 ++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 13 deletions(-) (limited to 'Source/WebKit2/Shared/ShareableBitmap.cpp') diff --git a/Source/WebKit2/Shared/ShareableBitmap.cpp b/Source/WebKit2/Shared/ShareableBitmap.cpp index ab1991f..cde3aa1 100644 --- a/Source/WebKit2/Shared/ShareableBitmap.cpp +++ b/Source/WebKit2/Shared/ShareableBitmap.cpp @@ -27,13 +27,37 @@ #include "ShareableBitmap.h" #include "SharedMemory.h" +#include "WebCoreArgumentCoders.h" #include using namespace WebCore; namespace WebKit { -PassRefPtr ShareableBitmap::create(const WebCore::IntSize& size) +ShareableBitmap::Handle::Handle() + : m_flags(0) +{ +} + +void ShareableBitmap::Handle::encode(CoreIPC::ArgumentEncoder* encoder) const +{ + encoder->encode(m_handle); + encoder->encode(m_size); + encoder->encode(m_flags); +} + +bool ShareableBitmap::Handle::decode(CoreIPC::ArgumentDecoder* decoder, Handle& handle) +{ + if (!decoder->decode(handle.m_handle)) + return false; + if (!decoder->decode(handle.m_size)) + return false; + if (!decoder->decode(handle.m_flags)) + return false; + return true; +} + +PassRefPtr ShareableBitmap::create(const IntSize& size, Flags flags) { size_t numBytes = numBytesForSize(size); @@ -41,10 +65,10 @@ PassRefPtr ShareableBitmap::create(const WebCore::IntSize& size if (!tryFastMalloc(numBytes).getValue(data)) return 0; - return adoptRef(new ShareableBitmap(size, data)); + return adoptRef(new ShareableBitmap(size, flags, data)); } -PassRefPtr ShareableBitmap::createShareable(const IntSize& size) +PassRefPtr ShareableBitmap::createShareable(const IntSize& size, Flags flags) { size_t numBytes = numBytesForSize(size); @@ -52,44 +76,50 @@ PassRefPtr ShareableBitmap::createShareable(const IntSize& size if (!sharedMemory) return 0; - return adoptRef(new ShareableBitmap(size, sharedMemory)); + return adoptRef(new ShareableBitmap(size, flags, sharedMemory)); } -PassRefPtr ShareableBitmap::create(const WebCore::IntSize& size, PassRefPtr sharedMemory) +PassRefPtr ShareableBitmap::create(const IntSize& size, Flags flags, PassRefPtr sharedMemory) { ASSERT(sharedMemory); size_t numBytes = numBytesForSize(size); ASSERT_UNUSED(numBytes, sharedMemory->size() >= numBytes); - return adoptRef(new ShareableBitmap(size, sharedMemory)); + return adoptRef(new ShareableBitmap(size, flags, sharedMemory)); } -PassRefPtr ShareableBitmap::create(const WebCore::IntSize& size, const SharedMemory::Handle& handle) +PassRefPtr ShareableBitmap::create(const Handle& handle) { // Create the shared memory. - RefPtr sharedMemory = SharedMemory::create(handle, SharedMemory::ReadWrite); + RefPtr sharedMemory = SharedMemory::create(handle.m_handle, SharedMemory::ReadWrite); if (!sharedMemory) return 0; - return create(size, sharedMemory.release()); + return create(handle.m_size, handle.m_flags, sharedMemory.release()); } -bool ShareableBitmap::createHandle(SharedMemory::Handle& handle) +bool ShareableBitmap::createHandle(Handle& handle) { ASSERT(isBackedBySharedMemory()); - return m_sharedMemory->createHandle(handle, SharedMemory::ReadWrite); + if (!m_sharedMemory->createHandle(handle.m_handle, SharedMemory::ReadWrite)) + return false; + handle.m_size = m_size; + handle.m_flags = m_flags; + return true; } -ShareableBitmap::ShareableBitmap(const IntSize& size, void* data) +ShareableBitmap::ShareableBitmap(const IntSize& size, Flags flags, void* data) : m_size(size) + , m_flags(flags) , m_data(data) { } -ShareableBitmap::ShareableBitmap(const IntSize& size, PassRefPtr sharedMemory) +ShareableBitmap::ShareableBitmap(const IntSize& size, Flags flags, PassRefPtr sharedMemory) : m_size(size) + , m_flags(flags) , m_sharedMemory(sharedMemory) , m_data(0) { -- cgit v1.1