Commit Graph

1685 Commits (4591f67e917c4a0ecfbb99c7e37d3ebbf4280c9c)

Author SHA1 Message Date
David Faure e0cf8cf5f1 Fix crash when using QCoreApplication::applicationName in a global static
e.g. when a global-static configuration object uses QTemporaryFile
for saving to disk (via QSaveFile).

Change-Id: I532aec6de7411e10e4461d5a4ac60686e2f482df
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-23 10:13:43 +02:00
Tasuku Suzuki 7e6cd359af Remove STL from qfeatures.txt
QT_NO_STL is now no longer available

Change-Id: I645a45e4b47539c936ef458b5c616c02f7097ca4
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-22 20:56:38 +02:00
Thiago Macieira 2c9228973f Deprecate {QString,QStringRef,QChar}::{to,from}Ascii
Make them call exactly their Latin 1 counterparts.

For the QString functions that take a single char, also use fromAscii
directly.

Change-Id: I87645aba6ab9cde34c1df3cbc3a979fbd9e91f9d
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-22 20:56:38 +02:00
Thiago Macieira 1ca791faf5 Add the QUrl::FullyDecoded flag to the component formatting
This allows the QUrl component getters to return fully decoded data,
like they did in Qt 4. This is necessary for some use-cases where the
component like the user name, password or path are used outside the
context of a URL. In those contexts, the percent-encoded data makes no
sense, and the loss of data of what could be represented in a URL is
acceptable.

Also take the opportunity to expand the documentation of those getter
methods, explaining what the options argument does.

Discussed-on: http://lists.qt-project.org/pipermail/development/2012-May/003811.html
Change-Id: I89f743cde78c02f169c88314bff0768714341419
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: David Faure <faure@kde.org>
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
2012-05-22 20:56:38 +02:00
Thiago Macieira 53d0624403 Add QUrl::ParsingMode to the component setters in QUrl
This allows one to instruct QUrl to ignore the percent-encodings and
interpret the data exactly as provided. This is useful in certain
use-cases where the data comes from a non-URL context.

The strict-mode checking of the components is not implemented
yet. Currently, the behaviour is equal to that of TolerantMode.

Discussed-on: http://lists.qt-project.org/pipermail/development/2012-May/003811.html
Change-Id: Ia5abe045a8ce7f9b50cbce3b5a7e3735e068d03a
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
2012-05-22 20:56:38 +02:00
Thiago Macieira 239dd9fef1 Add the QUrl::DecodedMode parsing mode
This mode will be used to support parsing of URL components in their
fully-decoded forms. It is not permitted when parsing the full URL, as
that would be ambiguous.

Change-Id: Id8d39a740845ae8d1efef894085280b322e39c0a
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: David Faure <faure@kde.org>
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
2012-05-22 20:56:38 +02:00
Thiago Macieira f0ec001242 Port away from QUrl::MostDecoded
Since we're about to introduce QUrl::FullyDecoded, this
QUrl::MostDecoded value would be confusing. Replace its uses with what
was intended at the point in question.

Change-Id: Iefd87bc33d37bace507c5cb0f206fa902e08e2df
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: David Faure <faure@kde.org>
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
2012-05-22 20:56:38 +02:00
Thiago Macieira 09c90c9fc3 Make QStringLiteral always choke on non-literals
The fallback implementation of QStringLiteral did not (up to now)
enforce the need to use a literal. So it was possible to write:

  const char *foo = "Hello";
  QString s = QStringLiteral(foo);

Which would do the wrong thing and create s == "Hel" on 32-bit
platforms (sizeof(foo) == 4) or, wrose, s == "Hello\0XY" on 64-bit
platforms (sizeof(foo) == 8, X and Y are garbage).

This change enforces the need for a literal by producing errors on the
above cases, as well as when foo is a char array variable.

GCC:
error: expected ‘)’ before ‘foo’

Clang (abbreviated):
error: expected ')'
namespace X { QString x() { const char foo[42] = "Hello"; return QStringLiteral(foo); } }
                                                                                ^
note: to match this '('
                                              ^

ICC:
error: expected a ")"
  namespace X { QString x() { const char foo[42] = "Hello"; return QStringLiteral(foo); } }
                                                                   ^

The first C++11 error currently is:
error: expected primary-expression before ‘enum’  (GCC)
error: expected a ")"   (ICC)

Change-Id: I317173421dbd7404987601230456471c93b122ed
Reviewed-by: hjk <qthjk@ovi.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-05-21 16:02:06 +02:00
Friedemann Kleint 81c53721d0 QRegularExpression: Fix warnings about deprecated tr()-function.
Change-Id: I2325bcab9bb80e5507f53887b282a859d0fdb58c
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2012-05-21 13:00:38 +02:00
Friedemann Kleint 53a1e74009 Fix MSVC warnings about struct/class mismatch for dynamic metaobjects.
Change-Id: I263f25161fa1861ca5e7da9440214fd3ba6e944e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-05-21 12:58:54 +02:00
Leonard Lee 24395a02c9 Elaborate QUrl::toString() documentation.
Change-Id: If2d726e7b4e8d408312fcb138c3dd146926bfd9a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-21 12:58:47 +02:00
Jan-Arve Saether a55bc3da20 Get rid of ambiguous overload for xgetbv.
The patch that broke this was assuming the signature of xgetbv was
_xgetbv(int). This lead to that there were no exact match for the
function resolver, thus the ambiguity.

Apparently, the signature of _xgetbv is _xgetbv(unsigned int).
Changing the static xgetbv to uint makes the match exact, thus no more
ambiguity.

Change-Id: I8db95e00a9fef264d7a1f84d02bb929db84e6e5a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
2012-05-21 12:54:48 +02:00
Martin Jones 11fa02c5cd Move rarely used QObjectPrivate data to extraData
Move runningTimers, eventFilters and objectName data members to
ExtraData.  Saves 12 bytes per QObject for 95% of use cases
(QObjectPrivate goes from 76B -> 64B).

Change-Id: I5648c89f65a7be3ea51bd703ee8a9dcff6222c3c
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-21 03:10:45 +02:00
Tasuku Suzuki 864e996384 Fix QtNetwork compilation for -qconfig large
Change-Id: I231272e59101e9492a7a1edbacab165b96927877
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
2012-05-19 01:45:04 +02:00
Jan-Arve Saether 55d7e5f18b Compile fix: Do not rely on __cpuidex() for msvc2008
Since its hard to detect if __cpuidex() is actually available at
compile time, we'll add a function overload that will be chosen if the
intrinsic __cpuidex() is not available.

Note that the QtXgetbvHack that was used for _xgetbv did not really
work (MS compiler will bail out because of ambiguous overloads if the
intrinsic _xgetbv existed).

Therefore, we apply the same workaround for _xgetbv.

Change-Id: Iee3bf8bc6352ba0861b05d779f1f001d4eb013ff
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-19 01:45:04 +02:00
Giuseppe D'Angelo 281771ee20 QRegExp: fix usage of uninitialized values
A (probable) typo was causing the code dealing with anchors
to use uninitialized values. This used to work by chance, but was
indeed detected by Valgrind f.i. when running tst_qregexp --
the indexIn test on anc11 data reported:

    ==3015== Conditional jump or move depends on uninitialised value(s)
    ==3015==    at 0x514B4EA: PeppeQt::QRegExpMatchState::testAnchor(int, int, int const*) (qregexp.cpp:1813)
    [...]
    ==3015==  Uninitialised value was created by a stack allocation
    ==3015==    at 0x514B3EB: PeppeQt::QRegExpMatchState::testAnchor(int, int, int const*) (qregexp.cpp:1803)

Fixing the code also makes the aforementioned test to succeed.

Change-Id: If7b3e518c1bbfcf12573d2637c33ef2eca27c4d5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-05-19 01:45:04 +02:00
Olivier Goffart 8df298665a Move QIcon metatype handlers back to QtGui
QIcon has been moved back from QWidget to QtGui, so the QIcon QVariant
and QMetaType handler can now be moved back to QtGui.
Also we can give back QIcon its old number, allowing to get rid of some
compatibility hack when unstreaming QVariant

