Commit Graph

16681 Commits

Author SHA1 Message Date
Roland Winklmeier
419a1f53d5 Add method to QDBusServer to allow anonymous client connections.
This change adds a new method to QDBusServer to allow anonymous
connections. This is part of the DBus API and was not yet possible
to use with QDBusServer. It is set in the newConnection callback
when a new client tries to connect.
Anonymous connections are enabled by default in DBus but not allowed
by default.

[ChangeLog][QtDBus][QDBusServer] Added method to QDBusServer to allow
anonymous client connections, even if the connecting client is not
authenticated as a user.

Change-Id: I984c9e634101ecd2e67bb25c8d12bb1071836fd3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-15 14:15:22 +01:00
Olivier Goffart
40133df06f moc: Fix -Wsign-conversion warning in the moc generated file
There is the warning it fixes:

moc_foo.cpp:28:9: warning: conversion to ‘qptrdiff {aka long long int}’ from ‘long unsigned int’ may change the sign of the result [-Wsign-conversion]
         - idx * sizeof(QByteArrayData) \
         ^
qarraydata.h:282:49: note: in definition of macro ‘Q_STATIC_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET’
     { Q_REFCOUNT_INITIALIZE_STATIC, size, 0, 0, offset } \
                                                 ^
moc_foo.cpp:26:5: note: in expansion of macro ‘Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET’
     Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
     ^
moc_foo.cpp:33:1: note: in expansion of macro ‘QT_MOC_LITERAL’
 QT_MOC_LITERAL(1, 23, 5),
 ^

[ChangeLog][moc][QTBUG-36128] Fixed sign conversion warning in generated file.

Task-number: QTBUG-36128
Change-Id: Ibf00974dbfb419bb53a3109d93e4cee598bb0588
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-15 08:18:11 +01:00
Friedemann Kleint
1cf5cd34f7 Windows: Silence warnings about BitBlt() failing.
After showing the lock screen, spurious warnings about BitBlt()
failing occur with last error set to ERROR_SUCCESS or
ERROR_INVALID_HANDLE.

Task-number: QTBUG-35926
Task-number: QTBUG-29716

Change-Id: I3e899cdf1ae60e76d13b81caec43716ad7c9725d
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-01-15 06:32:41 +01:00
Thiago Macieira
1949a8c003 Let Apple Clang 5.0 also have -Werror support
Change-Id: I3abc83617c8f3426e4f5920052281fe13e4e3edc
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-01-14 23:32:21 +01:00
Konstantin Ritt
88f6382cf0 Add new BiDi control characters to Unicode control character menu
Change-Id: I0e3253965b36c7c831f0212c6e55ca310a3ad6c4
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-14 15:39:16 +01:00
Konstantin Ritt
da979ed2ae Regenerate the Unicode data tables
Change-Id: I2288c88ccfa0c9e339f8ef140cee74a518e72b35
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-14 15:39:05 +01:00
Konstantin Ritt
edfce46a6c Update the Unicode Data and Algorithms up to Unicode 6.3.0
* Mongolian and Phags-pa characters have been given a Joining_Type
  classification for contextual shaping. As a part of these additions,
  one Phags-pa character has the Joining_Type value of L (Left Joining),
  which no character had been assigned before.
* The unassigned code points in the Currency Symbols block have been
  given the Bidi_Class property value ET and the Line_Break property
  value PR, to help implementations support new currency symbols,
  when they are encoded.
* Hebrew letters and basic punctuation marks have been assigned
  the newly introduced Word_Break property values Hebrew_Letter,
  Single_Quote, and Double_Quote.
* The Bidi_Class property has been extended with four new values
  for directional isolates.
For more details, see http://www.unicode.org/versions/Unicode6.3.0/

Change-Id: Iad62d02edc58a8497898dcd6d6c70d5aece317ea
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-14 15:38:57 +01:00
Konstantin Ritt
a6046be428 Update UCD source files up to Unicode 6.3.0
Change-Id: I9ab58a659af1e758b172a24aa95bce1fea89c33d
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-14 15:38:43 +01:00
Allan Sandfeld Jensen
396f631e15 Fix build with precompile headers
Get the CXX compiler using $$QMAKE_CXX instead of ${QMAKE_VAR_QMAKE_CXX}
which causes shell syntax errors when combined with the silent flag.

Task-number: QTBUG-36159

