Commit Graph

28516 Commits

Author SHA1 Message Date
Liang Qi
3cb7302480 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/widgets/itemviews/qabstractitemview.cpp
	src/widgets/itemviews/qabstractitemview_p.h

Change-Id: I54589b1365103cb1749186af92aab03a49c94b64
2016-08-01 10:03:21 +02:00
Morten Johan Sørvig
2ff1557937 Cocoa: Don’t beep on return keypress
Limit event propagation to AA_PluginApplication
Applications.

Change-Id: Id56ceea8d2aacae3f2be17f5894791de4eca528e
Task-number: QTBUG-54211
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-07-29 12:28:35 +00:00
Denis Kormalev
f24cc53cc2 Fix for race condition in signal activation
There was a race condition between QObject::disconnect() and
QMetaObject::activate() which can occur if there are multiple
BlockingQueued connections to one signal from different threads and
they connect/disconnect their connections often.

What can happen in this case is:
T1 is in activate() method and T2 is in disconnect() method

T1                          T2
locks sender mutex
selects next connection
unlocks sender mutex
                            locks sender mutex
                            sets isSlotObject to false
creates QMetaCallEvent      derefs connection
posts event

Two things can happen here:
1. Connection can still be valid, but it will have isSlotObject==false
and callFunction will be used instead of slotObj
2. Connection can already be invalid

To fix it mutex unlock should be moved after QMetaCallEvent creation.

Also there is another case, when we don't disconnect but delete the
receiver object. In this case it can already be invalid during
postEvent, so we need to move mutex unlock after postEvent.

Change-Id: I8103798324140ee11de5b4e10906562ba878ff8b
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-07-29 06:09:22 +00:00
Marc Mutz
10d4969966 examples: use QSignalBlocker
Examples should show idiomatic Qt, and QSignalBlocker is idiomatic
since it's inception in Qt 5.3. Just updating the examples was
forgotten.

This commit makes good for that.

Fix coding-style issues as a drive-by.

Change-Id: If138e87ea2ab7a444599734113f7cc6df11fb42d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-07-28 23:43:32 +00:00
David Faure
4790ccfa7a Fix gcc -Wsuggest-override warning on Q_OBJECT
Same reasoning as commit 3092bd5 (which was for Clang), but for gcc >= 5.1.

Change-Id: I123b17670c1a64876b01fd39fb11648fa4e8b1fd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-07-28 23:43:16 +00:00
Alexander Volkov
695d85363e Item delegates: show localized detailed tooltips and "What's this?" texts
Extract the common part from QItemDelegate and QStyledItemDelegate
which uses QLocale to convert a value for Qt::DisplayRole to a string.
Use this code to get the text for tooltips and "What's this?".

[ChangeLog][QtWidgets][QAbstractItemDelegate] Show localized detailed
tooltips and "What's this?" texts.

Task-number: QTBUG-16469
Change-Id: I8618763d45b8cfddafc2f263d658ba256be60a15
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2016-07-28 23:42:56 +00:00
Błażej Szczygieł
444ba31a0a xcb: Don't activate bypassed windows on mouse press
Windows with "Qt::BypassWindowManagerHint" flag can't be activated by
mouse. They can be activated only from code calling "activateWindow()"
or "requestActivate()" methods.

The patch applies also for "Qt::ToolTip" and "Qt::Popup" windows which
have implicit "Qt::BypassWindowManagerHint" flag.

The patch fixes some major issues:
- don't activate tooltips on mouse press - this causes that Qt "thinks"
that original windows loses its focus causing e.g. that text cursor
stops blinking,
- don't activate X11 tray icon - this causes that the active window
looses its focus by clicking tray icon.

The patch restores the Qt4 behavior.

Task-number: QTBUG-53993
Change-Id: I80b226f2f5ea0ebbfe8922c90d9da9f4132e8cce
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-07-28 18:16:01 +00:00
David Faure
f5af4428c3 QVector: fix crash on reserve(0)
It crashed when d was equal to Data::unsharableEmpty().

