Commit Graph

18802 Commits

Author SHA1 Message Date
hjk
9e3a780c6a RCC: Avoid some needless to/fromLatin1 cycle
Change-Id: I70f330ee5ce083fb90f0c6d70e5b99063bc6e974
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-06-03 17:27:17 +02:00
BogDan Vatra
b8961e799b Android: Introduce SimpleJsonWriter
It speeds up the extraction and it reduces memory consumption.

Change-Id: I188f7efbb826343e5bd75f63ace36522f0d7a24d
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
2014-06-03 09:56:00 +02:00
J-P Nurmi
df1ba3594b Android: add support for extracting AnimationDrawable
Required for implementing indeterminate ProgressBar

Task-number: QTBUG-39215
Change-Id: I128eaf2879dd493da86541767a870ea786a5ddf9
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-06-03 09:18:11 +02:00
J-P Nurmi
e437d5ff4b qmake: generate make dist target for subdir projects
The original dist target no longer copies files around, but
merely does the final packaging. It depends on a new recursive
distdir target, which handles copying distfiles to the distdir.

[ChangeLog][Tools][qmake] Added 'make dist' target for subdirs
projects (unix only)

Task-number: QTBUG-21910
Change-Id: Ib59139c3fe196caf832d8dcefab484ab91f1f5ce
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-06-02 23:27:00 +02:00
Laszlo Agocs
f7ddbcb3d5 Remove tracking of the current fbo
When binding an FBO directly via glBindFramebuffer, the QOpenGLContext's
internal current_fbo, that is maintained by QOpenGLFramebufferObject,
becomes out of sync. This will lead to QOpenGLFramebufferObjects thinking
they are still bound.

Such state tracking should be avoided since it is becoming increasingly
difficult to keep it consistent between the various OpenGL API wrappers
and will never be robust enough when the application changes the state by
directly calling OpenGL functions.

current_fbo is now removed in QtGui. QtOpenGL is not touched.

Change-Id: Id809aab1306c9486d1e2ba3bb5aa93593659e920
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-06-02 09:31:10 +02:00
Martin Smith
46959875cf qdoc: Give documenter more control of linking
This update is preparation for implementing the actual task
described in the bug. To implement it required converting
the QML type node and the QML basic type node to be first
order tree nodes instead of subtypes of the documentation
node. This cleans up a lot of messy logic in some places.

It was also necessary to split the getLink() function in the
html output generator into two functions, one still called
getLink(), which handles the \l command, and one called
qetAutoLink() which is called for generating auto links.
This should make qdoc run faster.

The basic infrastructure was also added for parsing the
string in the square brackets for the \l command.

There will be a further update to complete this task.
Note that some autolinks might not be generated due to
this change. I haven't seen any yet, but I believe there
will be some. This can be fixed later, if it is a problem.

Task-number: QTBUG-39221
Change-Id: I8135229984398408205ba901b9ef95ceac74683c
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-06-01 13:40:53 +02:00
Frederik Gladhorn
bb794270ec Accessibility: Fix select state usage
The selectable/selected states refer to items in a list and similar,
do not interpret them as text selection states.
Without this change NVDA for example announces text edits as selected
which makes no sense and which it doesn't do for native text items.

Change-Id: Ib1d109523bd4cc2b9b40ace8a8c3d7d3a7f9f25c
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-05-31 17:12:58 +02:00
Jan Arve Saether
739ad76846 Do not always fallback to bitmap printing when printing alpha.
The previous code resulted in that all regions that had some alpha
blending content had to be rasterized as bitmaps.

With this patch, we only need to fallback to proper alpha blending
if there is a background content to blend against.
If there is no background content we simly assume that the background
is white (which happen to be the most common paper color). It will
then be treated as a solid background.

Task-number: QTBUG-33548
Change-Id: I9d2c9be95a701704cdb3724480421db49b4cdd98
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-05-31 14:29:31 +02:00
Giuseppe D'Angelo
9ce8a6b94c Fix QMAKE_EXTRA_COMPILERS' depend_command being ignored
A typo caused qmake to stop output dependency information
added by the depend_command clause.

Task-number: QTBUG-13334
Change-Id: I00fabc87438ce94e80341e6f88aa2e0eaab57e19
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-05-30 19:36:38 +02:00
Olivier Goffart
7e5e7eeaa1 QSaveFile: follow symbolic links
[ChangeLog][QtCore][QSaveFile] Now follows symbolic links while writing to
a link instead of replacing the link with the contents.

