Interestingly, before that patch this compiled fine:
typedef Q{Explicitly,}SharedDataPointer<QSharedData> Ptr;
Ptr p(new QSharedData);
auto hash = qHash(p);
This was because both Q{Explicitly,}SharedDataPointer overload 'operator
bool()' => qHash(int) was accepted. This, however, doesn't make sense.
Someone should probably take care of applying the safe bool idiom to
these classes as well.
Change-Id: I8bb6b2aacaa6166da817a6f3847093fd20a05a67
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
In order to properly use QAbstractTransition object in QML we need to
know when these properties are changed.
Change-Id: I5449ecf3fce33e164f645d7263f21b20abfcd026
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
In order to properly use QSignalTransition object in QML we need to
know when these properties are changed.
Change-Id: I7ca318d50513086146b85eaeee4dabbcdef8c299
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Add a QImage based fallback for renderToTexture widgets, and use
that when rendering to something else than a QWidgetBackingStore.
Change-Id: I415a3a27c4ecb4ddbac45181c5a568b01ac5cb7a
Task-number: QTBUG-39562
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Just to be safe. The Q_DECLARE_METATYPE needs this.
And including some Qt header is necessary anyways.
Change-Id: I6e97493434760f37a79e735293cef8d4213c2e11
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
QOffscreenSurface has to stay usable even after returning from app.exec().
Hence close()ing the underlying hidden window, that is used on platforms that
do not provide real offscreen surfaces, is wrong.
Normally all QWindows are closed (and thus destroy()'ed) when quitting the application,
meaning the the offscreen surface cannot be made current anymore after returning
from exec(). This is an unnecessary limitation and makes certain cleanup operations
impossible.
Task-number: QTBUG-39908
Change-Id: Iea1489378a18f29ff84ba8f13a6dad2d66d2b315
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Examples using OpenGL 1.x cannot be migrated. Therefore, similarly to ES
builds, we just disable them.
Change-Id: I76e888d2ecfb2582ae35853d9dcdd0cb686fddc6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
It enables you to get a valid QSharedPointer instance to 'this',
when all you have is 'this'.
Task-number: QTBUG-7287
Change-Id: I3ed1c9c4d6b110fe02302312cc3c4a75e9d95a0c
Reviewed-by: Richard J. Moore <rich@kde.org>
This is essentially an opt-out using CONFIG += resources_small for the
'big-data' feature introduced and made mandatory with commit 5395180.
This is currently not active in any configuration, but can be used
when the two-pass approach is neither needed nor wanted.
Change-Id: I6d4f663843e629da6f39ac4da5e77d39c58b3ddf
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Don't create a dispatcher for all adopted threads, only the main thread.
This was causing the GUI thread to skip platform dispatcher creation.
Change-Id: Id0de976f9def48e8d58efd20815b6fd18faebefa
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
ICC does support C++11, but the Apple headers contain invalid code that
Clang seems to accept. In C++11 mode, code using CF_ENUM expands to:
typedef enum EnumName : CFIndex EnumName; enum EnumName {
Which is valid Objective C++, but not valid C++.
Bug reports to Intel and to Apple are pending.
Discussed-on: https://groups.google.com/a/isocpp.org/d/msg/std-discussion/yDfkDo6C0BM/EVWzwjVbyh4J
Change-Id: I7d501e94212a90f5c7197a3b56016dadac2c44ad
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
[ChangeLog][QtCore][Logging] QT_MESSAGE_PATTERN can include a
timestamp using %{time} or %{time format}
Change-Id: I2aaa9c7a6fcb340b5ce9f1fe8a78002e5fc4e6fe
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Use SetWindowPlacement() to set the normal position when applicable
as is done in Qt 4.
Task-number: QTBUG-39544
Change-Id: Ia158b968ea15361d9937619f07b56eb8a0312a13
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
This macro is equivalent to arg.toUtf8().constData().
It is usable for "%s" arguments of qDebug(), qWarning(), qFatal(),
qCritical().
Change-Id: I2d9956e6651271e1e2183dce9c835511cf923bf3
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It somehow forgets the dot and thus can't open any moc or uic includes.
Intel bug: DPD200357915
Change-Id: I610ba4d3df0072bfb83f90347d94f4586d0d8c86
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The Intel compiler does support C++11 options on the command-line.
configure.exe will correctly try to run it, but the test would fail for
incorrect reasons.
First, we need to pass the option -Qstd=c++11 to enable it.
Second, on Windows, the GCC experimental define isn't defined, nor is
__cplusplus updated yet. So we have to rely on the Intel-specific macro.
Third, we need CONFIG += console so that the application succeeds in
linking against a main() function, as opposed to a WinMain one.
Change-Id: I8f3252189df4f8854a9d9aa2cd919c288d2df420
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The -xXXXX options are deprecated, so use the GCC-style -mXXX options.
Change-Id: I235c73c4a170003b5b5e20bd4c4c7125107f7f82
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
So let's define the version ourselves. This is done for all OS because
__VERSION__ doesn't include the actual compiler version...
Change-Id: Ida706a8f4bfe75af04ce8f11ea2124c1659c19ce
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This allows us to quickly test if a compiler actually supports what it
claims to support.
Change-Id: Ia32212a11774aa7947ddffae30837c53665374f3
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Add detection of MIPS DSPr2 at run-time in qsimd.cpp. This makes it
possible to have generic Qt builds for MIPS that can enable the fast
code paths for processors with the DSP ASE at run-time. Also, this
makes it possible to manually disable them by setting the environment
variable "QT_NO_CPU_FEATURE=dspr2". Last, but not least, functions
requiring DSPr2 are not enabled when running in CPUs with version-1
DSP.
Change-Id: Ia5a01d84119553c22ab83386c74a6cb8ba5fee53
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It had been so far only supported by GNU-style compilers due to the
IA-64 portable C++ ABI. But it's mandated by C++11, so let's add the
macro and use it in Q_GLOBAL_STATIC.
Looks like Visual Studio "14" will support it.
Change-Id: I9710b5146606c7e494c43413f49900419396cfe0
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Improve consistency and use QTextDocument functions to find ranges
instead of coming up with our own scheme. This is important since
QCursor's char format depends on block positions.
Change-Id: I94eb137882dc6b5f7b01fa7693b4a536cc48d02a
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
Showing warnings based on an (otherwise unused) WindowMasks platform capability
is wrong. The default implementation of setMask() shows a warning anyway so it
is safe to call it in any case.
On top of this, platforms like eglfs may want to avoid showing any warnings,
since they are completely useless for end users and pollute their debug
output and Creator panes. The standard way is to provide an empty implementation
for the function. This cannot work however if there are hardcoded warnings
generated in the common widget code.
Change-Id: I842a96b5b84c50b7caa59bdd48107785b21ab5af
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Revert cb09e1e889 for MinGW. gcc on Windows reproducably crashes
when the pre-compiled header becomes big enough ...
Change-Id: Icd5a3dfbe59f5ff5c78832e7b4436d0f1cfa1031
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
The system font for Windows should be MS Sans Serif which is what Qt 4 was
using and not Arial.
Change-Id: If3ed55bce87f6376b2897f1fc487bbc0627d1799
Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
It is needed to control a QStateMachine object from QML.
Change-Id: I19271d97718af2d688c477647d6341f70fdef3ea
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
This update enables using the module name as the parameter
in square brackets for the \l command. You will use this
when your link goes to the wrong page. e.g. Suppose this
link command went to a page in QtGui instead of the page
where it is meant to go in QtQuick:
\l { mytarget } { the text for my link }
When a link goes to a page in the wrong module, it means
the target exists in more than one module and because qdoc
searches the modules in sequence and stops when it finds a
match, it might match the wrong target. This would be a
collision in the single tree version of qdoc, but now qdoc
builds a separate tree for each module. Since you know
which module you want your link to go to, put the module
name in square brackets as the first parameter, like this:
\l [QtQuick] { mytarget } { the text for my link }
Now qdoc will only search for mytarget in the tree for
the QtQuick module.
The \target command can now be used anywhere. It has not
been tested in all possible locations, but it works in
the places where people have asked why it doesn't work there.
There will be a further update to complete this task for
implementing the other types of parameters that can be in
the square brackets.
Task-number: QTBUG-39221
Change-Id: I2db4fdd0319ff272ec1d2fa9dc396f14599d80f9
Reviewed-by: Martin Smith <martin.smith@digia.com>
Qtbase contains four identical implementations of next power of two,
these should be shared and the implementation made available to other
qt modules, as it is also used many places outside of qtbase.
[ChangeLog][QtCore][QtMath] Introduced qNextPowerOfTwo methods.
Change-Id: Id23fbe5ad6bae647b30d5a4212c0330e48a50278
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This is the only place in Qt source code we use FORCE_UREF, and can
be traced back to the very first qt.git commit. In any case, it's
broken: It returns a reference to a local variable, since the debug
argument is _not_ a reference.
Using a reference both for the argument and the return value would
be actually the canonical solution, but that breaks with
QDebug << operator(QDebug, const QVariant &),
exported in QtCore. The C++ lookup rules apparently prefer this
overload then to be used for outputting containers ...
Change-Id: Iaf5e5dd89d4f3ebe6454eba219046b4f25b0d717
Reviewed-by: hjk <hjk121@nokiamail.com>
-applied logic to projects that set (or not set):
-landing page
-home page
-version
-change would remove duplicate information and proper module names
instead of "Title | QtModule 5.4", it would be "Title | Qt Module 5.4"
-tested on various projects:
-Digia projects
-Qt 5
-Qt Creator
Change-Id: Ica7d5203d293910c98306f947bfee8454b9225d0
Reviewed-by: Martin Smith <martin.smith@digia.com>
Looks like a few extra features have been supported for a while and we
had never noticed. That includes the C++98 template friends, C++11
extern templates and C++11 nullptr. They've been supported since at
least MSVC 2010, possibly even earlier, but I don't have MSVC 2008 to
test with.
Testing also indicates that MSVC 2012 and 2013 have a bug in their
support for the range for construct. The following code fails to
compile:
for (int i : l)
do { (void)0; } while (0);
test.cpp(2) : error C2059: syntax error : '}'
Reported as https://connect.microsoft.com/VisualStudio/feedback/details/903999/c-11-range-for-construct-fails-to-compile-when-body-is-a-do-while-block
Change-Id: I5d0156f4c847c45fa1f6f5b9ee4ddbdacb8ab59b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Don't define them if qcompilerdetection.h was compiled in C mode.
Change-Id: I080b62ef7c68bb582e55e9e3a1dff4e6c1bb48bd
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Add conversion methods similar to those in QString to QByteArray. This
is often more useful than the QString version since std::string like
QByteArray are byte arrays.
[ChangeLog][QtCore][QByteArray] Added convenience methods to convert
directly to and from std::string.
Change-Id: I92c29d4bb1d9e06a667dd9cdd936970e2d272006
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
With the previous solution, a thread pool timer callback fired
in the same thread as the dispatcher. Now that timers can be called
from the base thread pool, callbacks can come from alternate threads and
so the associated event dispatcher must be tracked. This change refactors
how timer info objects are created and tracked so that they can be
properly created/destroyed/queued inside the timer callbacks.
All QTimer tests pass.
Change-Id: I18a5573df2a8fa32d1982c61e665d5df664b6db0
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Instead of using std::thread, use the WinRT ThreadPool to manage
threads. This allows for setting the scheduling priority, and provides
a path to enable XAML integration (which requires Qt run on a background
thread).
QThread::terminate() is still unsupported, and only the winmain thread
can be adopted due to the behavior of the thread pool when creating
tasks from the GUI thread. The associated tests are now skipped, and
all other QThread tests pass.
Task-number: QTBUG-31397
Change-Id: Ib512a328412e1dffecdc836bc39de3ccd37afa13
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
- Remove WP8.0 code paths
- Remove WinRT types from header as much as possible
- Use ComPtr where appropriate
- Use COM convenience methods
Task-number: QTBUG-38115
Change-Id: Ib241c3e5107add255a48340f86ee5885f895ff83
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
- Remove WinRT types from the header
- Use ComPtr everywhere
- Use convenience methods for HRESULT and async operations
Task-number: QTBUG-38115
Change-Id: I540a3349612b98c45545c92b2cb6d21a34918b8f
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
This removes extra code and potential memory leaks by using smart
pointers instead of calling Release() directly.
Task-number: QTBUG-38115
Change-Id: If799d6948af8c3df3d0c1617742653b104087e3b
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
As most of the Windows Runtime API is asynchronous, we have used various
methods for blocking in the calling thread waiting for the operation to
complete. This introduces an inline method, QWinRTFunctions::await(),
which performs the wait in a consistent and safe manner.
Task-number: QTBUG-39407
Change-Id: I54cd0e178aa560891ab92bfc5e7a6553e60e01b2
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
Almost every native call in WinRT uses COM HRESULTS. Provide some
convenience macros for returning after failure.
Task-number: QTBUG-39407
Change-Id: Ia99b0acd771d53c52732f270e46dd6937538e131
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>