Change-Id: I439d5c2987c06ecd619f394407850f678164afb8
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
2012-05-18 21:42:58 +02:00
Lars Knoll 83645377e9 Make QCoreApp::translate and related methods use UTF-8
Deprecate the Encoding enum in QCoreApplication and the
trUtf8() methods. Qt now assumes that source code is
always encoded in UTF-8 to be consistent with QString.

Change-Id: Ic62d6947046dee9be0cbd37f2d2f6976b9e572a7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-18 21:38:35 +02:00
Tasuku Suzuki bdc28e3580 Merge two simple version of translate() functions for QT_NO_TRANSLATION
the commit 53a420a4d1 merged translate()
functions. The simple versions need to be merged too.

Change-Id: Ie873483beb8ed0b911ae0568e97b427f4c6b74e3
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-05-18 15:22:22 +02:00
Aaron Kennedy a605d25ae2 QMetaObject::activate() overload that doesn't require a metaobject
This allows QML to emit signals without having to built lazily created
metaobjects.

Change-Id: If8068fb3cb35d79dc8f3ef79253d9c2eb7c93205
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
2012-05-18 10:37:41 +02:00
Aaron Kennedy 276a86592a Encapsulate the dynamic meta object pointer
This change allows us to delay creating the actual meta object
until it is actually required.

Change-Id: I1c4a4226bd82fa606b206dd60322f49b49c32463
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-18 10:36:42 +02:00
Thiago Macieira 6d7b003ac8 Clean up some QT_HAVE_xxx macros in qcompilerdetection.h
We no longer have code doing MMX or 3dNow! on Qt 5, so nothing defines
those macros. If nothing defines them, we don't need to undef
them. Note that the SSE case is a mislabel: the old "SSE" code on Qt 4
wasn't real SSE, it was MMX with some instructions added at the same
time as SSE was added. It's MMX that Windows 64 doesn't support.

As for QT_HAVE_ARMV6, this macro is replaced by the sub-arch detection
in qprocessordetection.h.

Change-Id: Ic3b00e1533e6b4cea32ba7824233de0a5c0fb32b
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2012-05-18 10:33:56 +02:00
Konstantin Ritt 8babea35dd add some more widely-used QChar::SpecialCharacter enum values
Change-Id: Iad58f4366ba6cd6da29a268c56c8a4bc4cf0329c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-17 05:14:36 +02:00
Lars Knoll 2b21dd69d6 turn off exceptions by default where they aren't required
This significantly reduces the size of the generated code
in places where we don't need exceptions.

The -(no-)exceptions configure flag has been removed in the
process, as there is now a fine grained way to control this
on a per module level, and Qt is being compiled without
exceptions in most places.

Change-Id: I99a15c5d03339db1fbffd4987935d0d671cdbc32
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-17 05:14:26 +02:00
Friedemann Kleint 420b62f202 QCoreApplication: No longer hardcode arguments to be filtered out.
On Windows, Unicode command line arguments are re-created from
the original command line filtering out the known arguments.
To avoid having to hard-code all arguments of derived application
classes, keep the original argv-array and use that to verify if
an argument is still present.

Task-number: QTBUG-25724
Change-Id: I5d7bbd9530b1b74e1dcd22a0edc4f323ef687d23
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-16 19:35:51 +02:00
Thiago Macieira 83f796d273 Correct a mistake about non-characters in the documentation.
The Unicode non-characters are 32 characters, from U+FDD0 to
U+FDEF. The code matching these comments was fixed in
9327bc87c3, but the comment wasn't
fixed.

Change-Id: I5bde0ab9d70c1c6623893de36d31235cbd9fb152
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-16 19:35:29 +02:00
Stephen Kelly a49a92bd9d Properly quote all variables which are paths.
This is required if Qt is installed into a directory with spaces.

Change-Id: I1d6874265558d712ac98a3aef670c2934a632ab1
Reviewed-by: Clinton Stimpson <clinton@elemtech.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-05-16 12:03:54 +02:00
Thiago Macieira 2ec089bbc8 Add a non-implicit copy constructor to QEvent
Copying events is a bad idea but it is permitted, used at least in the
state machine framework and QApplication, which somehow found it
amusing to clone events. We can't forbid it because it would be
source-incompatible with Qt 4, and other ill-advised developer may be
doing this.

In the new copy functions and in the destructor, ensure that the d
pointer is null. We can't copy it if it isn't. The exception is for
DeferredDelete events, which use the d pointer to store the loop level
count. Such value must not be deleted.

In the future, if QEvent::d is used at the QEvent level, make sure to
adapt QCoreApplication::postEvent to store the counter somewhere else.

Task-number: QTBUG-25070
Change-Id: I1f2d3f3cfc891ec216df2e8b7dbe531524d21b26
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-05-16 07:00:31 +02:00
Lars Knoll b25b3a9f8b Avoid using iconv for text conversion where possible
Try to use a builtin codec as codecForLocale() if possible
first. Fall back and instantiate the iconv codec only
if that failed.

In addition, make sure we initialize the locale correctly
before we try to setup the codec.

Change-Id: I86d635f9d11e8ff93093f162e79fb37f3d85731b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-16 04:25:14 +02:00
Lars Knoll 1756a84756 Limit the nesting depth of the Json parser
The parser is recursive and too deeply nested json would
cause it to exhaust the available stack space leading to
crashes.

We now abort parsing with a DeepNesting parse error if the
document is too deeply nested. The current nesting limit
is set to 1024, which should be more then enough for any
real JSON data set.

Change-Id: I4adea3fd727149f7342536d73cf4530361a0a3a1
Reviewed-by: Jamey Hicks <jamey.hicks@nokia.com>
Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
2012-05-16 04:25:11 +02:00
Arvid E. Picciani d5000e82e3 QElfParser: double check section size before using it.
In rare cases, if the section is empty, we're reading the whole object
into memory because size -1 = UINT_MAX.

Change-Id: Ibf9a1534159ce626e4f2327536076d0cc1ebf0ba
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-16 04:25:07 +02:00
Konstantin Ritt ba300f42bd QChar: add isSurrogate() and isNonCharacter() to the public API
+ QChar::LastValidCodePoint enum value that supercede the UNICODE_LAST_CODEPOINT macro
replace uses of hardcoded values with the new API; remove leftovers

Change-Id: I1395c9840b85fcb6b08e241b131794a98773c952
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-16 04:24:56 +02:00
Konstantin Ritt e8199b599f QChar: add missing UCS-4 overloads, get rid of UCS-2 ones
inline all non-static members to a static ones (declared with QT_FASTCALL),
ushort converts automatically to uint and the conversion cost is minimal.

Task-Number: QTBUG-13052

Change-Id: I189a6f205736766adcd3de2d61cee71f30cc64f3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-16 04:24:53 +02:00
Shane Kearns 2380765a2b Fix QFile::permissions for long filenames
When qt_ntfs_permission_lookup is used, QFile::permissions failed
for files with long filenames.
Also created a test case for this API, which revealed another bug.

Task-number: QTBUG-25629
Change-Id: I73b7676a9d059c0e782b3f701b2e6bbc92f671ed
Reviewed-by: Prasanth Ullattil <prasanth.ullattil@nokia.com>
2012-05-16 04:24:43 +02:00
Andy Shaw cfb44c6528 Fix cases where functions are called with a drive and no slash
When a file is specified on a path that includes a drive letter
followed by a colon but no slash then it didn't always account
for the fact that this refers to the current path on that drive.
This fixes the problems in completeBaseName(), baseName() and
path().  Tests are also added for these three cases and some
others too.

Task-number: QTBUG-25353

