summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Merge remote-tracking branch 'origin/5.14' into 5.15"v5.15.0-beta3Liang Qi2020-03-3114-62/+386
|\
| * Merge remote-tracking branch 'origin/5.14' into 5.15Liang Qi2020-03-3114-62/+386
| |\ | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp Change-Id: Ifaa56153f5f0d687a6b4d94f84fcfa1e1751afd2
| | * Send MouseMove events without buttons if the press closed the popupVolker Hilsheimer2020-03-301-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With nested popup widgets, pressing a mouse button on the lower popup will close the active popup. MouseMove events that are generated before the button is released again should not have that button included, as it is likely to result in incorrect state handling in the widget. This change removes all buttons from the MouseMove event, which is the second best option. This is mostly consistent with the behavior when closing a popup and no other popup remains. The widget underneath will get MouseMove events without the respective button included. This change doesn't include a fix for the final release event, which should ideally also not be delivered to the remaining popup, as it never got a corresponding press event. Qt has already reset the states in which it stores which widget received the press event at the time the release is generated, such as qt_button_down and qt_popup_down. So we can't separate a release grabbed by a newly opened popup (which we want) from a release to the popup that became active after closing (which we don't want). However, widgets can more easily work around this issue, and the risk of breaking things by changing the code further becomes too high. Change-Id: I603bbdbc7e7355952d96ab77c5e2d2f1e6f94987 Fixes: QTBUG-82538 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
| | * testlib: add QAbstractItemModelTester::verify()Liang Qi2020-03-301-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This amends b3e4be2d8b9debf217657436139da0152f6f8797. When building testlib with QtGui linked:(use "QT = core-private gui" in src/testlib/testlib.pro) Undefined symbols for architecture x86_64: "QAbstractItemModelTester::verify(bool, char const*, char const*, char const*, int)", referenced from: QTestPrivate::testDataGuiRoles(QAbstractItemModelTester*) in qabstractitemmodeltester.o Change-Id: Ideb10ddd6717fed8d9f91f75bbfc9d5a22104730 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
| | * itemviews: Use the start of the current selection when getting the rangeAndy Shaw2020-03-302-3/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When doing a shift-select while moving the mouse then the start point should be based on the start of the current selection and not the pressed position. If there is no current selection start index, then we can safely depend on pressed position as this will be the previous index pressed on. This resolves an issue introduced by e02293a76d21e7077f1952d4ed8af6c6d1970190 when fixing QTBUG-78797 Fixes: QTBUG-81542 Change-Id: Ia66c42b220452fdcbc8cfccc05dbc8a3911c3f5e Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| | * tst_QCborValue: Prepare for 64-bit QVectors in Qt 6Thiago Macieira2020-03-271-7/+15
| | | | | | | | | | | | | | | Change-Id: Ief61acdfbe4d4b5ba1f0fffd15fe1e921aab0a72 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * CBOR support: prevent overflowing QByteArray's max allocationThiago Macieira2020-03-279-51/+294
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QByteArray doesn't like it. Apply the same protection to QString, which we know uses the same backend but uses elements twice as big. That means it can contain slightly more than half as many elements, but exact half will suffice for our needs. Change-Id: Iaa63461109844e978376fffd15f9d4c7a9137856 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| | * MinGW: Fix build with -angleKai Koehne2020-03-271-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | Since Qt 5.14, debug libs for MinGW don't necessarily have a 'd' suffix anymore. Fixes: QTBUG-83087 Change-Id: Ia9f499ebed05e96fb056134681a2124c2262fb08 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* | | QCommonStyle::pixelMetric(): Silence warnings about deprecated enum valuesFriedemann Kleint2020-03-311-7/+38
|/ / | | | | | | | | | | | | Add the Qt 6 code paths and enclose in warnings exclusions. Change-Id: I321296ef220fb788f04979ffff42a8a5f226dfdb Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | Fix 1 pixel wide imagesAllan Sandfeld Jensen2020-03-301-1/+1
| | | | | | | | | | | | | | | | | | Images are rounded up to 4 bytes per line minimum, so one pixel wide images might not shrink when resizing. Fixes: QTBUG-83179 Change-Id: If72c94409e4c899c5ad05b2867f5f53a94d0580f Reviewed-by: Christian Kamm <mail@ckamm.de>
* | Fuzzing: ignore logging output from QColorSpaceRobert Loehning2020-03-301-4/+6
| | | | | | | | | | Change-Id: Ica549be24c8873854934f4ba24f2b3f7cb077e25 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | Fuzzing: Add QGuiApplication to gui fuzz targetsRobert Loehning2020-03-308-9/+34
| | | | | | | | | | Change-Id: I3713701f63d9d8938fbb42ad1ae2f0c4ae813e94 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Finish deprecating TouchPoint::rect, sceneRect and screenRect accessorsShawn Rutledge2020-03-302-26/+20
| | | | | | | | | | | | | | | | | | All 6 getters and setters were deprecated by doc comment \obsolete in 3c159957f863cf8d367a9261e7016e52cd0348c1 (Qt 5.9). Now we will generate compiler warnings too. Change-Id: I94c6da607fa5758072af1287c9286b6c52179cfb Reviewed-by: Frederik Gladhorn <gladhorn@kde.org>
* | Update bundled libjpeg-turbo to version 2.0.4Eirik Aavitsland2020-03-3010-50/+93
| | | | | | | | | | | | | | [ChangeLog][Third-Party Code] libjpeg-turbo was updated to version 2.0.4 Change-Id: I7f74af0dc774a2172ff59713613a706e80d5b2cb Reviewed-by: Liang Qi <liang.qi@qt.io>
* | Fix Fusion style ignoring SH_UnderlineShortcut from proxy styleJoni Poikelin2020-03-301-2/+2
| | | | | | | | | | | | Fixes: QTBUG-83133 Change-Id: If3fbfae515567d9a0136beb35ca1f9f59460894b Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* | Merge "Merge remote-tracking branch 'origin/5.14' into 5.15"Qt Forward Merge Bot2020-03-277-72/+217
|\ \
| * | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2020-03-277-72/+217
| |\| | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/serialization/qcborvalue.cpp Change-Id: I539d8cae5fd413b8a6c9c5d8a6364c79c8133a0a
| | * QCborValue: apply a simple optimization to avoid unnecessary allocationsThiago Macieira2020-03-252-28/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | If the map or array is known to be empty, we don't need to allocate a QCborContainerPrivate. Change-Id: Ief61acdfbe4d4b5ba1f0fffd15fe212b6a6e77c3 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * QCborValue::fromCbor: Apply a recursion limit to decodingThiago Macieira2020-03-253-13/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A simple 16k file can produce deep enough recursion in Qt to cause stack overflow. So prevent that. I tested 4096 recursions just fine on my Linux system (8 MB stack), but decided 1024 was sufficient, as this code will also be run on embedded systems that could have smaller stacks. [ChangeLog][QtCore][QCborValue] fromCbor() now limits decoding to at most 1024 nested maps, arrays, and tags to prevent stack overflows. This should be sufficient for most uses of CBOR. An API to limit further or to relax the limit will be provided in 5.15. Meanwhile, if decoding more is required, QCborStreamReader can be used (note that each level of map and array allocates memory). Change-Id: Iaa63461109844e978376fffd15fa0fbefbf607a2 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * QCborValue: create a wrapper to set the QCborStreamReader error stateThiago Macieira2020-03-252-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | The next commit will need to do so from outside QCborContainerPrivate, where QCborStreamReader::d can't be accessed (private). Change-Id: Iaa63461109844e978376fffd15fa0f6f04081bf2 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * macOS: Flush sublayers via separate IOSurface backingstoresTor Arne Vestbø2020-03-252-25/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Flushing sublayers via QImage copies of the root IOSurface was causing performance regressions due to the constant allocations of new images each frame. We now re-use the QCALayerBackingStore implementation for sublayers, which gives a dynamic swap-chain. We're still paying the CPU cost of the copy from the root backingstore to the layered backingstores, as well as the memory cost, but at least improves the situation. We do not try to be smart and paint directly into the sublayers, as that would leave the root backingstore stale, potentially causing glitches when views are repositioned. Investigating this is left for future work. Fixes: QTBUG-82986 Change-Id: I758a3d8e1e40e2ed4fe6bc590a4a5a988d87a3a7 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit ce2d68ebe1aefeae78ff2fd8ec5ff7e20790ef69)
| | * ANGLE: Fix resizing of windows (Take 2)Oliver Wolff2020-03-242-1/+28
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-62475 Change-Id: I0ea17e7875906508941ae64bb396a4236928b0f9 Reviewed-by: Miguel Costa <miguel.costa@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | | Raster painting: fix dashing for separate linesEirik Aavitsland2020-03-272-3/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When drawing multiple distinct (unconnected) lines (e.g. from QPainter::drawLines() or a QPainterPath with alternating movetos/linetos), the dash pattern should not continue from one to the next, as it should when drawing a connected line (e.g. polyline). Both the cosmetic stroker and the full stroker does it right, but the fast rasterizing codepath got it wrong. Fixes: QTBUG-83048 Change-Id: I3d090f7121726755a0e53cb66b99a5563ac0e1c0 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | QTextEdit: remove the cursor when a read-only textedit looses focusVolker Hilsheimer2020-03-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A read-only text edit with Qt::TextSelectableByKeyboard shows a steady cursor to indicate to users that they can select the text, but not edit it. When the control receives focus, it doesn't turn on blinking, but explicitly sets cursorOn to true. When focus is lost, then cursorOn needs to be reset to false to make the cursor disappear, even if the blinking (as indicated by the poorly named cursorVisible variable) is not on. Change-Id: I78408b5c50c6ede3f9a7128be7a31b9c6795cf9c Fixes: QTBUG-83029 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | | widgets: Sync client rect of paint-on-screen widgets during resizeTor Arne Vestbø2020-03-271-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Paint events are delivered with the client rect of the widget, and this applies to paint-on-screen widgets as well. The same goes for how the widget repaint manager tracks dirty rects. Internally we were also calling paintOnScreen() with client rects, so the use of geometry() in the resize handler was likely a bug/oversight. Change-Id: I1312ccf77218d1162e0971e4cbabaa80f49c852c Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* | | wasm: refactor network to use fetch APILorn Potter2020-03-264-217/+134
|/ / | | | | | | | | | | | | | | | | | | This has better support for threaded use, and gets rid of bind use. This requires emscripten 1.38.37 and above Task-number: QTBUG-76891 Change-Id: Ic30a6820c2ce945c314751c06cfc356914a71217 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | Doc: Document new property change notifiers for QSortFilterProxyModelTopi Reinio2020-03-261-3/+45
| | | | | | | | | | Change-Id: I02789fa2281d33c7344a5d5e730a27fe6fa50e56 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | Doc: Adjust offline style for the litehtml rendering engineTopi Reinio2020-03-262-20/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt Creator now has the option to use the litehtml backend as a replacement for the QTextBrowser-based help viewer. Fix a few issues that the offline style has with the litehtml renderer: - Fall back to using an unordered list for the navigation bar. - Remove the background image for #buildversion and adjust font size. - Adjust the generated padding around code snippets. Keep the script that switches the offline-simple.css style to the full offline style (offline.css) for JavaScript-enabled browsers. The litehtml backend in Qt Creator will handle this switch internally. With these changes, the generated offline documentation looks acceptable when rendered with QTextBrowser, litehtml, or desktop web browsers. Fixes: QTBUG-82567 Change-Id: I86b179b1985b7ef54feddab30cb227b28021efe5 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* | Doc: QItemSelectionModel: Note when function default arguments were addedTopi Reinio2020-03-261-0/+12
| | | | | | | | | | Change-Id: I4b7a9269b68c86548035b57211c4c1b5ad451767 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | Doc: Mark QTextStream manipulators as deprecatedTopi Reinio2020-03-261-0/+24
| | | | | | | | | | | | | | | | and instruct to use the ones from the Qt namespace instead. Task-number: QTBUG-82532 Change-Id: I6a85f5096da8aec925a287beff136b77d113926e Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | Doc: Expand reasoning for QHash deprecationsTopi Reinio2020-03-261-2/+16
| | | | | | | | | | | | | | | | and mark QHash::[const_|key_]iterator operators correctly as deprecated. Change-Id: I01da16254759b9bdb7920709de45a72933d6b5c8 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | Doc: Expand reasoning for QMap deprecationsTopi Reinio2020-03-261-6/+5
| | | | | | | | | | | | Change-Id: Idaec1ebd2a392af2b8d778e72acda6bd117d1a48 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* | Doc: Fix \fn command for qScopeGuard(F &&f)Topi Reinio2020-03-262-1/+2
| | | | | | | | | | | | | | | | and tag it in the header file to ensure the documentation is matched. Change-Id: Id1e7cd395ca0ec337845da9a207bfbf95db01064 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* | Doc: Fix documentation for deprecated QSet functionsTopi Reinio2020-03-261-6/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | QDoc has trouble applying the \obsolete command for multiple topic (\fn) commands in one go. Separate them out and expand the reasoning for deprecation. Mark the rest of the deprecated functions and typedefs related to reverse iterators as \obsolete. Change-Id: I09858efd7e1e5fc890d4f3f063f00c8812fc0b52 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | Doc: Mark deprecated QMutableSetIterator functions as \obsoleteTopi Reinio2020-03-261-4/+50
| | | | | | | | | | | | Change-Id: I07a4ade20242fbe4139c0b88cf8728dd74628511 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | Doc: Document QDBusReply copy constructorTopi Reinio2020-03-261-0/+7
| | | | | | | | | | | | Change-Id: Ice71b8d48f92b9ecd3075fba1927d3657934b018 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | Doc: Mark gamma-related functions deprecated in QImageReader/WriterTopi Reinio2020-03-262-9/+14
| | | | | | | | | | | | Change-Id: I0a9fbcca7a10a6555f5879cc4955f046eaa56602 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | Doc: Don't mention deprecated functions in QTabletEvent overviewTopi Reinio2020-03-261-8/+8
| | | | | | | | | | | | Change-Id: I5d41d6061403f2923d673376be7cf1250d0f0e82 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | QLineEdit: Include the horizontal margin in minimumSizeHintVolker Hilsheimer2020-03-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The margin is respected in the sizeHint, but not in the minimumSizeHint. Since the latter should be the former for a single character (as per the documentation promising enough space for one character), the margin calculation needs to be identical. Adjusting the documentation nevertheless, as there are characters that won't fit either way. As reported, the permyriad character doesn't fit even with this fix on macOS, as the core graphics API we are using doesn't report a glyph-index for U+2031 (so our existing assumption that 'W' is the widest character is still the best we can do). Change-Id: I30573960c316cc7b8c9bbe3c3f4c6351792bed36 Fixes: QTBUG-82970 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | Fix deprecation warnings for QInputDialog::getDouble()Lars Knoll2020-03-262-37/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The way this was done didn't really make sense. The change added an overload with one additional argument. The deprecation warning would have now forced everybody to explicitly specify all arguments to avoid the warning. Instead, keep both overloads in 5.15, but document them as one method. Remove the old version in Qt6 and move the default arguments to the new version. Change-Id: I738d4d1b99cdf30db53acf14382a00cac74aa10a Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* | Windows QPA: Enable Toggle UIA pattern for all checkable controlsAndre de la Rocha2020-03-261-4/+2
| | | | | | | | | | | | | | | | | | This change allows the checked/unchecked state to be detected by screen readers for all controls with a checkable state. Task-number: QTBUG-81919 Change-Id: I604151397b4ae21297009c274ffe634723ebe783 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Add "checkable" state to QAccessibleTableCellAndre de la Rocha2020-03-261-1/+5
| | | | | | | | | | | | | | | | | | | | | | The information about whether a table/tree item may be checked is necessary to allow the platform code (in particular, Windows UI Automation layer) to make this information available to screen readers. Task-number: QTBUG-81919 Change-Id: Id68eea4a004788751404d70567222a2c531578aa Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* | qmake: Document QML_FOREIGN_METATYPESUlf Hermann2020-03-261-0/+8
| | | | | | | | | | | | Task-number: QTBUG-82709 Change-Id: I0ca648114adbbed1ab3c6406e9f14f60f7924e96 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | wasm: add braces around multiline else caseMorten Johan Sørvig2020-03-261-2/+3
| | | | | | | | | | | | | | | | | | | | | | From clang warning: qwasmcompositor.cpp:335:13: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation] offset += (delta +delta); Change-Id: Id372dfdd8fda1c705c61a24c26843dfb33fba40c Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
* | Doc: Fix coverity warnings in SQL snippetsPaul Wicking2020-03-262-8/+10
| | | | | | | | | | | | Fixes: QTBUG-83008 Change-Id: I126bc04719cd221a3d80ae825fca44e63aeec934 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | Make tst_QRandomGenerator::qualityReal() test more stableSona Kurazyan2020-03-251-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Increasing the sample size of randomly generated test samples reduces the probability of small deviations from the expected uniform distribution. On my machine with the new values the test fails approximately once per 3000 consecutive runs, instead of failing once per 300. Change-Id: I4d1815504c353290a2fb350b3fd1cbb802f8d559 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QProcess/Linux: use the FFD_VFORK_SEMANTICS flagThiago Macieira2020-03-251-3/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | ... when we are not using the FFD_USE_FORK flag. We use the FFD_USE_FORK flag when we have user code to run in setupChildProcess(). This code is enabled for all Unix, but forkfd() honors this flag only on Linux >= 5.4. See the commit adding the flag for more information on what the flag does and see the comment in this commit on why it's safe to use it. Fixes: QTBUG-17331 Change-Id: I1bee3bc466a04f19bd6efffd15f448cb23ce1e91 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
* | forkfd: add FFD_VFORK_SEMANTICS flagThiago Macieira2020-03-253-5/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This flag asks forkfd() to use vfork semantics wherever available. That is, suspend the calling process execution until the child either does an execve(2) or _exit(2). The advantage of that is that it puts lower pressure on the OS VMM system, as the number of pages that need to be copy-on-write duplicated is much smaller (still not zero, as at least the stack in the child will be written to). However, the only implementation that supports using this flag for now is Linux's pidfd. It would be possible to add to FreeBSD, but pdfork(2) does not have a flag for this behavior -- if it gets one, we can add support for it later. Everywhere else, we need to force the child to not exit until we store the child process's PID in the ProcessInfo structure we allocated, which means the parent process must run before we even return from forkfd(). Change-Id: I1bee3bc466a04f19bd6efffd15f447f28c201aa9 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* | forkfd: fix forkfd_wait when FFD_USE_FORK was activeThiago Macieira2020-03-252-5/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we detected that the OS supports a version of system forkfd (Linux pidfd, FreeBSD procdesc), the forkfd_wait() function was using only the system waiting implementation, which of course can't work for file descriptors created with FFD_USE_FORK. So just detect EBADF and attempt again. If the file descriptor is neither one of our pipes nor a system forkfd, bad things will happen... Fixes: QTBUG-82351 Change-Id: I4e559af2a9a1455ab770fffd15f59fb3160b22eb Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
* | forkfd: introduce forkfd_wait4() that takes optionsThiago Macieira2020-03-254-22/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "wait4" because it looks like the wait4() BSD function, which has the signature: pid_t wait4(pid_t pid, int *wstatus, int options, struct rusage *rusage); And because ours also has 4 parameters. Having options is important anyway. I might want to add some more later, but we can't really support them with the fall back implementation (in fact, we don't honor WNOHANG in the fall back implementation either). Change-Id: I4e559af2a9a1455ab770fffd15f5858bb357e15b Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>