| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/qml/jit/qv4targetplatform_p.h
src/quick/accessible/qaccessiblequickitem_p.h
Change-Id: Ic95075a5fad81ec997a61561bd65979dfa3b9d4d
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
All setters now store tags, so no-one can play loosy-goosy with the
boxed values (and accidentally forget to "tag" a value, resulting in
random garbage).
Change-Id: Ia0b78aa038d3ff46d5292b14bd593de310da16a0
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Part of 0e053528 was reverted in the merge, about lastTimestamp. It
will be applied later in separate commit.
qmltest::shadersource-dynamic-sourceobject::test_endresult() was
blacklisted on linux.
Conflicts:
.qmake.conf
tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp
tests/auto/qmltest/BLACKLIST
tests/auto/qmltest/qmltest.pro
Task-number: QTBUG-53590
Task-number: QTBUG-53971
Change-Id: I48af90b49a3c7b29de16f4178a04807f8bc05130
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some of the adapters immediately return dataReady() when reportData()
is invoked. This means that there is only one adapter in the start
times list then, which in turn causes all the data from that adapter
to be sent at once, without caring for the other adapters' timestamps.
Change-Id: Ic1e12fdcefb0a691067518fba100368f13c927f7
Task-number: QTBUG-53590
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp
src/qml/jsruntime/qv4engine.cpp
src/qml/jsruntime/qv4engine_p.h
Change-Id: I89ffccd699bee675732758d039e22224b275d60d
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
qmake is clever enough to include the plugins without this.
Furthermore, the explicit imports duplicate the plugins in static
builds and they lead to cross linking from QtQml to QtQuick.
Task-number: QTBUG-50306
Change-Id: I822e000481f583f513b863f54f65eb8ff772c0c3
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
They may prevent use of QT_NO_FOREACH in
other Qt modules.
Change-Id: Iafc04a73579a90492f3ff303978b78b71eec4e55
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As the various file names are actually not kept as QStrings in the
respective objects being profiled, our saving them as QStrings in each
and every profiling event is not implicitly shared and causes a huge
memory overhead. Avoid that by saving each location only once, indexed
by a disguised pointer to the object it refers to.
Normally, objects could disappear during the profiling session, and new
objects could be allocated in their place, which would mess up our
indexing system. We prevent that by referencing the objects when we
index them, thus preventing them from getting auto-destructed.
Mind that those are not JavaScript objects but rather functions,
bindings, components and the like. So, this will only cause a memory
leak if you're compiling and dropping QML components over and over.
Task-number: QTBUG-52937
Change-Id: Ia4dfb09a71a5c9a2d6ce25c3811bbe2a1036c1c1
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Saving the name/file/line/column over and over for each function call
is wasteful. We can instead key them by the pointer to the JS Function
object. Also, make sure we don't accidentally detach the data when
sending messages.
Task-number: QTBUG-52937
Change-Id: I8a03e4003dc3239f88b49c56424df05cd8b9ef8a
Reviewed-by: Anton Kudryavtsev <a.kudryavtsev@netris.ru>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There can only be one detail type for compressed set of messages. This
is unlikely to change anytime soon. Also, be more careful about not
detaching the data when sending the messages.
Task-number: QTBUG-52937
Change-Id: I859b12889b0766543dac00b21784e14b76e458b6
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Replace substring functions that return QString with
corresponding functions that return QStringRef where
it's possible.
Create QString from QStringRef only where necessary.
While touching the code, also port loops to C++11 style.
Change-Id: I04c99b24ea6afd3715e3edf9ea00bfab838fd53c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Frank Meerkoetter <frank.meerkoetter@basyskom.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
| |
| |
| |
| |
| | |
Change-Id: Ic9d1a1f90bfda07d2796bca71a1ea61e94ffb6da
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This change also fixes the build of two benchmarks, tst_affectors
and tst_emission.
Conflicts:
src/plugins/qmltooling/qmldbg_native/qmldbg_native.pro
src/qml/qml/ftw/qhashfield_p.h
tests/benchmarks/particles/affectors/tst_affectors.cpp
tests/benchmarks/particles/emission/tst_emission.cpp
tests/benchmarks/qml/pointers/pointers.pro
tests/benchmarks/qml/pointers/tst_pointers.cpp
tests/benchmarks/qml/qmltime/qmltime.pro
tests/benchmarks/qml/qquickwindow/qquickwindow.pro
Change-Id: I595309d1e183c18371cb9b07af6e4681059de3b2
|
| |
| |
| |
| |
| |
| | |
Change-Id: I677ab9fce527b5220317d4d30f48d55b7f081e6a
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Remove whitespace and formatting from the messages where possible
to reduce the chances of them being overlooked by the translators.
Change-Id: Ie0d0b29e03b13ae4f46dce1b57dd2a85d427c8c6
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reduces memory churn as we don't have to reallocate the various
QPacket, QBuffer, QByteArray objects and their private classes all the
time. Also, subsequent packets often have similar sizes, which makes it
beneficial to preallocate the underlying byte array to the size of the
previous packet on clear(). In order not to carry the extra reserved
space in the lists passed to the debug server, we squeeze the byte
arrays before inserting them into the lists. That detaches and copies
them, which would have been done anyway when reusing the same packet
for the next message.
The result is a reduction in the number of temporary memory allocations
from QQmlProfilerServiceImpl::sendMessages() by about 75%.
Change-Id: Ief98cd7a93a2e8e840e111dee6b346cae00e06bf
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reduces the overhead caused by the prepending of service names to
packets. When running the planets example from qtcanvas3d through
qmlprofiler the average message length, without service name, is 26
bytes. The average full packet, with name and length, is 64 bytes long.
In fact, the time between stopping the application and the last message
arriving in the profiling client is reduced by 30-50% with this
change.
Change-Id: I0ffdd0483d45bbe8b092c59a9dcd63c6dc59119c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This enables more parallel data processing and limits the memory
usage. Benchmarks with the "planets" example from canvas3d show that
this change reduces the time between the profiling being stopped and
the last events arriving in the profiling client by about 50%.
Change-Id: Iea16f9e2ae3adf584ec4a3c7fc766eaa21740f98
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
|\|
| |
| |
| |
| |
| |
| | |
Conflicts:
src/plugins/qmltooling/qmldbg_native/qmldbg_native.pro
Change-Id: I3ca8f0422828191b7e19539c25f31f2d048e9f18
|
| |
| |
| |
| |
| |
| |
| |
| | |
this fixes static builds by ensuring that all dependencies are exported.
Task-number: QTBUG-51071
Change-Id: I5928f853a1d13b6a73533f9c6f6eae9da0e52a26
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| | |
Change-Id: I511252cee0b6420670af839796b2e35915c35e50
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
|\|
| |
| |
| | |
Change-Id: I4af0bf8ec1569097d97f8ce0bb8bf1a0e4a989ec
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We don't need to pass debuggers and engines around as the data
collector already has all the necessary information. Also, the
exception collect job is only used in the test case, so we don't
need to define it in the collector.
Change-Id: I3197dd5c2d99e95465aa787097c6f8bf8aee794e
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
To avoid interaction with the engine from the debugger thread we
move the value lookup functionality into the data collector, and
drop the RefHolder. Also, we define some more debugger jobs to
move the work the request handlers do into the GUI thread.
Task-number: QTBUG-50481
Change-Id: Ia73ebd01e715f13110ef010a766e9b0a1e202df9
Reviewed-by: Nils Jeisecke <jeisecke@saltation.de>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We don't need to pass engines around as the data collector already has
all the necessary information. Also, the exception collect job is only
used in the test case, so we don't need to define it in the collector.
Change-Id: I9e9f092a10295e3dc970f7b5f440e8f242ea1d54
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
To avoid interaction with the engine from the debugger thread we
move the value lookup functionality into the data collector, and
drop the RefHolder. Also, we define some more debugger jobs to
move the work the request handlers do into the GUI thread.
Task-number: QTBUG-50481
Change-Id: Id93548dc65133246deac71f73188c715e9dc01e4
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/
Updated license headers to use new LGPL header instead of LGPL21 one
(in those files which will be under LGPL v3)
Change-Id: Ic36f1a0a1436fe6ac6eeca8c2375a79857e9cb12
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| | |
... and QMultiHash::keys()
Change-Id: I616c486c05471fc514595f9cb446953331c4eb90
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The inspector service had bitrotted to a point where there was little
code to be rescued. Apparently it was never really finished and quite
some code didn't make any sense. This change removes some features
that were unused or didn't work correctly:
1. Panning and Zooming with mouse wheel and touch interaction. This
might be useful in some contexts, but the implementation was so broken
that it wasn't worth trying to fix it. The whole idea of doing this on
the layer of QQuickItems is not so great because there is no
distinction between spontaneous changes triggered by the application
and debugging interaction triggered from outside. It might be better to
implement such functionality on a lower level, e.g. in the renderer.
2. Reloading the scene with debug changes. Use one of the other debug
services to change properties. Clearing the component cache is a rather
drastic measure and not necessary here.
In turn, we get support for inspecting multiple windows, and all
subclasses of QQuickWindow are supported now. Also, show-on-top works
now.
Task-number: QTBUG-33376
Change-Id: I65497f49c6b46128a600b0e3a31483eeef40313c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
This makes the code more readable and allows us to keep the data
collector as value, rather than pointer, in QV4Debugger.
Change-Id: I2939c2b2f551111139f1dc34704a6029e87a66bf
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
src/plugins/qmltooling/qmldbg_debugger/qqmlenginedebugservice.h
tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
tests/auto/quick/qquicktextedit/qquicktextedit.pro
tests/auto/quick/qquicktextinput/qquicktextinput.pro
Change-Id: I95d2c20a8619e5b8fa361c941a16dd8dce3e04e7
|
| |
| |
| |
| |
| | |
Change-Id: I408dcb81ba654c929f25ffff1427560b6e7962ad
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
|
| |
| |
| |
| |
| | |
Change-Id: Id3295937bdbd2372a77f273ce5c048807d43f51e
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| | |
Saves iterating the whole container and unneeded allocation of a list
Change-Id: Iae1f8e0cf3a17b163cf930c43a27b2ebb4315e5c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The user generally expects QML "root" objects to be in a "global"
scope. Or at least that makes debugging a lot easier. By opening a
WithContext with the relevant objects we can simulate that.
Task-number: QTCREATORBUG-14931
Change-Id: I89af0560803b2c54a35f08e9fd659e65fb937cb9
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We can schedule jobs into the GUI thread just fine, even if the
debugger is running. They will run in global scope then. The only
restriction is that we need exactly one engine to be running in order
to do that, as otherwise we cannot decide which engine to use.
To avoid interaction with the engine from the debugger thread we
move the value lookup functionality into the data collector, and
drop the RefHolder.
Change-Id: Ifae124d70f42e488ed9a1b6794baef638992ddb1
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| | |
Change-Id: I7441c24e3c2ae00ac274aa053d2e03d8f61ac830
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| | |
Change-Id: Ie25b5fa4f25392da29389c990494f704b7c80c95
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
|
| |
| |
| |
| |
| | |
Change-Id: Iba40a1705c18d19c4ef5723aeb8ee5113e31041c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It does not make a difference in functionality, but after engineAdded()
the server won't wait on a mutex anymore. Before this change, if you
managed to send a message to the V4 debugger after the server had
called aboutToBeAdded(), but before it had stopped waiting, you could
produce a deadlock by scheduling an event for the GUI thread that was
never delivered.
Change-Id: I3a7fb2e46d67b7cc03733154ea61f2bf35f8ea24
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| | |
Fixes CID130479
Change-Id: I68e894a4a6e5e3bfd73a49a68493fdd65ecdd5f7
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| |
| |
| |
| |
| | |
Change-Id: I01974e9b8823f3312fd3e513af2ca40f4c83d176
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Whenever the debugger is paused, there is exactly one engine that
caused the debuggerPaused() slot to be called. We can only interact
with that engine in any meaningful way.
Of course you can shoot yourself in the foot with this tool. You can,
for example, set a breakpoint that will be hit by multiple engines and
then get confused about which engine just hit the breakpoint. Similar
things are also possible with other kinds of debuggers, though. If this
becomes a problem we can add an engine ID to the responses.
Also, this does not fix the other debug services. So you might still
not see the "correct" locals and expressions from the
QQmlEngineDebugService while the debugger is not paused.
Task-number: QTBUG-49615
Change-Id: Ie044f0aedb51481c4cf851635d7c12839251cbd0
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Add category and timestamp, and allow synchronizing the timestamps with
QQmlProfilerService.
Change-Id: I8dc67e43e1087e231167fc4cfdfb5f659e00c5b2
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| | |
enums can be different internal types. Let's not take any risks here.
Change-Id: I5c4a3e38b3e3fe812f05b310443c5607eba839bc
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This allows us to use the debug infrastructure in a JavaScript-only
environment. Also add override declarations to make such changes
easier in the future.
Change-Id: I171271f0ad3868b3de71a8a2316a24602f94200a
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We cannot use the same data stream version for the client and server
versions of QPacket and QPacketProtocol should not deal with QPackets
but with simple byte arrays because the underlying QDataStream is hard
to copy.
The new QQmlDebugPacket picks its data stream version from
QQmlDebugConnector now, which adjusts it when connecting. As there can
only ever be one QQmlDebugConnector, we can keep the version static.
The clients need to query the connection for the correct version. We
may connect to several different servers sequentially or we may have a
server running while using a client, and we don't want to confuse the
versions between those.
With this in place, all remaining occurrences of QDataStream are
replaced with QPacket or QQmlDebugPacket.
Change-Id: I3f6ba73fcbfad5e8df917c5feb9308116738a614
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
This saves some code in QtQuick and allows us to split up QPacket into
different versions for client and server.
Change-Id: I9b8c723274fb11d6321c5002910148b193aa6b40
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We will need to access the connector from the hook functions. Having a
header makes that easier.
Change-Id: Idbab8f6c73e3c61d82cdfc7a91ff6c4e408ee1fd
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Now that we have an abstract base class we don't need to carry the
V4 debugger in QtQml anymore. The test clearly belongs into the
debugger category.
Change-Id: I0f71bdb331da8a568e43600363a0468299aa1a87
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|