Commit Graph

23323 Commits (09ca03e1aab7de1dbfcc61b3f95bbf2ede56f89e)

Author SHA1 Message Date
Allan Sandfeld Jensen a0b3294c9d Fix QRgba64 rgbBlend
The subpixel RGB alpha values were not converted from host endian to RGBA
order before being used as RGBA ordered.

Task-number: QTBUG-58619
Change-Id: I18e1c9df902c7e9001a0e511f06fc953dd7afa3e
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2017-02-16 14:38:30 +00:00
Allan Sandfeld Jensen fc63b7459c Don't fetch destination in RGB64 mode when not necessary
Extends the short-cut of not fetching destination to also apply to
the RGB64 painting. This saves reading and converting destination pixels
when they will be fully replaced with source pixels.

Since ARGB32 was switched to using the RGB64 drawhelpers, and ARGB32 is
particularly expensive to read, this change is important to avoid
performance regression.

Change-Id: If3a2439140d6364e8429783cfa786bd000cfab45
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2017-02-16 14:38:07 +00:00
Marc Mutz 0f730ef7b6 QReadWriteLock: make field 'recursive' const
It is never written after initialization, and accessed concurrently
outside mutex protection, so make sure that it never changes by
marking it as const.

Change-Id: Ib28b2e8b3067d596a95d1699165a6ebfb15fe674
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-16 14:34:22 +00:00
Tor Arne Vestbø ef32f16fc2 macOS: Rewrite window state handling
Instead of relying on specific notifications to change the window
state we now evaluate the state based on the current window state.

This allows us to get rid of windowShouldZoom in the window delegate,
making window state handling work for foreign windows as well, and
also allows us to re-evaluate the state in more places, such as
when moving a window, which may bring it out of maximized state.

The full screen state is tracked by a helper category that doesn't
just rely on the styleFlag, but also on the full screen notifications.
This is needed as macOS will complain if you try to go in or out of
fullscreen while a transition is in effect.

The differentiation between performFoo: and foo: has been removed,
as the latter works in both cases and doesn't rely on the button
being visible/enabled.

These changes fixes many observed quirks in the window state handling
that also resulted in making it hard to write tests that relied on
the fullscreen/maximized operations always working.

Change-Id: I0538c42d9223a56f20ec9156f4939288e0750552
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-02-16 14:32:00 +00:00
Marc Mutz f05d2764b0 QJNIHelpers: unbreak runnables counter
Adding 0 each time will obviously not produce a new identifier each
time...

Also use static initialization for QBasicAtomicInt.

A default-constructed static QBasicAtomicInt at function scope
will be dynamically initialized. It will still be zero-initialized,
but at least GCC adds guard variables for such objects.

When using aggregate initialization, the guard disappears.

Amends 265db5ad9b.

Change-Id: Ia71290cf26c486dcbcc74381f12cd0c4712d6019
Reviewed-by: David Faure <david.faure@kdab.com>
2017-02-16 14:30:27 +00:00
Allan Sandfeld Jensen 925a3c6529 Use native support for fp16 where available
Use F16C or ARM FP16 if available at compile time.

Configure check added because older clang compilers have F16C defines
and flags but not all the intrinsics.

Change-Id: I71f358b8fd003e70ab8fcf35097414591e485112
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-16 12:03:45 +00:00
Alexander Volkov bee82432eb xcb: Allow to disable XInput 2 support by setting QT_XCB_NO_XI2 env var
Use of XInput 2 may result in regressions. For example we call
XISelectEvents for each window every time a device plugs/unplugs.
It causes significant delays when there are many native windows.

Change-Id: I60b799bb667d0e4bca1f9c52cdaa07b04bcc749f
Task-number: QTBUG-57013
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-02-16 09:53:50 +00:00
Marc Mutz 5486882b52 Android: De-duplicate vtables of exported private classes
By making the destructor (usually the first non-inline, non-pure,
virtual function, and therefore the trigger for most compilers to emit
the vtable and type_info structures for the class in that TU)
out-of-line, vtables and, more importantly, type_info structures for
the class are pinned to a single TU. This prevents false-negative
dynamic_cast and catch evaluation.

Since the classes are already exported, users of these classes are
unaffected by the change, and since it's private API, we don't need to
avoid adding code to the out-of-line destructor until Qt 6.

While at it, de-inline also the empty default implementations of
virtual (non-dtor) functions.

Task-number: QTBUG-45582
Change-Id: I3e6f37eab1dee0db445f6c13638a43ca3bf6ac62
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-16 05:02:34 +00:00
Tor Arne Vestbø ee0edf1b0a QWindow: prevent window reparenting into Qt::Desktop windows
Qt::Desktop exists to support QDesktopWidget, which predates the QScreen
API. QWidget internally has checks that prevents you from reparenting a
QWidget into a QDesktopWidget, so we should have the same limitations on
the QWindow level. This allows platform plugins to implement Qt::Desktop
as simple (possibly shared) wrappers around QScreen without having to
allocate native window resources for each desktop window.

Change-Id: Ia1bac506febd3d827a6e0b8ad3bfd95be0cc7f9d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-15 23:00:43 +00:00
Marc Mutz bf2160e72c Clean up QStringLiteral definition
We require lambda support in the compiler since Qt 5.7, so drop
the guard macro.

Apart from MSVC 2013, all our supported compiler also support
char16_t:

- VxWorks uses GCC 4.8, which supports char16_t since 4.5.
- ICC supports char16_t since v12.1; we require v14+.
- ONX uses a GCC which supports char16_t in the compiler,
  but is equipped with a stdlib that does not sport char16_t
  support, which is why we revoke its Q_C_UNICODE_STRINGS in
  qcompilerdetection.h. But we don't need stdlib support, we
  only need the core language feature.
  This is the only platform where this patch actually changes
  something. It removes the, rather unfair, pessimization of
  the platform which could have supported the static-storage-
  duration implementation of QStringLiteral instead of the
  fallback, which uses dynamic memory (QString::fromUtf8()).
