Commit Graph

23372 Commits (6dc7e468dfd052dc4cf6187843bcb1a5b82ec6ff)

Author SHA1 Message Date
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
Oleg Yadrov ff34633bd0 QTabBar: fix vertical tabs appearance
Fail to take into account vertical tabs led to that vertical tabs were
displayed wrong in some cases (for example, QMovableTabWidget was
one pixel shorter than it should be).

Task-number: QTBUG-58266
Change-Id: I90411eeaa6055538634b62b5d5bd5fa5013b0015
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
2017-02-02 17:33:09 +00:00
Allan Sandfeld Jensen 56e9221b36 Implement clip part of qt_alphamapblit_quint16
Adds handling of clipping in qt_alphamapblit_quint16, this
is also preparing for a generic implementation of alphamapblit.

Change-Id: I706f08179abefa74f8de138369a0dc8ce19510fc
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-02-02 16:08:59 +00:00
Oswald Buddenhagen a2b4705ac6 work around mysql_config returning denormalized include paths
"/usr/include/mysql/.." would slip by the removal of default include
directories. so clean up the returned paths first.

Task-number: QTBUG-58532
Change-Id: I445bb15619f6401494e8fffd149ea41a50ef188e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-02 16:08:58 +00:00
Konstantin Ritt f4ac14944d Update bundled HarfBuzz-NG copy to 1.4.1
Most important changes since 1.0:

- New API.
- Update to Unicode 9.0.0; add 6 more scripts.
- Improved list of language tag mappings.
- OpenType 1.8 Font Variations support.
- Blacklist GDEF table of certain fonts.
- Implement parsing of OpenType MATH table.
- Implement CBDT/CBLC color font glyph extents.
- Fix mark zeroing types of most shapers.
- Allow GPOS cursive connection on marks, and fix the interaction with
  mark attachment.
- Universal Shaping Engine fixes; update to latest draft from Microsoft.
- Implement "shaping" of various Unicode space characters, even
  if the font does not support them.
- Allow MultipleSubst to delete a glyph (matching Windows engine).
- CoreText backend fixes and optimizations.
- Optimizations and other improvements.

[ChangeLog] Bundled HarfBuzz-NG copy updated to 1.4.1

Change-Id: Ie398fad8f6d3b98e3236f62a97caedc649511470
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-02-02 15:10:34 +00:00
Konstantin Ritt 268b3ec2d1 Update HB-to-Qt bridging code to deal with latest HB
- add support for hb_font_get_{nominal,variation}_glyph() callback
  introduced in 1.2.3
- add support for hb_get_font_h_extents callback
  introduced in 1.1.3
- do not register dummy callbacks for which HB has a bit faster
  implementation (since 1.1.2)
- mark funcs object immutable for the sake of safety

Change-Id: I05281b01d012aed32030ec7cff41a456b5540179
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-02-02 15:10:31 +00:00
Konstantin Ritt 847fe03d91 Make PDF handling in CoreText shaper consistent with OT
The CoreText backend will remove the PDF token from the end of
the string (instead of producing a zero-width glyph for it),
thus the output will be different from the OpenType backend
and the client will get confused. To fix this, we replace
the PDF token with a visible grapheme starter and handle it after.

Task-number: QTBUG-38113
Change-Id: I1bf6927aa2fa214d33f98afec8eb57bcab639379
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2017-02-02 15:10:29 +00:00
Oliver Wolff 71183726ae Win: Fixed identification of bearerType with more friendly interface name
The interface name is used inside the bearer plugin to obtain
additional information about the interface. Calling CreateFile with the
more friendly name fails (file not found) so we use the Luid and gather
information from its type.

Task-number: QTBUG-51543
Change-Id: I09b7f124657a0bbccf36da6f43b36a3c50b5fde0
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-02 11:19:11 +00:00
Nico Vertriest 538ef73664 Doc: corrected minor link issues
qcore_foundation.mm:
- Can't link to 'fromCGPoint()'
- Undocumented parameter 'point' in QPointF::fromCGPoint()
- Can't link to 'fromCGRect()'
- Undocumented parameter 'rect' in QRectF::fromCGRect()
- Can't link to 'fromCGSize()'
- Undocumented parameter 'size' in QSizeF::fromCGSize()

Change-Id: Ie48f04c7b990634f8c5a836100b1be7854848bb4
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2017-02-02 09:55:03 +00:00
Ben Boeckel 1b59966021 Qt5CoreMacros: append the --compiler-flavor=msvc flag
Previously, the flags were replaced rather than appended to, losing -I
flags and causing `#include` directives to fail.