Task-number: QTBUG-51758
Change-Id: If9f2a7d11892507135f4dc0aeef909f59b7478fc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2016-07-28 13:50:38 +00:00
David Faure
c9354429dd QSocketNotifier: improve warning to show thread names and pointers.
Much like the QObject::setParent() warning, which helps a bit when debugging.

Change-Id: I2abf277a12aa1ce04bd8b5759f46f8bfdcb25383
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-07-28 12:03:47 +00:00
Oswald Buddenhagen
fdd15b7f99 Bump version
Change-Id: I147acca09694b89b16ff19da36626f6559f8a9ae
2016-07-28 13:50:04 +02:00
Friedemann Kleint
f2ef587906 QWindow::fromWinId(): Return 0 when foreign window cannot be wrapped
Change window creation code in QWindow to not assert should
platform window creation fail for foreign windows.
Prototypically add check to the Windows QPA plugin.

[ChangeLog][Windows][Important Behavioral Changes] QWindow::fromWinId()
may return 0 when passing invalid window handles.

Task-number: QTBUG-41186
Change-Id: I936112607ec6e0838d36ac2a72aa88b869df5c23
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-07-28 08:13:18 +00:00
Edward Welbourne
80c23042e4 Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7 2016-07-28 08:09:22 +00:00
David Edmundson
ebb651aa73 Handle device pixel ratio in QTreeWidget animations
As we are rendering into a new paint device we need to copy the device
pixel ratio from the widget.

Task-number: QTBUG-50207
Change-Id: Ica99ae84fe04311edfef817ab719863d627faf64
(cherry picked from commit 49491dd678)
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-07-28 07:15:27 +00:00
Friedemann Kleint
d12a284bbb Windows QPA: Pass ExcludeUserInputEvents to QWSI::flushWindowSystemEvents()
User Input events flushed out by those calls have been observed
to cause crashes.

Task-number: QTBUG-39842
Change-Id: I950b80f2863def5b28e9fe46ef2b73aa6db2592f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-07-27 17:21:03 +00:00
Friedemann Kleint
29c6e39086 Windows style: Scale native metrics per monitor
The native sizes returned by the metrics and theme functions refer
to the primary monitor. They need adaption when showing on a secondary
monitor with differing logical DPI.
Introduce a helper function
QWindowsStylePrivate::nativeMetricScaleFactor() to calculate the
total factor.

Task-number: QTBUG-49374
Change-Id: I34c843ff34108424e1ef0aafcf9f563d17ebbc89
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-07-27 17:20:51 +00:00
Marc Mutz
0e40781c16 QAbstractItemViewPrivate: de-inline hasEditor()
This is in preparation of fixing a design problem with indexEditorHash.

Change-Id: I6045ad3f15cd3087a894b96e9e068e42af7a1dea
Reviewed-by: hjk <hjk@qt.io>
2016-07-27 16:31:25 +00:00
Eirik Aavitsland
7bf002c3b3 Backwards compatibility fix: No default colormap for Mono QImages
This is a partial revert of a4e2f2e687.

That fix tried to avoid the risk of a crash in pixel() by ensuring
Mono QImages created with external data also got a default color
table. However, that broke usable behavior in existing code that was
painting in Mono QImages using color0/color1.

This commit reverts to the old behavior, and instead expands on the
checking in pixel() so that lacking color table is handled gracefully
for all indexed formats.