- GCC and Clang support char16_t since 4.5 and 3.0, resp.,
  which is far below our minimum compiler requirements in
  effect since Qt 5.7.
- On Windows, MSVC supports char16_t since 2015 only, and we
  still support 2013, but on Windows, wchar_t is the same size
  as char16_t, so instead of u"str" we can fall back to L"str".

So simplify the implementation of QStringLiteral by assuming
that all these feature are present, adding noexcept to the
lambda to make noexcept() queries return true.

This allows us to guarantee:

[ChangeLog][QtCore] QStringLiteral is now guaranteed to be
evaluated at compile-time. The last platform (QNX) to use the
QString::fromUtf8() fallback has been ported to allocate the
string data statically, too.

Change-Id: I7920d7a77001e5c5550e7c7d57ceb7c51c9eb443
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-15 20:14:56 +00:00
Marc Mutz 04d6495bf7 Make some atomic counters zero-based
A variable of static storage duration that is not zero-initialized
takes up space in the DATA segment of the executable. By making the
counters start at zero and adding the initial value afterwards, we
move them over to the BSS segment, which does not take up space in
the executable.

Wrap atomics used across function boundaries into small functions,
to avoid code duplication and to increase readability.

Change-Id: Ida6ed316ecb8fe20da62a9577161349e14de5aed
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-15 20:14:27 +00:00
Marc Mutz a5febadac5 QString(Ref): make toLatin1()/toLocal8Bit() null handling consistent
Systematic testing in tst_QStringApiSymmetry revealed a bug in
QStringRef::toLatin1(): a null input did not result in a null output,
but an empty one. This is fixed, for consistency with
QString::toLatin1(), and QString(Ref)::toUtf8(), which behaved
correctly already.

The same bug was found in QString(Ref)::toLocal8Bit(), which is
particularly hideous, as it's documented to fall back to toLatin1(),
which preserves null inputs. Fixed, too.

[ChangeLog][QtCore][QString] toLocal8Bit() now preserves nullness of
the input QString (outputs null QByteArray).

[ChangeLog][QtCore][QStringRef] toLocal8Bit() and toLatin1() now
preserve nullness of the input QStringRef (output null QByteArrays).

Change-Id: I7026211922c287e03d07e89edbad2987aa646e51
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-02-15 20:12:36 +00:00
Dmitry Shachnev a373a01ed7 qcssparser: Undef TILDE to fix compilation on Hurd
Change-Id: Ic3168629565618bcd7f26e47579beaa1bbd22e39
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2017-02-15 19:56:34 +00:00
Thiago Macieira a7ba91bd64 Use Qt::PreciseTimer for the QDeadlineTimers in QTest::qWait*
QDeadlineTimer will eventually support CLOCK_MONOTONIC_COARSE on Linux,
so let's be safe before that change appears.

Change-Id: I9b423f1b71194205b27afffd14a383a7e9f66a9d
Reviewed-by: Stéphane Fabry, Cutesoft <stephane.fabry@gmail.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-02-15 19:04:21 +00:00
Thiago Macieira 798819bb87 Correct \since for QStorageInfo::subvolume()
3e9db01a2e4be5034d10d6eeafd65d0a8609615b entered dev after the 5.8
branch.

Change-Id: I4139d5f93dcb4b429ae9fffd14a349e85e62a298
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-15 16:33:20 +00:00
Thiago Macieira fb376e0fcc Remove the name cache from QMetaType::typeName
It was unnecessary, since we only cached the static types, which are all
generated by the macro anyway. The way it was implemented, this produced
data races that are strictly-speaking UB, even if all the threads were
writing the same values to the same data locations.

This commit changes a little the code to simplify, since we're changing
those lines anyway.

Task-number: QTBUG-58851
Change-Id: Idc5061f7145940f987dffffd14a30047846e3113
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-15 16:25:38 +00:00
Tor Arne Vestbø 666b91fb8f macOS: Don't hide NSWindowZoomButton when window can go into fullscreen
The button in the title bar is used both for going into full screen and
maximizing (zooming) the window. We can't hide/disable it unless both
Qt::WindowFullscreenButtonHint and Qt::WindowMaximizeButtonHint are
off.

This means that when Qt::WindowMaximizeButtonHint is off, it's still
going to be possible to Option-click the button to maximize the
window, but this is less of a concern than hiding the full screen
button when Qt::WindowFullscreenButtonHint is set.

Change-Id: I70dbe27b3197fe22c1781277f8bf9a818d71d04d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-15 15:23:47 +00:00
Frederik Schwarzer 1e7143cff8 Fix minor typos in apidoc
Change-Id: I5ce9599a60ea336b469807df075e491f0e6df680
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-02-15 15:01:45 +00:00
Samuel Gaist 280225495d Doc: fixed explanation in Qt::Tool documentation
Clarify the the macOS implication of the flag.

Change-Id: Ic68e1ac668cfa68abf868ba6bdd46241dfa9b9a7
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2017-02-15 14:45:18 +00:00
Tor Arne Vestbø 54e4735f89 qpa: Let platform plugins report old state for window state changes
The previous logic relied on QPlatformWindow::setWindowState() being
synchronous and delivering the QPA event before returning to QWindow,
in which case window->windowState() would still refer to the old
state. Async platforms can now report the previous state correctly.

Change-Id: Ib9148fe23fb62be55b7e3a0ccf63d32c71dc2ad3
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-15 14:37:03 +00:00
Olivier Goffart 1037eebc0b Windows QPA: Use the native algorithm to find out the window's screen
QPlatformWindow::screenForGeometry uses the screen where the center
of the window is, but native application use the one which intersects
with the bigger area. It might not be the same.

Change-Id: I831a5fcaea0e293e9f0f93ef5e562cce57fae2f4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-15 14:19:12 +00:00
Kimmo Ollila a0a9e8b2d7 Fix is_iec559 assert on GHS compiler
GHS compiler is not fully compliant with iec559.
Therefore we need to replace is_iec559 assertion
with separate checks to build quint16.

