From 55b5cb9caa7ef79bef1ba5291377134921c03d41 Mon Sep 17 00:00:00 2001 From: Robin Burchell Date: Wed, 2 May 2012 00:56:22 +0200 Subject: Stub out QSharedMemory and QSystemSemaphore for Android. Android does not support regular SysV shm, we'll need to write our own implementations. Change-Id: I2817f64b36512b965b012388a667d08935828c83 Reviewed-by: Thiago Macieira --- src/corelib/kernel/kernel.pri | 10 +- src/corelib/kernel/qsharedmemory_android.cpp | 122 ++++++++++++++++++++++++ src/corelib/kernel/qsharedmemory_p.h | 2 +- src/corelib/kernel/qsystemsemaphore_android.cpp | 95 ++++++++++++++++++ 4 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 src/corelib/kernel/qsharedmemory_android.cpp create mode 100644 src/corelib/kernel/qsystemsemaphore_android.cpp diff --git a/src/corelib/kernel/kernel.pri b/src/corelib/kernel/kernel.pri index b645d480d7..6fb10b0b2e 100644 --- a/src/corelib/kernel/kernel.pri +++ b/src/corelib/kernel/kernel.pri @@ -107,8 +107,6 @@ unix|integrity { SOURCES += \ kernel/qcore_unix.cpp \ kernel/qcrashhandler.cpp \ - kernel/qsharedmemory_unix.cpp \ - kernel/qsystemsemaphore_unix.cpp \ kernel/qeventdispatcher_unix.cpp \ kernel/qtimerinfo_unix.cpp @@ -128,6 +126,14 @@ unix|integrity { } contains(QT_CONFIG, clock-gettime):include($$QT_SOURCE_TREE/config.tests/unix/clock-gettime/clock-gettime.pri) + + !android-* { + SOURCES += kernel/qsharedmemory_unix.cpp \ + kernel/qsystemsemaphore_unix.cpp + } else { + SOURCES += kernel/qsharedmemory_android.cpp \ + kernel/qsystemsemaphore_android.cpp + } } vxworks { diff --git a/src/corelib/kernel/qsharedmemory_android.cpp b/src/corelib/kernel/qsharedmemory_android.cpp new file mode 100644 index 0000000000..d9806a8b37 --- /dev/null +++ b/src/corelib/kernel/qsharedmemory_android.cpp @@ -0,0 +1,122 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Collabora Ltd, author +** Contact: http://www.qt-project.org/ +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qsharedmemory.h" +#include "qsharedmemory_p.h" +#include + +#ifndef QT_NO_SHAREDMEMORY +QT_BEGIN_NAMESPACE + +QSharedMemoryPrivate::QSharedMemoryPrivate() + : QObjectPrivate(), memory(0), size(0), error(QSharedMemory::NoError), +#ifndef QT_NO_SYSTEMSEMAPHORE + systemSemaphore(QString()), lockedByMe(false), +#endif + unix_key(0) +{ +} + +void QSharedMemoryPrivate::setErrorString(const QString &function) +{ + qWarning() << Q_FUNC_INFO << "Not yet implemented on Android"; +} + +/*! + \internal + + If not already made create the handle used for accessing the shared memory. +*/ +key_t QSharedMemoryPrivate::handle() +{ + qWarning() << Q_FUNC_INFO << "Not yet implemented on Android"; + return 0; +} + +#endif // QT_NO_SHAREDMEMORY + +#if !(defined(QT_NO_SHAREDMEMORY) && defined(QT_NO_SYSTEMSEMAPHORE)) +/*! + \internal + Creates the unix file if needed. + returns true if the unix file was created. + + -1 error + 0 already existed + 1 created + */ +int QSharedMemoryPrivate::createUnixKeyFile(const QString &fileName) +{ + qWarning() << Q_FUNC_INFO << "Not yet implemented on Android"; + return 0; +} +#endif // QT_NO_SHAREDMEMORY && QT_NO_SYSTEMSEMAPHORE + +#ifndef QT_NO_SHAREDMEMORY + +bool QSharedMemoryPrivate::cleanHandle() +{ + qWarning() << Q_FUNC_INFO << "Not yet implemented on Android"; + return true; +} + +bool QSharedMemoryPrivate::create(int size) +{ + qWarning() << Q_FUNC_INFO << "Not yet implemented on Android"; + return false; +} + +bool QSharedMemoryPrivate::attach(QSharedMemory::AccessMode mode) +{ + qWarning() << Q_FUNC_INFO << "Not yet implemented on Android"; + return false; +} + +bool QSharedMemoryPrivate::detach() +{ + qWarning() << Q_FUNC_INFO << "Not yet implemented on Android"; + return false; +} + + +QT_END_NAMESPACE + +#endif // QT_NO_SHAREDMEMORY diff --git a/src/corelib/kernel/qsharedmemory_p.h b/src/corelib/kernel/qsharedmemory_p.h index 2eb90c2c1a..598d3473fc 100644 --- a/src/corelib/kernel/qsharedmemory_p.h +++ b/src/corelib/kernel/qsharedmemory_p.h @@ -69,7 +69,7 @@ namespace QSharedMemoryPrivate #include "qsystemsemaphore.h" #include "private/qobject_p.h" -#ifndef Q_OS_WIN +#if !defined(Q_OS_WIN) && !defined(Q_OS_LINUX_ANDROID) # include #endif diff --git a/src/corelib/kernel/qsystemsemaphore_android.cpp b/src/corelib/kernel/qsystemsemaphore_android.cpp new file mode 100644 index 0000000000..1e13f6eb5a --- /dev/null +++ b/src/corelib/kernel/qsystemsemaphore_android.cpp @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Collabora Ltd, author +** Contact: http://www.qt-project.org/ +** +** This file is part of the QtCore module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qsystemsemaphore.h" +#include "qsystemsemaphore_p.h" + +#include + +#ifndef QT_NO_SYSTEMSEMAPHORE + +QT_BEGIN_NAMESPACE + +QSystemSemaphorePrivate::QSystemSemaphorePrivate() : + semaphore(-1), createdFile(false), + createdSemaphore(false), unix_key(-1), error(QSystemSemaphore::NoError) +{ +} + +void QSystemSemaphorePrivate::setErrorString(const QString &function) +{ + qWarning() << Q_FUNC_INFO << "Not yet implemented on Android"; +} + +/*! + \internal + + Setup unix_key + */ +key_t QSystemSemaphorePrivate::handle(QSystemSemaphore::AccessMode mode) +{ + qWarning() << Q_FUNC_INFO << "Not yet implemented on Android"; + return -1; +} + +/*! + \internal + + Cleanup the unix_key + */ +void QSystemSemaphorePrivate::cleanHandle() +{ + qWarning() << Q_FUNC_INFO << "Not yet implemented on Android"; +} + +/*! + \internal + */ +bool QSystemSemaphorePrivate::modifySemaphore(int count) +{ + qWarning() << Q_FUNC_INFO << "Not yet implemented on Android"; + return false; +} + + +QT_END_NAMESPACE + +#endif // QT_NO_SYSTEMSEMAPHORE -- cgit v1.2.3