Change-Id: I5afd519cb9f96ae68fa4c23c33a18de75671a301
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2014-05-30 19:36:38 +02:00
Frederik Gladhorn
e747324f68 Accessibility: Fix rect for QComboBox and QRadioButton
This is especially relevant on mobile devices where screen readers often
send mouse clicks to the middle of the object.

Task-number: QTBUG-39100
Change-Id: I5972f21dd12434601d86136215ab9b61248c9691
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-05-30 15:58:46 +02:00
Martin Gräßlin
c040ba18ae Dummy window for creating GLX context should be override redirect
Without having the dummy window being override redirect Qt might
confuse window managers. Window managers might react on the create
notify event, but there is no reason to do anything with the window
as it is most likely already destroyed at the time the window manager
receives the create notify event.

By marking the window as override redirect we indicate to the window
manager that they can ignore it.

Change-Id: I35259436da4548f4190b92de412fb0de1d2e8077
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-05-30 08:17:27 +02:00
Giuseppe D'Angelo
51f6651d4c Make QWeakPointer's ctor constexpr
Change-Id: Ia23406ee80e83071a129606b76f78e2b6d0cf32e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-05-29 19:09:24 +02:00
Dario Freddi
e2df05f120 QTimer: add convenience singleShot methods for functors
This brings QTimer::singleShot on par with QObject::connect in
terms of the new Qt5 syntax. With this patch, it is now possible
to connect singleShot to a member pointer, a static function
pointer and a functor (with or without a context object).

The short code path for 0 msec is not yet implemented - it will
require further modifications to QMetaObject before it will be.

An additional SFINAE on the new singleShot overloads had to be
implemented to prevent tricking the compiler into believing
const char * might be a function pointer.

[ChangeLog][QtCore][QTimer] Implemented new style connect syntax,
including functors, in QTimer::singleShot

Task-number: QTBUG-26406
Change-Id: I31b2fa2c8369648030ec80b12e3ae10b92eb28b4
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-05-28 11:45:48 +02:00
hjk
161d98a61a RCC: Remove support for CONFIG += resource_combine
We don't use it and it was never documented. Search engine hits
only point to this occurrence in the Qt sources.

Change-Id: I2dd7adc5438893560daf01ac85620d9f9c028982
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-05-27 20:24:43 +02:00
J-P Nurmi
d318e14715 Android: extract View_scrollbarDefaultDelayBeforeFade
Task-number: QTBUG-39215
Change-Id: I8cc6e16a7155710ad322dc884ccbb194ca7d5b67
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-05-27 13:04:16 +02:00
aavit
72a424f512 Fix test script: let actual font used match the font description
Change-Id: Ia6bd1fc7f2e4a069fb29927f18994843e0db7dd0
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-05-27 13:01:45 +02:00
Thiago Macieira
d9b5e17bf7 Detect the CRC32 instruction availability at runtime
This requires being able to compile the SSE4.2 instruction at compile
time without changing compiler command-line flags. This code will get
enabled for GCC 4.9, ICC and MSVC.

Change-Id: Ifb9158ff7f49e6ae581297893cd1e21dd5ce3573
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-05-27 06:26:57 +02:00
Thiago Macieira
689e8055f5 Add support for single-file multi-target intrinsics in Qt
GCC 4.9 now allows us to #include any and all intrinsics headers, not
just the one for which we're compiling code, a behavior that ICC and
MSVC have had for some time. With that, we're able to have the functions
for different targets in the same source file. See the GCC manual:
  http://gcc.gnu.org/onlinedocs/gcc/Function-Multiversioning.html

This functionality is notified by the QT_COMPILER_SUPPORTS_HERE(XXX)
macro, which indicates that all the intrinsics from
QT_COMPILER_SUPPORTS_xxx are available and enabled. To complement, a
QT_COMPILER_SUPPORTS(XXX) macro is also added.

Unlike ICC and MSVC, GCC requires a special function attribute, which
will also cause code optimization. That's the QT_FUNCTION_TARGET macro.

Note: because of the absence of the target attribute, ICC and MSVC will
not generate instructions with the VEX prefix unless they only exist
with the VEX prefix or if -mavx / -arch:AVX are enabled.