Change-Id: I88c57e394b8d4e7899ee7d4a13cbfbac9436b2fc
Reviewed-by: Rolland Dudemaine <rolland@ghs.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-15 13:52:26 +00:00
Marc Mutz 03903ec783 QJNIHelpers: make mutexes static
Amends 265db5ad9b.

Change-Id: I707bb88285531ee9f82efec46901871d53413eb3
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2017-02-15 13:06:12 +00:00
Kevin Funk e0c43fb046 QFileDialog: Protect against nullptr dereference
When the QFileDialog receives a language change event, and native
dialogs are used, this code path dereference a nullptr in the qFileDialogUi member.

Protect by checking the return value of QFileDialogPrivate::usingWidgets() as
done in other places deferencing qFileDialogUi.

Fixes a crash in GammaRay

Change-Id: I3e9eb81c75d9fc983519a58c5ec06e316ac80263
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-02-15 12:46:30 +00:00
Frederik Schwarzer 9e888e633b Fix indentation of source code example in docs
Change-Id: Icf94c9adc55d16acd26831cce331054a8c49652d
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
2017-02-15 11:58:12 +00:00
Marc Mutz af8771867c Fix UB (data race) in QtAndroidPrivate::requestPermissionsSync()
If the QSemaphore::tryAcquire() call times out, we mustn't
touch *res, because there was no happens-before relation
established between *res = result in the lambda and our
returning *res;

Fix by returning a default-constructed hash in that case.

Add a strategic std::move().

The same problem exists in runOnAndroidThreadSync(), but
I have no idea how to solve it, because there the shared
object is the runnable itself.

Change-Id: I9a2c431144c169fbd545763555d96153143a11bf
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2017-02-15 11:24:18 +00:00
Marc Mutz 39820cf8c3 QJNIHelper: fix a potential race in sendRequestPermissionsResult()
The code obtained an iterator into a QHash under mutex protection,
then dropped the lock, dereferenced the iterator several times and
only retook the lock to erase the element from the QHash.

This is very smelly. QHash provides no official iterator validity
guarantees, and the container isn't const, either (which would imply
thread-safety). In particular, the dereference into the container
outside the critical section is cause for concerns.

Simplify the code, removing any doubts about its race-freedom, by
taking the payload item out of the hash before dropping the lock, and
using only the local strong reference in the remainder of the
function.

The only other references to g_pendingPermissionRequests are
insertions with unique-by-construction keys in QtAndroidPrivate's
requestPermissions(), so there was no reason to keep the item in the
hash for the whole duration of the sendRequestPermissionsResult()
call.

Change-Id: I39fe0803b13b3046d1f0fd9c8e96c531406d57da
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2017-02-15 11:23:28 +00:00
Aaron Linville a05116e6f1 Update QSyntaxHighlighter docs to use QRegularExpression
Update the QSyntaxHighlighter examples to use the new QRegularExpression
class in place of QRegExp.

Fix typos. Remove duplicated snippet. Replace lengthy section of
duplicate text in highlight(..) with a note to see the detailed
description.

Task-number: QTBUG-58494
Change-Id: Id8d94bddbed52e6e52feac107f6fc84e2fe4518a
Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch>
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2017-02-15 10:29:21 +00:00
Heikki Haveri aebf66d242 Enable QtAndroid::runOnAndroidThread in a Service
Change-Id: I214f5dc70c52011a5e1712ea70f97f8b564fb664
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2017-02-15 10:04:17 +00:00
Thiago Macieira b58af67d7b Turn QThreadData::threadId into a QAtomicPointer
Solves a data race found by TSan.

Since thread and threadId are QAtomicPointer, I've removed the explicit
initialization in the QThreadData constructor

Task-number: QTBUG-58855
Change-Id: I4139d5f93dcb4b429ae9fffd14a34082f2683f76
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-02-15 08:08:58 +00:00
Friedemann Kleint 0b30a6e6aa QElfParser: Fix plural form in error message
Amends change dcec1420ea.

Change-Id: I54c7db012d87a55c310141debac19118e7cb284a
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-15 07:18:55 +00:00
Marc Mutz 265db5ad9b QJNIHelper: clean up atomic int and mutex handling
1. Do not use Q_GLOBAL_STATIC to hold QAtomicInt or QMutex, use
   file-static QBasicAtomicInt and QBasicMutex instead. They are
   zero-initialized PODs.
2. Use only QMutexLocker to lock mutexes.

Also wrap the atomic counter into a next...() function, as done
elsewhere.

Change-Id: I4b14ac0de9d4cb6780b1f1372c2b5fc88e918e4c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-14 21:11:03 +00:00
Jesus Fernandez 5fcdb6c459 Add Q_ASSERT before dereference pointer
Fix Null pointer dereferences  (NULL_RETURNS)
CID 176640:  Null pointer dereferences  (NULL_RETURNS)
Assigning: "p" = null return value from "value".

Change-Id: I3af9aae3bbebd6f4de90854ba56cd601669b1b5a
Coverity-Id: 176640
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-02-14 15:06:18 +00:00
Marc Mutz c4a5307a3e QMutex/Linux: remove unused QBasicAtomic
$ git grep -we futexFlagSupport
  src/corelib/thread/qmutex_linux.cpp:static QBasicAtomicInt futexFlagSupport = Q_BASIC_ATOMIC_INITIALIZER(-1);

The last user of this variable was removed in 9ef59b5.

Change-Id: I818a13a481ad25baa5ff7d389a737b8801adcfcc
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-14 13:30:05 +00:00
Olivier Goffart 9e3a3250e0 Windows QPA: Fix compilation with QT_NO_OPENGL
Compilation error introduced in 7780ee9e5f

Change-Id: Ia770ca207cdd25bb15c74d681ece391a844791a7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-14 12:09:47 +00:00
Liang Qi 27432d40f2 Merge remote-tracking branch 'origin/5.8' into 5.9
Change-Id: I2bd2e61bae1eab4fc74fa6accd741ed9ae1f0669
2017-02-14 11:33:02 +01:00
Friedemann Kleint 071a120400 Windows styles/wizard: Do not invoke winId() of desktop windows
Call the Win32 API GetDesktopWindow() to obtain a HWND of the desktop
instead of calling QApplicationPrivate::getHWNDForWidget() for desktop
windows. This allows for lazily creating desktop platform windows.