Change-Id: I26cdbe788a20bd2df1aa3563694648e41c082a2c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-01-14 10:38:29 +01:00
Oswald Buddenhagen
882bf3475c expand tabs and related whitespace fixes in *.{cpp,h,qdoc}
the diff -w for this commit is empty.

Started-by: Thiago Macieira <thiago.macieira@intel.com>
Change-Id: I77bb84e71c63ce75e0709e5b94bee18e3ce6ab9e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-13 22:46:50 +01:00
Thiago Macieira
81157d2374 Use the QMAKE_CXXFLAGS_WARN_ON variable for setting -Werror
This would mean we don't pass -Werror when under CONFIG += warn_off.
However, that's not the main goal. The main goal of this change is to
have -Werror appear *after* -Wall -Wextra.

With some compilers, like Clang, this is necessary to have the
-Wno-error=foo options work properly. For example, if the -Wfoo
warning gets enabled by -Wall, Clang will treat it as an error if the
arguments appear in the following order:
   -Werror -Wno-error=foo -Wall

But not if they appear in this order:
   -Wall -Werror -Wno-error=foo

Change-Id: I38c820bffc8277d909391e9bf557db5347836b9c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-01-13 22:46:50 +01:00
Joerg Bornemann
d19eef3bbb d-pointerize QWinOverlappedIoNotifier
Preparation for removing the qt_windows.h include from
qwinoverlappedionotifier_p.h.

Change-Id: I27ab3891962327ab5db75fbfcc3cf57c50a0d1c4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Laszlo Papp <lpapp@kde.org>
2014-01-13 20:45:10 +01:00
Konstantin Ritt
adcab02d96 Update the time zones database from CLDR v.24
Change-Id: Icab298f971980982412621a48c635a05f6ef5d36
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: John Layt <jlayt@kde.org>
2014-01-13 19:02:10 +01:00
Konstantin Ritt
4f8f0f16d0 Update the internal CLDR tables up to v.24
Change-Id: I9c0b110e36dd80c6a0b7275aa13bc548419aca9c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: John Layt <jlayt@kde.org>
Reviewed-by: Mehdi Fekari <mfekari@blackberry.com>
2014-01-13 19:02:10 +01:00
Laszlo Agocs
9752cf7d13 linuxfb: Migrate to QRegularExpression
Change-Id: Ieeef375a5f613c09b2c85f632a093dd575290ba2
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-01-13 17:28:07 +01:00
John Layt
98504fb82d QPrinter - Add missing PaperSource values
Add extra PaperSource values for all Windows DM_BINS values.  Also add
CustomSource for use on OSX and CUPS when the PPD defines an InputTray
value that cannot be matched.

Change-Id: I2dfd565288942705a9872ab1b7c4cd32722ba674
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2014-01-13 16:38:31 +01:00
Tor Arne Vestbø
c3c3dcf87d iOS: Enable C++11
We already require iOS 5.0 for deployment.

Change-Id: Idc175892297aacc904888b7f213318e5df69f975
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-01-13 16:33:00 +01:00
Andrew Knight
5f56af8c89 Compile fix for Windows Phone
Shlobj.h should not be included on Windows Phone. As it isn't needed
for WinRT in general here, exclude it.

Change-Id: I1eaa50ab8825d2f43d59272c841673c3e9e1e12a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-01-13 13:24:13 +01:00
Andrew Knight
dc9b194f6b WinRT winmain: fix linker error on x86 compilers
The x86 PC and Phone emulator compilers choke on WinMain's signature not
matching the stdcall exported version. This fixes the issue.

Change-Id: I30d8a5dab67f3f1f15869abe2928326e3401dc43
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
2014-01-13 13:24:11 +01:00
Fabian Bumberger
109e155c3f Remove unnecessary call to updateHirarchy
updateHierarchy is already called in the lower/raise member function in
the QQnxWindow.

Change-Id: If3765fa7a7e69273672d47003534b04e3615916c
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-01-13 12:32:20 +01:00
Friedemann Kleint
bb9fd68ea7 qguiapplication_p.h: Compile fix for Android.
In file included from qguiapplication_p.h:1:0,
                 from src/qandroidplatformdialoghelpers.cpp:46:
src/gui/kernel/qguiapplication_p.h: In static member function 'static Qt::Alignment QGuiApplicationPrivate::visualAlignment(Qt::LayoutDirection, Qt::Alignment)':
src/gui/kernel/qguiapplication_p.h:171:45: error: ambiguous overload for 'operator==' (operand types are 'QFlags<Qt::AlignmentFlag>' and 'int')
         if ((alignment & Qt::AlignAbsolute) == 0 && (alignment & (Qt::AlignLeft | Qt::AlignRight))) {

Initial-patch-by: BogDan Vatra <bogdan@kde.org>

Change-Id: I560b5c4c1db59da6f2a5e1e05c32a31f8e1dac22
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-01-13 12:28:31 +01:00
Łukasz 'sil2100' Zemczak
d9b5e70459 Introduce a way of explicit selection of the platform theme
Introduce a way of explicit selection of the platform theme to be used,
either through a new environment variable - QT_QPA_PLATFORMTHEME, or by
the optional -platformtheme command line argument.

Task-number: QTBUG-30091
Change-Id: Ieaa96b52265c3e48d056af7e56e793d8531fd7b3
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-01-13 10:16:39 +01:00
Jędrzej Nowacki
43f9bb9a80 Extend QTRY_COMPARE and QTRY_VERIFY macros
We need to fix CI, one of the most common complains is that CI machines
are overloaded and some tests simply timeouts. This patch extends QTRY*
macros to gather statistics. Each time a QTRY* macro is used it is
waiting for the expression to be true by certain time (by default 5 sec)
Next, if it failed, it waits twice as much to prove that the expression
is not affected by CI machine slowness, then fails anyway.

Before the next major release, we should decide if this functionality
should be included, as it changes behavior slightly.
The following task should be kept open until the decision has been
made:

Task-number: QTBUG-36036

Change-Id: I7ab5070cb7eb7d96a7289dd7b2bebf91d93090e5
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-01-13 10:02:10 +01:00
Frederik Gladhorn
019588f307 Testlib: Add test duration to xml output
[ChangeLog][QtTest] Added test duration to xml output.
When running tests with xml output a new tag of the form
<duration msecs="123"/> is added to each test function and the test as a
whole.

Change-Id: Ibc4db066b6acf5fac6c578f5e5ca5ce4b5d8ea8e
Reviewed-by: Sergio Ahumada <sahumada@blackberry.com>
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2014-01-13 07:13:17 +01:00
John Layt
19be46414a QTimeZone - Change from Olson ID to IANA ID
Complete changes from using Olsen/Olson in the code to IANA.  Completes
a change started in 5.2 release branch on the public occurrences.

Change-Id: Ib077fcda2c77eef6f04ec28901d8d2d7210b8c72
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-11 17:23:25 +01:00
Nehme Bilal
20a03d5612 BlackBerry: Add a private PPS API
The PPS API is needed to implement other Qt APIs on BlackBerry.
It is a private API that cannot be accessed from outside Qt (*_p).

Change-Id: Id33d2f9a415f49d51812ae860a15e8cc5636676b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-01-11 02:51:18 +01:00
Donald Carr
151bea6aae Fix namespaced build on Linux
Change-Id: I01f389517824e3ada4e4ab153c41c58f05a246fd
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-01-10 23:19:46 +01:00
Thiago Macieira
d82ec6a168 Add -Werror support for the regular Clang, not Apple's
Base modules already work and produce no warnings.

Change-Id: I932d7aaecbe3404f180e185bf1e9fff4d488a05d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-01-10 19:31:31 +01:00
Friedemann Kleint
6714196f45 QWizard/Windows: Add keyboard shortcut for 'Next'/'Back'.
Task-number: QTBUG-35203

Change-Id: If7312e8675b21be9dc6836b92805dc87007205e7
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-01-10 19:14:08 +01:00
Frederik Gladhorn
658d3114d2 Use new connect syntax
Change-Id: I61ada9387c6d09f86afa8ace46257c7e5ef27e72
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-01-10 18:49:05 +01:00
Frederik Gladhorn
7917dfbf1c Merge remote-tracking branch 'origin/stable' into dev
Change-Id: I99af0bef7f1c931533a324ebcfb27c40ee871a5e
2014-01-10 18:27:49 +01:00
Gatis Paeglis
b088e4827f Fix bug on X11 with WA_TranslucentBackground and native child windows.
The native child windows need to inherit the parent's visual in order
to have a translucent background as well.

Surface with type QSurface::OpenGLSurface should not be forced to use
the parent window's visual - the parent visual for instance, might not
even be GL capable.

Changing WA_TranslucentBackground during runtime is not supported, for
two reasons:

1) Other platform plugins seem not to support it
2) It would require recreating X windows.