Change-Id: I74609e891ea327a8136c8075ab13176fc85ab111
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-01 23:11:42 +00:00
Oswald Buddenhagen dcd5cb9736 Merge remote-tracking branch 'gerrit/dev' into HEAD 2017-02-01 21:00:55 +01:00
Oswald Buddenhagen 5eb2c8c79e never use pkg-config to find opengl on darwin
with homebrew, etc., this would find the opengl packaged with x11, which
is not suitable for use with cocoa.

Change-Id: I8390e1ac32c58f6644d6ef3978bdc6da9d111e79
Reviewed-by: René J.V. Bertin <rjvbertin@gmail.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-02-01 15:57:02 +00:00
Mitch Curtis f299b565b5 Implement support for Scale directory key according to Icon Theme spec
Qt already supports high DPI icons using the “@nx” approach, where the
device pixel ratio that the image was designed for is in the file
name. However, our implementation of the freedekstop.org Icon Theme
specification did not support the Scale directory key:

https://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#directory_layout

This meant that users creating icons via QIcon::fromTheme() did not
get high DPI support. This patch fixes that.

[ChangeLog][QtGui][QIcon] Implemented support for Scale directory key
according to Icon Theme Spec. Icons created via QIcon::fromTheme()
now have high DPI support by specifying the Scale in the appropriate
entry of the relevant index.theme file.

Task-number: QTBUG-49820
Change-Id: If442fbc551034166d88defe607109de1c6ca1d28
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2017-02-01 13:58:01 +00:00
Alex Trotsenko 47cded3e6f QSocks5SocketEngine: stop polling on UDP
There is no need in additional polling, because readyRead() signal of
the inner socket is directly connected to the slot which extracts the
datagrams. Moreover, calling _q_udpSocketReadNotification() from the
engine code might cause the spurious notifications both in the outer
and inner sockets.

Change-Id: Ibe75f5990e27b7460d628fa4a1ca4e64657e302c
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2017-02-01 13:44:11 +00:00
Kai Koehne ff68e5d667 Document new PCRE2 library
[ChangeLog][Third-Party Code] The PCRE sources that are bundled
with Qt got updated to version 10.22.

Change-Id: Ib334fb4e9766035fd120ef4ab3a249322adba8eb
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2017-02-01 10:43:52 +00:00
Thiago Macieira 3ac806b76d De-inline qfloat16 streaming operators in QDataStream
Which allows us to remove the #include. The qfloat16 operator overloads
in the global namespace are giving some trouble on some compilers, for
reasons unknown (could be compiler bug, could be real). So don't #include
the header anywhere else: let the user choose it.

Task-number: QTBUG-58555
Change-Id: I4c9f691516694b90b08ffffd149ef7dff27d0f6a
Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
2017-02-01 10:32:35 +00:00
Sergio Martins dd2a871eae Clear dock indicator when not over a floating dock group window
The rubberband is shown depending if there's a current hovered dock widget,
but there were a few places that were not calling updateGapIndicator().

Additionally, the rubberband will also disappear if the currentHoveredFloat
is destroyed externally (would leave a ghost rubber band behind).

Task-number: QTBUG-58049
Change-Id: Iafdf234aa04b0ee280e51f8fa2fd212c86610cd1
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2017-02-01 10:15:07 +00:00
Liang Qi 3cd1c3cb70 Fix libs build with msvc on Chinese locale on Windows
Chinese locale means Code Page 936 here. It's also related with
removing C4819 warnings.

And it's also following Conventions in Qt source code: All code
is ascii only (7-bit characters only, run man ascii if unsure)

See also http://wiki.qt.io/Coding_Conventions

Task-number: QTBUG-56155
Task-number: QTBUG-58161
Change-Id: I37fa7a0e6a82a16eaf80e1cc99be801099ab87de
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: jian liang <jianliang79@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-02-01 08:35:42 +00:00
Florian Bruhin 681c15891e Fix \since for QDrag::cancel()
This was added in 5.7.0 alpha, not 5.6.

Change-Id: Id8c68eca806274c77e7fa6904f21224fb468c8e4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-02-01 07:33:29 +00:00
Thiago Macieira 3d0f62de8b qnumeric_p.h: Simplify code to match currently-supported platforms
MSVC < 1800 (older than 2013) is no longer supported, so we can simplify
the code. And the implementation for C never worked -- "if it's not C++,
let's use a namespace!"

