| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
| |
Change-Id: Ib11ea33eb695d4599f4f040415d497aaf19cb15b
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
| |
Also remove an unnecessary buffer type test.
Change-Id: I6f8312f03d3fe1729fa9b2eb95f6bfbeeccd0d4f
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
| |
Change-Id: I7ad14ff05a1ff10113f5d3985662970d74e68ead
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
| |
Change-Id: I22027cfc227d3c09e446d193e6b2903b8df34eb2
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
| |
...instead of doing a loop in setShaderResources() just for this.
Change-Id: Iac8d4517783967c6b8bca4926cceca918f7dcdec
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
| |
Copied by value so the size matters.
Change-Id: I17eae99212801a4fb390a0e298b361123644d17d
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
| |
Change-Id: I96c71ef45b93ab95250a2a3f0e9c10e8bc86d650
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
| |
Change-Id: I02c1f8c32c08d39cde9845d20ba8b02541d9d325
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Avoid accessing the shared pointer table without using atomic.
Cleans up the shared table on exit for leak tracking utilities.
Pick-to: 5.15
Change-Id: Ia2d6d79dea1c8be02bae2d8111e290f49eedf409
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
|
|
|
|
|
|
|
| |
Android uses -Werror,-Wsign-compare.
Change-Id: I4e861ebd6ea00914223358629f8e898c2aa67cd0
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
QIcon::pixmap does automatic scaling to DPR by default, so
use QIconEngine API to access internal pixmaps directly instead.
Pick-to: 5.15
Task-number: QTBUG-83806
Change-Id: I3ccbed8387811a87bbea3f5d4ad9963e1be28a49
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
| |
Change-Id: I09bd22f3ccb1231ad4ef123f581459ef5c1ac37c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
|
|
|
|
|
|
|
| |
If we do not use it for anything, do not spend time on comparing
and copying it either.
Change-Id: I3632792847010e5b73c48eb1ca88f5806f3ccd45
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
|
| |
The block to update the cached state needs to be run also
when the texture parameters have changed.
Change-Id: Ifa80c142c6ff31c95a718a1a900ff3db0bbfe4bc
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Only allow actions disabled due not being visible to trigger, when
enabled is not true.
This matches QQuickAction behavior, and doesn't apppear to affect QtGui
or QtWidgets.
Change-Id: I1a00b80213598ef1560be4c9ee9e65cd6fa6d760
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
|
|
| |
This time based on grepping to also include documentation, tests and
examples previously missed by the automatic tool.
Change-Id: Ied1703f4bcc470fbc275f759ed5b7c588a5c4e9f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
We were already using the 'native' nomenclature when referring to these
kinds of APIs, e.g. when talking about native handles, or the existing
QPlatformNativeInterface on a QPA level. Using 'native' for the user
facing APIs also distinguishes them from the 'platform' backend layer
in QPA and elsewhere.
Change-Id: I0f3273265904f0f19c0b6d62471f8820d3c3232e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
| |
The convention for these interfaces is to not have 'platform' in
their name.
Change-Id: I4af831861b58dcfc2538d4206788231b9ec3a766
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
|
|
|
|
|
|
|
| |
Amends 07b6d3367debd8f15974abf0f5cdf48f0fe3a536
Change-Id: I8d5922af13903c6a10f967035bca70a89b19f86f
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In the porting from Qt 4 to Qt 5 an assumption was made in QKeyMapper
that the underlying platform implementation needed the native scan
code to be able to resolve the possible keymaps for an event.
As a result, the macOS platform plugin started sending key events
with a fake native scan code of 1, so that it would still be allowed
to map key events.
Which in turn led to the documentation of QKeyEvent::nativeScanCode()
getting an exception for macOS.
Let's clean up this by removing the original assumption, and leave it
up to the platforms to decide what information from the key event
is needed.
QKeyMapperPrivate::possibleKeys() will still call extractKeyFromEvent
as a fallback if the platform layer doesn't return any possible keys.
Change-Id: I122a45bcec658c45ccc0b2c0671eb264d85d7be6
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Try to get rid of APIs that use raw 'const {char, QChar} *, length'
pairs. Instead, use QByteArrayView or QStringView.
As QStringConverter is a new class, simply change the API to what we'd like
to have. Also adjust hidden API in QStringBuilder and friends.
Change-Id: I897d47f63a7b965f5574a1e51da64147f9e981f6
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce a bunch of helper functions to manipulate compiler
flags and linker flags for the
CMAKE_<LANG>_FLAGS_<CONFIG>
and
CMAKE_<LINK_TYPE>_LINKER_FLAGS_<CONFIG>
CMake variables.
These variables can be assigned and modified either in the cache
or for a specific subdirectory scope, which will apply the flags
only to targets in that scope.
Add qt_internal_add_optimize_full_flags() function which mimics
qmake's CONFIG += optimize_full behavior.
Calling it will force usage of the '-O3' optimization flag on supported
platforms (falling back '-O2' where not supported).
Use the function for the Core and Gui subdirectories, to enable full
optimization for the respective Qt modules as it is done in the qmake
projects.
To ensure that the global qmake-like compiler flags are assigned
eveywhere,
qt_internal_set_up_config_optimizations_like_in_qmake() needs
to be called after Qt global features like optimize_size and
optimize_full are available.
This means that qtbase and its standalone tests need some special
handling in regards to when to call that function.
Task-number: QTBUG-86866
Change-Id: Ic7ac23de0265561cb06a0ba55089b6c0d3347441
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
|
|
|
|
|
|
|
|
| |
List primary and alternative key sequences and ids together, making the
logic cleaner.
Change-Id: I4eb07f9828f2b15dc66c34ceb2c4f800df73e800
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Use the default logicalDpi() implementation, which now
returns logicalBaseDpi() and ensures a default device
pixel ratio of 1.
Change-Id: Idd408261c90b112a093c82695ff9e0078e90ac41
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
|
|
|
|
|
|
|
| |
It doesn't actually need Q_DECLARE_PRIVATE (it never uses Q_D),
it just needs to give friendship to the private class.
Change-Id: I32ac128118a0c319a374e510a18ccf0edf323da7
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
|
|
|
|
|
|
| |
The same function was declared, as friend, a few lines above.
Change-Id: I28368202c68242f2d30d25bd38f2f0e530a60082
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
|
|
|
|
| |
Change-Id: Ifc754a639fcdb45a1b1b8721393de9356504342f
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
|
|
| |
This function is no longer in use - Qt Gui now computes
scale factors based on logicalDpi() and logicalBaseDpi()
instead.
Change-Id: Ieb4b75ef4e1563694a8e12b7cdd1f60c419d5bf2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the code which calculates physical DPI and
call logicalBaseDpi() instead.
This will make sure that Qt gets a device pixel ratio
of 1.0 by default, for the cases where the platform
plugin does not implement logicalDpi() itself.
Task-number: QTBUG-87035
Change-Id: I08433c9465be03d27b3decccb0e2e7e5e6aff0ae
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Declaring and implementing out of line a specialization for
QESDP's destructor is needed if we have an implicitly shared
type and we want to provide an inline move constructor for it.
The code is however a bit heavy on the eyes, and the full
implementation for the destructor must be provided (read:
copy and pasted) -- the specialization destructor cannot
just "reuse" the one from the primary template.
This patch adds a few macros to streamline the above, so
that we can start using the same pattern in more places.
These macros are completely private for the moment being;
we don't want to push this solution for our users.
Port QPixmap to the new macros.
Change-Id: Ia6a51ad988483e44c9d97c0eca2fb003b6bd21e3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
|
|
|
|
|
|
|
|
|
|
| |
This nicely optimizes a hot spot when our HTML parser was loading
Qt documentation. This change improves the loading time of the
Qt Concurrent overview page by 30%, both over the previous commit
and 5.15.
Fixes: QTBUG-86354
Change-Id: I4f401c2e6048096444e482c7724e3e3a6c71516e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
| |
This is a performance bottleneck as the parse nodes are huge and
we don't want to reallocate them all the time.
Fixes: QTBUG-86354
Change-Id: Ia437acbb5b2c8af1723932d2cd96ba2ae48a871b
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
| |
Add needed define for egl_viv compile test and generate CMakeLists
for the egl_viv plugins.
Task-number: QTBUG-77809
Change-Id: I3b354faee36cbb85adcee895430eb5e8998108e1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
|
|
|
|
|
|
|
| |
Use C++17 attribute directly
Change-Id: Id853e7a5117065e4adb549f81303c1820fe198ce
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the moment we have two main strategies for dealing with move
assignment in Qt:
1) move-and-swap, used by "containers" (in the broad sense): containers,
but also smart pointers and similar classes that can hold user-defined
types;
2) pure swap, used by containers that hold only memory (e.g. QString,
QByteArray, ...) as well as most implicitly shared datatypes.
Given the fact that a move assignment operator's code is just
boilerplate (whether it's move-and-swap or pure swap), provide two
_strictly internal_ macros to help write them, and apply the macros
across corelib and gui, porting away from the hand-rolled
implementations.
The rule of thumb when porting to the new macros is:
* Try to stick to the existing code behavior, unless broken
* if changing, then follow this checklist:
* if the class does not have a move constructor => pure swap
(but consider ADDING a move constructor, if possible!)
* if the class does have a move constructor, try to follow the
criteria above, namely:
* if the class holds only memory, pure swap;
* if the class may hold anything else but memory (file handles,
etc.), then move and swap.
Noteworthy details:
* some operators planned to be removed in Qt 6 were not ported;
* as drive-by, some move constructors were simplified to be using
qExchange(); others were outright broken and got fixed;
* some contained some more interesting code and were not touched.
Change-Id: Idaab3489247dcbabb6df3fa1e5286b69e1d372e9
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A NaN value in globalPos can cause an endless recursion in
QGuiApplicationPrivate::processMouseEvent() when e->enhancedMouseEvent()
is true and this is not a move event.
When an event contains a NaN in globalPos, print a warning and ignore
the event.
Pick-to: 5.15
Fixes: QTBUG-86207
Change-Id: I8789e465921789569715e52c98193f91945ea982
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
During delivery of a TouchBegin event, if no widget accepts it,
we begin treating the first touchpoint as a synth-mouse, as before.
If a second touchpoint is pressed or released in any order, it's
irrelevant: the fake mouse button is released as soon as the first
touchpoint is released. This fixes the bug that such a scenario
caused the mouse release not to be sent, so that a widget could get
"stuck" in pressed state.
Done-with: Tang Haixiang <tanghaixiang@uniontech.com>
Fixes: QTBUG-86253
Pick-to: 5.15
Change-Id: I7fbbe120539d8ded8ef5e7cf712a27bd69391e02
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
| |
Change-Id: Ib07eef8944367948338075832452fdae6df6078a
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reports on the Web have it that there's nothing guaranteeing a
driver does any actual freeing of resources then doing
vkFreeCommandBuffer for a command buffer from a command pool that
does not have VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT, thus
leading to continuously growing resource usage with our current
allocate/free pattern. It could be that this is the source of out
of memory problems we are seeing on some Android devices.
Instead of just going straight for said command pool flag and doing
ResetCommandBuffer for the command buffers individually, take one
step further and use per-slot (slot being 0 or 1 if QVK_FRAMES_IN_FLIGHT
is 2) command pools. The current pool is reset in each
beginFrame/beginOffscreenFrame, moving all allocated command buffers
to the initial state (while other command buffers with the other pool
are not affected).
This may be (while impossible to tell from just guessing based on the
spec) our best approach to command buffer allocation since a Vulkan
implementation can likely just use some simple per pool allocator,
knowing that we never want to free or reset individual command buffers,
but we rather only reset the whole pool at once.
The option of importing an existing VkCommandPool when creating the
QRhi instance is now gone, but there was probably no point in offering
that in the first place.
When it comes to VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT it will
not be set unless releaseCachedResources() (in Qt Quick this is hooked
into QQuickWindow::releaseResources()) was called. What this does in
practice is unknown, but have an option to set it now and then if the
application really wants.
While we are at it, rename secondaryCbs to activeSecondaryCbStack to
indicate what it really is. (it's a stack as each call to
beginExternal() pushes a new one, while each endExternal() pops)
Change-Id: I2e5c1fad26d794e1f56c778e38f750998d706d84
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Artificial tests with tens of thousands of meshes drawn with
the same program (graphics pipeline) and almost the same
uniform values (the difference being in the normal and model
and view matrices) do benefit - strongly depending on the GL
implementation probably - from doing fewer glUniformNf[v] calls.
Building on the fact that uniform location values will typically
be an int value starting at 0 (not guaranteed of course, we just
skip the smartness in that case), we can dedicate a small 16K
block to keep track of float/vec3/vec3/vec4 values in the graphics
and compute pipeline objects.
Change-Id: I217c31ccdeb511b3e8b8286078d7fbde399c8e3b
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
Artificial tests like the BechmarkDemo are full of drawing the
exact same mesh multiple times in a row. These do not need
respecifying anything related to vertex or index data.
Also move the buffer binding out from the loop.
Change-Id: I0f27a39fecebc7ca8e1fa635c63819f116867e19
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
|
| |
Already doing the same for GL_ARRAY_BUFFER, follow suit with
GL_ELEMENT_ARRAY_BUFFER.
Change-Id: I0cf44480abb3a60a44b316af2c09b2235f9f65e7
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ExternalContentsInPass becomes a per-pass flag now. Why is this
beneficial? Because while Qt Quick has no choice for its render
pass, not being able to guess if the application wants to do some
native rendering in there, Quick 3D's render passes, all the ones
that are under Quick3D's control, do not have native rendering
from the application in them, and so using secondary command
buffers with Vulkan is not necessary.
Introduce something similar for compute and OpenGL. By knowing that
none of the resources used in a pass are used with a compute pass
(e.g. because we know that there are no compute passes at all) a small
amount of time can be saved by skipping tracking buffers and textures
because the only purpose of said tracking is to generate barriers that
are relevant only to compute.
Change-Id: I0eceb4774d87803c73a39db527f5707a9f4d75c1
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
| |
Change-Id: Iccfbe5fe8688245a5ff3f7d46a173638b362a3c8
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
|
|
|
|
|
|
|
|
| |
Reject invalid table data, do not assert it.
Pick-to: 5.15
Change-Id: I1fdda4c735bb97bb93ac8f8654ac4cc5fada5389
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
|
|
|
|
|
|
|
|
|
| |
This reverts commit 81008ef4b91eac3f8ddcdad0aaf48b51135c4010.
Reason for revert: Doesn't handle line-caps correctly.
Change-Id: I0c77dbef6671fec326ec27f492ea3214054829ab
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The sequence is still press, release, press, double-click, release.
isBeginEvent() should not be true for a double-click event: the second
click began with a normal MouseButtonPress, and the MouseButtonDblClick
event is a way of sending updated state to tell the recipient that the
second click was special, occurring within such spatial and temporal
constraints that it can be interpreted as a double-click.
It never has a different position either, because MouseButtonDblClick
is a synthetic event occurring at the same position as the second press;
so we might as well say its QEventPoint is Stationary.
Together, these changes fix tst_controls::Basic::DelayButton::test_mouse
in Controls 2, without any changes in qtdeclarative.
In QQuickWindowPrivate::deliverPointerEvent(), if isBeginEvent() == true,
it delivers to all items under the point position(s) first, and then if
all _updated_ points were not accepted, it continues delivery to grabbers;
whereas if isBeginEvent() == false, it delivers only to grabbers.
isBeginEvent() and QEventPoint::state() are important to that algorithm.
Amends 6d6ed64d6ca27c1b5fec305e6ed9b923b5bb1037
Task-number: QTBUG-87018
Change-Id: I95def9704652147540df5cc065354a0fe04ed626
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
| |
None of this code is even compiled in qt6.
Change-Id: I5891cc9459320083ad3908fcbf646f3ba75b8a4d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
|
|
|
|
|
|
|
|
| |
Also fixed Direct 2D feature detection test for MinGW.
Task-number: QTBUG-83932
Change-Id: I8c89aaa953d34de40fdf7b51e0859c791aeb38ef
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the missing call to QScreenPrivate::emitGeometryChangeSignals()
along with an emission of physicalDotsPerInchChanged()
since that is calculated from geometry and physical size.
Rearrange the code in
QGuiApplicationPrivate::processScreenGeometryChange()
to prevent duplicate emissions of geometryChanged(),
physicalDotsPerInchChanged() which this change would introduce.
Amends 5290027e3bab75f14fc0a2b7c206594d9cb91e76.
Pick-to: 5.15
Task-number: QTBUG-76902
Task-number: QTBUG-79248
Fixes: QTBUG-86604
Change-Id: I3dc2ec5ccd9c6413e92f9246242f323e8afc5e57
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|