Task-number: QTBUG-54827
Change-Id: I9164198bed9d20c4b12cdba40a31c141bef3128d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-07-27 11:46:11 +00:00
Friedemann Kleint
69b43e74d7 Harfbuzz: Fix warnings of MSVC 64 bit
qtbase\src\3rdparty\harfbuzz\src\harfbuzz-shaper.cpp(97): error C2220: warning treated as error - no 'object' file generated
qtbase\src\3rdparty\harfbuzz\src\harfbuzz-shaper.cpp(97): warning C4800: 'int': forcing value to bool 'true' or 'false' (performance warning)
qtbase\src\3rdparty\harfbuzz\src\harfbuzz-shaper.cpp(284): warning C4800: 'HB_Bool': forcing value to bool 'true' or 'false' (performance warning)
qtbase\src\3rdparty\harfbuzz\src\harfbuzz-arabic.c(924): warning C4244: 'initializing': conversion from '__int64' to 'int', possible loss of data
qtbase\src\3rdparty\harfbuzz\src\harfbuzz-arabic.c(984): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data
qtbase\src\3rdparty\harfbuzz\src\harfbuzz-arabic.c(995): warning C4244: '=': conversion from '__int64' to 'int', possible loss of data

Required to build QtCore after change a372cf5a80.

Change-Id: Ieb65c19e518984dde91bc8acab35203f8c271da3
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-07-27 10:00:24 +00:00
Eirik Aavitsland
5b64b64717 Fontengine: Avoid invalid alpha maps when antialiasing is off
When font antialising is disabled, the created alpha maps will be Mono
format. Make sure that the created QImage is valid by ensuring that
it has a color table of the right size.

Issue was earlier handled by a4e2f2e687,
but that will be partially reverted because of compatibility break.

Task-number: QTBUG-50745
Change-Id: I7c521288469ae94805a3326644771270d97ab979
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-07-27 09:01:15 +00:00
Morten Johan Sørvig
a2157df28b HighDPI: Disable scrolling for non-integer deltas
Disable the scrolling optimization in QBackingStore
and fall back to repainting for non-integer deltas.
The existing rendered pixels are not re-usable in
this case.

The test is made on the delta, and not on the scale
factor. This means that user code can cooperate and
generate (logical delta, scale factor) combinations
that result in integer pixel deltas (which _can_ be
scrolled).

Change-Id: I36eb5d9e00449428bc9095edd8732782b996db16
Task-number: QTBUG-52452
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-07-27 08:54:35 +00:00
Laszlo Agocs
97318a3d5f embedded: Make signal handlers optional
[ChangeLog][Platform Specific Changes] It is now possible to opt out from
installing signal handlers when running with eglfs and linuxfb by setting
the QT_QPA_NO_SIGNAL_HANDLER environment variable to a non-zero value.

Task-number: QTBUG-54733
Change-Id: Ib07d4bbf714c752631c49b76ad0a16677c1ba5bd
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2016-07-27 05:17:49 +00:00
Giuseppe D'Angelo
b694fe987c QOpenGLDebugLogger: strengthen the code path in case of GL context destruction
Trying to move closer to GL semantics: it is allowed to destroy
a GL context at any time and that must free all of its resources.

Change-Id: I3daa81d721cf26baf86a1a6435b77e3c28feb1a2
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2016-07-27 05:13:02 +00:00
Sérgio Martins
65bad0d0f4 Update documentation regarding QPixmap HICON conversions
The QPixmap methods are gone in Qt5. QtWinExtras should be used instead.

Task-Id: QTBUG-54838
Change-Id: Ia52ab9786f57d92caf4c44142a3131dbf973a193
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-07-27 05:12:54 +00:00
Giuseppe D'Angelo
107ac187bc QOpenGLDebugLogger: do not crash if deleted with the wrong GL context current
Task-number: QTBUG-54799
Change-Id: Ifee3183e7944fbe266fe644628d33d0667be99a8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-07-26 14:58:54 +00:00
Friedemann Kleint
2ceccc6f7f Add manual test embeddedintoforeignwindow
Add a test for embedding Qt windows into foreign windows.
Complements the existing "foreignwindows" test (which embeds
foreign windows into Qt).

The test has a simple UI based on QRasterWindow allowing
for checking events and geometries.