Change-Id: I47a197c6af066f532442ad269be57597ec61303a
Reviewed-by: Irfan Omair <irfan.omair@gmail.com>
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
2012-05-16 04:24:29 +02:00
Pino Toscano 77b179689b QElfParser: fix type of sh_size
The type of the sh_size field of a section header is either Elf32_Word or Elf64_Xword,
so the type used cannot be qelfword_t (always 32 bits) but qelfoff_t.

Change-Id: Ia380b6823913fee7a96b39f742630ae3a9ca0cb8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Arvid Picciani <arvid.picciani@nokia.com>
2012-05-15 20:44:36 +02:00
David Faure c241d8921e Rename QMimeDatabase method for consistency.
Name is about mimetype names, while FileName is about, well, file names.

Task-number: QTBUG-25748
Change-Id: I34a9ac1a5fc06dc3e3855365e19c4dc7a1aa2671
Reviewed-by: Wolf-Michael Bolle <wolf-michael.bolle@nokia.com>
2012-05-15 14:25:37 +02:00
Kent Hansen f544d7189e Remove const char *-based connectNotify() API
This completes the transition from connectNotify(const char *) and
disconnectNotify(const char *) to the new QMetaMethod-based
functions.

Removed the old connectNotify autotests and renamed the
connectNotifyMethodXXX autotests to connectNotify, since there is
no longer any ambiguity about which overload is being tested.

Change-Id: Icf108a80177155f21bb73c165fb8ab5d4e997bc2
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-15 04:57:37 +02:00
Thiago Macieira 57c755fef0 Deprecate the ability to change the FS encoding separate from the locale
Changing the encoding used by filenames separately from the locale
encoding is a broken concept and cannot work properly. This creates
ambiguity depending on the data source and how it's being treated.

Instead, enforce that the locale encoding is the only possibility to
deal with file names.

The QFile::encodeName and decodeName functions are retained due to the
Mac-specific issues and due to the sheer number of current
uses. There's no point in deprecating them and moving away from them.

Change-Id: Iedb2d8715d166a59a824f05bc11d107fd44f9c17
Discussed-on: http://lists.qt-project.org/pipermail/development/2012-May/003782.html
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-15 04:57:29 +02:00
Thiago Macieira f31b324a24 Use org.qt-project for the QFactoryInterface's IID
Task-number: QTBUG-23273

Change-Id: I935d2e20a4905121ca226f052528fa7c9d80e88b
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-05-15 04:57:05 +02:00
Bradley T. Hughes e1cee9222d Split Q_COMPILER_DEFAULT_DELETE_MEMBERS
Based on reviewer comments on
https://codereview.qt-project.org/#change,25992, split
Q_COMPILER_DEFAULT_DELETE_MEMBERS into
Q_COMPILER_DEFAULT_MEMBERS and Q_COMPILER_DELETE_MEMBERS. Clang provides
2 separate feature checks for these, all other compilers always define
both.

Keep the Q_COMPILER_DEFAULT_DELETE_MEMBERS define, though, for any
existing code that may be using it.

Change-Id: I8969e10989c776a822da153152cfecb99dda8cb9
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-15 04:57:05 +02:00
Glenn Watson 87362f3f58 Add private API for finding symbols on Linux
Add an API for use by declarative that allows searching for a
symbol that has been loaded, without opening a specific library.
This makes it possible for declarative to determine if the
profiling library has been preloaded, and to call functions on
it that enable / disable / save the current profile.

Change-Id: I2ec12d9babea2a152990c19735e98d4d7c10a062
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-15 04:55:47 +02:00
David Faure 5764f5e6ea QUrl: using sectionIsPresent in operator== broke for local files.
QUrl::fromLocalFile("/foo") doesn't set Host, but QUrl("file:///foo")
does (to remember that it saw a Host section, even if empty, which is
useful for urls like "remote://"). So ignore the Host flag in operator==.

Change-Id: I4322b4a75420c4e42766c0d65c1b121f28028a76
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-14 17:36:57 +02:00
David Faure feb212e1e5 QUrl: a url with a fragment or query, and one without, are different.
Fix operator== and operator< so that a URL with an empty fragment
or query, is not treated as equal to a URL without any fragment or query.
This restores the Qt4 behavior on this particular issue.

Change-Id: Ie989f37353fb13c791b1d558d638d2e8a5b5d1b8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-14 17:36:50 +02:00
Bradley T. Hughes fe5d5fdaf1 clang: Use __has_feature() to detect C++11 features
Apple's clang version is often reported as the next official clang
version, but Apple clang does not support all the features that the
final official clang does. Instead of using version based feature
detection, use the __has_feature() built-in instead, so that we
correctly #define the various Q_COMPILER_* macros.

Task-number: QTBUG-25554
Change-Id: I2195401dbf6cd8574c30aa1bd6f7cf1cf537dae7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-14 08:10:29 +02:00
Stephen Kelly c18a41197f Find Qt5 modules automatically in the qt5_use_modules function.
This ensures that we only find Qt5 modules from the same directory
as modules we have already found, not from multiple different
directories which may be incompatible.

Change-Id: I7ad1d81ec41bba2e543130740041338ba44a6c3b
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-05-14 04:35:01 +02:00
David Faure 5ab700f639 Restore QUrl::setEncodedQuery(QByteArray()) to the Qt4 behavior.
Null bytearray means no query, and QString::fromLatin1(QByteArray())
doesn't give a null string, but an empty string.

Same for setEncodedFragment(QByteArray()).

Change-Id: I992e9253e35941d66886456872ea06aa2ae92450
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-13 11:06:18 +02:00
Thiago Macieira 1ea3c22e66 Add a QStringBuilder::toUtf8() function
Just to match the ones that are already there.

Change-Id: I25acc2391feded4cac79ebf65a6bc72176f5f931
Reviewed-by: hjk <qthjk@ovi.com>
2012-05-11 23:11:08 +02:00
Andreas Holzammer 6e6b74c0c7 Use WChar method for reporting for Windows
Switch to Unicode reporting, as Windows CE does
only support UTF-16 functions and to not open
up some other ifdefs just switch to unicode.

Change-Id: I82613a131313235e313cecd315bf6d1488af0532
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-11 19:41:25 +02:00
Casper van Donderen 653bca19c7 Doc: Add a default license footer.
The CSS for the footer is not completely correct, but at this
time it is better to have something than nothing.

Change-Id: I7371e1e458a2abafcdb0fca5564ad73e209d64c3
Reviewed-by: Jerome Pasion <jerome.pasion@nokia.com>
2012-05-11 17:39:13 +02:00
Kai Koehne 390291047e Logging: Show pattern warning also on Windows GUI apps
Change-Id: Ibbeb606469e7cec5aa68525b05714453151ee066
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-11 10:38:25 +02:00
Marius Storm-Olsen ad97aba452 Doc: Fix \sa usage
Ensure comma between elements (757 missing), single space and curly-
braces around title elements, etc.

Change-Id: Id16c3fda7fc47a12a0682f8720214f4990609a97
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
2012-05-11 01:42:02 +02:00
Olivier Goffart f92fdd190d Implement the move constructor for containers.
This changes all the containers that uses QtPrivate::RefCount
(QMap already had one), and QVariant

In Qt 4.8, it was pointless to have the move constructor because we did
not have quick way to re-initialize a null container. (shared_null still
needed to be refcounted)
But now that we have RefCount, and that the shared_null do not have
reference count, we can implement a fast move constructor that do not generate
code to increment the reference count.

Change-Id: I2bc3c6ae96983f08aa7b1c7cb98d44a89255160b
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
2012-05-11 01:42:02 +02:00
Gunnar Sletta 7226361aed Make sure animation drivers knows about the temporal offset after a pause
Change-Id: I932e469389241f6a12816b52180936f061cd78f8
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@nokia.com>
Reviewed-by: J-P Nurmi <j-p.nurmi@nokia.com>
2012-05-11 01:42:02 +02:00
Thiago Macieira b6e4c859d3 Change to/fromAscii to to/fromUtf8 in the QString conversions
This commit matches the previous documentation commit that says that
the conversions are applied using to/fromUtf8.