Observed in some tests where no window is visible.

Change-Id: I97074f69606b3d74f3fbc90acb4a077d52eeb84d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-02-13 21:32:04 +00:00
Tor Arne Vestbø 5c440880ba Respect QWindow::screen() when computing QPlatformWindow::initialGeometry()
Calling setScreen() on a QWindow doesn't move the window to that screen
unless the new screen is a separate virtual desktop, as the window
geometry is what determines the position of the window within each
virtual desktop.

But when mapping a QWindow that doesn't have a position explicitly set by
the user, we try to resolve a reasonable position for it. In that case we
should take the QWindow screen into account, as setting it to a non-primary
screen is a good indication that the user wants the window to end up on
that screen. If that's the case, it should override the logic of using
the transient parent or the cursor position to choose which screen to
place the window on.

Change-Id: I591d872a93913173b20eb3da19aa63118fcf6b12
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-13 18:30:09 +00:00
Tor Arne Vestbø 09e7a994d1 Don't create platform window for QWindows when calling setVisible(false)
We can defer the creation until the window is shown.

Change-Id: I3d5b45ae59ee0925996cf12cd46dd574c8c6ef95
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-13 18:30:06 +00:00
Marc Mutz 9bf8cc1f18 qimage_conversions.cpp: keep shared copies of gray and alpha color tables
Since QVector is implicitly shared, don't re-generate the same
two color tables all over again, but create them once and keep
them around in a Q_GLOBAL_STATIC.

Change-Id: I9a8d32021d8cc327264f2818a23beaae67fe3ee8
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-13 18:27:17 +00:00
Nico Vertriest 6fe386ac42 Doc: Updated doc QSqlDatabase
Change-Id: I914e9bdbf6137f0e3858a57b0f59fc550fc7e317
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2017-02-13 15:45:06 +00:00
Friedemann Kleint e8a2a9bf30 Windows QPA: Include GL header depending on presence of dynamic GL
Amends change 7780ee9e5f.

Task-number: QTBUG-58178
Change-Id: I0b6e064dfdbdafb7fba9c20c56cfd873fa594c44
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-02-13 12:04:39 +00:00
Oswald Buddenhagen e3e2bc2109 announce 'temporaryfile' feature in bootstrap library
qmldevtools refers to it.

Task-number: QTBUG-58819
Change-Id: Id88265bb17e4d2e9c61f77409c4163eacc4a13f3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-13 09:20:07 +00:00
Dominik Holland 088bf1fb3d Add the new NVIDIA specific calls to qeglstreamconvenience
NVIDIA 370 introduced new calls needed to work with eglstreams in the
wayland window system

Task-number: QTBUG-58299
Change-Id: I606b143d3016f365b0d5ca4bc163b99289afbea1
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-13 09:17:39 +00:00
Marc Mutz 0d2791c5f6 QCollatorSortKey: add some std::move
All implementations of QCollator::sortKey() can benefit from
moving their CollatorKeyType into the QCollatorSortKeyPrivate
on construction.

So make the QCollatorSortKeyPrivate ctor a perfect forwarder
for its m_key member, and add std::move() calls where they
were missing (in all but one case, lvalues were passed).

Make the ctor explicit, as it should have been from the
beginning.

Change-Id: I2a1cdda5fd23990ace019b963df895c621a1fa85
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-13 08:42:46 +00:00
Marc Mutz a85b4d79db QThreadPool: replace a QSet with a QList
QThreadPool maintains three containers of QThreadPoolThread*:

- allThreads, a QSet
- waitingThreads, a QQueue
- expiredThreads, also a QQueue

None of the operations on allThreads make use of QSets fast lookup.
The only functions called on it are isEmpty(), count(), insert(),
and swap().

Since therefore QSet adds nothing but overhead, causes indeterminism
(e.g. when deleting threads in Private::reset()) and code bloat, use
the same container for allThreads that underlies QQueue: QList.

Port insert() to append(). Add an assert to verify that we're not
running into an ABA problem here (but this should never fire, since
we're never deleting threads except in Private::reset(), where we
do remove them from allThreads), just in case.

Saves ~0.5KiB in text size on optimized Linux AMD64 GCC 7.0 builds.

Change-Id: I53a4d5ef2c204420f7c8852f1e72ab3d6ea43d08
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-13 08:42:41 +00:00
Filipe Azevedo 9db8c171e7 Fix QLibrary::isLibrary on Apple platforms
Add proper support for 'so' and 'bundle' suffixes.  Qt wrongly assumes
.so libraries are not versioned on Apple platforms, which is
wrong. Also, the shared library .bundle which is what Apple recommends
instead of .so, are also versioned (not to be confound with the
different Core Foundation bundles, which are directory hierarchy).

For more info, see http://docstore.mik.ua/orelly/unix3/mac/ch05_03.htm.
Especially the part that reads:

"Loadable modules, called bundles in Mac OS X, have the file type
MH_BUNDLE. Most Unix-based software ports usually produce bundles with a
.so extension, for the sake of consistency across platforms. Although
Apple recommends giving bundles a .bundle extension, it isn't
mandatory."

Task-number: QTBUG-50446
Change-Id: Iacd5136397a12d65d83821434f332eb602550b4b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-12 18:25:42 +00:00
Thiago Macieira 418184c2a0 Update the __xxx__ macros due to MSVC and ICC not defining them all
And if __AES__ or __PCLMUL__ is defined, then we expect wmmintrin.h to
exist.

