Commit Graph

30519 Commits

Author SHA1 Message Date
Volker Hilsheimer
64ed4081ca QSystemTrayIcon on macOS: support the timeout hint in showMessage
If set, schedule a call to remove the notification (NSTimeInterval is
specified in seconds). The system might hide the notification balloon
earlier, but the notification will still be removed from the message
center after the specified interval.

Task-number: QTBUG-77150
Change-Id: I510e412beb16e9de271290798f3e66310f44df4f
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-08-30 14:17:32 +02:00
Volker Hilsheimer
c66732b979 QSystemTrayIcon: on macOS, hide messages when the user clicks them
This is default behavior on macOS, and also the behavior on Windows.

[ChangeLog][QtWidgets][QSystemTrayIcon] On macOS, clicking on the
message will remove the notification.

Change-Id: Ie30f7dacf478af76ccb53d16aea8f122869072c8
Fixes: QTBUG-77150
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-08-30 14:17:28 +02:00
Volker Hilsheimer
43a1db6855 Fix the documentation - QSystemTrayIcon::messageClicked works on macOS
Trivially reproduced by the systray example.

Task-number: QTBUG-77150
Change-Id: I888db728741c35e8b0378c38c8747ad163cad47d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-08-30 14:17:23 +02:00
Ulf Hermann
26afc5c9b1 Provide conversion between QVariant and QUuid in bootstrap
The classes are there. There is no need for the extra #if-ery.

Change-Id: Ic92ff894d6c9d26dbe32ca83b9501fa8d07e3d44
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-08-28 06:33:48 +00:00
Kari Oikarinen
8ac1d22ffa Bump version
Change-Id: Ie0cc04ec18fceccaf40eb8fe5c5b4f2e916869ac
2019-08-27 09:10:31 +03:00
Gatis Paeglis
60588e1a5d 3rdparty: remove xcb libs and bump minimal required version to 1.11
With libxcb 1.11 as minimal required version we can:

(a) (Maybe) Enable threaded GL for MESA, see QTBUG-67277.

(b) Avoid performance issues described in QTBUG-46017. Bundled xcb libs don't
    contain the more modern SHM fd passing APIs. The official binaries use
    "-qt-xcb", therefore we were shipping with the performance fix #ifdef-ed out.

(c) Make xcb-xkb a mandatory dependency avoiding issues described in QTBUG-30911.
    Issues that appear when Qt was configure with "-no-xkb -xcb-xlib", but
    X server has the XKB extension.

(d) Drop all, but xcb-xinput sources from src/3rdparty/xcb/, for which
    we need "xcb-xinput >= 1.12". This way we can reduce maintenance
    work. The xcb libraries were origianlly bundled because of lack of availability
    on supported distributions. This is not the case anymore:

    CI for Qt 5.13 has:

      Ubuntu 18.04 - libxcb 1.13
      RHEL 7.4 - libxcb 1.13
      openSUSE 15.0 - libxcb 1.13

    CI for Qt 5.12 has:

      Ubuntu 16.04 - libxcb 1.11
      RHEL 7.4 - libxcb 1.13
      openSUSE 42.3 - libxcb 1.11
      RHEL 6.x - not relevant because it was dropped from supported platforms.

Why 1.11 (released on Aug, 2014), but not 1.13 (released on March 2018)?

Based on what we have in CI for 5.13 and 5.14 we could update to 1.13,
but it means that Qt would require a very recent version of 3rd party
dependency.

[ChangeLog][Configure][X11] The minimal required version of libxcb now is 1.11.

[ChangeLog][Third-Party Code][X11] Removed all bundled XCB libs, with
the exception of xcb-xinput, which is not available on systems with
libxcb 1.11.

[ChangeLog][Configure][X11] Removed -qt-xcb, -system-xcb, -xkb, -xcb-xinput switches.

[ChangeLog][Platform Specific Changes][X11] XKB and XInput2 now are mandatory
dependencies for XCB plugin. XCB-XKB is a part of libxcb 1.11 releases.
XCB-XInput is not part of libxcb 1.11 releases, but Qt builders can use
-bundled-xcb-xinput switch.