Change-Id: I304e4d866ddedac5094fef8500cbeba299a02cb5
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: hjk <qthjk@ovi.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-11 01:42:02 +02:00
Konstantin Ritt 3f9b508652 fix QString::isRightToLeft() for SMP code points
Change-Id: Ib8afc932d9566df1a8922da9a75b9f9cbbdd321d
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-11 01:42:02 +02:00
Stephen Kelly c2f8fe64f1 Make the qt5_use_modules public API.
This cmake function handles all of the necessary logic for using the
include directories of Qt modules, linking to Qt modules, adding
the required definitions, and most importantly, adding the position
independent flags required on UNIX systems to use Qt by default.

The function relies on functionality available in CMake 2.8.8, so it
is only available if that version of CMake or greater is used.

Change-Id: Ibe698e06819129479348c240844264c41553b5fb
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-05-10 23:15:56 +02:00
Andreas Holzammer 163cb111f8 Change Wince functions definition
Use inline functions, instead of defines for global
functions. As the defines will break member functions
that have the same name. As inline functions are only
available for C++, just define them for C++. This will
only effect 3rd party dependencies, but they don't need
them anyhow.

Change-Id: I929562401e03f08b068edba107a3f67a585952a2
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-05-10 13:52:48 +02:00
Lars Knoll 1f9a958e36 Correctly parse json documents with a leading BOM
A leading byte order mark is valid in utf-8 and we should
parse documents starting with those correctly.

Change-Id: Id85398ff6e05b93ceefbaf4a6de5571d5e61ca13
Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
2012-05-10 13:50:35 +02:00
Bradley T. Hughes 8b668180ca Compile with -qtnamespace on Windows
qatomic_msvc.h declares some Windows intrinsic functions which should
not be in the Qt namespace.

Change-Id: I1b2f91798159c08cf167ee3d1ed2818c12c9b833
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-05-10 13:50:35 +02:00
Konstantin Ritt cbfdec6603 move the default text breaking algorithm impl from HarfBuzz to Qt
there are several reasons to do this:
* text breaking is not a shaper's job;
* since the text breaking rules are bound to a specific Unicode version,
  updating Qt's internal unicode data would require updating the data in HB as well;
* makes porting to HurfBuzz-NG some easier

Change-Id: I0bbf8e8a343bc074696f4ddf2ae4e7fa32a61629
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-10 11:34:25 +02:00
Konstantin Ritt 8c0048a377 add some useful methods to QUnicodeTables::
in order to reduce code duplication and prepare the ground for upcoming changes

Change-Id: I980244149f65384c9484bbec4682de8b7b848b08
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-10 11:34:25 +02:00
Marius Storm-Olsen 9456528aac Merge branch 'docs-refactoring' into master
Change-Id: Iebd1966abace3cdf7f9428dcfc1ded5b124ab113
2012-05-10 09:11:23 +02:00
Thiago Macieira 75552c8f62 Fix a crash when parsing a URL with username and port, but no password
This was crashing because the ':' was found past the end of the
username, causing the recoder to run from position 22 to 11, via the
long way around the memory.

Change-Id: Ic1ae596f34f7db857fb4210294974fb5a6adf691
Reviewed-by: Alexis Menard <alexis.menard@openbossa.org>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-10 02:39:30 +02:00
Michael Brasser c47c8ba59e Remove QAbstractDeclarativeData::objectNameChanged.
There is now an actual NOTIFY signal for this property, and the callback
is no longer necessary.

Change-Id: I664714e22e607c747f144250cfb78de8c1d28686
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
2012-05-10 00:20:43 +02:00
Casper van Donderen 47799adc0d Doc: Move some remaining files over for modularization.
The files in this change were still in qtbase/doc/src or required for
it. qtbase/doc/src should now only contain example documentation and
images for the example documentation.

Change-Id: Ia7ca8e7fd2b316e77c706a08df71303bc8294213
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
2012-05-09 22:43:31 +02:00
Stephen Kelly bbe9b28c0b Remove garbage.
Change-Id: I0801932ee9ce7002fdf897354f9e6e6d3999c8c2
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2012-05-09 20:10:44 +02:00
Alexis Menard 92d4e843bd Fix qDecodeDataUrl for already percentage encoded content.
If the url we pass as parameter already have percentage encoded data,
we don't want to decode it and call fromPercentEncoding. The test
coverage is not complete for qdataurl.cpp file but it is better than
previously and it will also protect us from future regressions.

Change-Id: I79f709f44bed1b7f274a3de639c7e291fa91a193
Reviewed-by: Thiago Macieira
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-09 20:10:44 +02:00
Stephen Kelly 465c9f4a7e Use bool for the template argument.
It is only ever called with 'true' or 'false'.

Change-Id: Ibaba1c964cebb3ac75a230471a7a6547c2245039
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
2012-05-09 12:54:08 +02:00
David Faure 677858ad9e Fix QUrl::StripTrailingSlash for the case of no path at all.
Change-Id: I1fd0fe4b9b67996732c85c1792415e371e865595
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-09 12:07:33 +02:00
Marius Storm-Olsen 9fde9ab167 Properly implement a 'make docs' target for subdirs and apps/libs
Only call qdoc for projects which sets the QMAKE_DOCS variable to
point to a qdocconf file.

Exclude examples/ and tests/ from the qdoc run, by adding
    no_docs_target
to CONFIG for those projects.

Change-Id: Ic856c8f19db59309302d0602b3e99735609e525a
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
2012-05-09 08:34:42 +02:00
Lars Knoll 2cc0598f99 Divehi is written right to left
QLocale::textDirection() was missing Divehi as a
right to left language.

Change-Id: Ib2395afe0e1dfbac23cb607dbf7833e6c12b2ce9
Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
2012-05-09 02:28:34 +02:00
Jędrzej Nowacki 4a1a13a81b Bump moc revision after introducing QMetaType::SChar.
Normally we do not have to change moc version if a new type is added,
but for this particular case we need to do it. It is so because the old
moc could generate wrong type id (QMetaType::Char) for signed char.

Change-Id: I20be2a24adc59a305674595dafe23fb1774b475d
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
2012-05-09 02:28:04 +02:00
Jędrzej Nowacki 1e432f0a88 Introduce a new built-in type: signed char.
C++ distinguish between "char", "signed char" and
"unsigned char", they are three independent types.

Fix QVariant behavior on ARM. On ARM "char" may mean
"unsigned char", but we depends on the sign during
a numerical conversions.

Change-Id: I610ce3fb88ed5964b67f3ae442d264fe16b2d261
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-08 11:47:29 +02:00
Ali Akhtarzada e483b9bf37 Add assignment operator for QJsonValueRef
The implicit cast to QJsonValue was being ignored probably because the
compiler was generating a default QJsonValueRef assignment operator

Change-Id: I3a041595497308868dd7e4aab71027ce21bf8f0b
Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-08 09:27:30 +02:00
Rohan McGovern de11b9f5a7 Revert "QtPrintSupport: Remove remaining LPR specific code"
This doesn't compile with a typical cross-compilation setup, which
generally won't include cups headers.  The commit should have been
rejected, but wasn't, due to a bug in the Qt Project CI.

Since it now causes all other modules depending on qtbase to fail their
CI, it must be reverted to minimize disruption while the commit can be
amended and/or the test toolchain updated to include cups headers.

This reverts commit 80f7a38890.

Change-Id: I315ae275b37de358a74af28ab7bd691c9849acba
Reviewed-by: Sergio Ahumada <sergio.ahumada@nokia.com>
Reviewed-by: Toby Tomkins <toby.tomkins@nokia.com>
2012-05-08 06:58:27 +02:00
John Layt 80f7a38890 QtPrintSupport: Remove remaining LPR specific code
CUPS is the only supported print system on UNIX, LPR/PS support has
already been dropped but some LPR specific code still remains.

* Move qt_getCupsPrinterPaperSizes from qprinterinfo_unix to
  QCUPSSupport