Task-number: QTBUG-29625

Change-Id: Ic1474dd2de99069027481c7db6bf865f9b8d616d
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-01-10 15:37:51 +01:00
Louai Al-Khanji
b9362903b3 Add new direct2d platform plugin
This is an alternative plugin for the windows platform. It shares most
code with the current windows plugin, but substitutes a direct2d-based
paint engine for window backing stores and pixmaps.

Change-Id: I78fafd9c5871fa090b49436f5b40ec80f8789f8b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-01-10 15:10:29 +01:00
Louai Al-Khanji
5a2fc4c367 Shuffle things around in preparation for Direct2D platform plugin
Add a layer of abstraction in some spots where the Direct2D plugin will hook in.

Change-Id: Ifca7daf6ad0284af52a81822e970c2317d339234
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-01-10 15:10:29 +01:00
Morten Johan Sørvig
8166a34fc5 Support running Qt apps on the integrated GPU
By default starting an app that uses OpenGL will
switch machines with dual graphics hardware over
to the discrete GPU. This causes a delay at startup
and possibly increased power usage.

It is possible to prevent the switch:

1) Add the NSOpenGLPFAAllowOfflineRenderers attribute
to the OpenGL pixel format. This is done in this commit.

2) Add <key>NSSupportsAutomaticGraphicsSwitching</key><true/>
to the apps Info.plist. This final opt-in is left to
the app author.

Change-Id: Ibff56fd7770a6b7f8041c8bb60bf290eed24330a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-01-10 13:28:13 +01:00
Allan Sandfeld Jensen
db73862302 Avoid unnecessary double conversion over ARGB32 and ARGB32PM
Currently if the converter_map does not have an entry for how to
do a direct conversion, the image is first converted to ARGB32 and
then to the final format. In most cases the conversion to ARGB32 is
the generic converter which convert over ARGB32PM, which mean the data
is converted to ARGB32PM then to ARGB32, then to ARBG32PM and then to
final format.

This patch uses the generic converter directly everywhere there isn't
an optimized converter declared and it is valid.

Change-Id: Ibad57432ef8c58025e63a032b09f92dad4a559ee
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-01-10 09:44:18 +01:00
Allan Sandfeld Jensen
8bd238041e Clean up qimage.cpp by moving all the conversions methods out
A large part of qimage.cpp is the implementation of the various
conversions methods from one format to another. These methods could all
be moved to a separate file to make qimage.cpp smaller, and possible
later enable more aggressive optimization on the conversions.

Change-Id: I355806710281b4222114cdd9c35a7c28cbc0f692
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-01-10 09:44:12 +01:00
Tasuku Suzuki
eb5c0f4b12 Make qtbase compile with QT_NO_XMLSTREAMWRITER
Change-Id: I6d2447ba0875117e8a50d1aa3133bd5ea098d51a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-01-10 04:53:36 +01:00
Thiago Macieira
e0a21c71f4 Don't check if a file exists before opening it
If the file doesn't exist, open() will fail. But open() might fail
even if the file exists(), which would lead to bad follow-up code. In
any case, this saves one unnecessary stat(2).

Change-Id: Ic99507c9dc07a4387ee6a4fe9c24830fca54e095
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2014-01-10 02:35:21 +01:00
Thiago Macieira
47a0d64dcf Fix QtWidget function-unused warnings found by Clang 3.4
qwidgetbackingstore.cpp:72:20: error: unused function 'qRectIntersects' [-Werror,-Wunused-function]

Change-Id: Ia3afe8f0547fa86804093281db89efabe68b34a1
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2014-01-10 02:33:50 +01:00
Thiago Macieira
52441ecd44 Remove unused member m_eglApi
It's not used anywhere. Found by Clang 3.4:

qeglplatformcontext_p.h:80:13: error: private field 'm_eglApi' is not used [-Werror,-Wunused-private-field]

Change-Id: I37ce240a9d07ef570e0814de366dbb7cd13ad714
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2014-01-10 02:33:45 +01:00
Thiago Macieira
17da13baaa Fix unused function warnings in qtriangulator.cpp
qIntersectionPoint with ints wasn't used, qDot was only used in debug
mode. Found by Clang 3.4.