Change-Id: I0c1880c20324bd8e0fc68a863e36d1fa7755dff0
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-05-27 06:26:57 +02:00
Thiago Macieira
cb09e1e889 Automatically enable precompiled headers for Qt modules
We'll use the master depends header for the module as the precompilation
header. We could use the master include, but tests show that
precompilation benefits taper off for big precompiled headers. The
important part is to get the Standard Library headers precompiled.

Each module can still override which header to precompile by setting
PRECOMPILED_HEADER after load(qt_modules). It can also turn off
precompiled headers by setting that to empty or by CONFIG -=
precompile_header.

Testing a few build times shows the following improvements (GCC 4.8 with
-O3 and C++11):
  QtPrintSupport: 14.7%
  QtOpenGL:       22.7%
  QtDBus:         29.5%
  QtSvg:          -2.4%
  QtXmlPatterns:  26.1%
  QtQml:          21.6%
  QtQuick:        25.0%
  QtMultimedia:    9.0%
  QtSerialPort:  -30.0%
  QtHelp:          5.6%

The numbers also show that precompilation is worse for small modules.

Change-Id: I3793fafcedaff5456527cd6b3777ffd162975c36
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-05-27 06:26:57 +02:00
J-P Nurmi
f2a3307cef qmake: share the default variables
Eliminate duplicate code => collect the default variables
to MakefileGenerator::writeDefaultVariables().

Task-number: QTBUG-21910
Change-Id: Ia03ce0240dd9a101ad9d35db636cd88f38a49320
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-05-27 06:26:57 +02:00
J-P Nurmi
26deadef47 Android: extract scrollViewStyle
Task-number: QTBUG-39215
Change-Id: I8d4155aa4db5d807d1846c5741c01693af24f846
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-05-26 18:25:48 +02:00
Jake Petroules
9e6a47d5e2 Use accurate title/status bar gradient colors on OS X.
QMacStyle now uses proper system colors when drawing status bars.

Change-Id: I618e485a2a68a484f7c8cb5635cd2bf529126c02
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-05-26 14:12:15 +02:00
J-P Nurmi
fedd1ba84d Android: ensure unique IDs when extracting style data for layers
Indeterminate progress drawables can consist of multiple layers that
don't necessarily have an ID. Ensure that the extracted file names
contains unique IDs to avoid extracted layers overwriting each other.

Task-number: QTBUG-35081
Change-Id: I3dc48bf363510ded9b955aa51fa479c607541169
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-05-26 14:12:15 +02:00
J-P Nurmi
8097d67293 Android: extract SeekBar_thumbOffset
Task-number: QTBUG-39215
Change-Id: I2a7b878b1a86280c92a445826f196de3245fd4e2
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-05-26 14:12:15 +02:00
J-P Nurmi
c7f99f3e86 Android: extract progressBarStyle(Small|Large)
The indeterminate drawable is used for QtQuick Controls BusyIndicator

Task-number: QTBUG-35081
Change-Id: Iecdc6e80444b5134ec1fa61916c7ac1612cd275f
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-05-26 14:12:15 +02:00
J-P Nurmi
3c04a2fbff Android: add support for extracting RotateDrawable
The rotation attributes are required for implementing BusyIndicator.

