Do not emit _q_notified when we're in a wait function. Otherwise,
the queued signals could pile up in the event queue.
Task-number: QTBUG-48653
Change-Id: I071863e2356e17c7004e3b7ca359967cb115e343
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
That is the case on Hurd, where the code currently breaks because Hurd
does not have WEXITED or WNOWAIT defined.
Change-Id: I4b13633612b1168d36c949d9e8b35bc05bca7d5c
Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Handle various cases where we have null QScreen or QPlatformScreen
pointers. With this change, I can run Qt Creator for several days.
Before, it would crash multiple times per day with a two-monitor
setup.
Change-Id: I0923d886ae2a4199ac37edd711ddd4f6f99df93d
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Opt-in by setting android.app.auto_screen_scale_factor
to true in AndroidManifest.xml. This will enable
devicePixelRatio scaling in QtGui using a scale
factor provided by Android DisplayMetrics.
Note that the Android style is not currently supported:
it already accounts for different display densities
which results in incorrect visual sizes when enabling
devicePixelRatio scaling.
Implementation: Bring DisplayMetrics::density through
to setDisplayMetrics in androidjnimain.cpp, similar
to what is done for "scaledDensity". Override
QPlatformScreen::pixelDensity(), which forwards the
scale factor to QtGui.
[The difference between "density" and "scaledDensity"
is that the former is a physical display density factor
which corresponds closely to devicePixelRatio in Qt,
while the latter also includes the Android global font
scale factor.]
Scale the global font pixel size in qandroidplatformtheme.cpp
to keep the visual font size constant.
Based on an initial patch from Daiwei Li <daiweili@suitabletech.com>
Task-number: QTBUG-46615
Change-Id: Ia51f99bf6dda485a57413949246c7b32cb47e8dd
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Call QHighDpiScaling::updateHighDpiScaling() in init_plaform(),
after the platform integration has been created and most platforms
have populated the screen list. Keep the existing udpate call for
the platforms that don't, but guard against calling it twice.
Task-number: QTBUG-47947
Change-Id: Ib73bea7c4ab42e7acf6532f3a3100e1fc29acc2c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
The latter is much faster as it doesn't have to deal with
time zones.
This change is safe, because the timestamp member is only
ever handled inside, and the calculation of the time difference
does not depend on any particular time zone.
Credits to Milian Wolff, from whose QtWS15 talk this advice is
taken.
Change-Id: I6c9190a4253ce5972871ab1f12870f8ae9891966
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Truetype fonts should be rasterized with a winding fill
as documented in e.g. Microsoft's specs.
Failing to do this caused a bug when doing native
rendering in Qt Quick for fonts that were large enough
that the fallback path was taken when drawing the glyphs
into the cache. If the glyph had overlapping contours,
they would be subtracted from the shape.
[ChangeLog][Text] Fixed an uncommon rendering error with
fonts containing overlapping contours.
Task-number: QTBUG-41197
Change-Id: I0e4a4432ba3f902bc3ea59d8f4dbd12a295630b2
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Partially revert c7abf81786. Instead of using the ES3 entry point,
use ES2 for framebuffer blitting. This means that a small change is
required to ANGLE for the blit behave the same as ES3 (applied only for
Windows Store apps).
Task-Id: QTBUG-48266
Change-Id: Idc51f00a659c91f740876be071eb71bff69e0e38
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
_mm_load_si128 requires 16 byte alignment. This crashes on 32 bit Windows
builds.
Change-Id: Ib6c30eba726747bbab56467eada820521981a80c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
It should be possible to use these constants simultaneously and to
handle them separately from each other.
Change-Id: I0c48a3c25456b487c9d6139b05105ada20f34be6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is true for ILP32 on x86-64, IA-64 and AArch64.
Change-Id: I1d0f78915b5942aab07cffff140f9d4c277bb5d4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
The latter is much faster as it doesn't have to deal with
time zones.
This change handles the trivial ones: Either the call to
currentDateTime() is immediately followed by a call to toUTC()
or toTime_t(). The latter is much faster on UTC QDateTimes, too.
Credits to Milian Wolff, from whose QtWS15 talk this advice is
taken.
Change-Id: I872f5bbb26cbecedc1e5c0dbee4d5ac2c6eb67ee
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
The QSslSocket::addCaCertificates() variant that takes a path
argument uses QSslCertificate::fromPath() in its implementation.
Edit the description of the former to match that of the latter.
Fix minor issues in QSslCertificate::fromPath() documentation;
add a missing word, limit code snippet line width.
Task-number: QTBUG-47359
Change-Id: Ibead74c998503e60a67d0b8eb551536bd20feff8
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
We check the name of the window class the widget's QNSView
changes window and set a flag when the that window is a native
Cocoa menu window. Later, only those views not inside a native
menu can become first responder, ensuring Qt won't deactivate
the main window.
We're allowed to reject becoming the first responder mainly
because Cocoa itself doesn't support sending key event to menu
views and, therefore, it doesn't change what's already possible.
This patch also sets the widget action visible, which needs to
be done right after reparenting it to the container widget.
Besides that, it also contains a few small code cleaning changes
related to Cocoa's support of QWidgetAction.
Change-Id: Ia2170bdc5e1f40bfa2f1091c05e9e99397c47187
Task-number: QTBUG-44015
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
dragImage:at:offset:event:pasteboard:source:slideBack: on NSView is
deprecated since 10.7. Use the one on NSWindow instead.
Change-Id: Ia1c2ea367ae2ca5194b52ea57ab261461bf8b529
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Instead of converting the QLatin1String to a QString at the first
opportunity, keep it around until it is appended to one of the
internal QStrings in write().
Avoids a memory allocation per QLatin1String / const char* streamed.
Change-Id: Id973a9b743e5a6696defbc4ef4ed2db1ef54e9cc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
In case the static destructor has already been run, make sure we don't
crash. This shouldn't happen, but could happen if the QApplication
destructor is run in a weird order (after the static destructors have
begun running).
That's not usually a case we'd fix (unsupported), but since this change
improves the code and also avoids creating the pixmap cache if it hadn't
been used up until this point, the change is a net benefit.
Task-number: QTBUG-48709
Change-Id: Ia505aece07bf4e13a1faffff140f3e119cfc773e
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
On 32 bit platforms the pointers may end up being 4 byte aligned.
Happens with MSVC on 32 bit Windows. _mm_store_si128 is documented to
require 16 byte alignment.
Change-Id: I80737fedf9e7f436a51a83924117cc0bc63017cc
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
This is in preparation of adding a putString(QLatin1String) overload.
To keep the change simple, I kept the construction of the padChar
chain per putString() call. It probably makes sense to have a
QString::resize(int, QChar) to perform the padding operation in-place.
Let's leave that for another changeset.
Change-Id: I9ef66b8df38117e1669fd2bece6ee180a2ce3369
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Compare against isVisibleTo() in QLineEditIconButton::actionEvent()
so that action events received before show() are handled correctly.
Fix a regression introduced by change
4dccb2ca67 for handling action
events causing side widgets to overlap when added before the widget was
shown. Use QAction::isVisible() to determine visibility.
Task-number: QTBUG-48806
Task-number: QTBUG-48899
Task-number: QTBUG-39660
Change-Id: I7a39a3b9a094f2c74cde09544f1158deb2b81cf2
Reviewed-by: David Faure <david.faure@kdab.com>
This was never a documented feature, but happended to work before Qt 5.5.
It broke because the peoperty access went into the static function and are
now prefixed with '_t->'
So restore the behavior as it was by not including the parentheses in the
member name.
Task-number: QTBUG-47695
Change-Id: Ic3509ddea7ac9abc871e71f5bfbe81d04d08e9bc
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Windows Runtime side callback is run from XAML thread and receiver
is at UI thread thus sendEvent asserts. Use synchronous system
interface key event handler to deliver the event.
Task-Id: QTBUG-48105
Change-Id: I91a8ef6fd29c277edfb699b688b9e7895dadda8f
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
It was possible for Windows Runtime callback to run while integration
class was constructed. That caused an assert when handling
application state change. Fix this by connecting callbacks after
integration class fully constructed.
Change-Id: I029c2e1f932e8edc3665443cc17dbf11eaae1bf6
Task-Id: QTBUG-48109
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Initialize locale from current keyboard value and listen
to WM_INPUTLANGCHANGE.
Task-number: QTBUG-48772
Change-Id: I53b6ef4e2cf538bb81b41ea497ed0cb66991b104
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
As a corner case on BSD systems, we use IP_RECVIF control message to
retrieve an interface index of the received datagram. Take care about
sockaddr_dl structure, while calculating a size of the ancillary
data buffer.
Change-Id: I1c113d390a4929489c4c5858847b6262f1baa204
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Assuming that the target is always GL_TEXTURE_2D is not going to be sufficient
when working with EGLStreams for example where GL_TEXTURE_EXTERNAL_OES is a
must. The blitter is now changed to support multiple programs so other targets
can easily be added as well in the future, if necessary.
Change-Id: I247d30600222fb5af6305ed5d9740baa5e43e83e
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
The relevant easing curves all start out fast and end stationery; so
it's at the *end* that they attain zero "velocity", so they're
decelerating *to* zero, not from it.
Change-Id: I69874c46c8d42f185ff815295c4470a195cc43ae
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Check for MSVC2015 to enable usage of IInputPane(2). Move object
construction to the XAML Thread, otherwise instantiation will fail when
running on desktop.
Task-number: QTBUG-44494
Change-Id: I816230cc5b0def796e86e6c6bb05a552a4e59d1b
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Remove unnecessary type casts in qdocindexfiles.cpp, and reduce the
amount of duplicate string literals used for generating QML
documentation.
Change-Id: Ia6d68a44fad14bd7414c0106e8752999830c93e8
Reviewed-by: Martin Smith <martin.smith@digia.com>
The examplesinstallpath variable in .qdocconf files defines the path
under QT_INSTALL_EXAMPLES where examples are found.
To match the way examples are packaged in Qt 5.6, prefix each
install path with the repository name.
Task-number: QTBUG-48736
Change-Id: I6a35c94fdacaad21cd044411aba02027b9019300
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
See the comment in the header for an explanation of what it does.
This trick is enabled for every single .o that is compiled, unless
QT_NO_VERSION_TAGGING is defined. The assembly expands to a COMDAT
section, which is mergeable by the linker, so only one copy of the
output is present in the ELF module.
This is enabled only for Linux and x86 / x86-64 / x32 due to the
requirement of writing assembly and relocations, so it needs to be
tested on each platform, which I have not done. It might work on
Solaris/x86, but again it requires testing. Support for other
architectures requires different assembly output and relocations and can
be added as needed, but they are not as important since this trick is
has most value on desktop systems.
Change-Id: I049a653beeb5454c9539ffff13e3ff5782a8cb86
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Rex Dieter <rdieter@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The only reason I had used them in the first place was because C
preprocessor macros cannot call themselves recursively. But the magic
was too magic and caused issues with some builds, so let's choose the
safer option.
Anyway, this solution now works for all ELF architectures, independent
of the processor, whereas previously it was restricted to x86 and Linux/
FreeBSD. However, this does not apply to the assembly in
qversiontagging.h.
Change-Id: I42e7ef1a481840699a8dffff1404f032fc5cacb8
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
WINAPI_FAMILY_APP is deprecated, so use WINAPI_FAMILY_PC_APP instead. Also,
open up the phone partition for use on MSVC2015.
Change-Id: I7476d71c31395b2914f5a1439e8088341976bf2f
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
Change-Id: I391be8bda3a5cb4873b89b437d2b76b1cd88261f
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Unlike other platforms and the EGL path, this one tries to parse
GL_VERSION on its own. Unfortunately it breaks for certain version
strings: we cannot assume more than major.minor in the beginning
and so looking for a second dot is wrong.
For example, "2.1 Mesa 7.11-devel" is parsed as major "2", minor
"1 Mesa 7" (result in 0), leading to a version of 2.0 instead of 2.1.
To overcome this, use the common helper function in
QPlatformOpenGLContext.
Change-Id: I460f4276a3a06659b542e0c076ddc1ada3122907
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
When the activity is paused, all runOnUi actions are dropped :(, this
patch ensures that no action is lost no matter what.
Task-number: QTBUG-45526
Change-Id: I61db4f73b0d2da47bf71a1324dc40b90dab01e81
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Second value of QPair is not used.
And add reserve for "indexNode->visibleChildren" list before pushing.
Change-Id: Ia002130c929f71e0802f73f4c0694fd2887b4c91
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Without QT_BEGIN/END_NAMESPACE, the qt_mac_socket_callback is not resolved as
a friend function of QCFSocketNotifier, which is required due to access to
private members of QCFSocketNotifier.
Change-Id: Ief89e18f8b4f7fc4cb013a33959db1dd90eb9efe
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
QLatin1String wasn't really tested except as a drive-by.
Unearthed a discrepancy with docs. Fixed the docs.
Change-Id: I1246bb33888132edbc4e22da792a480a156357bf
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Don't call showSoftInput() if the state is set to _HIDDEN or
_ALWAYS_HIDDEN by the user.
Task-number: QTBUG-46528
Change-Id: I5dbaf612cf4f339c5288d6d3292c27cc6217f3af
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Removing and adding a view each time the layout parameters changes is
triggering unnecessary layout updates. The affect of this is not very
visible since there are few views in the layout, but the procedure is
never the less wasteful.
Change-Id: I2540ab519b12c6d3e10457e2e518b439118b966d
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
It doesn't allocate memory, so cannot throw and is a lot faster
than qgetenv().
Change-Id: I863593166db8eff4c4466996110f5cfdb758ec00
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Check whether the action under the mouse is enabled before closing.
Task-number: QTBUG-48493
Change-Id: I2a0669840b9b6c81dacdf179325301c02f1c0c35
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
The delegate may be null in QHeaderView.
Task-number: QTBUG-48543
Change-Id: I4d3ba104b0b57431e8765271dc2dc880be096672
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Created local inSelection function to modify the x value (similar to
xToPos()) before sending it to the control. Ran the QLineEdit test and
manually tested with AlignLeft, AlignRight and AlignCenter.
Change-Id: I088430580dc87f3cfff90c4cd9ff90e6ab215f57
Task-number: QTBUG-48495
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
The new offline template for Qt 5.6, including simplified CSS rules
suitable for rendering with a QTextBrowser, requires the navigation
bar to be generated as an HTML table instead of the previously-used
unordered list.
Make QDoc select between the two based on the contents of
HTML.postheader .qdocconf variable, which defines the header of
the navigation bar.
Modify the old offline CSS to look good also when the nav. bar
is a table.
Task-number: QTBUG-48322
Change-Id: I00e16c24f436e0be049b85d4bcfc916c33ea6b73
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
(as of qttools:a7ff0d7d9ac2ff17e540521ef59029bf5cb35e14)
Saves almost 10K of text size on optimized GCC 4.9 AMD64 Linux builds.
Change-Id: Ib059e8b076362dbf81356861bebaec3810af6dcc
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
QUrl::scheme() already returns the scheme in lowercase, so
this should guarantee that the matching works correctly.
Task-number: QTBUG-5552
Change-Id: Ie68e01943c8cb105e11e54b348a090d9ffd5e65b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Numbers formatted in the C locale should not use group
separators by default.
[ChangeLog][QtCore][QLocale] The C locale does not use group separators
when formatting numbers any more.
Task-number: QTBUG-4044
Task-number: QTBUG-3068
Change-Id: Ia647a72efc11fecd66d22f9253562b1d4ef58168
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
With the 10.8 SDK, NSArray may not respond to firstObject which ends the
build with an error. This implementation doesn't use it and also handles
the case where no screen is available when calling
qt_mac_mainScreenHeight
Change-Id: Idce278423c37cc24d8fc31062a386e78d6487492
Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
Implement as generic "@Nx" support in an exported
qt_findAtNxFile function.
3x devices now get one extra file existence test
in cases where @3x versions are not present. 1x
devices are still on the fast path where there are
no extra file system accesses.
Add an @3x image to the highdpi manual test.
Change-Id: I4ce3fc245ada01ea410abe1443ceb1e3abf7c17f
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Export it for use by the iOS platform plugin. Also
move QCFSocketNotifier, and export for use by the
Cocoa platform plugin.
This is a pure code move with no intended behavior
changes, in anticipation of using the Core Foundation
event dispatcher as the default Qt Core event dispatcher
on OS X.
Change-Id: I43677d2f6f3c1d0ed0415c964225aa97d2f13078
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
We expect createPlatformWindow() to return a valid platform window. If
it fails we now assert in debug, and emit a warning in release. The only
platform where this is currently possible is on Windows, where the
platform plugin will return 0 if CreateWindowEx for some reason fails.
Change-Id: Ia2461efcfc48d180e073fa372d9c385650129e1c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Most of "immersive" flags are available on earlier Android versions.
Change-Id: Ic4f03a3c9491570bc5f8c5afbb61669644b20d8e
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Window collection behavior changed from OS X <= 10.9 to 10.10 to 10.11:
- the default behavior (0) included fullscreen button before 10.10, did not include
in 10.10, and now it's again included.
- it's not enough to exclude fullscreen - since the defualt is 0,
0 & ~fullscreen does not help - we also have to set fullscreen
auxiliary.
Task-number: QTBUG-48759
Change-Id: If427bd5cfa5c3cefc71f09dae7baa0d232601ee4
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
If a macro is used with too few parameters, complaining about its
definition using '#' followed by something other than a macro
parameter name is apt to be confusing - reading the definition will
reveal that the name in fact is a macro parameter after all. The
reader needs attention directed to the invocation, not the definition.
Split the test in two: one to test the prior error message does in
fact get produced for an invalid macro definition, the other to test
the invalid invocation case.
Task-number: QTBUG-46210
Change-Id: Ie177a56d346e553bf9d67e2008a4352633afa1ae
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
It simply is missing. We could wait for QStringView to come around, but
I need this function in uic _now_, so let's add it.
[ChangeLog][QtCore][QTextStream] Can now stream QStringRef without converting
to a QString first.
Change-Id: Idd178e0ba8a89c025f4533d46de912cbdb3883d5
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
platformServices has not been created and caused a crash as soon as an
URL gets opened.
Task-number: QTBUG-48740
Change-Id: Ib099a0ff3007b168738e02c0fab8f9ca7bcd25c7
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
This will allow application main to go out of scope and free objects
allocated there.
Change-Id: I7b7199ecf67afe578bac043f16b064c9daaae04a
Task-Id: QTBUG-48760
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
The other left shifts in this file already have the Q_UINT64_C wrapper.
This one was missed.
Change-Id: I42e7ef1a481840699a8dffff140d758ac370c402
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Instead of filling a QString with the padding characters, use a
QVarLengthArray. Do this only in the code path where it's actually
needed, and mark that code path as unlikely.
Change-Id: I11e04ccc4a07e16e430f2ea6dbb2f0f736908f5b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
src/tools/bootstrap was already compiled with QT_USE_STRINGBUILDER,
by way of load(qt_module), but the actual apps weren't.
Some apps become smaller, some larger; all (presumably) faster.
Change-Id: Idc8662e62ec14b27e730de9842bec295a1b5566e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
If you used the QString constructor overload and passed an empty
address, the d pointer would remain uninitialized.
Found by Coverity, CID 11724.
Change-Id: I42e7ef1a481840699a8dffff1407ead3ee703d6e
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
I can't find any use, ever, of them.
Change-Id: I42e7ef1a481840699a8dffff1407eb1a93b128a8
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
We set it to the number of types that the call expects to receive, but
we never used it anywhere else.
Change-Id: I42e7ef1a481840699a8dffff1407eb520b5844d8
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
These events are needed to enable the usage of all input methods available
on Android e.g. gamepads, stylus, etc.
In orer to get GenericMotionEvents your application min API version must
be at least 12, otherwise the application will receive only key events.
Change-Id: I7564fccaf5423aa318ba4f62317eaf101ba6e97e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Android doesn't automatically trigger global objects destruction, so we need to do it ourselves.
Test case:
struct TestGlobal {
~TestGlobal() { qDebug() << " ~TestGlobal";}
} global;
int main() {
return 0;
}
Change-Id: I32507c1cffebafc9841e9707a8f6711dcbd36281
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Dump_QShortcutMap is already made available in qshortcutmap_p.h, and if
set, "void dumpMap() const;" will be available to help debugging.
But unless QDebug &operator<< in qshortcutmap.cpp is also defined, the
dumpMap output will be pretty useless.
Change-Id: If8d535998ec01686eca25da73c2220062820a927
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Prevent QPointer creation for every new target, and a copy of a QVector
of QPointer, and two QPointer destructions, when setting new target
states. The typical (only?) use-case, setting the target states right
after transition creation, is also faster.
Change-Id: I931783afbcea43c8a84200133f26454a4b689edc
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
When a delayed event is queued, the state-machine is responsible for
deleting it. Normal flow will ensure that: after the timer fires, the
delayed event is handled normally, which includes deletion. However,
when a timer cannot be set, the event was leaked. But more important: if
there were unhandled (delayed) events when the state-machine was
destoryed, the events were never deleted.
Change-Id: I7d8a6b572765dc1551ddbdebb446aaa3258680c8
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
- Don't store "\\" as a QString just for passing it to QString:.startsWith()
and prepend(). Keep it a QLatin1String.
-> one allocation less
- Don't use said QString as a flag, use a bool
- Don't store QDir::separator() in a QString
-> one allocation less
-> two indexing operations less
- Don't retrieve QDir::separator() from said QString as QString(sep[0])
-> one more allocation less
- Don't look for a QChar in a string by using QRegExp; use the QChar
overload instead
-> one more allocation (at _least_) less
- Don't convert QDir::separator() with QDir::fromNativeSeparators(); it will
_always_ be '/'...
-> one expensive function call less
-> two QString allocations less
-> one QString(QChar) introduced
-> one allocation more
-> could be removed with QStringLiteral/QString::fromLatin1Char()
Change-Id: I802e66685a95b08cfc557defc63e5f16a7e6306b
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
It's easier to parse than qglobal.h. The objective is actually to have
macros with parts of the version number, so the major or minor numbers
could be used in other preprocessor macros.
Change-Id: I42e7ef1a481840699a8dffff1404eda1dd5c308d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Otherwise transparent areas of the drag'n'drop pixmap are painted
with the black color.
Task-number: QTBUG-45193
Change-Id: I55b7c7caababe13584fa1c7a52835f112e20f920
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Release the DC and move alpha-checking into separate function
to prevent it from using invalid width/height.
Task-number: QTBUG-48732
Change-Id: Iaf7cfa89b0f702f5012b0451d24a9e887d832c59
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
We initialize the variable d at the top using Q_D(const QWindow);
Change-Id: I2de3b33c043024c5599b7cd1ebecae2db0b39d87
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Application that do not require OpenGL need a way to opt-out of
GLX/EGL calls completely. The initialization can be expensive and what
is more, some systems may not have functional GLX at all (some VMs are
known to crash when trying to get FBConfigs for the window).
QApplication already has AA_ForceRasterWidgets, which causes the use
of plain RasterSurface everywhere instead of RasterGLSurface. Combined
with a trivial check in the xcb backend to skip all the Xlib+GLX/EGL
path, the attribute will allow apps to ensure that no GLX/EGL calls
are ever made.
This however implies a change in QWindowContainer: the embedded window
must use the same initialization path as the parent otherwise we will
end up with a BadMatch. QWindowContainer can do this transparently to
the applications, unless the QWindow is already created.
Change-Id: I846af7edb8b92b9836cdbd93c6a5eec5a6147a49
Task-number: QTBUG-46765
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
The default backingstore implementation is now cleaned for ES_2 ifdefs.
All the checks are now done at runtime and ES 3.0+ is included as well
for the efficient, QImage::copy()-less path.
For embedded a customized backingstore is used so the change has to be
done separately there.
This should result in a slight improvement for QOpenGLWidget/QQuickWidget
when running on GLES 3.x.
Task-number: QTBUG-37624
Change-Id: I107330c25a993c5cdcd92e4ebdc17ae172a03da8
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
the windows driver for Intel HD Graphics 3000 is buggy (crashes on
initialization) and according to intel, this driver won't receive any
bugfixes. device IDs taken from
http://www.pcidatabase.com/search.php?device_search_str=graphics
Task-number: QTBUG-42240
Change-Id: Ib846d37f67d901060d1318f3f211a5e5dc4f6814
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Reviewed-by: Tim Blechmann <tim@klingt.org>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
KMS is no longer a platform plugin so the relevant leftover bits are
now removed.
As the introduction of the EGLDevice-based backend for eglfs shows,
using DRM/KMS is not tied to GBM, separate buffer management
approaches, like EGLStreams, work fine as well. Therefore separate KMS
from GBM and remove the EGL and GLES dependency in the tests - this
way there is nothing preventing us from using GBM without GL for
example.
Change-Id: Id7ebe172b44b315f9a637892237d2bb62d99aed2
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
For now we pick one crtc and find the corresponding layer. If this is
not desired, set QT_QPA_EGLFS_LAYER_INDEX to override the layer to be
used. Enable qt.qpa.eglfs.kms to get logs about the available layers.
Change-Id: I762783f960739e32966c8cde17d8f55fbe40091f
Done-with: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
Backends may want to subclass QEglFSWindow and reimplement resetSurface()
and similar. Make it possible to do this by moving window creation to
the device integration interface, similarly to screens.
In addition to customizing the windows, some backends may want to disable
the dependency on surfaceless contexts when using offscreen windows
(i.e. pbuffer surfaces). Make this possible too.
Change-Id: Ic5a426e07f821c7a800217b8799f91770ba6a6d8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
In anticipation of moving it to QtCore.
The call to QWindowSystemInterface::sendWindowSystemEvents() has been
moved to QIOSEventDispatcher by making processPostedEvents() virtual.
Change-Id: I9e03be4153a9f5f34e9a0ac942cdff572a44c318
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Now all Qt sequential containers consistently provide reverse iterators.
The associative ones, by way of not returning std::pair from op*, can't
just use std::reverse_iterator. They would miss .key() and .value() methods.
So that has to wait for 5.7.
The reverse versions of the new key_iterators can also just use
std::reverse_iterator, but I'm afraid that after bikeshedding over
keyRBegin() vs. rKeyBegin() vs. reverseKeyBegin() vs. rkbegin()
vs. krbegin() (<-- of course, what else?), it would anyway be too
late for 5.6, so defer, too.
[ChangeLog][QtCore][QLinkedList/QSet] Added rbegin(), crbegin(), rend(), crend(),
and reverse_iterator and const_reverse_iterator typedefs.
Task-number: QTBUG-25919
Change-Id: I58316fffade469e9a42c61d7aa1455ae3443fd94
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
A QAbstractSocket can be close()'d at any time, independently of its
current connection state. being closed means that we cannot use it to
read or write data, but internally it might still have some data to
send or receive, for example to an http server. We can even get a
connected() signal after close()'ing the socket.
We need to catch this condition and mark any pending data not yet
written to the socket for resending.
Task-number: QTBUG-48326
Change-Id: I6f61c35f2c567f2a138f8cfe9ade7fd1ec039be6
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Previously, only QXmlTestLogger had timers to take elapsed times
and log them. Move those into class QTestLog for access by
the loggers and output the times in the crash dump to make it
easier to spot hangs/recursion crashes.
Produces:
QFATAL : foo() Received signal 11
Function time: 22ms Total time: 23ms
A crash occurred in ...
Function time: 24ms Total time: 26ms
Task-number: QTBUG-47370
Change-Id: Ia530a63104087daffc9a15f68c15d93378b9407e
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
This is a continuation of the work started in commit
694d300355.
Attach reference ('&') and pointer ('*') qualifiers to the
parameter name, as per Qt coding style.
Previously, function signatures were documented like this:
QString & QString::append(const QString & str)
After this change, they will appear like this:
QString &QString::append(const QString &str)
Change-Id: Ie103fc2929635bc32145e50469c600f9f378f97c
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
QDoc wrote \target and \keyword information into the index file
properly, but did not read them back in.
This was because the code for handling enum and function elements
read their own child elements (without handling targets), and
marked the remaining children to be skipped.
This commit fixes the issue by refactoring the code for inserting
targets into a new function and calling it from relevant places.
Change-Id: I85d7b26ce54620daec35b19e447d1a065515b863
Task-number: QTBUG-48687
Reviewed-by: Martin Smith <martin.smith@digia.com>
The message box buttons need to be added inside the XAML thread.
Otherwise QWinRTMessageDialogHelper::onCompleted will not be triggered.
To successfully emit the clicked signal across different threads do not
exit the eventloop.
Change-Id: Ie884bdfe0dc64132559755083dae50c2aa43d80b
Task-number: QTBUG-48209
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
After calling connectToHost(), the socket enters HostLookup state. At this
stage, the socket engine was not created yet, and writing to the socket
should result in either data buffering or an error. So, add a check for
d->socketEngine to prevent a crash on unbuffered sockets.
Task-number: QTBUG-48356
Change-Id: I15ea9ce7de97ce6d7e13e358eca5350745b556bb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
On OS X we don't treat popup windows as worthy of being activated and
focus windows (key windows). Instead we keep track of the active popup
windows and forward events to them manually.
The forwarding logic is split between QPA, which handles mouse, and
QWidgetWindow and QQuickWindowPrivate, which handles key events.
This commit adds the logic for key events to QPA, which is the right
platform layer for this kind of workarounds. The widget code is left
as is for now, and the QQuickWindowPrivate code can be removed in
a follow up.
Task-number: QTBUG-39415
Change-Id: Iee411fcba9fc81ddcc3a7bc82591184675a6d7a2
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
If QTimer::singleShot() is used with a functor callback and a context
object with different thread affinity than the caller, a crash can
occur. If the context object's thread is scheduled before
connecting to QCoreApplication::aboutToQuit(), the timer has a change
to fire and QSingleShotTimer::timerEvent() will delete the
QSingleShotTimer object making the this pointer used in the
connection invalid. This can occur relatively often if an interval
of 0 is used.
Making the moveToThread() call the last thing in the constructor
ensures that the constructor gets to run to completion before the
timer has a chance to fire.
Task-number: QTBUG-48700
Change-Id: Iab73d02933635821b8d1ca1ff3d53e92eca85834
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
In case of a lock failure, we potentially pollute the errno value
before printing it. Also, switch to qt_error_string, as strerror
is not reentrant.
Change-Id: I952aac14204637155726bcefc0ed8a21d7fcd501
Reviewed-by: David Faure <david.faure@kdab.com>
Apart from removing some unwanted allocations, also reduces
text size by ~800B on Linux AMD64 GCC 4.9 release builds.
Change-Id: Ibcd1d8264f54f2b165b69bee8aa50ff7f4ad3a10
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Calculation was working as long as one didn't use per pixel scrolling.
Task-number: QTBUG-48579
Change-Id: Ie02e28b008c5c81ed45d7dd17fed96148c23b598
Reviewed-by: Thorbjørn Lindeijer <bjorn@lindeijer.nl>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: David Faure <david.faure@kdab.com>
If QT_NO_CURSOR is defined then changeCursor() is not implemented in
QPlatformCursor which means that it isn't really being overridden in the
offscreen plugin. Therefore the same define is checked for to prevent a
compiler from having a problem with it.
Change-Id: Id7c104292354cb7462b3161602fc8d382a6dd390
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Use the fromUnicode(QChar *, int size) overload instead.
Saves 0.5KiB text size on Linux GCC 4.9 AMD64 release builds.
Change-Id: I1a1081e09bff4c2116288b8c2616e1bb7ee2bb42
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
This is prone to ambiguities, even though we currently don't run
into them.
Use QChar::isNull() instead.
Change-Id: I71843878b3f4f8a5deae2ef57a6f6628461be216
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Recreate QShapedPixmapWindow when the cursor goes to
another X screen.
Change-Id: Ifd4c4281971b23abc45a9f6c0509832a45c31521
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
[ChangeLog][QtCore][QMetaProperty] write() now resets the property if an
empty QVariant is given, or set a default constructed object if the
property is not resettable
Change-Id: I9f9b57114e740f03ec4db6f223c1e8280a3d5209
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Instead of lumping both Objective-C (.m) and Objective-C++ (.mm) sources
into the same pile, passing them on to the same compiler as for C++ (CXX),
with the C++ flags (CXXFLAGS), we follow Apple's lead and treat them as
variants of the C and C++ languages separately, so that Objective-C
sources are built with CC and with CFLAGS, and Objective-C++ sources
with CXX, and CXXFLAGS.
This lets us remove a lot of duplicated flags and definitions from the
QMAKE_OBJECTIVE_CFLAGS variable, which in 99% of the cases just matched
the C++ equivalent. The remaining Objective-C/C++ flags are added to
CFLAGS/CXXFLAGS, as the compiler will just ignore them when running in
C/C++ mode. This matches Xcode, which also doesn't have a separate build
setting for Objective-C/C++ flags.
The Makefile qmake generator has been rewritten to support Objective-C/C++
fully, by not assuming that we're just iterating over the C and C++
extensions when dealing with compilation rules, precompiled headers, etc.
There's some duplicated logic in this code, as inherent by qmake's already
duplicated code paths, but this can be cleaned up when C++11 support is
mandatory and we can use lambda functions.
Task-number: QTBUG-36575
Change-Id: I4f06576d5f49e939333a2e03d965da54119e5e31
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Core Foundation Framework forwards notifications about socket activity
through a callback function which called from the run loop.
The default behavior of Core Foundation is to automatically re-enable the
read callback after each notification, and we explicitly enabled the same
behavior for the write callback.
With this behavior, if the client did multiple recv() calls in response to
the first notification in a series of read notifications, the client would
still get the QSocketNotifier notifications for the data that was already
read.
To get rid of these extra notifications, we disable automatically re-enabling
the callbacks, and then manually enable them on each run loop pass.
Task-number: QTBUG-48556
Change-Id: I0b060222b787f45600be0cb7da85d04aef415e57
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
if t >= QMetaType::User, we would not return false nor call convert.
We would then pass a pointer to whatever is in the QVariant to the
qt_metacall that is expecting a pointer to an object of a different type.
Since we have custom converters, we can call QVarent::convert even for
custom types anyway.
[ChangeLog][QtCore] Fixed crash when setting a QVariant of a different
type to a property of a custom type. Attempt to do a conversion instead.
Task-number: QTBUG-40644
Change-Id: Ib6fbd7e7ddcf25c5ee247ea04177e079f6d7de35
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
The list with taken indexes (selected items) was created in reverse
order but then retrieved from beginning. This was causing unexpected
rotation of the moved items.
Task-number: QTBUG-45320
Change-Id: I858d9af7b838bbd2618442c176dac0648b3512c4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
arg(const QString &a, int fieldWidth, QChar fillChar) was being called
and that's not what we want.
Found with clazy static analyzer
Change-Id: Ia5051bb2f979af496038c66580d199262b6cfa8b
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Fixes the following warning [-Wnonnull]:
warning: null passed to a callee that requires a non-null argument
Change-Id: I52f7dc338afdcfe0cd605281d1bf59025abb5ac6
Reviewed-by: Jake Petroules <jake.petroules@theqtcompany.com>
Also re-enable and update the tst_showWithoutActivating test.
Change-Id: Ic7fa9b1bf7637e4661c593aaeabb3220cd4204ff
Task-number: QTBUG-46098
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Make all containers (excepting QVarLengthArray)
- nothrow default-constructible
- nothrow move-constructible
- nothrow move-assignable
- nothrow swappable
[ChangeLog][QtCore] All containers (with the exception of QVarLengthArray,
but including QSharedPointer) are now nothrow_default_constructible,
nothrow_move_constructible, nothrow_move_assignable, and nothrow-swappable.
Change-Id: I12138d262f9f7f600f0e1218137da208c12e7c0a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
There was a copy ctor, a move ctor was missing.
Change-Id: If09a4d4c74682169759eff43b298f6c77702c169
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
OldPersistentIndexes store selected items during sort operation. They
were wrongly taken from static list of indexes. This change takes them
from parent (QTableWidget) who maintains the list of selected segments.
Task-number: QTBUG-48408
Change-Id: Ie1bc4071a275dd76d113d883ab30ccd4cb1fa625
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Commit 7f5b94b47 moved shortcut handling into QGuiApplication (for all
platforms except OS X), due to crashes on Android where the events are
delivered from another thread.
Now that we have synchronous event delivery (also across threads) from
QPA, this is no longer needed, and we can move the code back to QPA,
where the platform has more control over when and how shortcut events
are delivered in relation to normal key events.
Handling shortcuts is as before a two step process. We first send a
QKeyEvent::ShortcutOverride event to the active window, which allows
clients (widgets e.g.) to signal that they want to handle the shortcut
themselves. If the override event is accepted, we treat it as the
shortcut not being handled as a regular shortcut, and send the event
as a key press instead, allowing the widget to handle the shortcut.
If nothing accepted the shortcut override event we pass it along to
the global shortcut map, which will treat the event as handled if
an exact or partial match is found.
The QShortcutMap::tryShortcutEvent() and nextState() implementation
has been simplified to not use the events accepted state for its
internal operation, which removes the need for saving the state
of the incoming event.
The QKeyEvent::ShortcutOverride event was also always sent with
the accepted state set to false, by calling ignore() on it before
sending it. This is now explicit by having shortcut override
events being ignored by default in their constructor, and the
documentation has been updated accordingly.
Change-Id: I9afa29dbc00bef09fd22ee6bf09661b06340d715
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
QT_POINTER_SIZE is determined by the configure test ptrsize,
which has been observed to fail due to unrelated build issues.
Add a check to verify the correct size.
Task-number: QTBUG-48525
Change-Id: I4fcb9761b54370b39c0d3e1e0a6d0aa3c0223f40
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Instead of blindly leading each parameter name with a space, check
if the data type name is empty first. This prevents extra spaces
from appearing in QML method signatures, which can be documented
with parameter names only, without data types.
Change-Id: I726f8c29839430186fcae4ac19d00404233395e0
Task-number: QTWEBSITE-691
Reviewed-by: Martin Smith <martin.smith@digia.com>
The maximum value for charsNeeded is 4, so if bytesAvailable is less
than charsNeeded - 1, the it's at most 2. It can't be larger than 2.
Found by Coverity, CID 11000.
Change-Id: I42e7ef1a481840699a8dffff1407ef9221a4fd80
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
This reverts commit b8e0f7cfc6.
Needs a more testing.
Change-Id: Iff0b2741922cfa8f16fbc3f4ce0f83869d6cd8b6
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Commit 7943d4f tried to fix this with a switch/case, but the feature
levels need to be in descending order so this failed. So, follow the
same style used for feature levels 10/11.
Change-Id: Ia1c22981bf8b99eb53df13833aba452482398295
Task-number: QTBUG-38481
Task-number: QTBUG-48571
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Core Foundation Framework forwards notifications about socket activity
through a callback function which called from the run loop. Previous
implementation sets kCFSocketReadCallBack, kCFSocketWriteCallBack to be
automatically re-enabled after they are triggered. With these semantics,
an application need not read all available data in response to a read
notification: a single recv in response to each read notification is
appropriate. If an application issues multiple recv calls in response to
a single notification, it can receive spurious notifications.
To solve this issue, this patch disables automatically reenabling callback
feature. Now, callback gets called exactly once, and is not called again
until manually re-enabled by calling CFSocketEnableCallBacks() just before
entering to wait for the new events.
Task-number: QTBUG-48556
Change-Id: Ia3393c2026230c7b3397cc614758dec1d432535f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
A \target whose purpose is to link to the top of a
page (and not to a section within a page) works better
as a \keyword, because \target generates a
new html anchor which, in this case, is not tied to
any title element on the page.
A \keyword links to the page itself, as expected.
Task-number: QTBUG-48482
Change-Id: I957551edd0eb7e665358d04b37dab41e2686b851
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
QDoc needs to write the following attributes to index files:
For qmlclass: qml-module-name, qml-base-type
For qmlmodule: qml-module-name, qml-module-version
Because of a regression introduced in Qt 5.5, no QML module name
or base type information were written for QML types, resulting in
linking issues.
Change-Id: I69e616dadfc9ede389bc05e16acb831f1e15bac5
Task-number: QTBUG-48479
Reviewed-by: Martin Smith <martin.smith@digia.com>
QDoc never called resolveNamespaces() unless running in single-exec
mode.
This commit fixes that, and causes public namespaces documented in
other modules to be treated as 'seen', i.e, as if they were
declared locally.
Change-Id: Id1dda7aaea6c9bd38bbeb5992121575a1876cbf7
Task-number: QTBUG-48523
Reviewed-by: Martin Smith <martin.smith@digia.com>
Include errno.h for errno and EEXIST.
Change-Id: Id28d5a08097319eb84b1fe9ef20c9be6ebe575fa
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Go back to the pipe-based signal handling. signalfd() introduces more harm than good
and is a regression for applications that install their own signal handlers.
Simplify the somewhat overcomplicated suspend (Ctrl+Z) logic too. There is no need for
requiring a callback. Just enable/disable the keyboard and cursor on suspend and resume
and emit the signals. Backends (like kms) may then perform additional steps, if they
choose to do so.
Task-number: QTBUG-48384
Change-Id: Ifd52de89c59915a2e0be6bf5ebc6f2ff1728eb50
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
On line 92 and on line 146, len == 2 or len == 3, so uc1 and uc2 cannot
be 0, ever.
Found by Coverity, CID 11013 and CID 11012.
Change-Id: I42e7ef1a481840699a8dffff1407edefd3e7aa4f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Source files should not be executable.
Change-Id: If9b9eaa6c8c7348ca6f48fa9253f3540e95aca37
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
There was another function between the comment and the one it documented.
Change-Id: I4e96979261738b1ef264984da0d6a8245f2fb643
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
It's accessed by QFutureWatcherBase::isFinished(), potentially before
anything has set it. It gets to be initially true until setFuture()
has given it us unfinished future and set it false.
Add a regression test for matching state in future and watcher.
Task-number: QTBUG-12358
Change-Id: Iae7bdaa434ab80f518afe4d7d55df99c391991a4
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
The ftok function unfortunately can return duplicate keys even for different
files if the same project id is used. This is discussed e.g. in Stevens'
"Advanced Programming in the UNIX Environment".
We want the key to be predictable so we cannot just pass a random number as
the project id. To reduce the propability of key collisions we hash the file
name with the project number as seed for a predictable value. This is the same
approach taken e.g. by Apache, but the real fix is to move away from System V
IPC completely once this is feasible on our supported platforms.
Task-number: QTBUG-48375
Change-Id: If1a57f215f7ddd147aa38919907cfb83db07aea0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
DOCINFO::lpszOutput can be 0.
Task-number: QTBUG-48203
Change-Id: Ia3940b5b3200143d8d50caa8f4f44c4b22bfff75
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
Due to additional validation not covered in previous patches, the Windows
Store certification compatibility had regressed. These changes ensure that
the required D3D behaviors are met.
Change-Id: I0a74f0d2fecaa87d4a9409da3a7a194254609759
Task-number: QTBUG-38481
Reviewed-by: Samuel Nevala <samuel.nevala@intopalo.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
Use RAII to ensure that every code path cleans up the event handle,
and re-initialize the whole OVERLAPPED object, not just the two
offset members.
Change-Id: If7e68ec6e61b7bb04df0d06734c04589f6822c4a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Status bar visibility can be controlled and window geometry can be
adjusted accordingly. Default show to showMaximized instead of
showFullScreen. This means that by default application starts status
bar visible.
[ChangeLog][winphone][Important Behavioral Changes] By default
application starts status bar visible.
Task-Id: QTBUG-48282
Change-Id: Ia60edd53ec2a7181aa97d21a825600b7c8cf87a7
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
If data[0] were > 128 (that is, if the full size, encoded in big endian
were > 2 GB), the result of the OR chain would be a negative int (due to
C integer promotion rules). We're shifting into the sign bit, which is
either implementation-defined behavior or, worse, undefined behavior.
This negative number is then sign-extended to ulong (64-bit on 64-bit
platforms), which then becomes a big number. This code was probably
written with only 32-bit in mind, where there would be no size extension
(sign or otherwise).
This isn't too bad because there's a size check for the max size of
QByteArray a few lines below, but we can fix it, so let's do it.
Found by Coverity, CID 22530.
Change-Id: I42e7ef1a481840699a8dffff1407ea6c22e1a0ec
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
It was dereferenced 8 lines before and the pointer cannot have changed
since.
Found by Coverity, CID 11363.
Change-Id: I42e7ef1a481840699a8dffff1407ecab4e4f5930
Reviewed-by: Richard J. Moore <rich@kde.org>
For some reason VMware reports 8 outputs, 7 of them are disconnected
and so they cause several errors.
Skip disconnected outputs to avoid those errors.
Change-Id: I5f9fa2ef38b916af9f9ae8b50fce9fc40c18bff3
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
The two lines of code are the same as in QFSFileEnginePrivate::nativeSyncToDisk,
but we don't want to create a fileengine instance just for this.
qlockfile_win.cpp already calls FlushFileBuffers, only the Unix implementation
was missing the equivalent call.
Task-number: QTBUG-44771
Change-Id: I2253972857e4de9d27ef442c92983a1088d6f03e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
QByteArray::operator< and friends had their logic reversed.
Task-number: QTBUG-48350
Change-Id: I625209cc922b47e78dfb8de9fe100411f285a628
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Both e_shentsize and e_shtrndx are ELF half-words, which means C
integers of rank less than int (they're quint16). That means this
multiplcation was done actually as int, due to integer promotion from
unsigned short. So preempt the integer promotion and force them to full-
word integers (unsigned int).
While the bit-pattern result of the multiplication is the same, the
addition with e_shoff (a qelfoff_t = quintptr) wouldn't: the promotion
from 32-bit int to 64-bit would first execute a sign-extension.
Now, this shouldn't happen on regular ELF files, but it cause QLibrary
to crash if a specially-crafted (or simply corrupt) plugin is found.
Found by Coverity, CID 22642
Change-Id: I42e7ef1a481840699a8dffff1407e9f1282eeecf
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
The logic for handling cancel operations was spread out through
the code base and sometimes hard-coded to only include the Escape
key shortcut, missing the Command+. shortcut.
We now intercept both attempts at cancel operations from the system
through cancelOperation, which we forward as normal key events.
A new QKeySequence::StandardKey has been added for the Cancel sequence,
which maps to Escape on all platforms, and Command+. in addition for
OS X. The hard-coded logic in QWidget and subclasses for dealing
with closing the dialogs has been replaced with this key sequence,
which allows clients to override the behavior. Note that the widget
code is not wrapped in checks for QT_NO_SHORTCUT, as we don't care
about keeping widgets building and working under that define.
The logic in QCocoaWindow to bypass windowShouldClose when delivering
IM events has been removed as we now handle that specific case by
also forwarding Escape as a cancel operation.
Task-number: QTBUG-47557
Task-number: QTBUG-45771
Task-number: QTBUG-44076
Change-Id: Ibe0b3a4819f8659d246a2142dd7d9cd3a826ef78
Reviewed-by: Tim Blechmann <tim@klingt.org>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
POSIX API doesn't really have defined encoding and kernel works with
null-terminated byte strings (char *) without any knowledge about
encodings.
But usually applications use LANG (and LC_*) as encoding making it
possible to use any encoding user wishes, including full Unicode
support when UTF-8 is used.
This allows to create and listen to sockets with paths containing
non-latin characters.
eg. listen(QString("/run/υποδοχή"));
Change-Id: I022ac6a8a4575103125c48768a66bef88a232a2a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Dāvis Mosāns <davispuh@gmail.com>
If we abort a connection in QNetworkReply::encrypted the underlying
socket gets flushed. This patch fixes that no data will be transmitted
after someone called abort().
Change-Id: I59306e69cb9f2e1421b324e11947375130e52135
Task-number: QTBUG-47471
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
qhash.cpp(89): warning #3199: "defined" is always false in a macro expansion in Microsoft mode
Change-Id: I7de033f80b0e4431b7f1ffff13fc960bcbb17352
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
It can't be. The block in which the variable "s" exists makes no call
to any function that takes the setjmp buffer. This is not a false
positive warning: it's an incorrect warning.
qjpeghandler.cpp:878:6: error: variable ‘s’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered]
Change-Id: I42e7ef1a481840699a8dffff140681a3d7e34493
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
There's QT_WARNING_DISABLE_CLANG for when a warning applies to a Clang
build.
Change-Id: I42e7ef1a481840699a8dffff1406ac36b6a6eac3
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Qt5 applications do not enable IBus when the applications are saved in
the session and launched automatically in the next login.
This patch checks the IBus socket path and connect to the bus when
it's available.
Task-number QTBUG-47657
Change-Id: I0883eaa2438fd27455da93f78f392ea3c1abe6b8
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
QWindow by default doesn't have the window flags to display
buttons on the title bar and it's up to the window manager
whether they will be shown. For example, fluxbox doesn't show
the maximize button.
The cocoa plugin and the windows plugin adjust the window
flags in this special case of QWindow to show some buttons,
so do the same in the xcb plugin.
Change-Id: Idc2575cfeaced524dd67eb5ba99126663626e2b0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
In addition to the proprietary Mali Linux driver bundle from ARM, there
are a couple of semi open source alternative bundles out in the wild,
which are mostly derivatives from the sunxi-mali bundle.
The non-ARM bundles lacks the proprietary header file fbdev_window.h
which defines the fbdev_window struct. Instead, it has an equivalent
mali_native_window struct in the EGL/eglplatform.h (which in turn is
included by EGL/egl.h).
This change adds an alternative configure test which detects the non-ARM
bundles are used. It also removes the dependency on fbdev_window.h by
defining the structure ourselves, which actually makes the plugin
potentially compilable with *any* EGL SDK.
Change-Id: I78ab4b618e8e9c774c889fe9896105cf2cf4228e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
This allows handling of state specific code when entering/exiting
states during a micro-step.
Change-Id: If2fa8dde9a1e209345950a93dee59414063d863e
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Touch screens without the "Abs MT Position X" but "Abs X" capability
weren't detected correctly so far. This patch fixes the detection and
enables these tochscreens.
Change-Id: I32fdb4d56c106717c90904a6632c2838bd55a255
Task-number: QTBUG-48279
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Use the presence of a platform window to detect
if the QWindow has already been closed.
Change-Id: Ieedf231cc5b805ed6383e55a82ca137087805a4f
Task-number: QTBUG-43344
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Before deleting the children of an Aggregate, we must clear its
internal collections first. This prevents removeChild() (called
from ~Node) from accessing already deleted siblings.
Change-Id: Ic657b1d57fe4c766daa2bd4b791c3840099de709
Task-number: QTBUG-47751
Reviewed-by: Martin Smith <martin.smith@digia.com>
Normally, disconnectNotify() is called at the end of QObject::disconnect
and all the locks have been dropped. That is not the case for the
QObject destructor, so we need to deal with the fact that it there may
be some locks held.
I didn't catch this issue during testing because it depends on the
pointer addresses of the object being destroyed and that of the
QDBusAbstractInterface sender object, as we use one global, non-
recursive mutex pool. For the same reason, this patch is not testable.
The fix is simple: we don't need to remove the relay rules immediately.
It's ok for them to happen later, since the worst case scenario is that
we'll receive a few more signals than we have objects to deliver them
to. If that happens, we'll do a little more work than we have to. But in
the normal case, the amount of work is the same and we get the benefit
of returning more quickly from the destructor. What's more, if the
QDBusAbstractInterface object also gets destroyed, the events are
deleted and QDBusConnectionPrivate will clean everything up.
Task-number: QTBUG-48410
Change-Id: I42e7ef1a481840699a8dffff1406b789ba5217b3
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Using a power of 2 instead of power of 10 means the result of the
division can be accurately represented as a floating point instead of
being an approximation that could lead to rounding errors.
Change-Id: I8910c06113ec6b69c60ff95d59894bfb56133186
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
It was working at some point, but not in 5.5.0.
Task-number: QTBUG-48370
Change-Id: I8a0e09d4dfa9ace3d69c10c5f88129958d226a9a
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
For people with non-empty QT_MESSAGE_PATTERNS, the multiple lines would
be unreadable.
This is what it showed for me when starting Qt Creator:
[1442136.587] qtcreator(82762 82762)(?libQt5Gui.so.5?|QGuiApplicationPrivate::createPlatformIntegration|QGuiApplicationPrivate::createEventDispatcher|QCoreApplication::init|QCoreApplication::QCoreApplication|QGuiApplication::QGuiApplication|QApplication::QApplication|?qtcreator?|?qtcreator?|__libc_start_main):
Warning: QT_DEVICE_PIXEL_RATIO is deprecated. Instead use:
[1442136.592] qtcreator(82762 82762)(?libQt5Gui.so.5?|QGuiApplicationPrivate::createPlatformIntegration|QGuiApplicationPrivate::createEventDispatcher|QCoreApplication::init|QCoreApplication::QCoreApplication|QGuiApplication::QGuiApplication|QApplication::QApplication|?qtcreator?|?qtcreator?|__libc_start_main):
QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors.
[1442136.592] qtcreator(82762 82762)(?libQt5Gui.so.5?|QGuiApplicationPrivate::createPlatformIntegration|QGuiApplicationPrivate::createEventDispatcher|QCoreApplication::init|QCoreApplication::QCoreApplication|QGuiApplication::QGuiApplication|QApplication::QApplication|?qtcreator?|?qtcreator?|__libc_start_main):
QT_SCREEN_SCALE_FACTORS to set per-screen factors.
[1442136.593] qtcreator(82762 82762)(?libQt5Gui.so.5?|QGuiApplicationPrivate::createPlatformIntegration|QGuiApplicationPrivate::createEventDispatcher|QCoreApplication::init|QCoreApplication::QCoreApplication|QGuiApplication::QGuiApplication|QApplication::QApplication|?qtcreator?|?qtcreator?|__libc_start_main):
QT_SCALE_FACTOR to set the application global scale factor.
(and imagine it line-broken in a terminal 140 columns wide)
Change-Id: I42e7ef1a481840699a8dffff1406f73dc4d44a41
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
The glColorMask call was troublesome. In addition, the Qt::WA_TranslucentBackground
was misinterpreted and recommended misleadingly in the documentation. The hellogl2
example's --transparent argument was disfunctional in practice.
Replace glColorMask with glBlendFuncSeparate. The hellogl2 example and the docs are
now corrected wrt enabling semi-transparency in a QOpenGLWidget that is not a top-level
(which is the most common case).
Task-number: QTBUG-47276
Change-Id: I6f40e732d455f5efcf158649ac9a52ff9f240e85
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
The code relied on QStringList::split() returning a list
consisting of one empty string when passing an enpty string.
Add a check to prevent the plugin loader from trying to load
in this case.
Change-Id: Iadb418d32fdea1d472d6c00726ad039b4afbf409
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
QDoc has the ability to accept parameters for macros but it was
never documented.
Change-Id: Iaf9a629c906fbe1552717c7444a0fd52b5655a3f
Reviewed-by: Martin Smith <martin.smith@digia.com>
We generally assume that for every mouse press we also get a mouse
release eventually. The event filter installed by QBasicDrag broke this
assumption as it didn't take care of filtering mouse press and mouse
release events symmetrically. We cannot immediately pass on the release
event as that would mean a release event is generated from a press
event (via the blocking drag call), which breaks assumptions in other
places.
Change-Id: If7e48c7dc0ef5265bed4f9a9366a7606ec875d93
Task-number: QTBUG-46361
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
QDateTime values with a UTC offset are not correctly serialized with
QDataStream::Qt_4_0. So use a newer QDataStream format for this type and
mark it with "@DateTime" instead of "@Variant".
Task-number: QTBUG-46551
Change-Id: I211c89e8cd0211c949ec993e6ffd5192d0eebbb3
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Left and right were swapped which caused invalid selection ranges to be
emitted through selectionChanged.
Task-number: QTBUG-48402
Change-Id: I18692c2b50c49ab39065f9b360b37b7615227ee9
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
The arguments for the width and precision parameters, that is. There's
no reason to crash if a user sets e.g. a precision of -2.
Task-number: QTBUG-46838
Change-Id: I4afc004a1b8aa1306fd996360b16117b2b643640
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
qtextstream.cpp:2825: warning: Can't link to 'left()'
qtextstream.cpp:2825: warning: Can't link to 'right()'
qtextstream.cpp:2797: warning: Can't link to 'right()'
qtextstream.cpp:2797: warning: Can't link to 'center()'
qtextstream.cpp:2811: warning: Can't link to 'left()'
qtextstream.cpp:2811: warning: Can't link to 'center()'
Change-Id: I613354ca8137030c9f121cb976fe3bc35e1a415b
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
The methods are supported on Windows Phone since 8.1 so that the
simplified Windows Phone code isn't needed any more.
Task-number: QTBUG-48140
Change-Id: I21c488fe1a1322e85bbe088fb47e81893fd12d40
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
The current behavior has been observed to irritate a lot of users, for
instance in the Qt online installer and the Boot2Qt flashing wizard.
Change-Id: Icd7b819a0cbc9fd04b86b4777c5b9e829045d6df
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Map this to ignoresMouseEvents on NSWindow.
Task-number: QTBUG-45498
Change-Id: I86e518bbf805647d9f12b1af1747355ef55cc167
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
According to MSDN, a maximum icon size is 256 pixels.
http://blogs.msdn.com/b/oldnewthing/archive/2010/10/18/10077133.aspx
Change-Id: Id87c89a20c9cba6ef041b49f93f84c5e9c3eb79f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
We only need to merge the rectangles into a region if we are painting
a non-opaque a primitive with alpha.
Performance measurements QT_print_speed_bug.zip:
Excluding patch: 244686 ms
Including patch: 5070 ms
This is an improvement of 48x (for debug build)
Task-number: QTBUG-48334
Change-Id: I03684c6e7d8a5fb039ea6477ed1a860f09e1b08c
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
This ensures that the values and signals reported by QInputDeviceManager
for touch devices always have corresponding entries in the list returned
by QTouchDevice::devices().
It also adds proper QTouchDevice unregistration when the underlying
input device gets removed by the evdevtouch QPA plugin.
Change-Id: I7bdf2f7435c775d15bddce8ba1e731afdc1d948a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Most processors have carry flags which they set on addition overflow, so
it's a good idea to access them whenever possible. Most of them also
have widening multiply instructions that can be used to detect overflow
of the non-widening version.
Tested to compile on:
Architecture Compiler
x86 GCC 4.9, GCC 5*, Clang 3.6*, ICC 16 beta
x86-64 GCC 4.9, GCC 5*, Clang 3.6*, ICC 16 beta
x86-64 ILP32 GCC 4.9, GCC 5*, Clang 3.6*
IA-64 LP64 GCC 4.8
ARMv7-A GCC 4.9, Clang 3.6*
AArch64 Clang 3.6*
MIPS GCC 4.9, Clang 3.6*
MIPS64 GCC 4.9, Clang 3.6*
PowerPC GCC 4.9, Clang 3.6*
PowerPC 64 GCC 4.9, Clang 3.6*
SPARC Clang 3.6*
SPARCv9 Clang 3.6*
[*] supports the intrinsics
If the compiler does not offer a way to detect an overflow, we do it by
hand. For unsigned additions, that's easy, since the C++ language
specifies the behavior of the overflow. That's also the reason why this
code is implemented only for unsigned integers.
For the multiplication, if the compiler does not support widening
multiplications, we do it with a division instead. This is necessary for
GCC < 4.5 and compilers not compatible with GCC or MSVC.
Change-Id: I049a653beeb5454c9539ffff13e637de0f1338c1
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
If you don't deleteLater and more won't work
Change-Id: I47cbb24f8e22a7f269a0297410e4163878819f82
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>