Change-Id: Iaeecaffe26af4535b416fffd148c2c6788c43881
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2017-01-31 23:13:47 +00:00
Oleg Yadrov bc232b2bef QCommonStyle: fix a few typos and formatting issues
Change-Id: I7855795bf010865d5c2b8dd51538c446cdff1974
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-01-31 22:24:36 +00:00
Thiago Macieira 71b54cc244 QtCore & winmain: Remove dead code
The last use of qWinMain was removed in commit
390598cb43, "Winmain:  Remove Windows CE."
It used to be used on non-WinCE, but that was dropped in commit
9b121e5579.

Change-Id: Idc347fbb462f4122b044fffd1490a210358a61b1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-01-31 19:09:31 +00:00
Thiago Macieira 14f0964344 QVariant: don't do fuzzy comparisons with NaN and infinities
There was a test that tested this, but was wrong.

[ChangeLog][QtCore][QVariant] Fixed a bug that caused wrong results for
comparisons of QVariants containing either NaN or infinite numbers.

Task-number: QTBUG-56073
Change-Id: I33dc971f005a4848bb8ffffd1475d29d00dd1b7f
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-31 19:09:28 +00:00
Gabriel de Dietrich f6c17c37ba QCursor: Remove old pixmaps and use native cursor on macOS
The DragCopyCursor part is a regression from ed55c4a14c.

Change-Id: Id98a40c372e48f09d8c1824a4c2c1df2a3bdd052
Task-number: QTBUG-58378
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
2017-01-31 18:34:12 +00:00
André Klitzing 9369eca108 Update bundled libpng to version 1.6.28
Merged in the upstream version.
The remaining diff to clean 1.6.28 is archived in the qtpatches.diff file.

This fixes CVE-2016-10087 but Qt was never vulnerable to that issue!

[ChangeLog][Third-Party Code] libpng was updated to version 1.6.28.

Change-Id: I46712103fb160f31702eb7496fdd5c492a59ba5b
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2017-01-31 18:28:54 +00:00
Eirik Aavitsland 33ebe60098 PNG image handler: Avoid "invalid distance too far back" error
For certain slightly miscoded png images, newer versions of libpng
will trigger the mentioned zlib error and fail to read the image. This
miscoding has until now been safely ignored by all png
implementations, so such images exist in the wild, and users expect
them to work. Since the cost of the workaround is only a missed
opportunity of a tiny saving in memory usage during decoding, enable
it.

Task-number: QTBUG-58171
Change-Id: I820a9faef6d5b7af79c04404ebdceb48a096f29a
Reviewed-by: André Klitzing <aklitzing@gmail.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-01-31 14:34:39 +00:00
Glen Mabey 3ab7016632 New qfloat16 class
This constitutes a fairly complete submission of an entirely new
floating point type which conforms to IEEE 754 as a 16-bit storage
class.  Conversion between qfloat16 and float is currently performed
through a sequence of lookup tables.  Global-level functions
qRound(), qRound64(), qFuzzyCompare(), qFuzzyIsNull(), and
qIsNull() each with a qfloat16 parameter have been included
for completeness.

[ChangeLog][QtCore] Added new qfloat16 class.

Change-Id: Ia52eb27846965c14f8140c00faf5ba33c9443976
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-31 14:21:42 +00:00
Eskil Abrahamsen Blomfeldt 098d87c63f Fix clipping error on some RTL text
There was a false assumption that the bidi level of text is only
used for visualizing the text, not for calculating its bounding
box. But the bidi level is required for shaping (indeed many
OpenType rules check for reading direction) and the glyphs used
to represent a given text may be different based on its
directionality. The effect would be that the bounding rect we
calculated for text would sometimes be too small for RTL text, and
we would end up clipping pixels.

[ChangeLog][QtGui][Text] Fixed clipping errors and too small
bounding rects for some right-to-left text.

Task-number: QTBUG-48005
Change-Id: Idd12ae1b0033d518034b582204ba47ae41795293
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-31 13:45:08 +00:00
Laszlo Agocs 39fb26376c Remove unused logging category from QOpenGLFunctions
Change-Id: I54b533036f24ee9bd63004d1c5513f847e12065d
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2017-01-31 12:41:05 +00:00
Topi Reinio 07218826e5 Doc: Normalize \since usage
Although it's permitted to specify the project name together with
a version number for \since, it's unnecessary for Qt classes and
functions.

This change also normalizes the version formatting: '<major>.<minor>'

Change-Id: Ie5a43662077d13c31e241bcde8a7a2849d27d330
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2017-01-31 08:59:50 +00:00
Friedemann Kleint cc786350ae qsslsocket_openssl_symbols.cpp: Fix signedness warning in DEFINEFUNC2
Fix warning:
qsslsocket_openssl_symbols.cpp157:78:warning: implicit conversion changes signedness: 'int' to 'unsigned long'
note: expanded from macro 'DEFINEFUNC2'

