The compiler service needs to know what options to pass to the compiler,
and these options can affect the outcome of the shader blob. Runtime
compiled shader output must match this file name in the binary directory.
Pre-compiled shader blobs (e.g. those placed in a resource file) are
permitted to drop options from the file name if the implementor can
ensure the blob is compatible with the target.
Defines are not written out as options, but written into the shader
source, and therefore affect the cache key.
Change-Id: I11e4a43fcf6818ddb29aca5eba3d8647ba4021a1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
The actual code in testlib now indents the duration tag when it is for a
function.
Change-Id: Iee62db9c81f11dc54e57f166bf9fb2b7012b7e03
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
QQnxScreen destructor was leaving the cover window to a reference
to it leading to a crash when the cover window itself was destroyed.
Change-Id: Id82097d54fea79b0b9ec1cef439bd704da9ca453
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Bernd Weimer <bweimer@blackberry.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Window group related code worked previously only for the 'root'
window and other windows that had no parents (which then joined
the window group of the root).
Introduced a new function joinGroup that makes the group related
calls, this can both join and leave groups.
Default group joining is performed in setVisible now rather than
setScreen. The advantage of setVisible is that one can rely on it
getting called at some point but it is also possible to create and
interact with a QQnxWindow before it is called. This allows
the default group handling to be overridden via the native
interface. If the group is set (or explicitly not set) then the
default handling is not done.
joinGroup is also called from setParent so that if the parent window
is changed the window joins the parent group.
Change-Id: I03e3801ecb4e4cf901c02e45f00472a87692c2ec
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Do not include the project file twice or other
.pr? files outside the project tree.
Task-number: QTBUG-21910
Change-Id: I62af842282ccdc5b9099d9227d5395ebe3f0698c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
The cursor implementation is generic GL(ES) code that should be shared
by all the present and future egl-based embedded platform
plugins. Follow the pattern of QEGLPlatformContext and move this class
into eglconvenience as QEGLPlatformCursor.
Similarly, the common bits from the context implementation context are
moved back to EGLPlatformContext.
eglconvenience has now base classes for integration, screen, window,
etc. too. By using these, eglfs becomes much smaller and cleaner. This
also paves the way for creating new, separate EGL-based platform
plugins for Android, embedded Linux, etc.
Also added some documentation to each of the base classes.
devicediscovery is now fixed to be usable on any platform. The
implementation in this case is naturally a dummy one. This finally
allows using it from anywhere without myriads of ugly ifdefs.
Change-Id: I02946e360c04e02de7fe234a23a08320eff4ccf5
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
This commit adds a dependency checking for a recently
introduced define. On NDKs 10.2.1 and later it compiles
with support for VIRTUALKEYBOARD_LAYOUT_ALPHANUMERIC.
NDKs 10.2.0 and earlier do not know this define
and therefore it will be ignored.
This is necessary because there is no newer NDK
publicly available than 10.2.0.
Assuming pure QNX SDKs are missing the define completely,
we are only including it on recent BB NDKs.
Change-Id: I6f814e5c2d77c50edf8534f3567b157f71147555
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Reviewed-by: Sergio Ahumada <sahumada@blackberry.com>
Commit 773dd01 introduced a general mingw platform scope, which
is cleaner and more flexible than matching the spec name.
Change-Id: Ie3a9cb791a83f7c8a51bc4e23069190c452ab521
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
For example, QObject is non copyable (its copy constructor is deleted or
private via Q_DISABLE_COPY). It should still be allowed to pass a reference
to a QObject as an argument to as signal (or slot).
This fixes a compilation failure.
Task-number: QTBUG-36119
Change-Id: I9bcf477e347d69fdae2543c99781b6421883be78
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The tests themselves may not actually pass, but it's a start, and allows
us to sanity-build a few things in the CI that actually produces a final
binary.
Change-Id: I02643b6ffa1522de1a7d17d737c8ab45ffac6a93
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
The plan is to do better caching in ensureColumnAndRowData(), and
this patch will benefit for any such changes later
Change-Id: Id1662e3fe7f70079e29ddb6e3d64e6e580ad9e0f
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
This is a preparation step for 'make dist' target for subdir projects.
UnixMakefileGenerator needs these variables while extending
writeSubTargets() and writeDefaultVariables() for 'make dist'.
Partial cherry-pick of
https://qt.gitorious.org/qt/jpnurmi-qt/commit/8c4ef19
Task-number: QTBUG-21910
Change-Id: I02a616a98448bc3041ef0f4fd034bfb4c2199e41
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Child windows have to keep their relative position when the parent is
moved.
Change-Id: I7d24d67578c9aaa332136d18ad9b478b120e4696
Reviewed-by: Roger Maclean <rmaclean@qnx.com>
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Support for multiple native surfaces is needed by applications that need
to mix raster windows with GL windows.
Rework the raster and opengl implementation, get rid of eglfs and
fbconvenience dependencies.
Create a single android platform plugin.
[ChangeLog][Android] Rework the raster and opengl implementation.
[ChangeLog][Android] Create a single android platform plugin.
Task-number: QTBUG-34650
Change-Id: I9b1ab51554823329dda8cfbf8fef27c38f917c7b
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Corrected EGL error code query and cover windows creation in the
"no-rootwindow" case.
Change-Id: I86aaa4b59283f7153f8ab63c5bf231bc9da7538c
Reviewed-by: Fabian Bumberger <fbumberger@rim.com>
Qt should not dictate which warnings are disabled for client code.
Therefore warnings will only be suppressed when building Qt.
Change-Id: I1c470ba346c8272bae2a38385e425afa6eb50170
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Work around GetSystemMetrics() returning the wrong value using
MSVC2012 and later. The special handling of Windows 8 and later
is then no longer required.
[ChangeLog][QtWidgets][QWizard] Fixed frame when using Vista style/MSVC2012.
Task-number: QTBUG-36192
Change-Id: I39c2ab70a266f12cd65fa740b10b86edffa60417
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
The code assumed that CGImageForProposedRect would return a sensible
sized image, but that can return basically any size (depending on the
NSImage's image representations). In the case of the bug report this is
a 1024x1024 pixmap when requesting a pixmap of size 64x64 and larger.
Make sure that we return a pixmap of the exact requested size.
For this, themeHint must also return sizes in device coordinates.
Task-number: QTBUG-35009
Change-Id: Iaae11023bab6d4122815ca4010aab6967dfb18a0
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
The front-end functions in the QTest namespace are declared static
inline, so the compiler can complain. Make it not do so.
Change-Id: I4036c85010e02ef22a8071ed05e49173dfc64729
Reviewed-by: Jason McDonald <macadder1@gmail.com>
Since now in Qt5 the moc does full macro substitution, it needs to handle
the defines passed is command argument, even if they span over multiple
tokens, or if they do not have any token.
Example:
moc '-DCOMPLEX=QVector<int>' '-DEMPTY=' foo.h
[ChangeLog][moc] Fixed passing -D of a macro defined to something more
complex than a single identifier.
Task-number: QTBUG-33668
Change-Id: Ie8131de215f1659a24af4778d52ee40cda19759f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
The patch reduces amount of allocations during
string parsing by using QStringRef. The operation
is safe as neither QDate nor QTime uses QString as
a storage type
Change-Id: Ib9f40d86e8e420653ac4fe8ba883d554331ffc32
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Qt since approximately 4.4 has set the verify callback on both the SSL
store and the SSL context. Only the latter is actually needed. This is
normally not a problem, but openssl prior to 1.0.2 uses the verify
code to find the intermediate certificates for any local certificate
that has been set which can lead to verification errors for the local
certificate to be emitted.
Task-number: QTBUG-33228
Task-number: QTBUG-7200
Task-number: QTBUG-24234
Change-Id: Ie4115e7f7faa1267ea9b807c01b1ed6604c4a16c
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
On iOS we don't build the NEON drawhelpers as they are implemented using
GAS syntax assembly, so prevent drawhelpers.cpp from trying to use them.
Follow-up to 01c59ac857.
Change-Id: I3e3dc9b0e1d780db3184413d2ff3010ac8dcd37b
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Fixes ARM build, as the NEON drawhelpers and image conversion functions
were ifdef'ed out.
Follow-up to 1b12c0608b.
Change-Id: I0b5e89c8f445741432db2dfe1f8d971b971c8605
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Static builds of Qt will automatically enable C++11 for all projects,
but this happens in mac/default_post which is after our check.
Change-Id: I22a01e5d876242263fa31f8a404a65905c6c1877
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
For convenience, it reads more easily (and is somewhat expected) to
be able to add a string to a QJsonArray like you might with a
QVariantList: QJsonArray() << "string". Previously, QJsonValue provided
a private void* ctor to explicitly deny this case because it would
implicitly convert to a boolean. This ctor provides a const char* ctor
(much like QVariant) that interprets the incoming text as utf8 and
creates a String type QJsonValue.
[ChangeLog][QtCore][QJsonValue] Added constructor to QJsonValue for const char *
Change-Id: Icafa954d3da1fb264f9d0fd7cd1a1d2fbbe15095
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
operators for +, +=, and << were added to QJsonArray to make
it easier to work with, and more closely resemble the Qt
container classes
[ChangeLog][QtCore][QJsonArray] Added convenience methods to QJsonArray for appending QJsonValues
Change-Id: I96e0a43015f7c0f980cbbef7f20bd2085ee04795
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This otherwise crashed:
QCommandLineOotion opt("with=equals");
parser.isSet(opt);
Can't write a unit test because it produces a warning.
Change-Id: Ifc67f20bb4b16b96d93dffbe4e82e6cc8a17584d
Reviewed-by: David Faure <david.faure@kdab.com>
This header is used by qevdevmousehandler.cpp, so it's not a bad idea
to check that it exists as early as here. Apparently, FreeBSD's Linux
support has linux/input.h, so the "evdev" test was passing and then
the build would fail later.
Task-number: QTBUG-36205
Change-Id: Iab9788350a9f4c90d355524769a7a396679fd218
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
update-mime-database does not exist, so there is no point in
trying to build this test.
Change-Id: Id60f2f8fc3af33d3f7ae2fb4f1042356b60f6596
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Wolfgang Bremer <wbremer@blackberry.com>
This fixes QtQuick key handling not propagating key events beyond the
specific onXPressed handlers, due to erroneously thinking those exist,
when signal spy callbacks are present.
Considering signal spies for isSignalConnected() goes back to 87239ef6 in
Qt4, and seems to be there just due to this code being based on activate(),
where this check obviously makes sense.
Change-Id: Iad41e42a8d3ee2a16a55be7d1a7cdc51484981ce
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Right now /dev/fb0 is hardcoded. This is not ideal. Therefore
QT_QPA_EGLFS_FB is introduced. This environment variable can be set to
a different framebuffer device. Once it is set, eglfs will use the
specific device. This is similar to linuxfb's fb=... plugin parameter.
The actual behavior depends on the board-specific implementations.
For now only iMX6 has real support. It extracts the index from the
device name as bind the EGL display to the corresponding framebuffer
using the vendor-specific fbGetDisplayByIndex(). Other hooks can
follow suit later on.
With this patch eglfs is at least on par with linuxfb, meaning that,
if the board supports it, different apps can run on different screens.
Task-number: QTBUG-36113
Change-Id: Ia3c88bd06e108bc668433e3c5c3fce34a5a0e73d
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
When building with debug, all SLOT or SIGNAL macros will
expand to a function call, and then function will call
QThreadData::current(), which will set
QCoreApplication::theMainThread if it has not already been
done. Since Qt Widgets has these macros in the static
initialization of the library, we would register the
Android main thread as the main thread of Qt, which would
mean that the actual application object was created on
a different thread than the main thread. This caused warnings
to appear, and also triggered a race condition which
caused widget applications to sometimes show a black screen
instead of content on startup when run with the OpenGL plugin.
Task-number: QTBUG-35048
Change-Id: Ie8979f5e7cd5662f8d7dd276de9f94f27cc120b5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
I've added the most interesting features. I've skipped three features
that GCC and Clang will support:
N3323 contextual conversion tweaks
N3653 member initialisers and aggregates
N3664 clarifying memory allocation
Of those, only N3653 brings a new syntax, so it could be added later.
Change-Id: I8314d81e028c9fb22052f73961c81cdc69c1461e
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Our inverse premultiply is rather unoptimized. It's major weakness is
using three divide operation which are the slowest integer operations.
This patch reduces the three divisions to just one but using an
approximation that is accurate for all uchar values.
The patch also adds a general short-cut for alpha==255.
Together these improvements makes it 2 to 16 times faster depending on
how many 0 and 255 alpha values are encountered.
Change-Id: I96d7098a1bc320793b0d0526637acd1fdb5a43eb
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Those paths need not be in INCLUDEPATH: qmake always adds them to the
compiler command-line and we should match the behavior if we expand
INCLUDEPATH here.
Change-Id: I89508d15ac534b54ae873a42c4ad9764408042b5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
...unless the user passed the -no-sse2 option to the compiler.
[ChangeLog][Important Behavior Changes] Qt now automatically generates
code for processors supporting SSE2 on i386 platforms. To disable
this, pass the -no-sse2 option during Qt configuration. Since this
feature has been present on CPUs for 10 years and since Qt no longer
checks for runtime support for SSE2, we strongly encourage users to
leave the default setting on for best performance.
- For Linux distributions that must retain support for CPUs without
SSE2, we recommend doing two builds of Qt and installing the
SSE2-enabled libraries in the LIBDIR/sse2 directory. Tools,
plugins, and examples are not affected.
- See discussion on the Qt development mailing list:
http://lists.qt-project.org/pipermail/development/2013-November/014085.html
Change-Id: I7f9b1f58a9f66b6e5fe295bac15f87d34343695e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
These two functions used to cause a runtime detection of the CPU
features in order to improve their performance. Since the last two
commits, there's no runtime detection of either SSE2 or Neon support,
so there's no point in attempting runtime detection.
Task-number: QTBUG-30440
Change-Id: I54fe92787c983003c2cc867ee636daec30063033
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Now the only way to enable Neon support is to change the mkspec.
[ChangeLog][Important Behavior Changes] Qt no longer checks for
support for the Neon FPU on ARM platforms at runtime. Code optimized
for Neon must be enabled unconditionally at compile time by ensuring
the compiler supports Neon. You may need to edit your mkspec for that.
Task-number: QTBUG-30440
Change-Id: I4df9b2bf3cd022f8ed70f02f16878cb2cb3fe6fb
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
If the compiler supports SSE2, we'll use our SSE2-optimised code
unconditionally. Runtime detection is left for SSSE3 code.
The SSE2 codebase is big and thus a timebomb if an inline function
gets leaked out and run without runtime check. In reality, it's
extremely unlikely people running CPUs without SSE2 support are
running Qt 5 at this moment (they're either too old or too new,
e.g. Intel Quark).
The SSSE3 codebase is a lot more manageable.
Task-number: QTBUG-30440
Change-Id: I3e586e4434e820365d5316b650ee3061d0acf767
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
It's common to check the Android API level at runtime to determine
what functionality is available. This change provides a convenient
way to get the Android SDK version (API level) from c++.
Change-Id: I88f65ae87e0fa8ac0affefffbd1b1bba855c9f46
Reviewed-by: BogDan Vatra <bogdan@kde.org>
storePixel<QPixelLayout::BPP32> would have been called by
storePixels<QPixelLayout::BPP32> but that function has an overload that
uses memcpy instead. So it's really unused.
Found by Clang 3.4.
Change-Id: I661804e273486d3469221fdd362a24cd77cfb8a7
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
it leads to pathological cases where the number of loop iterations may
go way beyond the reasonable.
this means that users need to avoid using the = operator in alternative
branches that lead to different sources/subdirectories being included
into the project. this is a bit of a corner case anyway, as people
usually add directly to SOURCES/SUBDIRS.
Task-number: QTCREATORBUG-1595
Change-Id: I7783e318fbc2790f6a853ba4e3f4a12db881feb5
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
(cherry picked from qtcreator/30bd7fcce1aef974f6af9eaa6532aa1f2b6192d2)
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>