Unfortunately the functions in xcb-image are quite slow, both for the
subimage generation and the byte order swapping. xcb_image_subimage is
implemented as a pixel by pixel copy, and the xcb byte swapping is done
manually without utilizing potential CPU instructions to accelerate the
swap.
Replace both with their Qt equivalents.
Change-Id: I1fe1fe5d9576fdf2bab4a8c401d2a6bb842c2727
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Manual splitting instead of QStringRef::split()
Change-Id: I27ccf1c4e44ead5b13f85f2cdbd990cb3b874a7a
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
For CoW types const methods will be called.
For QDate we can use new const getDate() method.
Change-Id: Ie3a4fe48b3635d270a79c9ac5205b835b3442eae
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
The controlPointRect is a conservative area that is guaranteed to
contain the path, if that does not intersect with the painter's device
rect, the path must be fully outside the painted area, and can be
ignored.
Change-Id: If14d7dbaf916aa284b941d01e773da3365dce5bf
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
This patch improves support for non-32bit screen configurations on X. The
patch mostly touches the xcb platform plugin but the changes to the glx
convenience functions do affect e.g. the offscreen plugin as well.
Since QWindow instances are now by default of type RasterGL instead of
Raster the majority of all windows are in fact instances of QXcbGlxWindow.
This means that the eventual QSurfaceFormat that we use is chosen based on
the available OpenGL configurations. Here the GLX config resolution code
did not do a very good job in trying to find the closest match relative to
the requested QSurfaceFormat, instead preferring higher bit depths.
This is an issue since many configurations support 32-bit windows even
if the screen itself has a root window with depth 16. In particular,
servers supporting both GLX and Render are very likely to have such
visuals. Particularly affected are remote X connections - even if the
application itself makes no use of OpenGL at all!
The changes introduced by this patch are as follows:
1. Improve the GLX visual selection logic
2. Improve the xcb visual selection logic
3. Remove duplicated visual lookup for OpenGL-enabled windows
4. Configure the default QSurfaceFormat to match the primary screen depth
Change-Id: Id1c176359e63a4581410e20350db5ac2c083e1cf
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
... instead of using removeAt in a loop, with quadratic complexity.
Change-Id: I38b49e56b12c396db9fc0f1b75d8fb43c503a7f6
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
It's urgent to fix the issue that on Android, it became impossible
to interact with any widget or MouseArea which handles only mouse
events but not tablet events, using the stylus, because stylus events
are sent only as QTabletEvents. Before 5.6 (change
01d78ba86a) they were sent as
touch events, and mouse events were synthesized from those. Whereas
on other platforms, every QTabletEvent is followed by a synthesized
QMouseEvent.
This fix proceeds in the direction that event synthesis should be done
in cross-platform code so that platform plugins don't have to repeat it,
following the same pattern as for touch->mouse synthesis. Just as
in that case, the application can disable it, and the platform plugin
can also report that it's unnecessary for Qt to do the synthesis
because the platform already does.
So QTBUG-51618 is fixed, but QTBUG-47007 requires us to remove the
tablet->mouse synthesis from all platform plugins, because the plugin
does not know whether the tablet event was accepted or not, so it does
not have enough information to decide whether to synthesize a mouse
event. Synthesis has been unconditional until now, which contradicts
what the documentation says: the mouse event should be sent only if
the tablet event is NOT accepted. We can now gradually make this
promise come true.
[ChangeLog][QtCore][Tablet support] A synthetic mouse event will
no longer be sent after every QTabletEvent, only after those which are
not accepted (as documented).
Task-number: QTBUG-47007
Task-number: QTBUG-51618
Change-Id: I99404e0c2b39bbca4377be6fd48e0c6b20338466
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Documentation was missing for the new toCurrencyString() function that
adds a precision value.
Change-Id: I16c10cdd18dfc37839fccb907470b0942f100e5d
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
It probably wasn't necessary in the first place, but it
certainly isn't needed now. Also changed a pair of internal
qdoc comments on static functions that are not declared
outside the .cpp file. Now they are no longer qdoc comments.
This change does not require clang in qdoc.
Change-Id: I39df3eb1e3f57ba1da93f27892d0c3af8f9481ef
Task-number: QTBUG-52454
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
These uses of Q_QDOC cause clang to report syntax errors.
They are used to hide function return values as qreal
instead of using double and float. The decision is to be
more transparent and use double and float in the docs
instead of qreal.
This change does not require clang in qdoc.
Change-Id: I65b3afb693b1eff486b0b45b8d972fec96953c5f
Task-number: QTBUG-52454
Reviewed-by: Martin Smith <martin.smith@theqtcompany.com>
We are already QT namespace, no need in QT_PREPEND_NAMESPACE.
The original code had invalid '::' thus referencing a name from
a global scope, it was fixed by QT_PREPEND_NAMESPACE, but
just removing '::' is enough.
Change-Id: Icda2a2ce8e474a358b74edd49bca487621608e78
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
In 208496091d, the behavior of
QTextOption::ShowLineAndParagraphSeparators was changed to also
include a section symbol at the end of the document. This was
an unnecessary behavioral change. Instead we add a separate flag
for this marker.
[ChangeLog][QtGui][Text] Added QTextOption::ShowDocumentTerminator
flag.
Task-number: QTBUG-52048
Change-Id: I2f6f7e5c9c894f46525682f2c6520a7003fa09bc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
This is more concise, consistent with Windows, and fits the pattern
that all logging categories in QPA plugins should begin with qt.qpa.
Change-Id: Ica169b547cb3d816e6e2c0449f0e4a0c58883b9a
Reviewed-by: Gatis Paeglis <gatis.paeglis@theqtcompany.com>
* A bunch of fixes and additions to the locale data
* Add new scripts from Unicode 8.0 and 9.0
* Map some potentially useful languages and territories
[ChangeLog][QtCore] QLocale data updated to CLDR v29
Change-Id: I759ccb27fe19be2722be913c5c2e6aa5f36e5c14
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
According to the Qt 5.6.0 change log, OS X 10.7 is to be REMOVED as a
supported platform in Qt 5.7.
Change-Id: I53313fd34d42757dd35a28cd227fc0dda3389932
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
no-zlib is no longer supported, so these lines can't have any effect.
Change-Id: Ib5ef9a97a0687945606b4a718e339590bc501fe9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
The feature is called xinput2, so the defines should have this in their name as well.
Change-Id: I661dd3ea3726f4a0954e788d5f0083ace10bbe89
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Most libs use QMAKE_LIBS/CFLAGS, but some have other naming
conventions. Unify them into using QMAKE_LIBS/CFLAGS.
Change-Id: I39b188adc1f9a223a83b294c5315c3095a9c68de
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
It's 2016, and file sizes larger than 4G are common, so
-no-largefile is something we really shouldn't support
anymore.
For now left the implementation as is, just removed the
configurability from the command line. But this should
really get replaced by decent configure checks that
check for 64bit stat() vs stat64() vs 32bit stat().
Change-Id: I057515e3cc1f06a022d80f02e866944428026b1d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Replace substring functions that return QString with
corresponding functions that return QStringRef where
it's possible.
Create QString from QStringRef only where necessary.
While touching the code, also port loops to C++11 style.
Change-Id: Ib94d29b6ecec1cdab2604d0277a743e8b340be5e
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
TUIO supports tracking tagged physical objects on touchscreens by
various means (QR codes, RFIDs etc.) It can detect both position
and rotation. Likewise, it may be possible for some touchscreens or
drivers to detect orientation of the fingers. So, just as QTabletEvent
has rotation, each touchpoint needs to include the rotation value.
When using tokens, each object has a permanent unique ID, whereas
QTouchEvent::TouchPoint::id() is a transient ID which usually auto-
increments each time a finger is pressed to the device. So we need to
make that available too, to identify each token. Different platforms
may use different kinds of IDs (int, UUID, QR code etc.); however for
TUIO 1.x, the unique IDs are just 32-bit integers. QPointerUniqueId
is added, storing only a qint64 for now (like QTabletEvent::uniqueId())
but able to be expanded as necessary later on.
Task-number: QTBUG-51844
Change-Id: I04182042f47fa2954728079139a4664a31184b54
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
To avoid infinite loop on unbuffered socket, previous implementation
always disabled the read notifications before emitting a readyRead()
signal. So, it's very likely that the socket will toggle the state of
notifier twice (on->off->on) in one notification cycle.
This patch prevents this unnecessary toggling by deferring the
notification disabling in canReadNotification() to the next
notification cycle.
Change-Id: Iebc5a7ad18a6f40ea1cf63e7f1b12f6c180cbf7a
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
When QT_XCB_GL_INTEGRATION=none we were printing:
1) qt.xcb.glintegration: QT_XCB_GL_INTEGRATION is set to "none"
2) qt.xcb.glintegration: Choosing xcb gl-integration based on following priority ()
3) qt.xcb.glintegration: Failed to create xcb gl-integration
Omit line 2 (useless) and line 3 (misleading).
Change-Id: If5e65a5bc8cc4a1fa97858049a26aac9a9535950
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Most containers have them in Qt 5.7, so add them
to QStringRef, too.
Brush up the docs, use the const_iterator typedef
in the API, for consistency with QString's docs.
[ChangeLog][QtCore][QStringRef] Added reverse iterators,
rbegin(), rend(), crbegin(), crend().
Change-Id: I3d2884a1b2faae02c610ab3871552b65bc6e2521
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Remove Windows CE-specific files, #ifdef sections for Q_OS_WINCE and wince
.pro file clauses in library, examples and tests.
Task-number: QTBUG-51673
Change-Id: I102745aaca9d9737f2108fe7618111743d5ae980
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
These are not being used in Qt anymore, we use their
xcb replacements instead where it makes sense.
Task-number: QTBUG-30939
Change-Id: I2d8141818b402c23b29b0c0398f876a6189d0d27
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Compiling the drivers into Qt Sql does not make a lot of sense
anymore, as we handle plugins well enough in the build system
these days.
[ChangeLog][Build system] SQL drivers are now always compiled as plugins.
Change-Id: I364b82a480849399d1fafe4b20e9f08922569260
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
Our handling of plugins when Qt is build statically is
nowadays good enough, so we don't need to build the
JPEG and GIF support directly into Qt for static builds.
Let's simply always build them as plugins.
Also simplify the logic in configure, and get rid of the
no-gif, no-jpeg and no-png config variables.
[ChangelLog][Build system] JPEG and GIF image support is now
always built as a plugin. Removed -imageformat-[jpeg|gif]
arguments to configure.
Change-Id: Ic01559ff406c966807b3be8761252e8802adcdf7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
According to RFC 2640, FTP uses UTF-8 encoding. Fix the conversions
accordingly.
Task-number: QTBUG-52303
Change-Id: I615199b3d074fc3861f25df113dda672525766b6
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
Their implementations were swapped.
Found while extending tst_qstringapisymmetry, which only exists in
dev, so test will be added to dev once this change has merged up.
[ChangeLog][QtCore][QStringRef] Fixed relational operators against
(const char*) to return the correct result.
Change-Id: I3f331037571b9a543a6885802836b768143d1c1a
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Pass the DC obtained drawBackground() to drawBackgroundDirectly(),
saving a call to hdcForWidgetBackingStore() to find it.
Pass the error code from the Win32 API DrawThemeBackground()
to the calling functions.
Change-Id: I1c25241f53d87e4429ad924f7b2e29da215d7e4f
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Separate factors in QWindowsCursor::createPixmapCursor()
and apply factor to the hotspot.
Task-number: QTBUG-52276
Change-Id: Ia5a5db39ddc2bc4215a23ff8625431af9b4a76d8
Reviewed-by: Adam Light <aclight@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Its "rules" are actually guidelines, its suggested regex was wrong,
its actual implementation was fuzzier than its documentation suggested
and the exception it tacitly permitted should be distinguished from
the stricter rules it otherwise appears to implement. There was also
a redundant check ('-' had been handled earlier in the chained if).
Explain why the situation is tricky, fix the regex mentioned (making
it more readable, too) and note what might be worth doing a little
more fussily, without actually changing code behavior.
Change-Id: I93fa0da0640a134e5d84011b435a186576824063
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Directly link against DwmApi and fix breakage introduced by refactoring
QRegion.
Change-Id: I45cd696de630aebb5347130560ab69530eefbcdb
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>