Task-number: QTBUG-41186
Change-Id: Ie62a3e250ca666e2fa5c2e3ef37ef0654829397c
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-07-26 14:53:09 +00:00
Mitch Curtis
d9831a03ca Fix grammar error in QFlags documentation
Change-Id: I1c5d2be402f7e194eaa2e6f646aa5edad1bfd9d9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-07-26 11:50:47 +00:00
Friedemann Kleint
d57bfa21ce QDialog::adjustPosition(): Check screen number
The screen number has been observed to be -1 in setups
with multiple virtual desktops.
Amends change eb50193136.

Task-number: QTBUG-52735
Change-Id: If01acf74fdd701a9211df732c0defdfd522ba72d
Reviewed-by: hjk <hjk@qt.io>
2016-07-26 11:48:51 +00:00
Giuseppe D'Angelo
7095db3633 Update .gitignore
Change-Id: Ib091f294c8557a44a2c39594fcf6f2d39de1d7e2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-26 11:48:21 +00:00
Edward Welbourne
6c5de416c9 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/corelib/io/qtemporarydir.cpp
One side encapsulated a repeated piece of #if-ery in a local define;
the other added to the #if-ery.  Made its addition to the other's.

	src/corelib/kernel/qeventdispatcher_unix_p.h
One side moved some members into a struct; this collided with a #undef
check that neither side now has.  Discarded the #undef part.

	src/gui/opengl/qopengltexturehelper_p.h
5.7 deleted a bunch of methods; not clear why merge got confused.

	src/tools/moc/moc.cpp
One added a name to the copyright header; another changed its URL.

Change-Id: I9e9032b819f030d67f1915445acf2793e98713fa
2016-07-26 10:43:29 +02:00
BogDan Vatra
79af4e1e31 Android: introduce setContext
setContext is needed by modules that don't need an Activity object to run (e.g. QtMultimeida, QtSensors, etc.)

Task-number: QTBUG-54506
Change-Id: Ief9daff52ddefdb27092040c89dfce9e466eac5c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-07-26 07:55:27 +00:00
Friedemann Kleint
8ea6e8d525 QWindowsTheme::themeHint(): Handle special value of SPI_GETWHEELSCROLLLINES
When the mouse wheel step is set to "Scroll one screen",  querying
SPI_GETWHEELSCROLLLINES returns the special value unsigned(-1). Return the
default instead of converting it to int in that case since Qt does not
implement it.

Task-number: QTBUG-52384
Change-Id: I793e5c09103fe0c7c4a378aba97e9f63ae1c2f35
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2016-07-26 05:57:14 +00:00
Thiago Macieira
1fcea11756 Fix enabling of precompiled headers on macOS
On macOS, the test script is passed the full path to the compiler, like
/usr/local/bin/icpc. That doesn't match "icpc".

Change-Id: I149e0540c00745fe8119fffd1463c87b8f6a89b2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-25 20:23:13 +00:00
Timur Pocheptsov
ad0d2f463a Cocoa integration - fix a crash in QMacPasteboard
QMacPasteboard's dtor skips LazyRequest promises and this leaves pasteboard
manager in broken state, since we release the pasteboard itself
of the next step in destructor. As a result, not only Qt's app doing D & D
(and thus via QCocoaDrag creating a stack-allocated QMacPasteboard) can die
suddenly when somebody inspects a pasteboard, this 'somebody' ... can also
die amazingly. So now we DO resolve promises using PasteboardResolvePromises
(but we also preserve the original intent of not providing or providing empty
data for lazy requests).

Task-number: QTBUG-54663
Task-number: QTBUG-54832
Change-Id: I3ce90bd0a012dd3cbb30c93b2b17dce9473acb28
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-07-25 17:05:36 +00:00
Friedemann Kleint
65cdffeaea QPlatformWindow::initialGeometry(): Do not touch child window positions
Child window positions should not be mapped back and forth by High DPI
scaling as this can cause them to change screens or be moved to invalid
locations.

Introduce a separate branch for child windows applying only size
constraints.

Task-number: QTBUG-54420
Change-Id: I4f86666952a49ed6fa03234a04031bc406281c45
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-07-25 16:20:16 +00:00
Thiago Macieira
726c8ca0de Work around ICC bug about shadowing declarations that aren't shadowing
Known ICC bug, still present in version 17 beta.