Task-number: QTBUG-39215
Change-Id: Ief51bf921f61b3b030f26d377b4bfd13913af6c1
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-05-26 14:12:15 +02:00
Giuseppe D'Angelo
0c789184c7 Fix support for depth/stencil textures in QOpenGLTexture
When allocating (mutable) storage for a texture, OpenGL mandates that
the client-side format and pixel type "match" the internal format.
That needs to happen even if we are not actually uploading anything
(because we're passing NULL as the data parameter and no PBO is bound).

This means that we need to pick a compatible format/type and not just
pass GL_RGBA / GL_UNSIGNED_INT. In turn, it implies adding new
enum values to the various format/type enums.

Change-Id: If40c63b1d44764b3be131dd1b41d13983a19ae45
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
2014-05-26 10:57:18 +02:00
David Faure
739fc9f24e simpletreemodel example: rename parent() to parentItem() for clarity
I show this example during trainings, and parent() is too much like
QObject::parent(), QModelIndex::parent() and our model's parent()
[which calls this method], so it's less confusing if this is called
something clearer like parentItem().

Change-Id: I101342051349d94c4a3bc3d4bc332194d6779293
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
2014-05-25 12:32:56 +02:00
Giuseppe D'Angelo
5b0bf90d26 Introduce QOpenGLTexture::target()
To extract the target of a given texture object. Somehow this
accessor was missing.

Change-Id: Ie43366bed3627a20204600e68e426b55abf37af6
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-05-24 22:04:49 +02:00
Konstantin Ritt
be0bfe09ee Guarantee QTextEngine::findItem() returns -1 for invalid strPos
...and check the returned value where it may cause undefined behavior
(i.e. negative amount of items or iteration from -1 to n).

Change-Id: Ib7bd9ab178526df45b792ad48b91ebbab6be861a
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-05-23 12:10:13 +02:00
Simon Hausmann
9b3b33b110 Fix linking warnings on OS X with qmlimportscanner
The linker complains that some symbols were compiled with different visibility
settings when linking host_build tools such as the import scanner. As it turns
out, we do CONFIG += hide_symbols for static libraries (such as bootstrap or
qmldevtools) but naturally not for the final program source code. It appears
symbol visibility is not of importance for static libraries in host builds (as
opposed to static libraries later linked into shared libraries), therefore this
patch removes that.

Change-Id: I237a2d8669374eb059dc91b5378f6e3ec93d67a6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-05-23 08:39:57 +02:00
Laszlo Agocs
39e0607825 Load winsys and gl dynamically in the windows plugin
The dynamic builds (-opengl dynamic) are now functional on Windows.

In such a build no components in Qt link to any OpenGL libraries directly
and qmake will not automatically add any such libraries to the
applications' makefiles. Instead, the libraries are chosen and loaded
during runtime and applications are expected to use QOpenGLFunctions
instead of direct OpenGLfunction calls.

Set the environment variable QT_OPENGL to desktop or angle to skip testing
and force the given implementation. The application attributes (AA_UseOpenGLES
and such) are also taken into account.

The testing logic is same as before: We try to load opengl32 and
resolve a shader related function. If this fails, ANGLE is chosen. This
allows utilizing full desktop OpenGL on systems that have proper drivers,
while a transparent fallback to ANGLE will be done automatically for
systems that don't. The latter includes also remote desktop connections.

Software rendering via Mesa llvmpipe is supported too. The fallback is
automatic on systems where the desktop test fails and ANGLE fails to load
or initialize (e.g. due to missing libs like d3dcompiler), as long as a
suitable patched build of Mesa is available.

[ChangeLog][QtGui] Dynamic OpenGL implementation loading is now supported
on Windows. This requires Qt to be configured with -opengl dynamic.

Task-number: QTBUG-36483
Change-Id: Ie8bb25a6d55b3a1609b00150aeccd909aec27313
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-05-22 22:00:59 +02:00
BogDan Vatra
09ed9e3eae Android: Extract data for native style on startup
When Ministro is not in use, we need to extract style
information on startup in order for the native Android style
to work.

The code to extract data from the device is contributed from
the Ministro project.

[ChangeLog][Android] Enable using native style also when
Ministro deployment mechanism is not in use.

Task-number: QTBUG-36019
Change-Id: I2afef5219b4e8fbb2f3e387cbc5e570da1f41011
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-05-22 18:20:02 +02:00
Berthold Krevert
00470662e3 Fix a crash when using QtQuickControls with core profile
QOpenGLContext::versionFunctions returns 0, if a QOpenGLFunctions object
for a legacy OpenGL version is requested while using the core profile.
This leads to a crash QOpenGLContextPrivate::maxTextureSize()

Change-Id: I32845643094336cebcc666806a411524fe3e869b
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-05-22 14:43:06 +02:00
Simon Hausmann
2064bf6155 Merge "Merge remote-tracking branch 'origin/stable' into dev" into refs/staging/dev 2014-05-22 14:24:28 +02:00
Tor Arne Vestbø
0127962e47 Xcode: Make QMAKE_BUNDLE_DATA always copy files relative to root of bundle
Instead of sometimes ending up inside Content/Resources. The two build
phases PBXCopyFilesBuildPhase and PBXResourcesBuildPhase have different
semantics of where to place the files. For the former we use the root of
the bundle as the destination, and this is how QMAKE_BUNDLE_DATA is
documented and used, as well as how unixmake2.cpp implements it. The
latter on the other hand, always ends up in the resources subdirectory
on OSX.

Task-number: QTBUG-35318
Change-Id: I45bbd0dfe7ea78ae330ecb0c91efa74e1c76c9eb
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-05-22 13:20:44 +02:00
Tor Arne Vestbø
84c2749767 Xcode: Make sure we add a PBXBuildFile entry for ICON
The ICON qmake variable is implemented in the Xcode generator through
the ProjectBuilderSources::files() function, where we append the icon
to SOURCES (for some reason). This means we can't exclude non-object
sources when writing out PBXBuildFile entries, as the icon file entry
is referenced later on in the bundle resources phase.

This is a partial revert of 66f6e5b162 which introduced the broken
logic.

Change-Id: I120d2325165a1eefd3961a9162e9e5eb3a576c36
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-05-22 13:20:40 +02:00
Tor Arne Vestbø
6bebb58adb Remove two unused functions in the CoreGraphics paint engine
Change-Id: I5832d24e77e2f33f58a7c679de06e08dfc2a7384
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-05-22 13:20:36 +02:00
Lorn Potter
d86af6e4b6 fix crash in connman bearer backend when accessing null objects
Change-Id: Ib199b4093d86d1596b630223d0734171ba0d82c5
Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-05-22 13:12:13 +02:00
Kai Koehne
297be273a3 De-inline QDebug destructor
This injected quite some code on every use of qDebug and friends,
while not giving any measurable performance benefits.

Change-Id: I7b51f99130f18f1252da01e313f7b97c43a5480d
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-05-22 08:35:06 +02:00
Simon Hausmann
508b95899d Merge remote-tracking branch 'origin/stable' into dev
Change-Id: Ia36e93771066d8abcf8123dbe2362c5c9d9260fc
2014-05-22 07:46:17 +02:00
Jake Petroules
5d2939344e Trigger repaint of window when toggling unified toolbar on or off.
Change-Id: I5204e5c65ae3cf84459cc62f587ecccd855e02f8
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-05-22 02:52:54 +02:00
Andy Shaw
a82249a47b Mark the missing QDnsLookup constructor as \internal
Implementation will be added for Qt 5.4.0 as it cannot be done
sooner.

Change-Id: I4d2626416fae99339988cd994653ce7ec753f081
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-05-21 23:41:20 +02:00
Jake Petroules
f2891be008 Add a menu item to mainwindow example to toggle unified toolbars.
Change-Id: Id7d7433849565b1acfc690cf5e23e8105c6af993
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-05-21 21:07:58 +02:00
Jake Petroules
a97f96ca8e Turn setUnifiedTitleAndToolBarOnMac into a slot.
Change-Id: Ieb28960bf3fb9e70a6bcc6d47ff723f0ed4e1b63
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-05-21 21:07:52 +02:00
Karim Pinter
8bdf319c28 Fix for bindvalue(int) memory allocation problem
QSqlResult::bindValue(int index, ...) is increasing the memory usage
when called multiple times for same index

Task-number: QTBUG-33169
Change-Id: I4f26125f6bb994bb430dc054df5761b6ddf03075
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2014-05-21 17:30:13 +02:00
Axel Rasmussen
2983cb9531 Fix broken QPlainTextDocumentLayout after removing chars
This fixes an issue where, if characters were removed from several
blocks in a single edit, the document layout would end up being
corrupted since the document layout manager wouldn't re-layout the
proper number of text blocks.

Task-number: QTBUG-30051
Change-Id: Idf3a6f567120e6a5dbebf1f65f685d374219328a
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
2014-05-21 17:30:11 +02:00
Thiago Macieira
309d3557ca Improve a few string operations with AVX2
AVX2 brings the new PMOVZXBW instruction that extends from one 128-bit
SSE register to an 256-bit AVX register. With that, the main decoding
code is just two instructions (the loop requires a couple more to
maintain the offset counter and do the end-of-loop check).

This buys us another 4% performance improvement in the fromLatin1 code,
calculated on top of the VEX-encoded SSE2 code (which is already a little
better than plain SSE2).

Change-Id: I675fa24de4fa97683b662f19d146047251f77359
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-05-21 17:10:56 +02:00
Konstantin Ritt
4dba08eebf Decrease the life time of SpecialData::resolvedFormats
Once LayoutData::items gets cleared, accessing (or re-using)
SpecialData::resolvedFormats may lead to a undefined behavior,
so clear SpecialData::resolvedFormats right after LayoutData::items.

Change-Id: Ib389f0029a0562f5d2837f62f76197510a0db099
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-05-21 15:05:33 +02:00