Change-Id: I445bb15619f6401494e8fffd149db77dc513e071
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-02-12 08:16:05 +00:00
Tor Arne Vestbø b5068a2831 macOS: Don't try to cast foreign windows to QNSView
Change-Id: I08a4d76310a689c3c855d4c8306f9d7aa5cecadc
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-11 21:49:14 +00:00
Tor Arne Vestbø 0b18d51b89 macOS: Handle window state changes directly in QCocoaWindow
Now that notification callbacks are delivered directly to QCocoaWindow,
it doesn't make sense to then send them to QPA via QNSView. By skipping
the QNSView roundtrip we also enable window state notifications for
foreign windows.

As an optimization we no longer flush all window system events, but use
the new synchronous API to deliver the window state change event.

Change-Id: I529b625fbe22e664c34a51bcd4448d1bf0392e6b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-11 21:48:45 +00:00
Thiago Macieira 68b21690e2 Use QBasicMutex in qthread_win.cpp
It's QtCore, so we're fine.

Change-Id: Ifaee7464122d402991b6fffd14a0d7ad9c09e2f2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-11 05:06:33 +00:00
Laszlo Agocs fa3dca176e evdevtouch: Add missing we mean it note
Change-Id: If703a4d8542cb98fd1966f8ca959938709731452
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2017-02-10 19:41:34 +00:00
Laszlo Agocs 52094e2520 egl: Expose direct function pointers on INTEGRITY
Change-Id: I4f7df9abcd580297a40fd9dd16a26f5f93e1c4c7
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2017-02-10 19:41:26 +00:00
Eskil Abrahamsen Blomfeldt eca1933bb7 Fix compilation on iOS
The function is only used from inside the #ifndef ES2 blocks,
causing it to fail compilation with a default configuration
on iOS (where warnings are errors).

Change-Id: I4f76c6371bd9125c7d1c919685df4a870eeb62f0
Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
2017-02-10 12:43:09 +00:00
Olivier Goffart 0e20635c39 moc: error out when the Q_PLUGIN_METADATA file can't be opened
Task-number: QTBUG-56045
Change-Id: Ib058791036a2728dcd6215009a4ff206278bed14
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-10 06:55:48 +00:00
Thiago Macieira 8a410f60ae Don't include qfloat.h in the QtCore master include
We have observed that MSVC 2013 gets lost with the overloads that this
header adds, causing compilation bugs. This is believed to be a compiler
bug, but it's not something we can work around.

Task-number: QTBUG-58555
Change-Id: I536c32a88bff44dab37afffd14a1bad1d31dc16d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Glen Mabey <Glen.Mabey@swri.org>
2017-02-09 21:23:31 +00:00
Alex Trotsenko 6e8fcab7e0 Improve QIODevice::peek() performance on buffered devices
Since 5.7, QIODevice::peek() implementation is based on transaction
mechanism. While technically it's correct, seeking backward on a
buffered random-access device clears the internal buffer that affects
the performance of reading.

To solve the problem, this patch implements peek mode directly inside
the reading procedure.

Task-number: QTBUG-56032
Change-Id: Ic5269f76e44c491a0309e13aba87fa7cf7b9259f
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-02-09 18:46:24 +00:00
Alex Trotsenko 60563855e5 Refactor QIODevice::read()
Move device-dependent part of the code into the private function for
further reusing by peek() procedure.

Task-number: QTBUG-56032
Change-Id: Iedceafe4b0bab109ca5c64ad274d779efe87c27b
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-02-09 18:46:15 +00:00
Thiago Macieira 7314c53d31 Add QDataStream streaming operator for QFlags
We're already using it, for example in qpaintengine_pic.cpp:502:
         d->s << p << ti.text() << fnt << ti.renderFlags() << [...]
                                             ^

[ChangeLog][QtCore][QFlags] Added operator<< and operator>> for
streaming QFlags into and out of QDataStreams.

Change-Id: I33dc971f005a4848bb8ffffd1478e79d6102d1bc
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-09 17:46:11 +00:00
Oswald Buddenhagen b052d0cffd rename qvector.cpp => qvector.qdoc
the file contains no code.

this avoids complaints from ar/ranlib in static/bootstrapped builds.

Change-Id: Iee22ffc61a5f9ea8c25f5455b7e8e017ac521624
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-09 14:56:01 +00:00
Oswald Buddenhagen 2a48f7b189 make libinput axis api feature depend on libinput
amends b4085e56.

Change-Id: Id18a7de6496e8e9164cb247426aba1293aa4ea2e
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-09 14:55:47 +00:00
Oswald Buddenhagen 559bfa09e4 refuse to build EGLFS on android, darwin, and windows
... instead of merely defaulting it to off on android and windows.
this reflects actual reality.

Change-Id: I880254138bedd07124aa00096a06dd6e1803feb9
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-09 14:55:23 +00:00
Andy Nichols dee16fe491 Blacklist Intel HD Graphics IronLake (Arrandale) on Windows
More poor quality Intel OpenGL drivers causing issues when using OpenGL
in Qt.

Change-Id: I76ad023a1f1e92d57dc0b081c665a3b066206068
Task-number: QTBUG-53888
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-09 14:15:34 +00:00
Tor Arne Vestbø 7e98eb5f5f Prevent Qt::ForeignWindow from propagating into QWidget for non-toplevels
Qt::ForeignWindow implies Qt::Window, which QtWidgets interprets as a top
level window, but this is not the case on a QtGui level. A foreign window
can be a child window as well, so we have to make sure the QWindow state
is not propagated to QWidget, which would result in the QWidget becoming
top level.

Change-Id: Ie0c2d769ce92e6988a4d62da46f5fc2da74bdf08
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-09 14:10:36 +00:00
Tor Arne Vestbø 0c6911e5cd QWindow: don't destroy foreign windows
Calling QWindow::destroy() is documented to "release the native platform
resources associated with this window.", but in the case of foreign windows
we do not control the native platform resource, so we shouldn't destroy
the platform window until the QWindow is destroyed.

This also allows code paths to defer to the platform window to answer
questions like winId() instead of having to duplicate the ID on the
QWindow side in _q_foreignWinId.