Amends change 2cf63c71eb

Change-Id: I694c5199d272d05f0070288af2e00b6fce42fc91
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
(cherry picked from commit 38a446b69e)
2017-01-31 08:29:12 +00:00
Giuseppe D'Angelo 1b488d8b49 Streamline #include <type_traits>
It's included by qglobal.h, so we get it for free in other headers.

Change-Id: I90072156e313271a5354a39cbf78a83a6885c431
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-31 08:24:03 +00:00
Marc Mutz d258d6962a QLocale(Win): fix pessimizing use of QStringBuilder
Instead of

   result += QString(string builder expression);

forcing a QString creation incl. memory allocation, do

   result += string builder expression;

using the overloaded QString += QStringBuilder operator.

Change-Id: I23023c76620fa6bb7bf9f2786c22f6a2ec0d87c2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2017-01-31 08:06:37 +00:00
Marc Mutz 714100f631 QSizePolicy: implement transpose() via transposed()
Having two implementations was nice for testing, but now remove
one of them.

Change-Id: I70dc7d16496427dd36ba2464c9f650ec865202b1
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2017-01-31 00:39:06 +00:00
Marc Mutz f66319faa1 QtWidgets: convert some users of QSizePolicy::transpose() to transposed()
Change-Id: I492c3825ac10145c6ca69029ad1bcda6efc971b7
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2017-01-31 00:38:53 +00:00
Marc Mutz 6a9cd5604e Don't narrow lengths in qHash() implementations
The crc32() functions take a size_t length, but the hash() functions
wrapping them took int lengths.

That makes no sense and actively hurts adding hash functions for STL
types or QStringView, so port the hash() interface to size_t.

Change-Id: Id303d6df4b698560fce656cec8ed693b01daac1c
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-31 00:38:37 +00:00
Allan Sandfeld Jensen 85468f7bcc Manually vectorize ARGB32toARGB32PM for SSE4.1 and NEON
Manually vectorizing is significantly faster because we can optimize
for common cases like long stretches of opaque or transparent pixels.

This is both smaller and faster than the auto-vectorized version, it is
also much faster than the autovectorized version for AVX2 which then can
be removed.

Change-Id: I0fa80ce273a8387cc6cd084879822ad9bade385c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-31 00:14:11 +00:00
Thiago Macieira c20fa2879e Regroup the x86 QT_FUNCTION_TARGET_STRING_xxxx macros
Easier to have an overview of them.

Change-Id: I445bb15619f6401494e8fffd149db6dec4851f6d
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-01-30 18:16:56 +00:00
Thiago Macieira 0159cbb1a2 Move the declaration of SSE3 & newer macros above their use
Change-Id: I445bb15619f6401494e8fffd149db66da3405b48
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-01-30 18:16:50 +00:00
Liang Qi 5a70c5e7f5 Merge "Merge remote-tracking branch 'origin/5.8' into dev" into refs/staging/dev 2017-01-30 17:31:21 +00:00
Liang Qi 246799d8a7 Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	examples/network/network-chat/peermanager.cpp
	src/widgets/util/qsystemtrayicon.cpp
	src/widgets/util/qsystemtrayicon_qpa.cpp
	src/widgets/util/qsystemtrayicon_win.cpp
	src/widgets/util/qsystemtrayicon_x11.cpp

Change-Id: I1c026df83818c0ccaf956980370e7522960627db
2017-01-30 12:46:20 +01:00
Paul Olav Tvete bec3658e19 Fix build with -no-feature-animation
Change-Id: Ieecb9cdbf4373e295148ae5b3d59c43aaf46175e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2017-01-30 11:39:08 +00:00
Timur Pocheptsov 84fa396d84 SecureTransport - remove (now) redundant standalone function
It was first introduced when we had to work-around old macOS SDK (<= 10.7) with
missing API; so we split the original code into two functions, one for
iOS (any supported version) and macOS > 10.7, another function (with all
ifdefs needed and old, deprecated API usage) for macOS <= 10.7. Now that
support for those versions was dropped and the second function gone, having
the remaining code in some external function looks illogical. It can be moved
into the member-function back.

Change-Id: Ib6355f225b5df3d92a70bd7679545cc89c450228
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2017-01-30 11:28:18 +00:00
Thiago Macieira 77b33e4b85 Re-fix Clang-cl and ICC support on Windows
Instead of using the actual compiler version to determine which C++11
features to enable, let's just use the Mirosoft compiler version that
the actual compiler is claiming compatibility with. That is because the
limiting factor is often the standard library, not the compiler itself.

This will cause some features that do not depend on the library to also
be disabled, but oh well. Better upgrade your Visual Studio version
instead.