qdatetime.h(126): error #3280: declaration hides member "QDate::jd" (declared at line 136)

Obviously a parameter to static function or to a function in a nested
class can't shadow an NSDM.

Intel issue IDs: 0000698329 / DPD200245740
Change-Id: I149e0540c00745fe8119fffd1463c679a3a9c8c3
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-07-24 05:27:53 +00:00
Friedemann Kleint
5123dba564 QImage::setAlphaChannel(): Check result of image conversion
alphaChannel.convertToFormat() may fail due to OOM. Check the obtained
image.

Task-number: QTBUG-54873
Change-Id: I778b7de7de611105fe23c1c24cbd69bd8f7c72d9
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2016-07-23 07:09:19 +00:00
Thiago Macieira
091e61b352 Fix namespaced build using harfbuzz-ng
harfbuzz-ng doesn't link to Qt libraries, but uses the Qt headers for
some types. With CONFIG -= qt, we don't get QT_NAMESPACE set, which
leads to linker errors later. Instead of setting QT_NAMESPACE, ask
qversiontagging.h not to tag the headers.

Change-Id: Ie585843cfb684bc3b6e3fffd145e7e438ae7c6bd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-22 20:23:45 +00:00
Eskil Abrahamsen Blomfeldt
49926bb9ef Fix performance regression when changing fonts
Change e109b8a0f3 introduced a
performance regression when rapidly switching fonts as long as
the number of different fonts is over a relatively small number, since
the cost of fonts can be high compared to the limits set on the cache.

Since the original patch was intended to avoid exceeding the
open file limit when using Freetype on Windows, we add an
additional check on the number of engines in the cache as well
for the added, synchronous cache flush.

The limit is set to 256 to make it unlikely that it is exceeded
during a single paint event, but it can also be configured when
building Qt if a higher limit is needed.

[ChangeLog][QtGui][Text] Fixed performance regression when rapidly
switching between a large set of fonts.

Task-number: QTBUG-54180
Change-Id: I92b9fbe14fca4f11c9c6dfdcdbec6d19a61b86a7
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2016-07-22 12:14:03 +00:00
Oswald Buddenhagen
dd59118b87 move c++11 test into qcompilerdetection.h and make it stricter
it positively makes no sense to have a configure test which will be
never reached due to the configure/qmake bootstrap failing with a
slew of totally unhelpful error messages.

pre-standardization partial c++11 implementations are now rejected,
except for VS2013, which is still sufficient despite not announcing full
compatibility.

Change-Id: I58af10e03960af06b80cedac105cf8433f7a1745
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-07-22 10:21:36 +00:00
Thiago Macieira
b5153d5bfa Windows: Disable unsupported C++11 features with Clang-cl and ICC
Whenever someone installs Clang or the Intel compiler on Windows, it's
very likely that the compiler will be much newer than the MS headers
that came with the installed Visual Studio version. So let's make sure
we disable the C++11 features that the MS headers don't support
properly.

For example, MS's <limits> header supplied with VS 2013 doesn't mark the
max() function as constexpr, resulting compiler errors in uses of that
function in Qt code declared with Q_DECL_CONSTEXPR:

qdeadlinetimer.h(62,13) :  note: non-constexpr function 'max' cannot be used in a constant expression
        : s(std::numeric_limits<qint64>::max()), ns(0), type(type_) {}
            ^

Change-Id: I149e0540c00745fe8119fffd146286ffe480d216
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-07-22 01:01:48 +00:00
Gabriel de Dietrich
77a71c32c9 configure and mkspecs: Don't try to find xcrun with xcrun
Since Xcode 8 (beta 2) that tool is no longer available
through xcrun. We resort to xcodebuild instead.

Change-Id: If9d7b535c1cbac2caae0112b2003283aeff34fb9
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2016-07-21 15:36:33 +00:00
Oswald Buddenhagen
f8ef7e1d26 terminate when command called by system() got SIGINT or SIGQUIT
these are the two signals unhelpfully suppressed by system(2).