* Remove qprinterinfo_unix as no longer used
* Remove LPR related code from QPdfPrintEngine
* Remove all QT_NO_LPR uses
* Remove most QT_NO_CUPS uses, use QT_NO_PRINTER where necessary

Some QT_NO_CUPS uses remain in QPdfPrintEngine, these will be removed
in a following change implementing a CUPS plugin.

Change-Id: I439b6fad9cf88c3d24aa48e49475f49ad310dbad
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-07 20:26:43 +02:00
David Faure 4046ec71c8 QMimeType performance fix: don't reload from XML files over and over.
Change-Id: Ie19c338ed6449ea1509306cbda5dc251295783ae
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-05-07 17:55:58 +02:00
Friedemann Kleint 053576e880 QFactoryLoader: Add API for supporting the metadata containing keys.
- Add a method returning a QMultiMap<int index, QString key>
  to QFactoryLoader, determined from metadata(), correctly
  reflecting the data structure ('Keys' being a list)
- Add convenience templates to create plugins via factory
  interfaces

Change-Id: I247749aa3245f635e476605db1c4cd9c74b74dea
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-07 12:57:48 +02:00
Friedemann Kleint 864f930ba9 Fix MSVC warnings about inconsistent DLL linkage.
Change-Id: I42f817caf212b871cd00f976054381487b238d31
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
2012-05-07 12:57:38 +02:00
Debao Zhang b3f9978a4d QArrayData: Suppress MSVC warnning.
Change-Id: I3b8090d9d3f1294d76ff1cc3503c73e90cd91b40
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
2012-05-07 07:45:07 +02:00
Thiago Macieira 8ddd8c8ba9 Change QStringBuilder to use UTF-8 too
This commit completes the previous commit so that both QString and
QStringBuilder now operate on UTF-8 input.

A small fix was required in QStringBuilder: an if clause isn't enough
to separate the two append versions. Since there are no QString
functions that append to char*, if we're converting to a QByteArray,
we need to go through a QString first in a separate function.

Change-Id: Ic503340c5d0c32d420c90c91cc2e0fc1ae9230f3
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-07 05:07:16 +02:00
Thiago Macieira 592fe0a026 Change QString's default codec to be UTF-8
This is a crude change, not the most efficient way. I'll clean up and
make it prettier later on, when I've had the chance to optimise the
UTF-8 codec too.

Change-Id: I78e30e8d3bddf6ad0210c9c4cedb9a7ce63d1a7d
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-07 05:06:26 +02:00
Liang Qi 54d9fd61e1 Add default value for getters in QJsonValue
Done-with: Debao Zhang <dbzhang800@gmail.com>
Change-Id: I3ddd8dd89dc75d91ac9977bf9b6eb3174d7669e4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-06 15:32:45 +02:00
David Faure d6bb52b196 Fix typos in bcd477e0bc
Change-Id: Ia1981c86f799a749aa8fab5cdd8f6563b2ebe77f
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-05-06 11:32:46 +02:00
Thiago Macieira d839564c94 Make sure we export the non-inline qMalloc & friends functions
If QtCore is built with Qt 5.0 API, the Q_CORE_EXPORT does not appear
anywhere and these functions wouldn't get exported, despite being
defined. So make sure that they get the Q_CORE_EXPORT attribute.

Change-Id: I0684ea1b9ad634c13dca12c97683032e44f6a290
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2012-05-05 22:02:22 +02:00
Stephen Kelly 32804a5b16 Publish the fact of whether Qt was built with hidden visibility.
Change-Id: Iaf1a6495ee96859af9c5c25a54ea1fc463910cd3
Reviewed-by: Alexander Neundorf <neundorf@kde.org>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2012-05-05 19:08:52 +02:00
Lars Knoll ec360d7ad9 Place the plugin metadata into special sections for Mac and Win
The plugin metadata is placed into a special section in the
object file on ELF systems to allow finding it fast. Place
the data into a special section on Mac and Windows as well,
even though we don't have Mach-O or COFF parsers available
yet.

This will allow us to add the Mach-O and COFF parsers as a pure
optimization later on.

Task-number: QTBUG-25054
Change-Id: I376d5443ede715aee2c68fb62d24afdbf66e5685
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-05 12:09:38 +02:00
Shane Kearns cd7abae39f Document dependency of bearer management on network interface
Task-number: QTBUG-21243

Change-Id: I494b751589f2efcb5101c056ac24ef82df9aa746
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-05 03:50:11 +02:00
Jędrzej Nowacki 0e40289a7e Add missing include file.
qfile_p.h is depending on qfile.h

Change-Id: I8b021baaf517a0236a062ef031a33bd8e2915101
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-04 17:57:46 +02:00
Jędrzej Nowacki a42d8bcce1 Reuse QArray initializer macro in QByteArray
Change-Id: Ieb12ee290846dce88f2ea9fbf943103899337e0f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-04 17:57:46 +02:00
Jędrzej Nowacki dcdd837a56 Replace QByteArrayData class by typedef.
QByteArrayData was binary compatible with QArrayData, but we do not
need a separate class, QArrayData should be sufficient. Preferably we
would use QTypedArrayData<char> but it is not POD, therefore it can
not be initialized with {} syntax.

Change-Id: I1edd7b4f236b06d8f2dbfd8a37a3f5699b6a2c07
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2012-05-04 17:57:46 +02:00
Jędrzej Nowacki c68d8ca76c Add an assert simplifying debugging.
Statics should not be deleted, the assert shows a nicer debug
information then a segmentation fault.

Change-Id: I9eedbfa966d7865fd7bb1e130c79e40bae3526cb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-04 15:24:52 +02:00
Robin Burchell 55b5cb9caa Stub out QSharedMemory and QSystemSemaphore for Android.
Android does not support regular SysV shm, we'll need to write our own
implementations.

Change-Id: I2817f64b36512b965b012388a667d08935828c83
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-04 15:24:52 +02:00
Robin Burchell a592f221c3 Guard some pthread API with the appropriate POSIX check, or Android.
Android does not support some parts of POSIX. It's also unfortunately not
POSIX-compliant, meaning we need to guard things like pthread_cancel.

Change-Id: I2979eb5579c822f4f5ba27bcc29e118b908e8bdc
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
2012-05-04 15:24:52 +02:00
Robin Burchell 1cf82c4081 Properly guard rand_r use with _POSIX_THREAD_SAFE_FUNCTIONS for Android.
Android does not support this, or other thread-safe functions.

Change-Id: Id2a918f83e6138795196c45f89613c5b46911901
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
2012-05-04 15:24:52 +02:00
Robin Burchell 0688746154 Add Android to conditionals around langinfo.h usage.
Despite being mandated by POSIX, Android does not support this.

Change-Id: I3da42ff9b3336cb6657692a9eb70dd3118ac1756
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-04 15:24:52 +02:00
Konstantin Ritt 72c5ca98e5 stop ignoring unassigned codepoints
in Unicode 5.1, it was clarified that unassigned codepoints normally
should not be excluded from the process; moreover, unassigned codepoints
assumed to be starters in decomposition by default

Change-Id: Ic4a61ec3759ee62b6843c81045e1d611d0684ead
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-04 15:24:52 +02:00
Konstantin Ritt 46b78113b2 add support for non-BMP ligatures
> http://www.unicode.org/versions/Unicode5.2.0/
D. Character Additions:
There are three new characters in the newly-encoded Kaithi script that will
require changes in implementations which make hard-coded assumptions about
composition during normalization. Most new characters added to the standard
with decompositions cannot be generated by the operations toNFC() or toNFKC),
but these three can. Implementers should check their code carefully
to ensure that it handles these three characters correctly.
U+1109A KAITHI LETTER DDDHA
U+1109C KAITHI LETTER RHA
U+110AB KAITHI LETTER VA

UCD 6.1 adds two more of them:
U+1112E CHAKMA VOWEL SIGN O
U+1112F CHAKMA VOWEL SIGN AU