Change-Id: I4b5699f75eb88331df54bf5a289133914d80b299
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-01-10 02:33:41 +01:00
Thiago Macieira
f4d3196e4f Fix function-not-used warnings detected by Clang 3.4
These functions have been turned to static (although inline), which
means they need to be used or marked as possibly unused.

qglobal.h:712:37: error: unused function 'qFuzzyCompare' [-Werror,-Wunused-function]

Change-Id: Ie2ee713d26c86e0574b579c1ea42b9404c3d2035
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-01-10 02:33:37 +01:00
Thiago Macieira
bbcdfb324b Fix file descriptor leak in the perf event counter
We opened the counter at every start(), even if we had already started
before. Some of the benchlib's options caused it to start() and stop()
over and over again, like -minimumvalue and -minimumtotal, which could
leak to fd exhaustion (EMFILE).

Change-Id: Ifeb7cca65c758877be600dc22928bea74f499934
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2014-01-10 02:33:32 +01:00
Thiago Macieira
eaedc04d90 Autotest: Fix QDateTime failure if the test got run West of Greenwich
There was a comment about the test failing for max() because of an
overflow. That happens if you're at UTC or ahead of it (to the East of
the Prime Meridian), which is how this test usually gets run (UTC,
Europe/Oslo, Europe/Helsinki, Pacific/Auckland). But if you're behind
UTC (to the West of the Prime Meridian), then the overflow happens for
min().

Change-Id: Iebba49d1303e9f18f5038f5cf23c77bf83e5fd4b
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2014-01-09 22:49:23 +01:00
Thiago Macieira
0e4d94edd0 Add QTypeInfo<T>::isIntegral trait
This allows us to know whether a given type is an integer or not. It's
going to be useful for QAtomicInteger, to know whether certain
operations can be performed on the type.

Change-Id: Ie64b24993e4021b44c97952d7d3973759fef3d4c
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-01-09 22:34:54 +01:00
Thiago Macieira
2b82923c8f Use the new UTF-8 codec in QUrl and QUrlQuery
The new code is based on what QUrl already had, so this should have no
net effect in performance.

Change-Id: Ibb2fabd5a108e99a44e0e6e3f713ce2f8b26e4d7
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-01-09 22:34:54 +01:00
Thiago Macieira
cd750c86d6 Use the new UTF-8 codec in QJsonDocument
The encoder is in qjsonwriter.cpp, which requires special handling for
ASCII due to the use of escape sequences. The decoder is in
qjsonparser.cpp, which only scan one character at a time.

As a side-effect, the JSON parser now reports the UTF-8 error in the
first character with error, instead of the last. This is probably what
should have been expected.

Change-Id: I52e5bc30d71466b6a36098b4150c61b2e385d8e9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-09 22:34:54 +01:00
Thiago Macieira
8dd47e34b9 Add a new UTF-8 decoder, similar to the encoder we've just added
Like before, this is taken from the existing QUrl code and is optimized for
ASCII handling (for the same reasons). And like previously, make
QString::fromUtf8 use a stateless version of the codec, which is faster.

There's a small change in behavior in the decoding: we insert a U+FFFD for
each byte that cannot be decoded properly. Previously, it would "eat" all bad
high-bit bytes and replace them all with one single U+FFFD. Either behavior is
allowed by the UTF-8 specifications, even though this new behavior will cause
misalignment in the Bradley Kuhn sample UTF-8 text.

Change-Id: Ib1b1f0b4291293bab345acaf376e00204ed87565
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-09 22:34:54 +01:00
Thiago Macieira
d51130cc3a Add a new UTF-8 encoder and use it from QString
This is a new and faster UTF-8 encoder, based on the code from QUrl. This code
specializes for ASCII, which is the most common case anyway, especially since
QString's "ascii" mode is actually UTF-8 now.

In addition, make QString::toUtf8 use a stateless encoder. Stateless means that
the function doesn't handle state between calls in the form of
QTextCodec::ConverterState. This allows it to be faster than otherwise.

The new code is in the form of a template so that it can be used from
QJsonDocument and QUrl, which have small modifications to how the
encoding is handled.

Change-Id: I305ee0fd8523cc4ec74c2678cb9ea88b75bac7ac
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-01-09 22:34:54 +01:00