Fixes: QTBUG-73862
Fixes: QTBUG-73888
Task-number: QTBUG-67277
Task-number: QTBUG-30939
Change-Id: I4c2bd2a0e667220d32fd1fbfa1419c844f17fcce
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-08-27 01:06:40 +02:00
BogDan Vatra
5bb178c479 Say hello to Android multi arch build in one go
Multi arch build in one go is need to support the new .aab packaging format.

By default the users apps are built for all Android ABIs: arm64-v8a armeabi-v7a x86_64 x86
The user can pass ANDROID_ABIS to qmake to filter the ABIs during development,
e.g. qmake ANDROID_ABIS="arm64-v8a armeabi-v7a" will build only for arm ABIs.

[ChangeLog][Android] Android multi arch build in one go,
needed to support the new .aab packaging format.

Change-Id: I3a64caf9621c2a195863976a62a57cdf47e6e3b5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2019-08-26 12:59:15 +03:00
Marc Mutz
77de5a329c Long live QColorConstants!
QColorConstant is a C++11 version of Qt::GlobalColor, except that instead
of Qt::red being an enum, QColorConstants::red is an actual QColor instance,
a bit like in the Qt 3 days.

In addition, the SVG names that QColor understands are also available,
with the same values. Technically, when building a QColor from a color
name, QColor ignores casing and whitespaces; we stick to the SVG/CSS
official color names (which are lowercase), and prefix them with Svg
to clarify where they come from. For instance, note how SVG's gray
is not Qt::gray.