Change-Id: I781a26848078d8b83a182b0fd4e681be2a6d9a27
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-04 15:24:52 +02:00
Thiago Macieira 41b1fb918b Use QFile::{encode,decode}Name to deal with QT_PLUGIN_PATH
Since it deals with paths, let's use the proper path-handling
functions.

Change-Id: I896d2c472dfd675e9ff247657447178702f178be
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
2012-05-04 15:24:52 +02:00
David Faure 7c717e56f5 Fix QUrl::toString(StripTrailingSlash) to not turn file:/// into file:
It should only strip one slash (as the name indicates), and not if the
path is just "/".

Change-Id: I133a81977241de77a49d1d1559143d30e0bd52f8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-04 13:03:35 +02:00
Olivier Goffart 5c2a055230 Fix compiler warning
qurlrecode.cpp:481:24: warning: ‘action’ may be used uninitialized in
this function [-Wmaybe-uninitialized]

Change-Id: I638b65218d1875667e2c60a5720ecda87202b82f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-04 12:55:39 +02:00
Lars Knoll f7b1262c7f Always return uiLanguages in bcp47 format
The old code didn't convert the uilanguages
coming from the system locale to bcp47 format,
leading to QLocale().uiLanguages() and
QLocale("en_US").uiLanguages() returning
things in an inconsistent format. Now it always
returns bcp47 format (ie. Language and Country
separated by a hyphen).

Change-Id: I40d3442255e6e8daa4723f7b3fc13829c9764eb1
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
2012-05-04 12:52:30 +02:00
Thiago Macieira 360b682288 Port the QTextStream / QDebug functions away from fromAscii
No behaviour change since fromAscii (temporarily, at this point) means
fromUtf8.

Change-Id: I0e4d3ccfac7b5beaaaececb9f088324ee4838f84
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2012-05-04 12:49:19 +02:00
Thiago Macieira 712ca9d95a Change remaining uses of {to,from}Ascii to {to,from}Latin1 [QtCore]
This operation should be a no-op anyway, since at this point in time,
the fromAscii and toAscii functions simply call their fromLatin1 and
toLatin1 counterparts.

Task-number: QTBUG-21872
Change-Id: I38f97ad379deafebef02c75d611343ca15640c8a
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
2012-05-04 12:45:47 +02:00
Thiago Macieira 2376a5c4e0 Make the event notification on Windows be mandatory in all dispatchers
This way, QWinEventNotifier will work on all Windows systems, not just
with the default event dispatcher. Other dispatchers (other than
QWin32EventDispatcher) are permitted, so the class should not abort just
because of that.

If a dispatcher really doesn't want to implement this, they need to
implement the virtuals to do nothing, possibly print a warning.

Change-Id: I2c132bcde95b9d5941c8906a0fcd2ad964087772
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
2012-05-04 12:44:14 +02:00
Shane Kearns f503e906d6 Move QSocketNotifier data members to a private class
This is a binary incompatible change to allow future changes
to QSocketNotifier to be possible in a binary compatible way.

Change-Id: If90f3393e84edd3b1ac4d4132fa8e59b6b87a8ec
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-04 03:10:16 +02:00
Thiago Macieira babd3e252b Revert "[SIC] Make non-const the QRegExp methods that modify the internals"
This reverts commit 75a0c7f9b5. The
source-incompatible change proved to be more trouble than it's
worth. Too much intrusion into the porting effort of applications for
no appreciable gain, especially considering that we have a replacement
class.

Change-Id: Ia99a2360390a2062a8ddb6e12c8f2099287a2704
Discussed-on: http://lists.qt-project.org/pipermail/development/2012-May/003562.html
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-03 16:14:21 +02:00
Lars Knoll 6dac3f1894 Merge "Merge remote-tracking branch 'origin/api_changes'" into refs/staging/master 2012-05-03 16:11:58 +02:00
Robin Burchell f02acb8bfc Work around std::wstring not being defined on Android.
libstdc++ requires wchar.h (which bionic provides), but it also requires
additional functionality which bionic does not provide, thus, std::wstring
proper basically doesn't exist.

Provide a compatibility shim so we can keep API intact. This feature existed in
a similar guise in the past, but was removed in
d868c9945a.

Change-Id: I6cab6f41d04ad9dde97e3ce73506f9d8a42043fb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-03 16:11:58 +02:00
Stephen Kelly eb9474d045 Add some missing includes.
There is a #include <QStringList> line wrapped in
QT_DEPRECATED_SINCE(5, 0).

Change-Id: I766848dfcc3bd765c57626a3d70f492ac1219091
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-03 16:11:58 +02:00
Lars Knoll 1e49914fee Merge remote-tracking branch 'origin/api_changes'
Conflicts:
	src/corelib/global/qglobal.cpp
	src/corelib/global/qlogging.cpp
	src/gui/kernel/qguiapplication.h
	src/gui/kernel/qwindow.cpp
	src/gui/kernel/qwindow.h
	tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp

Change-Id: I62a8805577a7940d4d36bed985eb3e7019d22f2e
2012-05-03 12:26:09 +02:00
Thiago Macieira 9c75a547a0 Remove references to to/fromAscii in QString and QByteArray main docs
Those functions are about to be deprecated and shouldn't be referred
to in the main documentation. Since they were temporarily changed to
mean UTF-8, this is not a behaviour change.

The next commit will update the code to match the documentation.

Change-Id: Ia8c2843c7f2b478f5691fe0224d5e631d94b1af6
Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-03 11:33:05 +02:00
Thiago Macieira 425b925b7e Simplify the size of the QVarLengthArray buffer.
The previous calculation was too complex for no good
reason. QVarLengthArray actually doesn't change the size after this
change due to padding, but we don't need to include the padding in our
own calculation.

Task-number: QTBUG-25113
Change-Id: I72ea214f0d96870ecf8ff65737e7ca14e19afc7a
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-05-03 06:10:15 +02:00
Thiago Macieira 19d160b72b Fix the QByteArray overloads to QString::fromXXXX
c951908bc2 added these overloads, but
did not properly use qstrnlen to get the size. This means we get
subtle errors because other methods do have them.

For example:
  QByteArray ba("abc\0def", 7); // ba embedding a NUL
  QString s1(ba);
  QString s2 = QString::fromAscii(ba);
  s1 == s2; // FAILS

  QString s3;
  s3.append(ba);
  s3 == s2; // FAILS

Tested in an upcoming commit.

Change-Id: I22864521a42da789d522d7b75790696928d9ec32
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-05-03 06:10:11 +02:00
Robin Burchell 0c1ae68c0a Work around Android not having SYS_futex.
Even though we really shouldn't, we can get away with using __NR_futex instead.

Done-with: Thiago Macieira <thiago.macieira@intel.com>
Change-Id: I0ba449b740acf2c78825f8093d1515a74f0bc9cd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-02 17:55:22 +02:00
Stephen Kelly 98ac56676a Avoid macro re-definition warning for QT_NO_EXCEPTIONS
Change-Id: I0c4b2d00dd567af17f22b733b93032ff1056fcbd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-02 14:53:41 +02:00
Stephen Kelly 8dd66f42e8 Avoid undefined macro warning for __GXX_EXPERIMENTAL_CXX0X__.
The GCC use of this is already correct.

Change-Id: I28650196c7a325b552117fe2f2014ad7d6b365c2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-02 14:53:41 +02:00
Casper van Donderen 21c3170fa6 Add "make docs" target for QtNetwork and sanitize other qdocconfs.
Change-Id: Ic9d6384b20162debeb69cb067c96c330c0fd999a
Reviewed-by: Jerome Pasion <jerome.pasion@nokia.com>
2012-05-02 14:53:41 +02:00
Robin Burchell 61196fc248 mkdtemp() is not included in Android's libc
Use our own implementation instead.