Change-Id: Ie00ee570bdddde958d97d49edcba2bc1bf519a99
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-09 14:10:28 +00:00
Tor Arne Vestbø a57f2128b1 Add QPlatformWindow::isForeignWindow()
Simplifies code at call sites and allows for refactoring how to decide
if a window is foreign or not at a later point.

Change-Id: Icc51a83bac187f4975535366b53b4990832b6c82
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-09 14:10:17 +00:00
Thiago Macieira 136c5b9338 Merge several Q_GLOBAL_STATICs in qresource.cpp into one
Since they are all used in a typical application, this reduces the
number of memory allocations (thus, the overhead) as well as the
state-keeping in the libc atexit() functions.

Change-Id: Ifaee7464122d402991b6fffd14a0e59457ad9cb7
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-09 01:22:54 +00:00
Thiago Macieira 4f3ea30922 Avoid unnecessary creation of some Q_GLOBAL_STATIC
If these lists weren't created in the first place, then they are empty.
We don't need to create it in order to conclude that. Unlike most
Q_GLOBAL_STATICS, these are almost never used and yet they were
always created due to where they were checked.

Since we're calling exists() before, there are two consequences: first,
since the list already exists, we're not allocating memory so it cannot
throw std::bad_alloc when being accessed. Second, since we've just
checked it exists, we can use QGlobalStatic's operator*(), which is
slightly faster than operator()(). The weird &(*list) syntax is only to
avoid changing the rest of the code that used a pointer

Change-Id: Ifaee7464122d402991b6fffd14a0e44f533dc3d9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-02-09 01:22:12 +00:00
Oswald Buddenhagen 5152c3ca82 make freetype & fontconfig dependencies private again
exporting the freetype dependency caused qtwayland to break with
-qt-freetype, as the helper libraries' module pri files are not
installed (for good reasons)

