diff options
| author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-10-18 18:14:17 +0200 |
|---|---|---|
| committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-21 23:56:18 +0200 |
| commit | d4a6abc1b18d65a2bd665cdda10cedd97a98c249 (patch) | |
| tree | 1809712a95418c814a615d647f6f2b8211c912dc /Source/WebKit2 | |
| parent | 2761751ecaf61064c3742c639a37f110120e8292 (diff) | |
| download | qtwebkit-d4a6abc1b18d65a2bd665cdda10cedd97a98c249.tar.gz | |
Fix build for boot2qt eAndroid
Reverts the removal of Android support in WTF, and brings the support
up to date.
Merged change to MacroAssemblerARM.cpp from QtScript.
Replaces use of statvfs with statfs in one place.
Replaces shm-based shared memory with ashmem-based in WebKit2.
Change-Id: I440b1fbd94bb4148f7ba764d77de65230d13ed90
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/WebKit2')
| -rw-r--r-- | Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp | 40 | ||||
| -rw-r--r-- | Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp | 2 | ||||
| -rw-r--r-- | Source/WebKit2/WebKit2.pri | 2 |
3 files changed, 42 insertions, 2 deletions
diff --git a/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp b/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp index 760a8ab1c..6a4d52792 100644 --- a/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp +++ b/Source/WebKit2/Platform/unix/SharedMemoryUnix.cpp @@ -44,6 +44,10 @@ #include <wtf/UniStdExtras.h> #include <wtf/text/CString.h> +#if OS(ANDROID) +#include <linux/ashmem.h> +#endif + namespace WebKit { SharedMemory::Handle::Handle() @@ -97,6 +101,41 @@ void SharedMemory::Handle::adoptFromAttachment(int fileDescriptor, size_t size) m_size = size; } +#if OS(ANDROID) +PassRefPtr<SharedMemory> SharedMemory::create(size_t size) +{ + int fileDescriptor = open("/dev/ashmem", O_RDWR); + if (fileDescriptor < 0) { + WTFLogAlways("Failed to open ashmem device"); + return 0; + } + + String name = String("/WK2SharedMemory.") + String::number(static_cast<unsigned>(WTF::randomNumber() * (std::numeric_limits<unsigned>::max() + 1.0))); + char buf[ASHMEM_NAME_LEN]; + strlcpy(buf,name.utf8().data(), sizeof(buf)); + // Ashmem names does not need to be unique. + ioctl(fileDescriptor, ASHMEM_SET_NAME, buf); + + int ret = ioctl(fileDescriptor, ASHMEM_SET_SIZE, size); + if (ret < 0) { + closeWithRetry(fileDescriptor); + WTFLogAlways("Failed to create shared memory of size %d", size); + return 0; + } + + void* data = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fileDescriptor, 0); + if (data == MAP_FAILED) { + closeWithRetry(fileDescriptor); + return 0; + } + + RefPtr<SharedMemory> instance = adoptRef(new SharedMemory()); + instance->m_data = data; + instance->m_fileDescriptor = fileDescriptor; + instance->m_size = size; + return instance.release(); +} +#else PassRefPtr<SharedMemory> SharedMemory::create(size_t size) { CString tempName; @@ -138,6 +177,7 @@ PassRefPtr<SharedMemory> SharedMemory::create(size_t size) instance->m_size = size; return instance.release(); } +#endif static inline int accessModeMMap(SharedMemory::Protection protection) { diff --git a/Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp b/Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp index 128379f26..01ea5e6bd 100644 --- a/Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp +++ b/Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp @@ -250,7 +250,7 @@ void PopupMenuItemModel::buildItems(const Vector<WebPopupItem>& webPopupItems) { QString currentGroup; m_items.reserveInitialCapacity(webPopupItems.size()); - for (int i = 0; i < webPopupItems.size(); i++) { + for (size_t i = 0; i < webPopupItems.size(); i++) { const WebPopupItem& webPopupItem = webPopupItems[i]; if (webPopupItem.m_isLabel) { currentGroup = webPopupItem.m_text; diff --git a/Source/WebKit2/WebKit2.pri b/Source/WebKit2/WebKit2.pri index cf154cc19..e8d4b80d0 100644 --- a/Source/WebKit2/WebKit2.pri +++ b/Source/WebKit2/WebKit2.pri @@ -75,7 +75,7 @@ INCLUDEPATH += $${ROOT_WEBKIT_DIR}/Source/WTF/wtf/qt INCLUDEPATH += $$WEBKIT2_GENERATED_SOURCES_DIR -linux-*: { +linux-*:!android { # -lrt is required for shm_open and shm_unlink. LIBS += -lrt } |