Change-Id: I5e5df9f6d136601f0f36a8d645f90a1cab9995ad
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2016-07-21 15:36:20 +00:00
Gabriel de Dietrich
08a908c549 QMacStyle: Fix use of deprecated symbol
Change-Id: I5a6bfc937267817b2c815be0216ea91fe6860ba3
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
2016-07-21 09:45:11 +00:00
Friedemann Kleint
0696566b1e Windows: Fix truncation in QFSFileEnginePrivate::nativeWrite()
The number of bytes to write was converted to a 32bit unsigned value,
causing losses. Change the type to qint64 and adapt the code determining
the block size.

Task-number: QTBUG-54870
Change-Id: I294da5bfe97c7e60f67228399e1244a1aba4c89c
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2016-07-21 08:50:01 +00:00
Thiago Macieira
8e4c8be0b9 Don't compile configure.exe with clang-cl.exe if cl.exe is available
Sometimes clang-cl.exe is on PATH and would get picked up by the
build. That is often by mistake, but it will inreasingly happen
as clang-cl becomes more popular. Unfortunately, configure.bat is
too early to detect which MSVC version it's set to compile
against, so the -fms-compatibility-version option will often be
wrong. One such case is when trying to build for MSVC
2013. Microsoft headers for VS2013 are unsuitable for our use in
Qt with clang-cl.

Instead, use cl.exe. It's a much better-known quantity and is
always on PATH if trying to build with clang-cl, as the latter
needs the former to fall back to if necessary.

This does not affect the build of Qt libraries and tools.

Task-number: QTBUG-51534
Change-Id: I149e0540c00745fe8119fffd146287662436c4b9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-07-21 00:16:04 +00:00
BogDan Vatra
1ef8c640f8 Workaround clang function export bug
Should be reverted when https://github.com/android-ndk/ndk/issues/142 is fixed.

Change-Id: Ie68807062247bee4969bc9aa00b0221c8147fed7
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-07-20 21:17:03 +00:00
BogDan Vatra
68f22d84ab Android: Add support for clang compiler
[ChangeLog][Android] Added support for clang compiler

Task-number: QTBUG-50724
Change-Id: I6147021b814fcb230d125c4450c554a7fea8f31e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-07-20 16:53:10 +00:00
Giuseppe D'Angelo
2b9b9a38e7 QOpenGLVertexArrayObject: clean up the destructor
Calling QOpenGLContext::surface() on a non-current context will
likely return NULL, so the code path that tried to reset
the old context as current would actually fail.

Change-Id: Ibbc8da877740a596aa7dd0af8ccffb9a1877290a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2016-07-20 15:58:46 +00:00
BogDan Vatra
e6034a4740 Make sure JNI_OnLoad is not called more than once
Since Android 5.0 Google introduce a nasty bug[1] which calls
JNI_OnLoad more than once.
Basically every time when a library is loaded JNI_OnLoad is
called if found, but it calls *again* JNI_OnLoad of its .so
dependencies! So, JNI_OnLoad of libQt5Core.so gets called may times,
this is not a problem as long as it's called from Qt's java delegate
class loader. The problem is that the application .so file *must* be
called from default class loader to allow the user to find his custom
Activity/Service stuff.


[1] Workaround https://code.google.com/p/android/issues/detail?id=215069

Change-Id: Ia71209658ef56056b560018597608acf7cb0f9ea
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2016-07-20 14:33:31 +00:00
Alex Trotsenko
aeb36d5292 QAbstractSocket: ensure bind()+connect() works on delayed close
While connecting, the socket goes through the HostLookupState. In
this state, the socket engine is not yet created, unless the socket
had previously been bound. When it has been bound, we should keep
the socket engine even if the user initiates a delayed close by
using the write()+close() sequence.

Change-Id: Iefebcb33cd72cb49617acbac8e02af9d8209c869
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2016-07-20 11:36:38 +00:00