Change-Id: Ic04dd480d52404e03e26cdf4caa1d00e4c3219c7
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: David Faure <faure@kde.org>
2012-05-02 12:14:17 +02:00
Olivier Goffart 36b3a6ad38 Fix compilation of public headers with QT_NO_DEPRECATED defined
Put the functions in QT_DEPRECATED_SINCE if possible

QPluginLoader::staticInstances is not documented as deprecated, and do
not reference any alternative use. So I unmarked it as deprecated.

Change-Id: I556c3f3657fb0490dd5543fcc56718fe9bd394e7
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
2012-05-02 11:14:09 +02:00
Olivier Goffart bcd477e0bc Introduce QObject::isSignalConnected(QMetaMethod)
This is much more performant than calling QObject::receivers(const char*)

Can be used instead of connectNotify in some cases.

Change-Id: I19e0933f678f171f515d9a0f69f0ad4fb7d894b4
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
2012-05-02 10:59:41 +02:00
Kent Hansen 74c3517e6a Fix regression in connectNotify(const char *) emission
Reimplementations of connectNotify() and disconnectNotify() can
assume that the signal argument is in normalized form, but after the
introduction of the Qt5 meta-object format, it could happen that it's
not.

The problem is that the internal QArgumentType class, which attempts
to resolve a typename to a type id, was calling QMetaType::type().
QMetaType::type() falls back to trying the normalized form of the
typename if the original argument can't be resolved as a type (this
behavior isn't documented, but that's how it works). This means that
e.g. QMetaType::type("const QString &") returns QMetaType::QString.

Since QMetaObjectPrivate::indexOfMethodRelative() (more specifically,
the methodMatch() helper function) prefers to compare type ids
over typenames (since the type ids are stored directly in the meta-
object data for built-in types), the method lookup would *succeed*
for signatures with non-normalized built-in typenames as parameters.
QObject::connect() would then think that it did not have to
normalize the signature (see "// check for normalized signatures").
The consequence was that the original, non-normalized form got
passed to connectNotify().

This commit introduces an internal typename-to-type function that
is the same as QMetaType::type(), except it doesn't try to normalize
the name. This way, the only place where normalization can occur in
the signature-to-meta-method processing is through the calls to
QMetaObject::normalizedSignature() in QObject::connect() itself.

The implication is that there are now cases where the method
signature will be decoded and processed twice, where processing it
once was sufficient before. On the other hand, it is consistent with
the pre-Qt5-meta-object behavior, where we predict that the
signature is already normalized, and only perform (comparatively
costly) normalization if the initial lookup fails.

Change-Id: Ie6b60f60b0f9a57ebd378d980329dac62d57bbd9
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
2012-05-01 20:03:28 +02:00
Rohan McGovern 40a73d7c63 Fixed uninitialized memory in QMetaObjectBuilder::fromRelocatableData
static_metacall was never set on the metaobject written by
QMetaObjectBuilder::fromRelocatableData, sometimes causing a crash.  It
should be initialized to 0.

Change-Id: I79373d895e131f0cc2ff1af6d2177a0c1a282be7
Reviewed-by: Toby Tomkins <toby.tomkins@nokia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-05-01 09:41:27 +02:00
Lars Knoll 1767e21123 Allow loading of static plugins by index
Static plugins could so far not get loaded by
index. Implement the missing support for this.

Task-number: QTBUG-25274
Change-Id: I901b08bfaf4f9fc3cb9fcea0b47f3ed89588a27b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-01 07:10:37 +02:00
Lars Knoll 715e9caf19 Initialize member variable
Change-Id: Icfbe064e89b0c2f7b67ba58cbdc79347275b63b1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
2012-05-01 07:10:31 +02:00
Lars Knoll f9c2094e49 Restructure how we initialize hash nodes a little
This should help to silence coverity which was complaining
hundreds of times about Qt not initializing h and next in
QHashNode.

Change-Id: Ib7977693e9786d4b310799e4f428115c65bb3fee
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-01 07:10:31 +02:00
Kent Hansen 90c6d44512 Port QBuffer to QMetaMethod-based connectNotify()
The const char *-based API is deprecated and will be removed in Qt5.

Also fix a bug in the disconnectNotify() reimplementation; when all
signals are disconnected at once, disconnectNotify() is only called
a single time, with an invalid method as argument. Thus, the signal
connection count should be set to 0, instead of decremented.

Change-Id: Ieee92293777bff87f8b28e56e23ab55d0b8b8101
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-05-01 01:18:03 +02:00
Kent Hansen 243ea09e4c Add QMetaMethod-based QObject::connect/disconnectNotify() API
This API will fully replace the const char *-based connectNotify()
and disconnectNotify() in Qt5; the old functions will be REMOVED
before Qt 5.0 final.

The new implementation fixes the long-standing issue of
connectNotify() not being called when using the (internal)
index-based QMetaObject::connect() (e.g., from QML).

As with the old API, there are still two "unintuitive" behaviors
concerning disconnectNotify():
- disconnectNotify() is not called when the signal is disconnected
  using the QObject::disconnect(QMetaObject::Connection) overload.
- disconnectNotify() is not called when a receiver is destroyed
  (i.e., when a connection is implicitly removed).

The old versions of connectNotify() and disconnectNotify() are kept
for now, and they are still called. They will be removed once known
existing reimplementations (e.g., QtNetwork, QtDBus) have been
ported to the new API.

Change-Id: I8b4f007f3c6d89199c1ba04a3e23c8ca314e0896
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
2012-05-01 01:18:03 +02:00
Jonathan Liu 7bd1f36d37 Disable force_align_arg_pointer function attribute with MinGW-w64
The force_align_arg_pointer function attribute is not necessary for
MinGW-w64 to align stack for SSE and generates a compiler warning as
it is ignored. Do not use force_align_arg_pointer with MinGW-w64 to
silence the warning.

Change-Id: I58a754dc3ec01b36a1d3c9490f45ccf0824468ba
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
2012-04-30 14:01:22 +02:00
stockton 0ea3a1a9ad Fix Qt::MouseButton Documentation for Qt::ExtraButton24,
Documentation for the 'more mouse buttons' feature has a Typo on
Qt::ExtraButton24 (is shown as "Qt::ExtraButton44", no value.)
Also, the order of BackButton/Xbutton1/ExtraButton1 causes the
'BackButton' value to be a forward reference to XButton1, which
makes it awkward and hard to understand. Same with ForwardButton/
XButton2/ExtraButton2.

Task-number: QTBUG-25529

Change-Id: I04b76d91d7a2155c1917a809a51700059320f510
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
2012-04-30 09:17:13 +02:00
Jonathan Liu 7b87469bc5 Fix MinGW-w64 compilation
Use qintptr and quintptr for exchanging data with registers for cpuid
as the size of long does not match the size of the register on Win64
which uses the LLP64 data model.

Change-Id: I23b8c8e0977166f7e62795c16e9080e44d9f25f5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-04-30 01:06:47 +02:00
Thiago Macieira 75a0c7f9b5 [SIC] Make non-const the QRegExp methods that modify the internals
These methods modify QRegExp internals and should not have been
const. It's actually dangerous to have them const, since users may
think it's safe to use the matching method in a thread-safe manner.

Task-number: QTBUG-25064
Change-Id: Ia370eb42fd0407a94924f420297c5e83d3908214
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-04-28 19:42:51 +02:00
Thiago Macieira da2c170aa2 Don't use the QRegExp methods that modify the object [QtCore]
QRegExp matching methods modify the object, which we don't want to. In
particular, when we receive a QRegExp from the user or we store in a
context that might require thread-safety, make sure we make a copy
before using it.

QRegularExpression has no such shortcoming.

Task-number: QTBUG-25064
Change-Id: Icf22986cd5f6fd086518c78a7d56e6cadfe9f5f6
Reviewed-by: Giuseppe D'Angelo <dangelog@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
2012-04-27 22:52:54 +02:00
Shane Kearns 08cc6901f8 Move QWinEventNotifier data members to a private class
This is a binary incompatible change to allow future changes
to QWinEventNotifier to be possible in a binary compatible way.