after f9a80e06a, no actual user of FontDatabaseSupport needs access to
the transitive dependencies anyway (one of the headers has a fontconfig
dependency, but it's not used outside the module itself), so hiding them
again is just fine.

this partially reverts ec774500f.

Task-number: QTBUG-56666
Change-Id: I9e68a7e0725a92833b856c9ffdbec61c8aa5fed2
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2017-02-08 23:39:24 +00:00
Oswald Buddenhagen 392b338f15 move qfontengine_ft.* from gui to platformsupport
that's where the files are actually used nowadays.

also removes an obsolete (and bogus) gui export.

Change-Id: I4551aad798acb6ce8c0abe43a2fcb8e5ac64a2d4
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
2017-02-08 23:39:18 +00:00
Liang Qi dd756011da Merge remote-tracking branch 'origin/5.8' into 5.9
Conflicts:
	configure.json
	mkspecs/win32-icc/qmake.conf

Change-Id: Ibf40546b024d644c7d9ed490bee15b82597f4d3f
2017-02-08 15:49:18 +01:00
Marc Mutz 626a4d89c2 QFormLayout: take the correct row in takeRow()
I didn't even try to understand what the old code was trying to do;
once you're told by a user that the code is wrong, you see that it is.

Fixed by just using the row as passed to takeRow() instead of trying
to do some storage-index calculations. The m_matrix indexing operator
does it all for us.

Added a test that checks that the expected field widget gets
returned. Fixed expected test data that was wrong, and just checking
that the implementation behaves as implemented, instead of as
documented.

Amends change 8fbae648db.

[ChangeLog][QtWidget][QFormLayout] The functions takeRow() and
removeRow(), new in 5.8.0, now take and remove the correct row.

Task-number: QTBUG-58693
Task-number: QTBUG-15990
Change-Id: I7185ccbc6c03e2579741cad5c0c821d3ed165474
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-08 11:01:31 +00:00
Thiago Macieira 8798d03e7e Remove unused qt_application_thread_id variable
Seems to be a write-only variable and QThread::currentThreadId has no
side-effects.

Change-Id: Ifaee7464122d402991b6fffd14a0c8666968dfe4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-02-08 00:02:44 +00:00
Marc Mutz 0c50edbe84 QCollator: don't pipe bcp47Name() through QString
Give QCollator access to QLocalePrivate::bcp47Name(), to avoid
both the latin-1 -> UTF-16 conversion in QLocale::bcp47Name(),
as well all as

- the replace('-', '_').toLatin1() call in ICU
- the toLocal8Bit() call in macOS
- the toUtf8() call in Windows

implementations of QCollatorPrivate::init().

This is safe, since, according to https://tools.ietf.org/html/bcp47,
a BCP47 name only contains US-ASCII (ALPHA used, which is defined by
https://tools.ietf.org/html/rfc5234 to be [a-zA-Z] only).

Change-Id: Id56befb1b5a7983494d848cdabf7ebeda377cf9f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-07 19:40:10 +00:00
Marc Mutz 9e5e30fa13 QStringMatcher: fix setCaseSensitivity() on a non-QString-backed matcher
When a non-QString-backed mode (via the (QChar*, int) ctor) was added
for Qt 4.5, the author forgot to adjust the setCaseSensitivity()
function.  It still uses q_pattern instead of (p.uc, p.len) as the
pattern for which to create the skip-table. Since there is no
setPattern() overload for this mode, the correctness of the matcher is
not harmed by this, but its performance degrades to that of a linear
scan: the skip-table, being filled from an empty pattern, will be
all-zeros, sending bm_find() into the 'possible match' case at every
character.

Since matching is still correct, but slow, it's not possible to write
a test for this. I did, however, leave my attempts in the auto-test,
for when we add QStringView overloads of setPattern() which will then
be able to expose the bug.

Change-Id: I7b803e8624b0352a0a974900affbbfc0c260d93b
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2017-02-07 16:31:00 +00:00
Marc Mutz 18e6e81059 QCollator/ICU: fix a rather hair-raising performance bug in compare(QChar*, int, QChar*, int)
The intention when using an overload that takes (const QChar*, int)
instead of a QString is probably to avoid creating a QString in the
first place. If the implementation stabbs the user in the back by
internally creating a QString just so it can call QString::compare()
on it, then that is rather unacceptable.

QCollator is already a friend of QString, so, absent QStringView,
resolve to calling compare_helper().

Change-Id: Ia7de1a095e3e310bd1b9957ed67291cc9cc95b32
Reviewed-by: David Faure <david.faure@kdab.com>
2017-02-07 12:01:08 +00:00
Frederik Gladhorn ee34897565 Fix regression preventing VoiceOver following the keyboard focus
In fafdb171e0 a potential nullptr deref
was fixed, but it changed the hierarchy of accessible objects.
The new hierarchy would prefer to send a parent object that represents
the application, but macOS needs the window to be in the hierarchy for
VoiceOver to behave as expected.
Tweak it so that we give the window as parent again, not the app.

Change-Id: I5f7f59b07d0966c8bcf96968e4ed65eba9e05be6
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-02-07 11:50:19 +00:00
Frederik Gladhorn e9686b3718 Protect against nullptr deref in QAccessibleEvent::uniqueId
This looks like an underlying issue in the model/view implementation
which relies on accessible interfaces that are not representing a qobject.
We know it's not perfect and needs fixing, but for now at least don't crash.

[ChangeLog][macOS][Accessibility] A common crash in accessibility on macOS was fixed.
See QTBUG-39008

Task-number: QTBUG-39008
Task-number: QTBUG-54776
Task-number: QTBUG-56043
Task-number: QTBUG-57146
Change-Id: I16b161914d4bc3cbc0beee37d468243bf7788d1e
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-02-07 11:50:02 +00:00
Frederik Gladhorn c7e49651f1 Use categorized logging in qaccessible.cpp
Change-Id: I244a1ef8bae2cc0392dae4ef8f3fbb47630e1d56
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-02-07 11:49:54 +00:00
Nico Vertriest e7034fddfe Doc: link issue and qdoc error on parameter
- No such parameter 'image' in QImage::toCGImage()
- Can't link to 'toNSImage()

Change-Id: Ida559fb1211d1e196d9a9a50d97566124e82eb2f
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2017-02-07 11:42:38 +00:00
Marc Mutz 9aaaa8427d QCollatorSortKey: use QExplicitlySharedDataPointer as pImpl
The key is immutable except for assignment and swap,
so don't run the risk of auto-detaching and use the
explicit-detach version of QSharedDataPointer.

Change-Id: Ib2cfe5981e6dfe375d6208289ff58247ef9d4870
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-07 09:50:16 +00:00
Marc Mutz 1401225330 QLoggingRegistry: optimize updateRules()
... by not creating three temporary QVectors just to concatenate them.

There's no QVectorBuilder, so what works well with QStrings doesn't
work well at all with QVectors. The chaining of op+ causes three
temporary QVectors to be created and thrown away.

Instead, use clear() (which preserves the vector's capacity these days),
followed by four op+=.

Change-Id: I300bd35544ea41037d28db0f48f210c33c826b85
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2017-02-07 09:50:00 +00:00
Samuel Gaist 8b1d9d308b Fix result handling in QDialog::done
The setData method of an item view would get an incorrect value of a
QDialog's result. This patch changes the order of functions called to
fix that.

[ChangeLog][QtWidgets][QDialog] Fixed a bug where accessing the result
of QDialog's result could yield an incorrect value in some situation
like using it as a delegate for item views.

Task-number: QTBUG-6018
Task-number: QTBUG-12156
Task-number: QTBUG-14430
Change-Id: I6ee4b6e8cacf6a806631c05c6c5dbcff925df65e
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-07 09:09:42 +00:00
Vyacheslav Koscheev d0b8356e7e Android: Fix data race in QAndroidEventDispatcherStopper
Change-Id: If5f8406d7af2d91e267a0ba380e73287feabac9f
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2017-02-07 08:40:40 +00:00
Marc Mutz dbc3d8e15e Unbreak ubsan developer-build
Clang 3.8's undefined-behavior sanitizer checks that the
declared type of the object is a base class of the
dynamic type of the object on each access to a member
of a class type.

It therefore requires the typeinfo for these types,
which for polymorphic types is emitted in the TU where
the vtable is emitted, too.

QDBusConnectionPrivate is a polymorphic non-exported class,
so this failed at link-time. Ditto for the other case.

Fix by autotest-exporting the classes.

Also, where applicable, de-inline the dtors, so the
vtable (and typeinfo) are pinned to one TU, and the
ctor, just because it's the correct thing to do.

Change-Id: I991f81f88d2a48e85d94d9f3ac61473c0b7056d3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-07 08:32:53 +00:00
Samuli Piippo 3de596a321 kms: calculate physical size if actual size is unknown
Use the default dpi of 100 to calculate physical size of the display,
if KMS output returns 0 as the size and the size was not set via
environment variable.

Change-Id: If310592b2694a46d2fab464b21ec1765a5033933
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-06 20:37:18 +00:00
Friedemann Kleint 4bf0ddb3f1 Fix some qdoc warnings for 5.9
Fix warnings:
src/network/access/qhstspolicy.cpp:158: warning: Undocumented parameter 'expiry' in QHstsPolicy::setExpiry()
src/network/access/qhstspolicy.cpp:178: warning: Undocumented parameter 'include' in QHstsPolicy::setIncludesSubDomains()
src/network/access/qhstspolicy.cpp:178: warning: Can't link to 'includeSubdomains()'
src/widgets/kernel/qsizepolicy.cpp:402: warning: Cannot find 'transposed(...)' in '\fn' QSizePolicy QSizePolicy::transposed()
src/widgets/kernel/qsizepolicy.h:165: warning: No documentation for 'QSizePolicy::transposed()'
src/widgets/util/qundostack.cpp:164: warning: Undocumented parameter 'obsolete' in QUndoCommand::setObsolete()

Fix the signature of the QStaticByteArrayMatcher member functions. The warnings
src/corelib/tools/qbytearraymatcher.cpp:372: warning: Cannot find 'indexIn(...)' in '\fn' QStaticByteArrayMatcher::indexIn(const char *haystack, int hlen, int from)
src/corelib/tools/qbytearraymatcher.cpp:382: warning: Cannot find 'indexIn(...)' in '\fn' QStaticByteArrayMatcher::indexIn(const QByteArray &haystack, int from)
remain, though since apparently qdoc is thrown off by the constructor.

Change-Id: I157359a881ff3fbc80d2eeb52dd5c27249d009c4
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-06 16:58:04 +00:00
Friedemann Kleint 91120599ae QRasterPlatformPixmap::createPixmapForImage(): preserve DPR
Remove the line setting the DPR from the source; the image
is moved.

Task-number: QTBUG-58653
Task-number: QTBUG-58645
Change-Id: I2de94681459dba1d69dee06da44617fb9fa35bcc
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-02-06 16:57:41 +00:00
Marco Trevisan (Treviño) e1c93cc74b QDBusTrayIcon: try use runtime or cache for icons
It's better to save icons in $XDG_RUNTIME_DIR or
$XDG_CACHE_HOME paths than in $TMPDIR as these
places are readable from the desktop environment
when an app is ran confined in a sandbox (as in
snap packages)

Change-Id: I1a3e4c5714f8ea51034d18fb87cead87ed21d6be
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
2017-02-06 14:15:31 +00:00
Marc Mutz c876bb1f13 QInputDialog: prevent crash in static get*() functions when parent gets deleted
As explained in

   https://blogs.kde.org/2009/03/26/how-crash-almost-every-qtkde-application-and-how-fix-it-0

creating dialogs on the stack is a bad idea if the
application or the dialog's parent window can be closed
by means other than user interaction (such as a timer or
an IPC call). Since we cannot know whether Qt is used to
build such an application, we must assume it is, create
the dialog on the heap, and monitor its lifetime with a
QPointer.

Instead of using manual resource management, add a
minimal implementation of QAutoPointer, and use that in
all static get*() functions.

Task-number: QTBUG-54693
Change-Id: I6157dca18608e02be1ea2c2defbc31641defc9d1
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2017-02-06 14:41:46 +00:00
Marc Mutz bbd091ac58 QGtk3Menu: fix compilation with Clang 3.8
Clang complained about a missing override:

  qgtk3menu.h:58:14: error: 'tag' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]

Change-Id: I681cdeb93d35848ae39c1af289973b436e8ea60e
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2017-02-06 10:12:36 +00:00
Marc Mutz 47a275c0ba Un-export QCollator{SortKey,}Private
This is private API, and used nowhere else except in qcollator*,
so don't export these classes.

Change-Id: I217fde97c60ab0a3e19774ed5a6eed8b156fff1d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-06 09:42:35 +00:00
Aleksey Lysenko f53ab9d736 Reset QFileDevicePrivate::cachedSize on file close
When a QFile object is reused, the atEnd() method may return incorrect
values. The reason for this is that QFileDevicePrivate::cachedSize is
not cleared. Setting cachedSize = 0 in the close() method fixes this issue.

Task-number: QTBUG-57698
Change-Id: I828a2cf844e98d581098f2c781fa47d2cd3275ce
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-02-06 07:36:24 +00:00
Marc Mutz 5923fb966d QDateTimeParser: de-duplicate vtable
QDateTimeEdit (QtWidgets) inherits its Private class from
QDateTimeParser.

By making the destructor (usually the first non-inline, non-pure,
virtual function, and therefore the trigger for most compilers to
emit the vtable and type_info structures for the class in that TU)
out-of-line, vtables and, more importantly, type_info structures for
the class are pinned to a single TU. This prevents false negative
dynamic_cast and catch evaluation.

Since the class is already exported, users of these classes are
unaffected by the change, and since it's private API, we don't need
to avoid adding code to the out-of-line destructor until Qt 6.

Task-number: QTBUG-45582
Change-Id: Id57289a7eff13564dddeca0af1c45a6180c36c48
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-05 18:29:47 +00:00
Samuel Gaist e08f764fa7 Doc: update QtConcurrent snippets to use QRegularExpression
Update the QtConcurrent code snippets to use the new QRegularExpression
class in place of the deprecated QRegExp.

Change-Id: I1366f902fc46bbeccc4013dd8adcf5fbfda13aed
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2017-02-04 23:47:26 +00:00
Alexander Volkov 0e168f2c4e Use nullptr in qDBusRegisterMetaType
... to make user code buildable with gcc [-Werror=zero-as-null-pointer-constant].

Change-Id: Ifef52e406c1f7d5a260612ec27922d1805aea6e2
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2017-02-03 20:24:45 +00:00
Kai Koehne f3b3e79feb Document harfbuzz-ng upstream version
Document version updated in commit
f4ac14944d as 1.4.1.

Change-Id: Ia890158d2e9b5d5dccea9a56342d0261dd0210cb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2017-02-03 18:03:36 +00:00
Allan Sandfeld Jensen 21d3771922 Implement generic text blend routines
Implements a generic version of alphamapblit and alphargbblit so we can have
gamma-corrected blending of text outside of only RGB32 formats.

Change-Id: Ide960276357546558dd713aab66d2af0f2a09a2a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-02-03 16:24:24 +00:00
Thierry Bastian b8dbde10a0 Fix data corruption when reading byte arrays from QSettings
On macOS, the code that read the plist is using
QByteArray::fromRawCFData. When we return the data directly
we need to detach the QByteArray so that it does not point
CFData's data that will get deallocated just after the call.

Task-number: QTBUG-58531
Change-Id: If829a304b986c99c8fc2aeeb992f2d539a4eef3a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-02-03 15:37:58 +00:00
Andy Shaw c7762f1178 Windows: Restrict synthesizing of bold to < 750 weight
When a black font is used, such as Arial Black, it would cause
the font to appear to be rendered twice, particularly at large
point sizes. This is down to the synthesizing of the bold
aspect, however since the font is actually weighted as black
this is not required.

Change-Id: Ie32e0da8bc67c94123631253854312ed5c25ad9f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-02-03 11:07:42 +00:00