summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
| | * Enable qsrand() on builds without thread-safe posixEskil Abrahamsen Blomfeldt2013-08-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The #ifdef clause in qsrand() needs to be the same as in qrand(). Otherwise, we will store the seed in thread-local storage in qsrand(), never passing it into srand(), and then we'll use regular rand() because the rand_r() function is missing, thus always using a random seed of 1 in all applications. Task-number: QTBUG-32781 Change-Id: I00240a1954ae746b87b031f3a0470a6cbe747571 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * Doc: Corrected the example path in the tutorialVenu2013-08-021-16/+16
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-32688 Change-Id: I12c264f29bc1d49322c60debdec3758859f62fa8 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | * Fix handling of non-latin1 shortcutsGatis Paeglis2013-07-312-22/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch enables non-latin1 shortcut handling on Qt5/X11. Task-number: QTBUG-32274 Change-Id: Ia084258b956128ffade8eddfbcb18af334d79a59 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| | * Windows: Clear window under mouse in destruction of platform window.Friedemann Kleint2013-07-304-1/+11
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-32042 Change-Id: I8aa5df84b7ca6deb47e0c3eff9a6a7d2c4793553 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
| | * QHttpMultiPart: fix data corruption in readData methodPeter Hartmann2013-07-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When readData() is called repeatedly, we need to keep track which part of the multipart message we are currently reading from. Hereby we also need to take the boundary size into account, and not only the size of the multipart; otherwise we would skip a not completely read part. This would then later lead to advancing the read pointer by negative indexes and data loss. Task-number: QTBUG-32534 Change-Id: Ibb6dff16adaf4ea67181d23d1d0c8459e33a0ed0 Reviewed-by: Jonathan Liu <net147@gmail.com> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* | | Return EGLNativeWindowType instead of window number in winId()Alexey Chernov2013-08-092-5/+2
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QEglFSWindow::winId() method was changed to return EGLNativeWindowType EGL window handle instead of static window number as it recommends in documentation. QPlatformWindow documentation reads: "The platform specific window handle can be retrieved by the winId function." and also for winId() method itself: "Reimplement in subclasses to return a handle to the native window". Task-number: QTBUG-32564 Change-Id: I634c5b4d966b6aebde72518a2c39717d1b39af08 Reviewed-by: Andrew Knight <andrew.knight@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Android: Fix QCoreApplication::applicationDirPath()Eskil Abrahamsen Blomfeldt2013-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Disable the code path which queries /proc/<pid>/exe for the current executable path, as from a Q_OS_ANDROID perspective, this executable will be the Dalvik binary. Instead we get the application directory via the fallback, by looking in argv[0], since this is set to the location of the application binary. Task-number: QTBUG-32852 Change-Id: Ib93050f41cbd47aaf71284e8bfa6a3247131d978 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | Doc: preliminary review of qdoc-manual.qdocNico Vertriest2013-08-081-323/+298
| | | | | | | | | | | | | | | | | | | | | | | | | | - syntax - grammar - writing guidelines - spelling - added contents for \\note Task-number: QTBUG-31801 Change-Id: I9df1af270acd7fbad39048a47b883f3002e168e4 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | [Mac] Fix modifier reporting issue in the key eventsGatis Paeglis2013-08-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | This issue was introduced when porting key handling code from Qt4 to Qt5. To conform to the implementation of QKeyEvent::modifiers() we have to invert modifier state logic before sending them as QKeyEvents. Task-number: QTBUG-31332 Change-Id: I3bb41169f8ab2a4b0a13a224bb461d2792d3a65f Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* | Revert c3f485c5250a503832e767e1fe5e40595126f6c5Albert Astals Cid2013-08-081-3/+2
| | | | | | | | | | | | | | | | | | | | It has been discovered it changes the behavior of qdbuscpp2xml resulting in builds of some apps breaking. Even if the behavior is more correct, such behavior change in a stable branch is not acceptable Change-Id: I1d79104ebf11c3f48c84f109be2926af96cddae7 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QComboBox: fix item activation via completerJ-P Nurmi2013-08-083-9/+30
| | | | | | | | | | | | | | | | Task-number: QTBUG-31146 Change-Id: I64291f397d80bf934152f63e629810540abf466e Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* | Add offset reading support in pnghandlerSamuel Gaist2013-08-071-1/+17
| | | | | | | | | | | | | | | | | | This patch adds the offset reading that matches the offset writing in writeImage Task-number: QTBUG-32674 Change-Id: I264ba41163e59638d7219e0a8913f9d455830883 Reviewed-by: aavit <eirik.aavitsland@digia.com>
* | Fix QCompleter::activated(QModelIndex)J-P Nurmi2013-08-071-0/+1
| | | | | | | | | | | | | | | | | | When falling back to the completion prefix, make sure to also pass an invalid index to activated(). Change-Id: I6b282a01c95492466890632b77837bcc96eb038a Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
* | qobject: Do not destroy slot objects inside a lockDario Freddi2013-08-071-8/+26
| | | | | | | | | | | | | | | | | | This prevents deadlocks in case the destructor re-enters. (Example: a functor containing a QSharedPointer of a QObject) This also fixes a leaked slot object in disconnectHelper. Change-Id: Ia939790e3b54e64067b99540974306b4808a77f2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Mac Style: Fix 1-pixel text offset in combo boxGabriel de Dietrich2013-08-071-0/+2
| | | | | | | | | | Change-Id: Ie1bb2b300d6897659f4652c22884f1bd611cd3c4 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* | Don't crash if the QWindow's screen is temporarily invalidShawn Rutledge2013-08-071-0/+4
| | | | | | | | | | | | | | | | | | | | It can happen during the transition between screens when one screen is disconnected that the window doesn't have a screen. Task-number: QTBUG-32681 Change-Id: I066855a2ffe80f0680a3044e73f4f491c2c0eb5c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Avoid one extra if_indextoname per address in QNetworkInterfaceThiago Macieira2013-08-061-5/+9
| | | | | | | | | | | | | | | | | | | | | | Given an IPv6 address associated with a network interface, there's a fairly high chance (of 100%) that any scope ID found is that of the interface. Change-Id: Id7315473f39b68ee4c169207168dc2e60fd7d570 Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Peter Hartmann <phartmann@blackberry.com> Reviewed-by: Jonas Gastal <gastal@intel.com>
* | Remove unused socket from QNetworkInterface Unix codeThiago Macieira2013-08-061-6/+0
| | | | | | | | | | | | | | | | | | | | This must be a relic from old code, before I split out the code that uses getifaddrs from the code that doesn't. Change-Id: Ia1265da6921c7c7a3dc97315d98fed50b3d2fe1c Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Peter Hartmann <phartmann@blackberry.com> Reviewed-by: Jonas Gastal <gastal@intel.com>
* | Fix typosFrederik Gladhorn2013-08-062-2/+2
| | | | | | | | | | | | Change-Id: I27cbcd8c59bdc34493931f341341cc25b4aba9e7 Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | Fix clang detection of thread_local variablesThiago Macieira2013-08-061-1/+1
| | | | | | | | | | | | | | | | The "0" must have been added because there was no __has_feature for the feature back in the day. Now it exists. Change-Id: I50f0544ae82a8be54a8d26da400e31c1906dad9e Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Fix double transform for items ignoring parent transformations.Andreas Aardal Hanssen2013-08-051-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the topmost untransformable's scene transform, which includes the item's position and local transformation, was used to determine the item's anchoring position. This position was then passed on to be multiplied by the item's transform again. This works fine for toplevel untransformable items that don't have any transform set at all, but those who do would have their transforms applied twice - one to determine the anchoring position, and again to transform the item itself. Since only translation transformations can affect the first operation (the anchoring pos), this bug only applies to items that set ItemIgnoresTransformations and use a local transform that includes translation. Task-number: QTBUG-21618 Change-Id: I772d52d59dfd9f242d0140632a87e9c68dfe0ea1 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | Fix typo in Model/View Programming documentation.Mitch Curtis2013-08-051-1/+1
| | | | | | | | | | Change-Id: I88f49a894a8c1e88a4cdb559fdc426f01e113f80 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* | Fix ignoring closeEvents on OSX for QtQuick.Daiwei Li2013-08-032-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | The QCloseEvent's accepted state should not be inverted for the QWindowSystemInterfacePrivate::CloseEvent. To make Widgets work with this change, pass whether the close was accepted from close_helper to the QCloseEvent generated by QGuiApplication. Task-number: QTBUG-28965 Change-Id: If384b0355776b93df02dff2ab78b5647903200e7 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Josh Faust <jfaust@suitabletech.com>
* | QMimeDatabase: Fix handling of duplicate mimetype definitions (2/2).David Faure2013-08-031-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | 7721c3d27c6a fixed the case where two similar definitions are in the same directory. This commit fixes the case where two similar definitions are in different directories, both in the search path (GenericDataLocation). If the file extension gives us the same mimetype twice, there's no conflict, i.e. no reason to fallback to determination from contents. Change-Id: I72c56004b6d5e88964159e53ec160ce8b06c2264 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Doc: porting from QDesktopServices::DataLocation to QStandardPathsDavid Faure2013-08-031-1/+21
| | | | | | | | | | | | | | Change-Id: Ifd96db46cc8d0170b136a9e3154ed37ebe6ad830 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* | Add how to create a udev rule for the evdev pluginsJorgen Lind2013-08-022-0/+15
| | | | | | | | | | | | Change-Id: Icd7a192701958673fe216f40ddab710f5f63a8b8 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com> Reviewed-by: Andy Nichols <andy.nichols@digia.com>
* | Fix CapsLock handling in EvdevKeyboard pluginSamuli Piippo2013-08-022-420/+425
| | | | | | | | | | | | | | | | | | | | | | CapsLock was incorrectly handled in EvdevKeyboard, which led non-letter keys to be masked with Qt::ShiftModifier. The default builtin keymap is modified to have IsLetter flags for correct keys. Task-number: QTBUG-32560 Change-Id: I561bbad7bcffe1f4c4bbed7bf72106b689e57fe0 Reviewed-by: Andy Nichols <andy.nichols@digia.com>
* | OSX: do not force a plain window to be on the same level as its parentShawn Rutledge2013-08-021-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | 2af0a778f464980594c36098e4a8ba4448edfd29 the fix for QTBUG-27410 caused this Designer bug. Doing the automatic level escalation only for "special" windows and avoiding it for plain Qt::Window type windows is one way of fixing the Designer problem. Task-number: QTBUG-31779 Change-Id: I1da5454f31111f36480fac3b53be6d5f0ce40047 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | Fix stuck modifier issue in the non-xcb_xkb code pathGatis Paeglis2013-08-021-19/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since updating the xkb_state throght core events is more tricky (opposed to the xcb-xkb code path) where we have to use xkb_state_update_key, we need to make sure that our local state is in sync with the X server's state. The local state was getting out of sync if key was pressed down in a Qt application and released in other X client (by changing the focus to another window with a mouse, for example). Task-number: QTBUG-32660 Change-Id: I662bf5aad3ab0e8591109994e746d85ff61ad6ef Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Fix typo form->fromStephen Kelly2013-07-311-1/+1
| | | | | | | | | | Change-Id: Ifa47cec0e454228d33c917c0baa6d0686955af5a Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Fix build with QT_NO_CURSOR.Sérgio Martins2013-07-311-17/+19
| | | | | | | | | | | | | | Just moved applyCursor() and defaultCursor() to a #ifndef block. Change-Id: I14c21aa509395fb1bd72d389cfc46f0f34ab7649 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Don't run this code on WinCE, the variable will be unused.Sérgio Martins2013-07-311-1/+1
| | | | | | | | | | Change-Id: Id472e6e18759227943a24aa723963671bdb52164 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | eglfs: allow egl native window to be zeroSamuli Piippo2013-07-312-4/+7
| | | | | | | | | | | | | | | | | | Change the checking for created EGLNativeWindowType so that zero is a valid value. This is the case e.g, with BeagleBoard, where widget application cannot be run without this change. Change-Id: I36c30091e1a5a0598ae3822d0be8dc4362779c0b Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Clear focus if the widget being deleted is the parent's focus child.Andy Shaw2013-07-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | If a widget is deleted as a result of a window activation changed then it is possible that the parent does not clear the focus because of the activation change. If the focus child is actually part of an embedded widget in the graphicsview then it needs to be handled explicitly in this case too. Change-Id: I3e7a2b963f175828de4c19283178560abca91235 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
* | Mark qt5_use_modules as obsolete.Stephen Kelly2013-07-311-0/+12
| | | | | | | | | | | | | | | | | | | | Forward-port of cb7f32f5b861fe115fa71f64500a5cbb0b643f1b (Mark qt4_use_modules and qt4_automoc as obsolete., 2013-07-04) from cmake.git. Change-Id: I0c24408ef06bc93eb0e55108cf4eab2f8cbd19cb Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* | eglfs: Fix updates when resizing backing storeEskil Abrahamsen Blomfeldt2013-07-311-1/+3
| | | | | | | | | | | | | | | | | | | | We would resize the backing store without resizing the viewport, which would cause all subsequent blits of the backing store to the screen to look broken. Task-number: QTBUG-32146 Change-Id: I65bae051b7cfbbc61fc285e4baa74685d5639569 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Check if the widgetItem is valid before accessing widget() on itAndy Shaw2013-07-311-1/+1
| | | | | | | | | | | | | | | | | | | | If a state was restored but not all the dockwidgets that were available before are available at the time of restoration then when dragging a dockwidget to where the unavailable one is expected to be would cause a crash. Change-Id: I829d93041b7950a3546ba4e6c3764b169f276315 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | xcb: mouse wheel does not focus a windowShawn Rutledge2013-07-311-2/+3
| | | | | | | | | | | | | | | | | | The window should react to the wheel event (e.g. scroll content) but without becoming focused; this is the X11 convention. Task-number: QTBUG-32517 Change-Id: I7e12425e5a6e1549b7f23dc318612a436c24d14b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* | Gtk theme: emit currentFontChanged() in font dialog helperLiang Qi2013-07-301-0/+1
| | | | | | | | | | | | | | | | There is no signal for it in gtk font selection. We should emit this signal just before accept() was emitted. Change-Id: Ie31d96b789436607b134c84dd77a4b9be9e9a550 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* | Expose invokables that are not slots in the xmlAlbert Astals Cid2013-07-301-2/+3
| | | | | | | | | | | | | | Without it the invocations were working but were not listed on introspection Change-Id: Ie62f7dc3577f52b6888ddebf0392fdf51f2845d5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QByteArray: Remove some reinterpret_cast<>.Friedemann Kleint2013-07-302-4/+4
| | | | | | | | | | | | | | | | | | | | Fix warning: QByteArray(QByteArrayDataPtr dd) constructor warning C4946: reinterpret_cast used between related classes: 'QArrayData' and 'QTypedArrayData<T>'. Task-number: QTBUG-32559 Change-Id: I06356902f79ed6bf784127ff0c3a97d3263a25da Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | Fix upload of glyphs when using RGB32 masks on OpenGL ESGunnar Sletta2013-07-302-16/+10
| | | | | | | | | | | | | | | | | | | | | | | | OpenGL ES doesn't allow internal format to be different from external format, so always do the conversion from BGRA -> RGBA. We are anyway iterating over all the pixels so the performance impact of this should be minimal. Change-Id: Ie891665ad66e31692b69db02d34be8d303a7d631 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* | Cocoa: Make sure that resizeEvent is invoked after calling resizeNils Jeisecke2013-07-301-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The QWindow::resizeEvent documentation states that resizeEvent is invoked after the windowing system has acknowledged a setGeometry() or resize() request. The Cocoa plugin however did set the platform window geometry immediately so that the qnsview's updateGeometry returned too early. Task-number: QTBUG-32706 Change-Id: I1f359ab368833d174ab6740f4467b0848c290f13 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Fix crash on qdbus when return type is a raw dbus typeAlbert Astals Cid2013-07-301-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Assigning a -1 to type is going to make things crash since it basically means unresolved and when you try to access the string data go to a index that doesn't exist So what I do is save the return type in rawReturnType if it is a raw one and reassign the type to IsUnresolvedType | strings.enter(mm.rawReturnType) instead of -1 when "saving" the metaobject Task-number: QTBUG-32671 Change-Id: I67898dea8a1926eee80c16417e877ef4e22aa06b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Symbol for max number of arguments in QMetaMethod::invoke()Illya Kovalevskyy2013-07-302-0/+10
| | | | | | | | | | | | | | | | | | | | | | QMetaMethod::invoke(..) takes fixed number of arguments for execution. Adding preprocessor macros which literaly equals this number would be useful for writing some generic code. Task-number: QTBUG-31821 Change-Id: Ia2faf291f3f7df44a47c3cf18f5cd587d37d7d2e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add support for Q_OS_FREEBSD_KERNEL and documentThiago Macieira2013-07-301-5/+16
| | | | | | | | | | | | | | | | | | | | Also clarify documentation for OSes with variants. Q_OS_ANDROID should have been called Q_OS_LINUX_ANDROID and Q_OS_BLACKBERRY should have been Q_OS_QNX_BLACKBERRY. Task-number: QTBUG-15402 Change-Id: I3a34d52a1c0ebb8eb73284bdf198443c209a5fd4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Remove a left over cast that is now semantically incorrect.Jake Petroules2013-07-301-1/+1
| | | | | | | | | | | | | | | | CFPropertyListRef is a typedef for void*, which is why this code was compiling OK prior to this change. Change-Id: I78d65652a76721434056bd9f6d011917e2864125 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Work around msvc /clr LNK2005 errors with QListRichard Browne2013-07-301-12/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes a compatibility with Qt 5 and Microsoft C++ /clr mode. The QList copy constructor defines a Cleanup class that causes LNK2005 errors. It is a compiler problem, but the patch is simple. The use of QT_TRY/QT_RETHROW instead of a Cleanup class is more consistent with other Qt code, so is arguably preferable even without the compiler bug. Task-number: QTBUG-31949 Change-Id: I1acfbae1924f0a52ffb8d9722b52e01b61edd42e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Change QDBusPendingCallPrivate to full reference counting for deletion.Peter Seiderer2013-07-294-43/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes race between QDBusConnectionPrivate::processFinishedCall() releasing the mutex before emitting signals (using various members of QDBusPendingCallPrivate) and deletion of the QDBusPendingCallPrivate object through QDBusPendingCall::d's destructor (a member of type QExplicitlySharedDataPointer<QDBusPendingCallPrivate>) leeds to segmentation fault with CrashTest example on slow/single core arm cpu). Task-number: QTBUG-27809 Change-Id: I3590d74d1cfa5816ede764b50b83a7008ec780ff Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Remove QDBusPendingCallPrivate::autoDelete logic.Peter Seiderer2013-07-292-16/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First step to fix race condition about deleting QDBusPendingCallPrivate. In a multithreaded application on a slow/single core cpu the following race (and segmentation fault) can occur: First thread A is running: A: QDBusPendingReply<> reply = pi->asyncCallWithArgumentList(method, argumentList); Then when the dbus answer arrives thread B will call: B: QDBusConnectionPrivate::processFinishedCall() B: ... B: locker.unlock() and runs until here, go on with thread A: A: reply.waitForFinished(); A: QDBusPendingCallPrivate::waitForFinished() A: { A: QMutexLocker locker(&mutex); A: if (replyMessage.type() != QDBusMessage::InvalidMessage) A: return; which returns immediately (mutex acquired, replyMessage alread set), now reply goes out of scope (destructor called) and QDBusPendingCall::d's destructor of type QExplicitlySharedDataPointer<QDBusPendingCallPrivate> deletes the reference counted object QDBusPendingCallPrivate. Now thread B continues, still in processFinishedCall() B: if (call->watcherHelper) B: call->watcherHelper->emitSignals(msg, call->sentMessage); B: B: if (msg.type() == QDBusMessage::ErrorMessage) B: emit connection->callWithCallbackFailed(QDBusError(msg), B: call->sentMessage); accessing alread deleted object QDBusPendingCallPrivate via call->... Fixed QDBusPendingCallPrivate deletion by proper reference counting will be done in the next commit. Task-number: QTBUG-27809 Change-Id: I15b3f0242471b62eaafadc763fb6a33339ff2fe1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>