Task-number: QTBUG-57696
Change-Id: I3e4e5051937c40319d6efffd14912cd4fdab25fb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2017-01-30 01:29:12 +00:00
Pier Luigi Fiorini 5ad191850b Modes API for QPlatformScreen
Add an API for modes (that is screen size and refresh rate).

This will allow platform plugins to list modes available
for a screen.

[ChangeLog][QtGui][QPA] Add an API for modes.

Change-Id: I91851c51cc60a1544465dfa3b4d96cc667237a0a
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2017-01-28 16:13:38 +00:00
Friedemann Kleint fed6c35461 QAccessibleCache: Replace Q_GLOBAL_STATIC by instance pointer
QAccessibleCache is a QObject which emits signals at destruction time.
This can lead to crashes in situations where the library is unloaded
after QApplication has been deleted, for example in PySide2.
Change it to a pointer instance variable that is cleaned up by a
post routine.

Task-number: PYSIDE-452
Change-Id: If0d673c7dfe33c8d2d7298bc081824f9d6d7efdc
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2017-01-28 11:49:13 +00:00
Marc Mutz 8b9b27bced QSizePolicy: add a transposed() method
In some situations, this allows for nicer code. It's also possible to
make this constexpr in C++11, whereas the mutable transpose() would
require C++14-style constexpr.

The new function should also be faster, since it just swaps the member
variables.

Because of constexpr-function limitations, the way the return value is
constructed needs to depend on the level of the compiler's C++11 support.
This is not the only class that requires uniform init to provide a fully
constexpr interface (QUuid and QBasicAtomic come to mind), so this should
probably be generalized across Qt at some point.

Added tests.

[ChangeLog][QtWidgets][QSizePolicy] Added transposed() method.

Change-Id: Ic1077a0d5a861e7c63bd1daeeb42b97c3a2f71ef
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
2017-01-28 07:46:27 +00:00
Marc Mutz ce3402b5ef QSizePolicy: add some constexpr
Also add a basic test for constexpr expressions involving QSizePolicy.

GCC < 4.8.0 has problems with initializing variant members in constexpr ctors:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54922

Instead of revoking its Q_COMPILER_CONSTEXPR, which is a source-incompatible
change, simply note the fact so we can selectively provide constexpr for
QSizePolicy.

Change-Id: Iba8e5a7cdf847d73e8e2b6bb6211fb3c9846aa0a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2017-01-28 07:46:22 +00:00
Thiago Macieira 72f49ef46a MSVC: Fix use of POPCNT instruction without CPU check
The __popcnt family of intrinsics with MSVC generates directly the
POPCNT instruction and are documented to do so:
  https://msdn.microsoft.com/en-us/library/bb385231.aspx

So we can't use __popcnt unless the target processor supports it.

[ChangeLog][Windows] Fixed a bug that caused applications to crash with
"Illegal instruction" faults when compiled with Visual Studio and run on
some older processors.

Task-number: QTBUG-58446
Change-Id: I445bb15619f6401494e8fffd149d83bd2a7e3376
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2017-01-27 23:04:52 +00:00
Friedemann Kleint 1aea3c1229 XCB: Use member initialization
Shorten or remove constructors accordingly.

Change-Id: I9c8bcf512c922c3c72be8a965d9557589bc9874f
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2017-01-27 22:32:07 +00:00
Jake Petroules 944110089d Build Qt libraries with -fapplication-extension
This ensures at compile-time that Qt libraries do not use any APIs that
are not safe for use in application extensions, and fixes warning
messages that appear when linking to Qt libraries that are not built
with this flag, when used in an application extension.

This is especially important on watchOS where *all* "applications" are
actually application extensions, and on other Apple platforms if
application extensions are developed using Qt.

Task-number: QTBUG-40101
Change-Id: I022046f2584e0222253d33052b0abc221d7c93d6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2017-01-27 22:10:01 +00:00
Friedemann Kleint af7cefd272 Widgets/qwidgetbackingstore.cpp: Fix developer build with MinGW
In  showYellowThing_win(), replace the switch by an array of COLORREF
and simplify the code accordingly, fixing:

kernel\qwidgetbackingstore.cpp: In function 'void showYellowThing_win(QWidget*, const QRegion&, int)':
kernel\qwidgetbackingstore.cpp:188:39: error: 'brush' may be used uninitialized in this function [-Werror=maybe-uninitialized]
         FillRect(hdc, &winRect, brush);
                                       ^

Change-Id: Id60be0e01e1edb2fa939d64abaf2e58357bcc14d
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2017-01-27 17:16:14 +00:00