summaryrefslogtreecommitdiffstats
path: root/src/corelib/thread/qthread_symbian.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Update copyright headersAkseli Salovaara2015-03-311-13/+13
| | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I7e3e96183e073877b46bc8071b2ccae19e69426b Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
* QThread: fix race when setting the eventDispatcherAndy Shaw2015-02-081-0/+2
| | | | | | | | | Use QMutexLocker to make this thread-safe. Task-number: QTBUG-29452 (cherry picked and adapted from qtbase/f4609b202208fe592d24c7ae3b4a48ee83045497) Change-Id: I5caf71d9a5dc6e3d655eac84426a0c5592772235 Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
* Updated year in copyright headerKai Koehne2014-03-261-1/+1
| | | | | | | | | | | | | | | | | | find . -path '*/3rdparty/*' -prune -o -type f -print | xargs -L1 sed -i -E 's/Copyright(.*) 2013 Digia/Copyright\1 2014 Digia/g' Manually patched files: demos/spectrum/3rdparty/fftreal/fftreal_wrapper.h demos/spectrum/3rdparty/fftreal/fftreal_wrapper.cpp src/3rdparty/s60/eiksoftkeyimage.h tools/qdoc3/test/qt-project.qdocconf tests/auto/qsharedpointer/nontracked.h tests/auto/qsharedpointer/nontracked.cpp Change-Id: I3f9074923b4d6bd4666258ab04f01476cc6e901c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Sergio Ahumada <sahumada@blackberry.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Update copyright year in Digia's license headersSergio Ahumada2013-01-131-1/+1
| | | | | | Change-Id: I52bf8ef0447b701b4ebf7d7d240013a72adb9425 Reviewed-by: Akseli Salovaara <akseli.salovaara@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-291-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: I280c0a575987d1770e354b4948f1d4d767d711ea Reviewed-by: Simo Fält <simo.falt@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Update contact information in license headers.Sergio Ahumada2012-08-011-2/+2
| | | | | | | | | | | | | - Replace Nokia contact email address with Qt Project website. - Remove "All rights reserved" line from license headers. As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: Ie7ba62011752fcb149b99b26317c54f2a0cfa931 Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
* Removing potential crashes from out-of-thread cleanup on SymbianMurray Read2012-06-211-3/+35
| | | | | | | | | | | | | | | | | | | | There have been some crashes seen on Symbian when its adoptedThreadMonitor attempts to clean up objects created in other, now dead, threads. Some of these objects simply can't be cleaned up properly outside of their original thread, so the thread has to be checked when they are cleaned up, and cleanup skipped in the wrong thread. For pthread created threads, we also have the ability to insert cleanup code during thread shutdown. This was used in the 4.7 implementation of QThread on Symbian, and is a better solution for pthread based adopted threads as it gives in-thread cleanup. So the appropriate pthread code is also used with changes to adoptedThreadMonitor so that it can run along side the pthread cleanup code. Change-Id: Iad8207879b1ece62e5cce85f26a616166aa22486 Reviewed-by: Juha Kukkonen <ext-juha.kukkonen@nokia.com> Reviewed-by: Pasi Pentikäinen <ext-pasi.a.pentikainen@nokia.com>
* Fix QThread start failure due to bad thread name on SymbianJuha Kukkonen2012-04-251-1/+10
| | | | | | | | | | | | | | | | | | RThread::Create() deems a thread name to be invalid, if it contains any of the characters: "*", "?", ":" or character is outside 0x20 - 0x7e range. This matches to the logic in User::ValidateName() that is used by RThread::Create() to validate thread name. In addition, maximum thread name length is 80 character on Symbian. It was possible that thread name contained e.g. colon that caused RThread::Create() to fail with KErrBadName (-28). Fix ensures that thread name contains only allowed characters. Task-number: ou1cimx1#996187 Change-Id: Ie6dd8c60bfed4e2f6cc48607ff0ff940d9cdae8a Reviewed-by: Murray Read <ext-murray.2.read@nokia.com> Reviewed-by: Pasi Pentikäinen <ext-pasi.a.pentikainen@nokia.com>
* Give QThread threads better names on SymbianMurray Read2012-03-271-6/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | QThread sets the name of a Symbian thread that it creates. This name can appear in a number of debugging scenarios, and it can give useful information. However the existing name set by QThread has not been informative. This change improves the amount of information in the thread name. Threads are now named as: <object name>_<class name>_v=<class vptr>_<random> The class name and vptr can be used to identify the QThread subclass type. In the case of a QThread subclass that generates a .moc file, the class name will be the true class name. However for other cases, eg where QThread is used directly, or is subclassed without a QOBJECT declaration, the name may simply be "QThread", and the vptr field might then be more informative. This change also allows the use of RTTI to get the true class name, through a rebuild of Qt, defining the macro name QT_USE_RTTI_IN_THREAD_CLASSNAME. This is not enabled by default, as there may be Symbian cases where RTTI does not work. Task-number: QTBUG-24950 Change-Id: Ifae9c6cb64638e95a01d34e421aa36f6fd0e7444 Reviewed-by: Shane Kearns <shane.kearns@accenture.com> Reviewed-by: Gareth Stockwell <ext-gareth.stockwell@nokia.com>
* Allowing symbian cleanup code in thread started and finished slotsMurray Read2012-02-221-2/+10
| | | | | | | | | | | | | | | The run() function of QThread was inside a TRAP, but the started() and finished() signals were emitted outside of a TRAP so could not contain Symbian cleanup stack code. This broke compatability with some apps, as the older pthread based implementation had the whole main thread function running inside a TRAP. The started and finished signals are now emitted inside TRAPs, with enhanced leave/exception handling code. Task-number: ou1cimx1#979704 Change-Id: I9b4e50b1085494b5fd5e05efa11739ce19ff26fb Reviewed-by: Shane Kearns <ext-shane.2.kearns@nokia.com>
* Update year in Nokia copyright messages.Jason McDonald2012-01-111-1/+1
| | | | | | | | | Simple search and replace. This commit doesn't touch 3rd-party files, nor translations (where the change is not so simple and will be handled in a separate commit). Change-Id: I4e48513b8078a44a8cd272326685b25338890148 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* QThreads on Symbian are named to allow them to be opened externallymread2012-01-041-1/+17
| | | | | | | | | | | | | | | | | The Qt 4.7 implementation of QThread on Symbian used libpthread. This automatically generated a random name for a thread. The Qt 4.8 implmentation was leaving threads unnamed. This is a change in behaviour, in that unnamed/anonymous threads cannot be opened outside of the owning process. This was causing a bug in some client/server situations. The fix is to generate a name for the RThread underlying the QThread as follows: QThread object name + QThread object address + random number Task-number: ou1cimx1#959586 Reviewed-by: Shane Kearns
* Fix missing clean up stack panic for a new thread in SymbianTomi Vihria2011-09-151-2/+3
| | | | | | | | The clean up stack for a new thread was created in a too late phase for a process that doesn't have symbianVersion string in its cache Task-number: QT-5269 Reviewed-by: Murray Read
* QTBUG-19883 Adding top level TRAP for QThreads on Symbianmread2011-06-151-1/+9
| | | | | | | | | | | | | | | The native Symbian implementation of QThread in Qt4.8 does not have a top level TRAP, whereas it did in pthreads based implementation in Qt4.7. This causes an incompatibility in the form of a EUSER-CBASE:66 panic for code that attempts to use the cleanup stack without a TRAP of its own. This adds a top level TRAP and std::exception handler to match it and prints out warning information if they ever trigger to provide some diagnostic information which would otherwise be lost. Task-number: QTBUG-19883 Reviewed-by: Laszlo Agocs
* Update licenseheader text in source files for qt4.8Jyri Tahtela2011-05-131-17/+17
| | | | | | | Updated version of LGPL and FDL licenseheaders. Apply release phase licenseheaders for all source files. Reviewed-by: Trust Me
* Merge remote-tracking branch 'qt/4.8'Sami Lempinen2011-04-281-0/+10
|\
| * Applying the QTBUG-17986 fix to Symbianmread2011-04-121-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change takes the QTBUG-17986 fix, which deletes QThreadData for adopted threads that have created QEventLoops, and applies it to qthread_symbian.cpp, which didn't exist at the time of the original fix. One complication is that Symbian uses a separate thread to monitor adopted thread lifetime, as there is no API to intercept thread exit to have cleanup code run within the context of the thread. However the cleanup for the thread involes deleting active objects that were created in the adopted thread, not the monitor thread. If these active objects are completed but not run, their cancellation could deadlock. In particular the wake up active object in the event dispatcher is typically in this state. We deal with it by detecting the situation and re-completing/cancelling the active object in the adopted thread monitor thread, which prevents deadlock and allows correct operation of the monitor thread. It is possible for this problem to affect other active objects owned by the event dispatcher. They symptom would be that finished signals from adopted threads are not sent, or they arrive much later than they should. Task-number: QTBUG-18622 Reviewed-by: Shane Kearns
| * Fix regression with Qt::AutoConnectionShane Kearns2011-04-121-0/+2
| | | | | | | | | | | | | | | | | | | | Change df9491b302f6404ad2ccc6dc2eb3377176d994c6 optimised auto connections by comparing thread ID rather than comparing TLS addresses. However it was implemented on a branch that didn't have the native symbian threads. So merging the two branches caused a regression without merge conflicts. Reviewed-by: mread
* | Create a cleanup stack for each new thread on Symbian.Laszlo Agocs2011-04-181-0/+4
|/ | | | | | | | | | | | The native thread implementation in Qt 4.8 did not call CTrapCleanup::New() which resulted in E32USER-CBASE 69 panics in applications when they tried to use the cleanup stack in a thread's run() function. In 4.7 this was working because OpenC's pthread implementation created a CTrapCleanup automatically. Now we do it also in the native Symbian thread implementation. Trask-number: QTBUG-18822 Reviewed-by: Murray Read
* Moving Symbian CPU core detection to qthread_symbian.cppmread2011-03-181-4/+17
| | | | | | | | This is resolving a merge issue where Symbian CPU core detection was added in one branch, but all the Symbian thread support was moved to a new file in another branch. Reviewed-by: Shane Kearns
* Making Symbian helper threads exit cleanly at app exitmread2011-03-181-9/+27
| | | | | | | | | | | | | | | The idle detector thread and the adopted thread monitor thread could keep an app alive unnecessarily after main had exited, if the app's main thread was no longer set "process permanent". The idle detector thread now exits when the QCoreApplication is destroyed. The adopted thread monitor thread now exits when there are no more adopted threads to monitor. Task-number: QTBUG-18073 Reviewed-by: Shane Kearns
* fixing build error in qthread_symbian.cppmread2011-03-111-2/+2
| | | | | | CI found that an include of qsystemerror_p.h was incorrect Reviewed-by: iain
* Copying change to unix and Windows QThread implementation to Symbianmread2011-03-101-1/+4
| | | | | | | | During merge of SymbianLite branch, it was found that windows and unix QThread implementations had an identical change to locking on thread start. This change is now also applied to Symbian. Reviewed-by: iain
* removing unused headersmread2011-03-091-3/+1
| | | | | | | | qdebug.h was only temporarily needed for debugging. errno.h is not needed for Symbian code. Task-number: QTBUG-13990 Reviewed-by: Shane Kearns
* further review fixes for qthread_symbian.cppmread2011-03-091-15/+5
| | | | | | | | Removed a call to get the symbian thread handle when we already had it. Improved error reporting on failure. Task-number: QTBUG-13990 Reviewed-by: Shane Kearns
* Symbian adopted thread monitor review fixesmread2011-03-091-4/+4
| | | | | | | | | The adopted thread monitor could cause a stray event panic if multiple threads where added quickly. A new autotest was written to force the fault (successfully). A fix was then added. Task-number: QTBUG-13990 Reviewed-by: Shane Kearns
* Improving init_symbian_thread_handlemread2011-03-091-6/+1
| | | | | | | | | | | | | From review comments on QThread_Symbian.cpp. init_symbian_thread_handle now opens the thread with process wide ownership directly, rather than going through an intermediate Duplicate. Retested QTBUG-13612 test case, which originally caused that function to be written. tst_qthread passes. Task-number: QTBUG-13990 Reviewed-by: Shane Kearns
* Using a single monitor thread to monitor all adopted threadsmread2011-03-091-86/+76
| | | | | | | | | | | This reduces the number of extra threads required when native threads are adopted. In practice, the main thread is native and the montitor thread itself, so the monitor thread always ends up monitoring both. Task-number: QTBUG-13990 Reviewed-by: Shane Kearns
* Attempt to have one thread for all adopted thread monitoringmread2011-03-091-23/+127
| | | | | | | Compiles, not tested yet. Task-number: QTBUG-13990 Reviewed-by: Shane Kearns
* Removed unnecessary ref() on QThreadDatamread2011-03-091-1/+0
| | | | | | | | | | Symbian's QThreadPrivate::start had a ref() on QThreadData which was causing it to never be deleted. This made sense in Unix, where there was always a deref in the thread cleanup. But this does not happen in Symbian. Task-number: QTBUG-13990 Reviewed-by: Shane Kearns
* Fixed thread priority codemread2011-03-091-15/+4
| | | | | | | | | The thread priority setting code was not dealing with the inherit case correctly. Now that it is, the wait condition delay hack has been removed. Task-number: QTBUG-13990 Reviewed-by: Shane Kearns
* Native adopted thread lifetime monitoringmread2011-03-091-75/+30
| | | | | Task-number: QTBUG-13990 Reviewed-by: Shane Kearns
* Symbian native implementation of corelib/threadmread2011-03-091-0/+545
QThread, QWaitCondition and QMutex have new Symbian native implementations. These new implementations are split out into new _symbian files. Task-number: QTBUG-13990 Reviewed-by: Shane Kearns