Change-Id: I268d3e01d8ee237ecbd164ee0f7cae1eb73dd725
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
Reviewed-by: Debao Zhang <dbzhang800@gmail.com>
2012-04-27 22:52:01 +02:00
Friedemann Kleint bd2d0d7cbe Fix warning about int-truncation (MSVC2010, 64bit).
Change-Id: Idfc483ccb80a8bbad128672052edfa04635bd532
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
2012-04-27 10:37:02 +02:00
Kent Hansen dac23b9a57 Add QMetaMethod::fromSignal() function
Given a member function that's a signal, returns the corresponding
QMetaMethod. Inspired by the implementation of the template-based
QObject::connect().

The primary use case for this function is to have an effective and
exact (not subject to shadowing) way of checking whether a known
signal was connected to in reimplementations of
QObject::connectNotify(QMetaMethod), avoiding string comparisons.
Example:

void MyObject::connectNotify(const QMetaMethod &signal)
{
    if (signal == QMetaMethod::fromSignal(&MyObject::mySignal)) {
        // Someone connected to mySignal ...
    }
}

Change-Id: I5e4de434275fe543c004d569dcaa9ceda3442f03
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
2012-04-27 10:37:02 +02:00
Thiago Macieira e5a3217349 Mark that the Sun compiler includes the return type in the mangling
Source: http://developers.sun.com/solaris/articles/external_linkage.html
   %dem __1cFgreet6F_pc_
   __1cFgreet6F_pc_ == char*greet()

Source: http://www.oracle.com/technetwork/articles/servers-storage-dev/stablecplusplusabi-333927.html
	Function		Mangled Name
	float f(float)		__1cBf6Ff_f_
	int f(int)		__1cBf6Fi_i_
	int T::f(int)		__1cBTBf6Mi_i_
	int T::f(char*)		__1cBTBf6Mpc_i_
	int T::U::f(int)	__1cBTBUBf6Mi_i_
	int N::T::f(int)	__1cBNBTBf6Mi_i_

Change-Id: Ibe1934f1c137d1657fb122cbf1a1b1fbc3e4a202
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
2012-04-27 03:09:56 +02:00
Konstantin Ritt 16042472ac fix build with mingw
since MinGW is GCC, invert the order and place the GCC constructs first

Change-Id: I98113aa77e51f9e01c3641987e915bf475053a60
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-04-27 01:24:05 +02:00
Konstantin Ritt f3721d7706 get rid of Q_*_EXPORT_INLINE macros
> Girish:
> We should be able to remove the macro completely today,
> just mark all those functions as plain inline.
> With Qt5, we don't have to worry about bc yet.

this fixes "import attribute ignored" warnings on mingw with -fno-keep-inline-dllexport

Change-Id: I616e5de7c8d59953ce03a316b941a439fae56298
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2012-04-26 15:33:00 +02:00
Olivier Goffart 93132154b5 Fix C++11 compilation
Fix compilation with compilers that support user defined literal
(such as GCC 4.7)

Change-Id: I31cd3d2177688f963ab33cf68cd6060a5fb8640f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2012-04-26 15:32:34 +02:00
Casper van Donderen 62932faef0 Doc: Use the proper way to find qdoc.
Previously $$QT.core.bins was used to find qdoc, the proper way is to
use qtPrepareTool().

Change-Id: I5d97f5517ae63253ccaf1fb1487034c3a312a074
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
2012-04-26 15:04:38 +02:00
Thiago Macieira f6aef23ff1 Ensure that QUrl::{to,from}LocalPath encode/decode properly
Unlike path(), toLocalFile() isn't reporting a URL component, so it
should decode the percent-encoded characters fully. This extra
decoding pass is meant to catch %00 to %1F, %7F and %25 (the percent
sign itself).

It also catches %80 to %FF, which aren't decoded because they don't
form UTF-8 sequences. That means QUrl::toLocalFile() has undefined
behaviour if the path contained non-UTF8 sequences.

Task-number: QTBUG-25459
Change-Id: Iab5a0ba6afcfc4510e297984f2ffc208cedd752b
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
2012-04-26 03:15:22 +02:00
Olivier Goffart 67f58040ea Remove QMetaObjectExtraData and put everything into QMetaObject
QMetaObjectExtraData was added when support for QMetaObject::newInstance
was added. One needed a place to put the pointer to static_metacall in
the QMetaObject.

But as we break binary compatibility, one can change the size of
QMetaObject, and put everything back inside QMetaObject's own structure.
Meaning it is not required anymore to have one QMetaObjectExtraData
instance per QMetaObject anymore.

Change-Id: If0b8f586cbaf633eed10045adee3ba3366826c86
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
2012-04-25 20:19:29 +02:00
Kent Hansen 7b118c6456 Split qobject_impl.h into qobjectdefs_impl.h
This is done to make QtPrivate::FunctionPointer available to the
QMetaMethod declaration in qmetaobject.h (which already included
qobjectdefs.h, since that's where QMetaObject is declared), so that
the new template-based QMetaMethod::fromSignal() function may be
implemented.

The logic for statically generating the array of qMetaTypeId (used by
the template-based QObject::connect()) remains in qobject_impl.h,
since it's not needed for QMetaMethod::fromSignal(). Moreover, moving
that code would introduce a circular dependency, since qmetatype.h
as of commit 1946740446 now includes
qobjectdefs.h.

Change-Id: I36c35041e0c6661c3cf523684177a0b6c19e2d35
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
2012-04-25 20:17:18 +02:00
Kent Hansen 28c79d8c0b Add comparison operators == and != for QMetaMethod
This is done in preparation of introducing the
QObject::connectNotify(QMetaMethod) function. Together with the
forthcoming QMetaMethod::fromSignal() function, which returns the
QMetaMethod corresponding to a Qt/C++ signal (member function), the
comparison operators provide an effective way of checking which
signal was connected to.

Change-Id: I2de48628c4884a7174fb8574895f272cb3fe5634
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
2012-04-25 20:16:56 +02:00
Thiago Macieira 105b231214 Add detection code for AVX2, HLE, RTM and AES to qsimd.cpp
AES is currently not enabled, since we don't use it for anything. The
code is here with the proper detection should we want to in the
future.

RTM and HLE (Transactional Memory Extensions) I'll use soon in the
locking code.

Also rename a few variables to make it easier to read later on.

Change-Id: I800c66d7e1ba86ec037692928d94f53ea5d5868f
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2012-04-25 14:58:36 +02:00
Thiago Macieira e75b0e8c72 Replace the x86 XGETBV instruction with its opcode bytes
This is a new instruction, present on the SandyBridge architecture and
later. Some older assemblers do not support it and produce:

  {standard input}:225:no such instruction: `xgetbv'

The use of this instruction is protected by a CPUID check (function 1,
ECX bit 27), so we only run it in processors that do support it.

Change-Id: Ife7500c0deaab9539074835a4511e8c19602608e
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
2012-04-25 14:58:36 +02:00
Thiago Macieira dc6d1c6c3f Update the x86 feature-detection code, unifying x86 and x86-64
Most of it is the same for both of them, so let's avoid doing
everything twice. Or more, since we may support x32 soon. For Windows,
use the intrinsics. For GCC, we'd like to use cpuid.h, but it only
exists since GCC 4.3, so we can't.

And properly detect AVX support: it's not enough to detect that the
processor supports them, we also need to check that the OS enabled
support for the 256-bit registers.

Change-Id: Ibb4872cdb774de5701b18c40f4e612330a266214
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
2012-04-25 14:58:36 +02:00
Thiago Macieira 01ee098531 Fix atomics on SPARC
Inspired by
https://bugreports.qt-project.org/secure/attachment/26020/qt_atomic_sparc64.patch

Task-number: QTBUG-22479
Change-Id: Ie3275df96c639d6a75e05f70fe5745aeb34457f9
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
2012-04-25 14:58:36 +02:00