From a1ba5568da6c57e8a0e4440913a6bda322620422 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 21 Jan 2011 16:29:27 +0200 Subject: Make QMAKE_EXTENSION_SHLIB and friends work in all Symbian mkspecs. Reviewed-by: axis --- mkspecs/common/symbian/symbian-makefile.conf | 3 --- mkspecs/common/symbian/symbian.conf | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mkspecs/common/symbian/symbian-makefile.conf b/mkspecs/common/symbian/symbian-makefile.conf index 364e91b..0360615 100644 --- a/mkspecs/common/symbian/symbian-makefile.conf +++ b/mkspecs/common/symbian/symbian-makefile.conf @@ -22,11 +22,8 @@ QMAKE_ELF2E32_FLAGS = --dlldata \ include(../../common/unix.conf) QMAKE_PREFIX_SHLIB = -QMAKE_EXTENSION_SHLIB = dll CONFIG *= no_plugin_name_prefix -QMAKE_EXTENSION_PLUGIN = dll QMAKE_PREFIX_STATICLIB = -QMAKE_EXTENSION_STATICLIB = lib QMAKE_SYMBIAN_SHLIB = 1 is_using_gnupoc { diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf index ab94cfb..5619d4f 100644 --- a/mkspecs/common/symbian/symbian.conf +++ b/mkspecs/common/symbian/symbian.conf @@ -13,6 +13,9 @@ QMAKE_COMPILER_DEFINES += SYMBIAN QMAKE_EXT_OBJ = .o QMAKE_EXT_RES = _res.o +QMAKE_EXTENSION_SHLIB = dll +QMAKE_EXTENSION_PLUGIN = dll +QMAKE_EXTENSION_STATICLIB = lib QMAKE_LEX = flex QMAKE_LEXFLAGS = -- cgit v0.12 From f129fd72752aa0ac088837b9f70b22621e9d3b83 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Fri, 21 Jan 2011 15:28:44 +0000 Subject: fix error reporting that was mistakenly broken by 570e7b38487455d394b5b74a59edc639f3dc416f Merge-request: 1018 Reviewed-by: Shane Kearns --- src/corelib/kernel/qsystemsemaphore_symbian.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/corelib/kernel/qsystemsemaphore_symbian.cpp b/src/corelib/kernel/qsystemsemaphore_symbian.cpp index 07cfffc..a46389d 100644 --- a/src/corelib/kernel/qsystemsemaphore_symbian.cpp +++ b/src/corelib/kernel/qsystemsemaphore_symbian.cpp @@ -73,6 +73,7 @@ void QSystemSemaphorePrivate::setErrorString(const QString &function, int err) case KErrInUse: errorString = QCoreApplication::tr("%1: out of resources", "QSystemSemaphore").arg(function); error = QSystemSemaphore::OutOfResources; + break; case KErrPermissionDenied: errorString = QCoreApplication::tr("%1: permission denied", "QSystemSemaphore").arg(function); error = QSystemSemaphore::PermissionDenied; -- cgit v0.12 From 3539af42ca847e628c325a2069b72284b597d617 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Fri, 21 Jan 2011 15:28:49 +0000 Subject: fix error reporting on detach() before, we returned too early :) Merge-request: 1018 Reviewed-by: Shane Kearns --- src/corelib/kernel/qsharedmemory_win.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/kernel/qsharedmemory_win.cpp b/src/corelib/kernel/qsharedmemory_win.cpp index 85600a2..5293f45 100644 --- a/src/corelib/kernel/qsharedmemory_win.cpp +++ b/src/corelib/kernel/qsharedmemory_win.cpp @@ -124,8 +124,8 @@ bool QSharedMemoryPrivate::cleanHandle() { if (hand != 0 && !CloseHandle(hand)) { hand = 0; - return false; setErrorString(QLatin1String("QSharedMemory::cleanHandle")); + return false; } hand = 0; return true; -- cgit v0.12 From 75771ddf96273899a990d33395fb4fac14666022 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Fri, 21 Jan 2011 15:28:53 +0000 Subject: avoid extra calculations QSystemSemaphore::setKey() sets the fileName member to makeKeyFileName()'s result; no need to call it again Merge-request: 1018 Reviewed-by: Shane Kearns --- src/corelib/kernel/qsystemsemaphore_symbian.cpp | 3 +-- src/corelib/kernel/qsystemsemaphore_win.cpp | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/corelib/kernel/qsystemsemaphore_symbian.cpp b/src/corelib/kernel/qsystemsemaphore_symbian.cpp index a46389d..0d257b8 100644 --- a/src/corelib/kernel/qsystemsemaphore_symbian.cpp +++ b/src/corelib/kernel/qsystemsemaphore_symbian.cpp @@ -98,8 +98,7 @@ int QSystemSemaphorePrivate::handle(QSystemSemaphore::AccessMode) if (key.isEmpty()) return 0; - QString safeName = makeKeyFileName(); - TPtrC name(qt_QString2TPtrC(safeName)); + TPtrC name(qt_QString2TPtrC(fileName)); int err = KErrAlreadyExists; int tryCount = 10; // Sort out race conditions by retrying several times until existing handle is acquired. diff --git a/src/corelib/kernel/qsystemsemaphore_win.cpp b/src/corelib/kernel/qsystemsemaphore_win.cpp index 7f002f8..fad50f2 100644 --- a/src/corelib/kernel/qsystemsemaphore_win.cpp +++ b/src/corelib/kernel/qsystemsemaphore_win.cpp @@ -86,8 +86,7 @@ HANDLE QSystemSemaphorePrivate::handle(QSystemSemaphore::AccessMode) // Create it if it doesn't already exists. if (semaphore == 0) { - QString safeName = makeKeyFileName(); - semaphore = CreateSemaphore(0, initialValue, MAXLONG, (wchar_t*)safeName.utf16()); + semaphore = CreateSemaphore(0, initialValue, MAXLONG, (wchar_t*)fileName.utf16()); if (semaphore == NULL) setErrorString(QLatin1String("QSystemSemaphore::handle")); } -- cgit v0.12 From c17e49e8a481f96a4b953d8fcf41678fc1b2f9bc Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Fri, 21 Jan 2011 15:28:57 +0000 Subject: simplify QSharedMemory::detach() de-init members in the QSharedMemoryPrivate::detach() like in code for symbian. this gains a lightly better control in case of errors on detach() Merge-request: 1018 Reviewed-by: Shane Kearns --- src/corelib/kernel/qsharedmemory.cpp | 6 +----- src/corelib/kernel/qsharedmemory_unix.cpp | 1 + src/corelib/kernel/qsharedmemory_win.cpp | 1 + 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/corelib/kernel/qsharedmemory.cpp b/src/corelib/kernel/qsharedmemory.cpp index 2fd6c50..85b37d0 100644 --- a/src/corelib/kernel/qsharedmemory.cpp +++ b/src/corelib/kernel/qsharedmemory.cpp @@ -399,11 +399,7 @@ bool QSharedMemory::detach() return false; #endif - if (d->detach()) { - d->size = 0; - return true; - } - return false; + return d->detach(); } /*! diff --git a/src/corelib/kernel/qsharedmemory_unix.cpp b/src/corelib/kernel/qsharedmemory_unix.cpp index bea5b63..3cd17f1 100644 --- a/src/corelib/kernel/qsharedmemory_unix.cpp +++ b/src/corelib/kernel/qsharedmemory_unix.cpp @@ -265,6 +265,7 @@ bool QSharedMemoryPrivate::detach() return false; } memory = 0; + size = 0; // Get the number of current attachments if (!handle()) diff --git a/src/corelib/kernel/qsharedmemory_win.cpp b/src/corelib/kernel/qsharedmemory_win.cpp index 5293f45..ac9c86a 100644 --- a/src/corelib/kernel/qsharedmemory_win.cpp +++ b/src/corelib/kernel/qsharedmemory_win.cpp @@ -186,6 +186,7 @@ bool QSharedMemoryPrivate::detach() return false; } memory = 0; + size = 0; // close handle return cleanHandle(); -- cgit v0.12 From acd04e69bd404657638d3a95eea3a5946008cf03 Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Fri, 21 Jan 2011 15:29:01 +0000 Subject: get rid of extra calls to handle() in create(), handle() is called a few lines early; in attach(), QSharedMemory::attach() calls handle() as a preparation step; in detach(), well, if we're here, unix_key is valid anyways... Merge-request: 1018 Reviewed-by: Shane Kearns --- src/corelib/kernel/qsharedmemory_unix.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/corelib/kernel/qsharedmemory_unix.cpp b/src/corelib/kernel/qsharedmemory_unix.cpp index 3cd17f1..ddb0e34 100644 --- a/src/corelib/kernel/qsharedmemory_unix.cpp +++ b/src/corelib/kernel/qsharedmemory_unix.cpp @@ -199,7 +199,7 @@ bool QSharedMemoryPrivate::create(int size) } // create - if (-1 == shmget(handle(), size, 0666 | IPC_CREAT | IPC_EXCL)) { + if (-1 == shmget(unix_key, size, 0666 | IPC_CREAT | IPC_EXCL)) { QString function = QLatin1String("QSharedMemory::create"); switch (errno) { case EINVAL: @@ -220,10 +220,7 @@ bool QSharedMemoryPrivate::create(int size) bool QSharedMemoryPrivate::attach(QSharedMemory::AccessMode mode) { // grab the shared memory segment id - if (!handle()) - return false; - - int id = shmget(handle(), 0, (mode == QSharedMemory::ReadOnly ? 0444 : 0660)); + int id = shmget(unix_key, 0, (mode == QSharedMemory::ReadOnly ? 0444 : 0660)); if (-1 == id) { setErrorString(QLatin1String("QSharedMemory::attach (shmget)")); return false; @@ -268,10 +265,8 @@ bool QSharedMemoryPrivate::detach() size = 0; // Get the number of current attachments - if (!handle()) - return false; - int id = shmget(handle(), 0, 0444); - unix_key = 0; + int id = shmget(unix_key, 0, 0444); + cleanHandle(); struct shmid_ds shmid_ds; if (0 != shmctl(id, IPC_STAT, &shmid_ds)) { -- cgit v0.12 From 00141ca67b6c20ecc8624bb9d1c70d97d34f544a Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Fri, 21 Jan 2011 15:29:05 +0000 Subject: ignore the warning from auto-detach in destructor we locked shm few line ago and didn't unlock it, so we expecting for this warning Merge-request: 1018 Reviewed-by: Shane Kearns --- tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp b/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp index 50205bc..0719576 100644 --- a/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp +++ b/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp @@ -358,7 +358,8 @@ void tst_QSharedMemory::lock() QVERIFY(shm.lock()); QTest::ignoreMessage(QtWarningMsg, "QSharedMemory::lock: already locked"); QVERIFY(shm.lock()); - // don't lock forever + // we didn't unlock(), so ignore the warning from auto-detach in destructor + QTest::ignoreMessage(QtWarningMsg, "QSharedMemory::lock: already locked"); } /*! -- cgit v0.12 From 586bbfdd296a55edb42c14bacd7901d7c074fd9a Mon Sep 17 00:00:00 2001 From: Ritt Konstantin Date: Fri, 21 Jan 2011 15:29:10 +0000 Subject: make the test a bit stricter don't say we passed the test if we didn't Merge-request: 1018 Reviewed-by: Shane Kearns --- tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp b/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp index 0719576..f11519b 100644 --- a/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp +++ b/tests/auto/qtipc/qsharedmemory/tst_qsharedmemory.cpp @@ -332,6 +332,8 @@ void tst_QSharedMemory::attach() QVERIFY(sm.detach()); // Make sure detach doesn't screw up something and we can't re-attach. QVERIFY(sm.attach()); + QVERIFY(sm.data() != 0); + QVERIFY(sm.size() != 0); QVERIFY(sm.detach()); QCOMPARE(sm.size(), 0); QVERIFY(sm.data() == 0); -- cgit v0.12