[ChangeLog][QtGui][[QColor] Added QColorConstants, a namespace
containing constexpr QColor instances.

Change-Id: Ic9fab26a9a537fcc43cc230da28f4c6314a32438
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-08-25 16:31:32 +02:00
Sona Kurazyan
1b7ce85a60 Remove usages of deprecated APIs of QWheelEvent
- Replaced the usages of deprecated QWheelEvent::delta() and
  QWheelEvent::orientation() with QWheelEvent::angleDelta().
  In most of the examples it is acceptable to use only the vertical
  component of angle delta.

- Made the docs APIs to build conditionally, based on the
  deprecation version.

Task-number: QTBUG-76491
Task-number: QTBUG-76540
Change-Id: Id4230d483f724af49e4b6349b44881c3944de2a2
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-08-23 21:51:43 +02:00
Allan Sandfeld Jensen
5d94aac2ba Introduce QImage::Format_BGR888
Is pretty common on some architectures so we can avoid swizzling by
supporting it.

Fixes: QTBUG-45671
Change-Id: Ic7a21b5bfb374bf7496fd2b2b1252c2f1ed47705
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2019-08-23 11:54:09 +02:00
BogDan Vatra
3f603906b4 Android: Set RTLD_NODELETE on API 23+
Change-Id: Ia4b0a6abf862e79b6d7b4c2368f44de0d05a65e9
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2019-08-23 09:29:11 +03:00
Paul Olav Tvete
181e5382e7 eglfs/kms: Add drm atomic blend_op property handling
Add support for specifying the blend operation used when alpha-
blending KMS planes. Only available with atomic modesetting.
Set the environment variable QT_QPA_EGLFS_KMS_BLEND_OP to
the enum value of the 'blend_op' property.

Task-number: QTBUG-75659
Change-Id: If0ef5ba314b88adb530113b608d20fc9c027c5ec
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2019-08-22 15:38:08 +02:00
Timur Pocheptsov
8d302aea33 HTTP/2: use a non-default MAX_FRAME_SIZE
And send it in our 'SETTINGS' frame. Add an auto-test
for this and (as a bonus) - fix a bug accidentally
introduced by the previous change.

Task-number: QTBUG-77412
Change-Id: I4277ff47e8d8d3b6b8666fbcd7dc73c827f349c0
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-08-22 15:36:22 +02:00
BogDan Vatra
9b14950ff6 Android: Update clang mkspecs
Follow Google's BuildSystemMaintainers doc to simplify (a lot) the clang support
It is needed to support future NDK releases painlessly.
Also remove old workarounds.

[ChangeLog][Android] Android depends on NDK r20+

Change-Id: Ib4c07fc71e0f5a264d804b0b3baa18ff79d07630
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2019-08-22 16:32:47 +03:00
Marc Mutz
a4d19654ed Simplify QBezier::split()
Now that result objects can't alias source ones anymore, the order of
writes no longer matters, and we can clean this function up. The
pattern of the algorithm now becomes visible. Before, it was just
drowing in noise.

Change-Id: I36c55ce09d6e13a994c7eda17d96cfe960e7fb95
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2019-08-22 11:41:31 +02:00
Giuseppe D'Angelo
a52a3b2aa4 Micro-optimize QAbstractItemModel::setItemData
If b becomes false, we won't call setData ever again.
Just bail out the loop early and return in that case.

Change-Id: I4b0ed7e21546d686bc3f785209a314a8bed08471
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-08-22 11:40:11 +02:00
Marc Mutz
d1b099c3e3 QBezier: replace out parameters by return-by-value in split()
At least QBezier itself is calling the old function with *this aliased
to one of the arguments. Consequently, the implementation looks rather
... shuffled, to avoid writing into members that it will read once
more later.

Fix by returning a std::pair<QBezier, QBezier> instead. This
simplifies the code that doesn't actually pass existing objects in,
and avoids aliasing problems cropping up under seemingly innocuous
reorderings of statements in the implementation going forward.

While I'm usually vehemently against use std::pair or std::tuple in
APIs, preferring simple structs with aptly-named members instead, this
is one case where the .first and .second actually fit, and pair allows
us to use std::tie, which was handy in qbezier.cpp.

This patch preserves the body of the function as much as possible. A
follow-up patch will clean it up.

Change-Id: I017dfee4a0e69a2e171ce21b89ba04654772c33d
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2019-08-22 09:39:07 +00:00
Marc Mutz
5b2dfbc649 Long live QSize(F)::grownBy/shrunkBy()
These functions tighten the integration of QMargins(F) with the rest
of the geometry classes by providing a way to apply margins to sizes
(and later, rects).

Apply them in a few obvious cases across QtWidgets.

[ChangeLog][QtCore][QSize/QSizeF] Added grownBy(QMargin(F))/shrunkBy(QMargin(F)).

Change-Id: I8a549436824cdb7fb6125a8cde89d5bf02826934
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-08-22 11:38:54 +02:00
Jan Arve Sæther
529b271520 Don't excessively check all output files for failures
This is really just an optimization, but I suspect the author of the code
assumed that the bitwise &= operator short-cicuits. (It doesn't). So this
patch should then fix the code to have the intended behavior.

We don't have to check for failures in the remaining output files once
we've found one. pullFiles() returns just a bool indicating if one of the
output files has a recorded fail, so checking the remaining output files
after the first found failure is just a waste (and ideally they should
contain the same failure (however, flaky tests might break this ideal)).

Drive-by fix.

Change-Id: I951e500a69198e7ed124be32199ac81bbddb9bf7
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2019-08-22 11:21:38 +02:00
Timur Pocheptsov
4300dccba5 Fix a broken build
QHttp2Configuration is using entities (read definitions) from http2,
which is only conditionally included in the *.pri file (requires http).
So as a result we had linker errors.

Fixes: QTBUG-77759
Change-Id: I8b33b0a4802a295f67edad03da3743b24f7ce514
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2019-08-22 11:21:34 +02:00
Mårten Nordheim
6a2112c28c Remove use of QByteDataBuffer in QNetworkReplyHttpImpl
It's temporarily storing QByteArrays before we copy them directly to
QIODevice's internal buffer. We can save the extra work by just push
them directly into the buffer.

The signal compression is no longer useful performance-wise, but is
kept as it will throttle the amount of readyRead emissions the users has
to handle.

Reorder some of the operations as a result to make it more natural.

Change-Id: Ifc0481d56fec42545e95970125d883a5c68d647a
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-08-22 11:21:28 +02:00
Volker Hilsheimer
d97009a9f1 Remove obsolete API after qtdeclarative migrated
This is a follow-up to commit b7d073e990,
which refactored memory allocation of QMetaCallEvent.

Change-Id: I363256c80ee941b545e6f9c659c65556fff5c907
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2019-08-22 11:21:24 +02:00
Christian Ehrlicher
62015adadd QFont: remove unused member QFontPrivate::screen
QFontPrivate::screen was not used anywhere so remove it.

Change-Id: Ie9381d08b59b93c4e7bcaad58ebf1b389aa0a2e6
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2019-08-22 11:21:21 +02:00
Ulf Hermann
c8c724a3ce Cbor: Add overloads for QStringView
Change-Id: I8d22d0741c4d3852b438b12099f81ed87244871d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2019-08-22 11:21:17 +02:00
Timur Pocheptsov
4c6e549b25 QHttp2Configuration: remove setters/getter for indexing
Upon reading the Apple's documentation it would appear the indexing
is more complicated (they name the specific fields and which kind
of indexing must be applied to each). This requires a finer level
of configuration/control and probably a separate class (aka
QHpackConfiguration? ;). We'll provide it in future, if requested
by our users.

Fixes: QTBUG-77412
Change-Id: I6e9461b3966ed59c8b70873eab999a07a04eb289
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-08-21 06:21:58 +02:00
Timur Pocheptsov
fb462102b7 QHttp2Configuration - respect the value returned by huffmanCompressionEnabled()
And either compress or not.

Task-number: QTBUG-77412
Change-Id: I3b09385d2b3caf4f7de0455ad6e22c0f068c33a9
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-08-21 06:21:33 +02:00
Thiago Macieira
1b9274573e forkfd: move the FreeBSD system implementation to a separate file
Simplifies the code a bit and will be helpful when I add the Linux
equivalent.

Change-Id: Iec9c051acd73484c8d94fffd15b99879dc269db9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-08-20 16:57:02 -07:00
Thiago Macieira
8784ab7ba8 forkfd: Add C11 and C++11 atomic support
For forkfd, this is extremely useful, since users can rely on proper
atomic API, not the old GCC API or the internal API that backs the C11 /
C++11 implementation itself.

This also caught one more mistaken use of seq_cst.

Change-Id: Iec9c051acd73484c8d94fffd15b9985fe545e8b5
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2019-08-20 16:56:55 -07:00
Thiago Macieira
5e74d0e80c forkfd: fix compilation in C mode without precompiled headers
Missing one "struct" and one #include <sys/wait.h> for
struct rusage.

Change-Id: Iec9c051acd73484c8d94fffd15b9a1274703afca
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2019-08-20 23:56:50 +00:00
Morten Johan Sørvig
d46415c0af wasm: Add saveFileContent()
Saves a file by file download, where the user can choose
the file name and location using a file dialog.

Change-Id: I4d2ecc76fc33bb65fdf3d7ca3fcd9566c62547dd
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2019-08-20 19:34:53 +02:00
Sona Kurazyan
9f082b4e03 Clean up the docs of qevent.cpp
- Build the docs for deprecated APIs conditionally, based on
  deprecation version.

- Remove the docs of methods deprecated since 5.0.0, these methods
  are not compiled anymore.

Change-Id: I2c1b038ce125ca737944f4fc4a28e2f6852eaded
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2019-08-20 19:34:08 +02:00
Marc Mutz
f556505f63 QWidget: replace manual memory management with unique_ptr [6/N]: extra
Had to port a lot of caching temporaries, too. Decided to leave them as
crefs to unique_ptr to catch any mischief users may be doing with the
raw pointer instead (like deleting it).

Also fixed a use of 0 as nullptr (by standardizing on pointer-to-bool
conversion, as is done everywhere else in qwidget.cpp), and made one
impregnable if condition readable.

Change-Id: Ifdc240bf352c52de0bc3c186fa7a5f4cb2882dd0
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-08-20 17:36:04 +02:00
Allan Sandfeld Jensen
9e86fdb6e8 Support writing color space profile in JPEG
That way the image formats with color space supports all have both read
and write support.

Change-Id: Ib52ebd56192c4a8a0897a6afc7c4a26020319270
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2019-08-20 17:10:19 +02:00
Tasuku Suzuki
5248e895ad Fix build without features.mimetype
Change-Id: I9d3c20845b9ddecbafd6dfd756c5d17ae0c6b5fc
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-08-20 17:23:01 +09:00
Timur Pocheptsov
8052755fd7 Add means to configure HTTP/2 protocol handler
Similar to TLS configuration that we can use on QNetworkRequest,
we can configure different options in our HTTP/2 handling by
providing QNetworkAccessManager with h2 configuration. Previously,
it was only possible internally in our auto-test - a hack with
QObject's properties and a private class. Now it's time to provide
a public API for this.

[ChangeLog][QtNetwork][QNetworkRequest] Add an ability to configure HTTP/2 protocol

Change-Id: I80266a74f6dcdfabb7fc05ed1dce17897bcda886
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2019-08-20 07:19:43 +02:00
Volker Hilsheimer
dcdfb6908d Remove workaround for compilers not supporting thread_local
With C++11, all compilers support thread_local, which replaces the non-
standardized __thread attribute as a storage class.

The storage class was specifically introduced so that applications do
not have to deal with pthread APIs for TLS key management. We still
need to have some of that logic for adopting foreign threads, but we
can rely on thread_local so that we get a fast implementation of
QThread::currentThread() on all platforms.

Change-Id: Iba2b35d014044c4ab317a0e127c5d1f1fa4ecd4a
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2019-08-20 00:32:31 +02:00
Nils Jeisecke
d8a9bec35f QTextDocument: add css-styling of table cell borders to HTML import/export
Supported style attributes:

<table>
style: supports "border-collapse: collapse" and "border-color".
border: width of the outer border
bordercolor: basic color for all borders

<tr>
style: not supported

<td>/</th>
style: supports the "border", "border-[top|left|bottom|right]]"
       shorthand styles and the "border-width", "border-color"
       and "border-style" (and the top/left/bottom/right variants)
       attributes

<table border=1 style="border-collapse: collapse"> will render
a simple 1px table grid.

Notes:

The QTextDocument table model is much simpler than the HTML table model.
It basically only has <table> and <td> support. So the HTML parser is
forced to map markup and styling to the QTextDocument model which
is not without loss.

In other words: While QTextDocument -> HTML -> QTextDocument should
preserve the QTextDocument structure, HTML -> QTextDocument -> HTML
does not preserve the HTML DOM at all.

So for now the HTML importer and writer only support border styles on
the <td> and <th> nodes. In future updates, the HTML parser might be
enhanced to map <tr> and <table> CSS styles to the cells.

Change-Id: If9e7312fa6cbf270cf8f7b3c72ba1fa094107517
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2019-08-19 20:59:12 +02:00
Tasuku Suzuki
8240c24866 Fix build without feature.codecs
Change-Id: I7113928c686319f132e6306f6925da009e8f41b1
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2019-08-20 02:44:10 +09:00
Daniel Smith
f5c118b6b8 Fix escaping of additional app parameters in adb shell command
Change-Id: I80e5b98efbc9654c684b3d78ba0d6688c21bd0f3
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2019-08-19 18:22:57 +02:00
Tor Arne Vestbø
2e0b0be2ce Get rid of QWidgetBackingStoreTracker
It was added for Symbian almost 10 years ago (d7057e7c1f1a), for a somewhat
dubious use-case. The Symbian code is since long gone (ae30d7141), so the
remaining pieces are just adding complexity to the already intricate workings
of the QtWidgets backingstore/painting logic.

Task-number: QTBUG-8697
Change-Id: I82af610a8ac26719c588ac63f06b4501f59b400d
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
2019-08-19 14:40:29 +02:00
Mårten Nordheim
e9eddfd856 Fix rare double-free in QObject machinery
As exposed by tst_QObjectRace::destroyRace we would sometimes end up
with a double-free when destroying a QSlotObject in multi-threaded
scenarios. One free would be done in ~QObject as the receiver was being
destroyed while the other free was done when deleting a QMetaCallEvent
object after we realized it was not needed because the receiver was
destroyed.

Since we can be in a separate thread from the receiver we should lock
before referencing the connection object.

Amends b7d073e990.

Change-Id: Icb53862dc880ae9a4e5581a1a9ee693573f7d9c7
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-08-19 07:27:45 +00:00
BogDan Vatra
77160d2923 Android: Fix env vars parsing
env var values might contain '=' char, so we can't use split.

Change-Id: Iedf3ea46a847acaaf02f51bc80586a519fe7a310
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2019-08-19 10:27:41 +03:00
Tasuku Suzuki
c00487d588 Fix build without features.dlopen
Change-Id: I4ad24c241d3c32a5658bf71fa6133181793020d3
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-08-19 01:51:32 +09:00
Tasuku Suzuki
99749d3b05 Fix build without features.poll_{ppoll,pollts,poll,select}
Change-Id: Idc87521cdf713682ed07eb28b3d3f2f3ca0675ce
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-08-18 13:22:35 +09:00
Laszlo Agocs
1ae39cc72b rhi: d3d11: Rework swapchain effect handling
Use FLIP_DISCARD swapchains only on Win10, stick
with DISCARD otherwise. This may fix the swapchain
creation problems on Windows 7.

Add a QT_D3D_NO_FLIP env.var. to make it possible to
disable using FLIP_DISCARD even on Win10. This is there
for troubleshooting purposes.

Finally, fix the backbuffer handling. What we originally
ported from the D3D12 backend of Qt Quick is not quite how
DXGI used to work with D3D11 and earlier. GetBuffer() can
only be used to query index 0, and that's the backbuffer,
the rest is managed internally. Follow this model.

As an added bonus, disable Alt+Enter.

Change-Id: Ie5c7a1e813864e7f873d55bc72cb22fc09213a05
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2019-08-17 15:01:15 +02:00
Laszlo Agocs
60599486e8 rhi: metal: Avoid flicker due to writing an in-use Managed buffer
Qt Quick apps feature an occasional flicker which seems to be caused
by updating the contents of a Static (or Immutable) QRhiBuffer in a frame
where the QRhiBuffer in question is read in the previous frame as well.
On macOS these types map to a Managed MTLBuffer and only one native buffer
object (MTLBuffer). It seems modifying such a buffer is not safe if the
previous frame has not completed. (this may be as expected, but hard to
tell due to Metal's underdocumented automatic hazard tracking which we
rely on atm)

So for now switch to having 2 native buffers, like we do for Dynamic
(on iOS/tvOS this would be the case anyway since there all buffers are
host visible and slotted regardless of the QRhiBuffer type).

This seems to solve the issue.

To be seen if we want to move to a more Vulkan-like setup where Immutable
and Static map to device local (Private).

Change-Id: I76013f58a2e183ad8eab0705b28a03b395c4530c
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2019-08-17 15:00:51 +02:00
Tasuku Suzuki
5789ece6d0 Add pkg-config library source to bcm_host
Buildroot(buildroot.org) provides bcm_host.pc for Raspberry Pi

Change-Id: Ia8b13ded4d48aac53693f5041e7ef5303513f5e9
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2019-08-17 07:59:46 +00:00
Marc Mutz
cb3e1e551f QWidgetBackingStore: clean up around dirtyOnScreenWidgets
The QVector dirtyOnScreenWidgets was aggregated by pointer, which
makes no sense, as a QVector is just as large as a pointer (and even
in Qt 6, when it will be larger, it's not going to be horrible). But
this complicated the code quite a bit.

Aggregate by value instead (it's just one of three such vectors now).

Drive-by fixes:

- use QVector::removeAll() instead of rolling your own

- port two indexed loops to ranged ones. In the first case, it's safe,
  as the loop body clearly doesn't touch the iteratee (it's just a
  std::accumulate). In the second, the question no longer applies, as
  we're now using a consume loop.

Change-Id: Icd4ac13bb4a6f9a783f0adf2fb6a5bdfacd1f91a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-08-17 09:51:29 +02:00
Marc Mutz
3e79151fa2 QBezier: inline fromPoints()
There's really no reason for it to be out-of-line, and we're going to
use it in QBezier::split(), which is inline, and we want the optimizer
to have a field day with the source, without a compiler firewall in
the way.

Change-Id: I49ae3a87fcce1e2dc87a9081f567503e5a98ef6b
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2019-08-17 09:51:25 +02:00
Tasuku Suzuki
22b3486f82 Fix build without features.proxymodel
Change-Id: I9e51ed78d783da999187e7df58ddb83d76e3c7b7
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2019-08-17 11:55:11 +09:00