summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/eglfs
Commit message (Collapse)AuthorAgeFilesLines
* QEglFSKmsGbmScreen::framebufferForBufferObject: release() at the correct timeMarc Mutz10 hours1-2/+3
| | | | | | | | | | | | | | | It's the gbm_bo_get_user_data() function that takes ownership of the FrameBuffer object, not the caller of the function, so release() into gbm_bo_set_user_data() not into the return. This threw Coverity off, which complained about a leak of the return value in the caller. Amends 2f0fa59d5903d4c9596ed42dcbaa9da0f77c78da, but not picking through all the refactorings the code has since seen. Pick-to: 6.7 6.6 6.5 Coverity-Id: 444117 Change-Id: I5f058e4a42942349193eecfd8c00ec9499ef4886 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Revert "Always destroy OpenGL context when the window is destroyed"Samuli Piippo46 hours1-6/+3
| | | | | | | | | | | | | This reverts commit 220afb358f6056a6fc091b48a38878fb98aba979. The change caused segfault after menus or dialogs were closed. The global raster compositing context is still being used by root window and cannot be deleted from child window. Pick-to: 6.7 Fixes: QTBUG-123962 Change-Id: Ie88925052f0f424617382388c587ae47570d13a7 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* drm: Fix having more than window over the screen's lifetimeLaszlo Agocs2024-03-052-1/+9
| | | | | | | | | | | | | | | | ...when not using atomic. On the non-atmic path the fb is passed in to drmModeSetCrtc. Here we need a new call to it if a new QWindow gets created after the previous one is destroyed. Previously this was not done, so it ended up with Device busy errors. Atomic does not need this since there the flip commit always contains framebufferPropertyId. Change-Id: Ie68152cad50438807ef45adfba65e74c8f30c956 Fixes: QTBUG-122663 Pick-to: 6.7 6.6 6.5 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* drm: atomic: Avoid device busy when flipping after creating a new windowLaszlo Agocs2024-03-051-2/+6
| | | | | | | Task-number: QTBUG-122663 Change-Id: I168930428e8d09a9a042401460d678e20f3b82d5 Pick-to: 6.7 6.6 6.5 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Introduce NO_GENERATE_CPP_EXPORTS argument for qt_internal_add_moduleAlexey Edelev2024-02-093-0/+3
| | | | | | | | | | | The argument is inverted GENERATE_CPP_EXPORTS argument. Use it explicitly for the modules that do not require the autogenerated cpp exports. Task-number: QTBUG-90492 Change-Id: Ic67772ba9ed5e40f132a97e7d6844102ad023ff3 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Remove extra semi-colonsTasuku Suzuki2024-02-061-1/+1
| | | | | Change-Id: I92fddb36cd136fd1bd627955f15d0559b9942d7e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Add styleHint function override for QEglFSIntegrationTomasz Kozłowski2024-01-092-0/+10
| | | | | | | | | | | | Without this change, while using EglFS, showIsFullscreen returns false, which is not true, because EglFS always runs in fullscreen. This change requires setting QT_QPA_PLATFORM_PLUGIN_PATH environmental variable. Pick-to: 6.7 Task-number: QTBUG-115777 Change-Id: Ie7cf709e002ac70d95fe5e2698d2ee7b52e08094 Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
* Always destroy OpenGL context when the window is destroyedJacek Poplawski2023-12-041-3/+6
| | | | | | | | | The OpenGL context was only destroyed when the HasNativeWindow flag was set, as a consequence there was a context leak. Remove this condition and always destroy the context. Change-Id: I3e3424e9d6f179171872fdef5c929a5718af0ed5 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Add VxWorks support in QEglFSDeviceIntegrationJacek Poplawski2023-11-301-3/+3
| | | | | | | | Fixes: QTBUG-115777 Change-Id: Ic2f860c259e42b3d4670fe85b3a069c84be5c1da Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@qt.io> Reviewed-by: Jarno Lämsä <jarno.lamsa@qt.io> Reviewed-by: Kimmo Ollila <kimmo.ollila@qt.io>
* Rename QWSI::handleWindowActivated to QWSI::handleFocusWindowChangedTor Arne Vestbø2023-11-231-1/+1
| | | | | | | | | | | | | | | | | | | A single QWindow is QGuiApplication::focusWindow() at a time, and this window is typically also QWindow::isActive(), but other windows may also be QWindow::isActive(). For example, we treat any sibling or ancestor of the focusWindow as being QWindow::isActive() as well. In addition, in the case of non-QWindow child windows, we may have to query the platform for the activation state, which means we also need a way for the platform to reflect changes in this state through QWSI. The current API for this, QWSI::handleWindowActivated, is in practice a focus window change API, so as a first step let's rename it to better reflect what it's doing. Task-number: QTBUG-119287 Change-Id: I381baf8505dd13a4a829c961095a8d2ed120092b Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* Egldevices: Use valid DRM handle to get platform displayAlex Bu2023-10-031-1/+4
| | | | | | | | | | Use a valid DRM handle as display attribute to get platform display. This fix is used together with the default framebuffer fix for the display issue of egldevices backend on Jetson AGX Orin devkit. Pick-to: 6.6 6.5 Change-Id: Ia1975936653461c5a7e534c714a123837c62bc10 Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
* eglfs: add a default framebuffer to NVIDIA eglstreamsKurt Kiefer2023-10-032-4/+61
| | | | | | | | | | | | | Newer versions of NVIDIA's DRM driver are rejecting the previously accepted but non-standard use of framebuffer_id -1 in order to set the output mode but not issue a page flip. This change adds a default framebuffer to the egldevice driver for use with the initial calls to set the CRTC mode and plane. Pick-to: 6.6 6.5 Change-Id: I63dbb6b099250fcff7d995eec38fb75c675894cd Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
* eglfs: Extend GBM surface creation probingAndreas Holzammer2023-09-211-1/+16
| | | | | | | | | | Some graphics drivers do only create a surface with the help of gbm_surface_create_with_modifiers and others do require to use gbm_surface_create. So it is needed to probe these. Change-Id: I9ea657f12f2ea23ec426a378cfd67e297cb2d310 Pick-to: 6.5 6.6 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* QOpenGLCompositorBackingStore: ensure backing store on flushed windowsAxel Spoerl2023-09-131-2/+2
| | | | | | | | | | | | | | | | | | | | | | | When the first QEglFSWindow got created for a QWindow, a backing store was created with it and associated to the new QEglFSWindow. When the window was hidden on the platform screen, the QEglFSWindow got deleted and re-created when it was supposed to be shown. The re-created QEglFSWindow was no longer associated to the backing store. It was therefore not rendered on the screen. => ensure that the backing store is re-associated to the QEglFSWindow, corrsponding to the QWindow argument passed to flush(). No autotest is added, because the fix is purely visual. The widgets/menus example can be used to test the functionality manually (see bug reports). Fixes: QTBUG-115196 Fixes: QTBUG-116769 Pick-to: 6.6 6.5 6.2 Change-Id: I92ce2e8f7e76bd2d26e713a4d20612d079fb4717 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
* Fix link to platform window in QAndroidPlatformBackingStore::flush()Axel Spoerl2023-08-042-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Android QPA implementation requires a 1:1 link between a platform window and a platform backing store, to correctly flush a backing store to the screen. QAndroidPlatformBackingStore has a bool member m_backingStoreSet, to remember if this link exists. It defaults to false and is set to true, when setBackingStore() is called in the constructor. It falsely remains true, when a platform window is deleted, e.g. because a QWindow has been hidden. When the QWindow is shown again, a new Android platform window is created. With m_backingStoreSet still being true, this new platform window will never be associated with a backing store. As a consequence, it will never be displayed on the screen. The 1:1 relationship of an Android platform window and an Android backing store is neither ideal, nor in line with other QPA layers (e.g. XCB). Changing the Android QPA implementation is complex and a short term fix is necessary. This patch removes the member m_backingStoreSet. Instead of it, QAndroidPlatformBackingStore::flush() directly checks, if the platform window corresponding to the QWindow argument is associated to a backing store. If that is not the case, setBackingStore() is called. QTBUG-97482 has been fixed with another approach, which this patch reverts. The following commits are effectively reverted by this patch: 9a39ad8dfb4e6d1a179bd0fa38026886f8f7cb8e f91588923b1e7b68f1bd79b38af44d024df85996 a4ca9e80658bca7dad1529f03c1b59173a6ecf62 dbb072eb2838a04e89e34dad686394a496d5de87 959a8b3967ac3b6315f5b458628ec5661dfc367e Fixes: QTBUG-97482 Pick-to: 6.6 6.5 6.2 Change-Id: Ic4344f8df2e954c057dd2705340f11dfd2d4c6fe Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* eglfs plugin: port away from Q_FOREACHMarc Mutz2023-08-023-2/+4
| | | | | | | | | | | | Mark the module are Q_FOREACH-free, so it stays that way. These two instances are risk-free, because the loop is over local variables that the loop bodies clearly do not touch, so the safety copy that Q_FOREACH takes is not required here. Pick-to: 6.6 Change-Id: Ida3c1d51c661d77a59a2ad105e080c3c9b66c53f Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Adapt setBackingStore() overrides in QWasmWindow and QEglFSWindowAxel Spoerl2023-07-162-2/+6
| | | | | | | | | | | This is a follow up to a4ca9e80658bca7dad1529f03c1b59173a6ecf62, adapting the backing store setters to become proper overrides of the newly implemented QPlatformWindow::setBackingStore(); Pick-to: 6.6 Change-Id: Id4f5ff8650ca4e4d3cab1d71d27041c6129bf4ea Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* QPA:EGLFS - ignore scissor and stencil when drawing the cursorInho Lee2023-04-211-7/+11
| | | | | | | | | | | In QEglFSCursor::draw, There are two missing pipeline states SCISSOR and STENCIL. Fixes: QTBUG-110080 Pick-to: 6.5 6.2 Change-Id: Ifb2495de2685b7a2f80f8d39ab57d5985fe0eec1 Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Rid of 'special case' markersAlexey Edelev2023-04-131-3/+3
| | | | | | | | | | | It's unlikely we will ever use pro2cmake at this project stage, so it doesn't make any sense to keep the 'special case' markers in the CMake scripts. Remove them and replace with TODO where needed. Change-Id: I84290c20679dabbfdec3c5937ce0428fecb3e5a7 Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Utilize NO_UNITY_BUILD arguments instead of manual exclusionAmir Masoud Abdol2023-03-141-2/+1
| | | | | | | | | | | Unity build is disabled by default for all 3rdparty libraries, so we don't need to set the manually anymore; and for the plugins we can use NO_UNITY_BUILD instead. Pick-to: 6.5 Task-number: QTBUG-109394 Change-Id: Ia2f83ae083924d31adf07e7647b34ae6571ed01f Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add some exclusions for CMake Unity (Jumbo) buildsFriedemann Kleint2023-02-161-0/+2
| | | | | | | | | | | | | Add exclusions for issues that are likely not fixable (3rd party code, X11 define clashes, etc) in 3rd party, tools and plugins. Pick-to: 6.5 Task-number: QTBUG-109394 Done-with: Amir Masoud Abdol <amir.abdol@qt.io> Change-Id: I698c004201a76a48389271c130e44fba20f5adf7 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* src: Remove remains of qmake conversion from CMakeLists.txt filesFriedemann Kleint2023-02-1011-77/+5
| | | | | | Pick-to: 6.5 Change-Id: Id644d322a602038403bb7f46c532744575fbf6d3 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
* Add QEGLContext::invalidateContextThomas Senyk2023-01-122-4/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | QEGLContext::invalidateContext will mark that egl context is invalide and trigger SceneGraph to destroy it, create a new one and re-create and re-upload all resources (e.g. textures) associated with the current state of the SceneGraph In addition this change also improves QEglFSWindow::invalidateSurface() and QEglFSContext::eglSurfaceForPlatformSurface(..) Where QEglFSWindow::invalidateSurface() will now destroy the corresponding EGLSurface via eglDestroySurface, including "unbinding" it from the current thread via eglMakeCurrent and un-setting the screen's EGLSurface in case it's the same resource. QEglFSContext::eglSurfaceForPlatformSurface(..) will now call QEglFSWindow::resetSurface() in case of getting a EGL_NO_SURFACE from the QEglFSWindow (which happens if above invalidateSurface() was called before) - therefor re-creating the resource if it was destoyed via QEglFSWindow::invalidateSurface() Pick-to: 6.5 Change-Id: I37badd1fc11e993c395fb1502e9bd27ebe18b821 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Remove QEglFSCursor's inheritance of QOpenGLFunctionsThomas Senyk2022-12-162-27/+26
| | | | | | | | | | | | | As QOpenGLContext can be destroyed it's a bad idea to store QOpenGLFunctions (which are QOpenGLContext bound) This change remove the inheritance and replaces it with querying the functions per call. Pick-to: 6.5 6.4 6.2 Change-Id: I2f3104b62f395f3e65337a15d0a0835383b66e16 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* eglfs-kms/gbm: fix segfault and add qScopeGuardThomas Senyk2022-12-131-6/+13
| | | | | | | | | | | | | | | As framebufferForBufferObject has a code-path which returns a nullptr, it's vital to check on that and return early in that case. As this is the third segment in this function that does gbm_surface_release_buffer, a qScopeGuard was introduced to reduce code duplication. This also makes this function saver/easier to maintain long term. The platform on which this segfault was reported is QEMU Pick-to: 6.2 6.4 6.5 Change-Id: I5ee1ad4073712349b7475bce3a7978961fea2344 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* eglfs_kms: Prevent drm errors with more than one window during the screen's ↵Laszlo Agocs2022-12-121-1/+10
| | | | | | | | | | | | | | | | | | | | | | lifetime The QML Live Preview tool exercises the problematic case of having a QQuickWindow, then closing it, then showing another, then destroying that, ..., and so on. It seems that the eglfs_kms backend does not handle this gracefully: if there was a page flip issued for a window that is then closed, the new window will result in drm errors (like -22 EINVAL) because the logic gets confused due to holding on to surface buffers from the old window. To remedy this, make sure the same cleanup is performed on a failing atomic commit as it is done on the non-atomic code path. In addition, reset more things in resetSurface(). Change-Id: I7e13dbbf4d74b4ed9beaf71472680a0daafb4f95 Fixes: QTBUG-82104 Reviewed-by: Christian Strømme <christian.stromme@qt.io>
* eglfs: kms: Make screen cloning functional by defaultLaszlo Agocs2022-10-282-41/+93
| | | | | | | | | | | | | | | | | | | | | | It is not necessary to disable the thread-based drm event reading (QT_QPA_EGLFS_KMS_NO_EVENT_READER_THREAD) anymore when using screen cloning. Amends 820775166132b073a941f2389fba81db49619688 and 14bb413309092adc53e8451daff5690c4698c07d Note that this does not work when atomic commits are enabled. (i.e. running with QT_QPA_EGLFS_KMS_ATOMIC=1 and attempting to use screens that clone will not function as expected, regardless of which event reading method is used - that needs a rework of how atomic requests are handled, and is not something we are going to invest into given that atomic is not even used by default) Pick-to: 6.4 Fixes: QTBUG-91882 Change-Id: Iba83688c7790d7e721db3704d422034b654a8d8a Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Port from qAsConst() to std::as_const()Marc Mutz2022-10-113-4/+4
| | | | | | | | | | | | | | | | We've been requiring C++17 since Qt 6.0, and our qAsConst use finally starts to bother us (QTBUG-99313), so time to port away from it now. Since qAsConst has exactly the same semantics as std::as_const (down to rvalue treatment, constexpr'ness and noexcept'ness), there's really nothing more to it than a global search-and-replace, with manual unstaging of the actual definition and documentation in dist/, src/corelib/doc/ and src/corelib/global/. Task-number: QTBUG-99313 Change-Id: I4c7114444a325ad4e62d0fcbfd347d2bbfb21541 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Port from container.count()/length() to size()Marc Mutz2022-10-045-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is semantic patch using ClangTidyTransformator: auto QtContainerClass = expr(hasType(namedDecl(hasAnyName(<classes>)))).bind(o) makeRule(cxxMemberCallExpr(on(QtContainerClass), callee(cxxMethodDecl(hasAnyName({"count", "length"), parameterCountIs(0))))), changeTo(cat(access(o, cat("size"), "()"))), cat("use 'size()' instead of 'count()/length()'")) a.k.a qt-port-to-std-compatible-api with config Scope: 'Container'. <classes> are: // sequential: "QByteArray", "QList", "QQueue", "QStack", "QString", "QVarLengthArray", "QVector", // associative: "QHash", "QMultiHash", "QMap", "QMultiMap", "QSet", // Qt has no QMultiSet Change-Id: Ibe8837be96e8d30d1846881ecd65180c1bc459af Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Replace the syncqt.pl script with syncqt toolAlexey Edelev2022-09-271-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | syncqt.pl adds an extra dependency on perl when building Qt. Modern C++ provides the convenient cross-platform way to access a filesystem and to use regular expressions, so we may replace the perl script with C++ application. The syncqt executable is built at configure time and installed as QtCore tool. It's running at configure time to deliver the required header files for IDE to build a consistent code model and at the build time to keep tracking changes in header files and generate the missing aliases without reconfiguring. 'syncqt' only parses header files from a CMake build tree, so the resulting Qt installation only contains interfacing headers that belong to the platform that Qt is built for. 'sync.profile' files are not used as the 'source of truth' for sync qt procedure anymore, all the necessary information is taken from either CMake files at configure time or from the module header files while parsing them. syncqt.pl is still in place since it's required as fallback solution for a smooth transition to the new syncqt implementation for all qt repositories. This patchset only enables the C++ based syncqt for 'qtbase' repository. From the performance perspective C++ version works faster then perl script, also the configure time is reduced significally on subsequent reconfigurations - up x2 times faster when re-configuring repository, but it also takes time to compile the tool itself the first time. Numbers for qtbase: syncqt.pl syncqt.cpp initial: 0m16,035s 0m20,413s reconfig: 0m6,819s 0m3,725s The syncing procedure can be run separately for each module using <ModuleName>_sync_headers targets. The 'sync_headers' target can be used to sync all the modules at once. Task-number: QTBUG-87480 Task-number: QTBUG-103196 Change-Id: I8c938bcaf88a8713b39bbfd66d9e7ef12b2c3523 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* eglfs: Add env.var. to disable the dedicated drmHandleEvent threadLaszlo Agocs2022-09-225-15/+58
| | | | | | | | | | | | | | | | | | | | Setting QT_QPA_EGLFS_KMS_NO_EVENT_READER_THREAD=1 makes it operate like it did before 5.12.7: just calling drmhandleEvent (guarded by a mutex) on the current (main or render, depending on the QQ render loop) thread. This should not be needed and is discouraged (will certainly cause deadlocks in multiscreen setups + QQ threaded render loop on certain embedded systems), but it seems necessary to provide a way to revert back to the old way of functioning as there are reports about problems with screen cloning when the dedicated event reading thread is used. Task-number: QTBUG-91882 Pick-to: 6.4 6.3 6.2 5.15 Change-Id: I4cddcd09149dcab9e135467b6ef0e047a2a0ecff Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Fix compilation with clangSona Kurazyan2022-09-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Amends 711105058afe68407a0ed613335a83b6181112ed and fixes the following errors: .../qeglfsx11integration.cpp:28:36: note: non-constexpr constructor 'QBasicAtomicInteger' cannot be used in a constant expression Q_CONSTINIT static QBasicAtomicInt running; ^ .../qbasicatomic.h:171:5: note: declared here QBasicAtomicInteger() = default; And: .../qoffscreenwindow.cpp:171:50: error: 'constinit' specifier missing on initializing declaration of 'm_windowForWinIdHash' [-Werror,-Wmissing-constinit] QHash<WId, QOffscreenWindow *> QOffscreenWindow::m_windowForWinIdHash; ^ Q_CONSTINIT .../qoffscreenwindow.h:44:5: note: variable declared constinit here Q_CONSTINIT static QHash<WId, QOffscreenWindow *> m_windowForWinIdHash; Change-Id: I991674826737db897e087e9e06b56b338ca61a4f Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
* Apply Q_CONSTINIT where beneficialSona Kurazyan2022-09-012-2/+2
| | | | | | | | | | Applied Q_CONSTINIT to variables with static storage duration, but skipped the POD types with core constant initializers. Task-number: QTBUG-100486 Change-Id: Iaabf824e9cb0f29a405a149912200d4e4b3573c1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Change the license of all CMakeLists.txt and *.cmake files to BSDLucie Gérard2022-08-2311-11/+11
| | | | | | | Task-number: QTBUG-105718 Change-Id: I5d3ef70a31235868b9be6cb479b7621bf2a8ba39 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* eglfs: Fix crash when painting the mouse cursor in a multiscreen setupDominik Holland2022-08-051-5/+5
| | | | | | | | | | | | | | | | Always make sure to initialize the OpenGL functions. Instead of relying on the shaderprogram initialization, which is bound to the current context, check for the d_ptr and initialize when not already done. With this fix QEglFSCursor::draw works regardless of which context is current and checking for that is not needed anymore in paintOnScreen. This is important as the basic render loop only uses one context for painting on all screens, while the threaded render loop uses multiple contexts. Pick-to: 6.4 6.3 6.2 5.15 Change-Id: I4ac2f5184c2fce27421e92efe1b7f635c71c0e92 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* eglfs: Fix mouse events not being delivered to the frontmost windowSergio Martins2022-08-042-0/+20
| | | | | | | | | | | | | | | Since QPlatformScreen::topLevelAt() wasn't implemented it would just fallback to use QGuiApplication's window list. Possibly fixes any other bug that relied on QApplication::topLevelAt(). The fix is to consult the compositor, which has proper z-order information, unlike QGuiApplicationPrivate::window_list. Task-Id: QTBUG-105256 Pick-to: 6.3 6.4 Change-Id: I4202dd5d87e41b69c461c808d29b809af5b52d09 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Add license headers to cmake filesLucie Gérard2022-08-0311-0/+33
| | | | | | | | | | | | CMakeLists.txt and .cmake files of significant size (more than 2 lines according to our check in tst_license.pl) now have the copyright and license header. Existing copyright statements remain intact Task-number: QTBUG-88621 Change-Id: I3b98cdc55ead806ec81ce09af9271f9b95af97fa Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* eglfs: Fix screen cloning when atomic is enabledLaszlo Agocs2022-08-011-5/+6
| | | | | | | | | | | | The problem was introduced in the atomic code path only, the legacy one has always specified the correct crtc id. Amends 56149c0fbb19946050a3249acef4e86e511d3cd4. Pick-to: 6.4 6.3 6.2 5.15 Change-Id: Ie3a99ec4bc24901e1303631097a395fde8dbe110 Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Add a way to declare _exported_ logging categoriesGiuseppe D'Angelo2022-06-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a library declares a logging category that needs to be used by clients (e.g. via inline methods, macros, etc.), then the logging category function generated by Q_DECLARE_LOGGING_CATEGORY has to be exported. We've seen this problem with Q_NAMESPACE, Q_GADGET, etc.: these macros also declare functions or objects that in some cases need to be exported. And precisely like Q_NAMESPACE, Q_GADGET, etc., people end up relying on the implementation details of Q_DECLARE_LOGGING_CATEGORY (specifically, what does it expand to) in order to place the export directives in the right place. Introduce a more robust solution and apply it around qtbase. Cleanup some minor code as a drive-by (remove `extern` and useless semicolons). [ChangeLog][QtCore][QLoggingCategory] Added the Q_DECLARE_EXPORTED_LOGGING_CATEGORY macro, in order to allow dynamic libraries to declare a logging category that can be then used by client code. Change-Id: I18f40cc937cfe8277b8d62ebc824c27a0773de04 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Kai Koehne <kai.koehne@qt.io>
* Fix typo in codeDuan Ting2022-06-231-1/+1
| | | | | | | | | Found by codespell Pick-to: 6.4 6.3 6.2 5.15 Change-Id: I75f4b14f3eded035a0c904d8a7174cb6f5b7d9ef Reviewed-by: Wang Bo <wangbo@uniontech.com> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Use SPDX license identifiersLucie Gérard2022-05-1682-3157/+205
| | | | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Files that have to be modified by hand are modified. License files are organized under LICENSES directory. Task-number: QTBUG-67283 Change-Id: Id880c92784c40f3bbde861c0d93f58151c18b9f1 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* includemocs (updated script)Marc Mutz2022-05-052-0/+4
| | | | | | | | | The updated script found some more. Task-number: QTBUG-102886 Pick-to: 6.3 6.2 5.15 Change-Id: Ic8062e8a441c4d1a3718598a21f7f2e050a17cae Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Plugins: replace remaining uses of QLatin1String with QLatin1StringViewSona Kurazyan2022-05-041-1/+1
| | | | | | | Task-number: QTBUG-98434 Change-Id: If64c294033c114ae46dfc327c40da7f3c7a598f5 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Plugins: use _L1 for for creating Latin-1 string literalsSona Kurazyan2022-05-046-29/+41
| | | | | | | | | As a drive-by, fix qsizetype -> int narrowing conversion warnings for the touched lines. Task-number: QTBUG-98434 Change-Id: I7fadd3cf27ad099028d70f05956303e3af62c0f5 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Revive eglfs' raster window supportLaszlo Agocs2022-04-273-11/+20
| | | | | | | | | | | | | | | | | | | A number of consequences of the new rhi-based backingstore composition were not handled. Most importantly, the fact that RasterGLSurface is not a thing anymore in practice causes challenges because we can no longer decide just based on the surfaceType what a QWindow with OpenGLSurface would be. (a plain GL window or a GL window with a backing store?) Also, the backingstore needs to be able to initialize its backing QRhi by itself, because with eglfs going through OpenGL is the only way. Amends 68a4c5da9a080101cccd8a3b2edb1c908da0ca8e Fixes: QTBUG-102750 Change-Id: Ia1ca59d01e3012264a76b50e591612fdcc2a0bd6 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* eglfs_x11: Fix running flag linkageLaszlo Agocs2022-04-271-1/+1
| | | | | | | | Pick-to: 6.3 6.2 5.15 Fixes: QTBUG-102821 Change-Id: I49db74c0d554bdf870a4521ab91d154b8a80c375 Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com> Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Reorganize work with graphical libraries on INTEGRITYTatiana Borisova2022-04-051-0/+5
| | | | | | | | | | | | - Currently we manually unpack all platform libraries, that are required for GUI apps, and pack it into single eglmegapack.a library. It could be better do not execute such additional step, but have possibility to add required graphical libs to cmake interface lib via toolchain file list variable. Pick-to: 6.2 6.3 Change-Id: Ic4122600f02e6828d528ee4f00075f8c27f42e38 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix remaining uses of deprecated QScopedPointer::takeMårten Nordheim2022-03-151-3/+3
| | | | | Change-Id: I804aef0aabc1c1bccdf92ff8da7b6c2f5377252a Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* eglfs: QNX uses own QPA plugin and not eglfsPasi Petäjäjärvi2022-03-072-14/+0
| | | | | | | | | | | | | | | | Remove compilation workarounds to get rid of warnings as those QPA plugins are not supported by QNX. warning: cast from 'void*' to 'EGLNativeDisplayType' {aka 'int'} loses precision [-fpermissive] warning: invalid conversion from 'EGLNativeDisplayType' {aka 'int'} to 'void*' [-fpermissive] Pick-to: 6.2 6.3 Task-number: QTBUG-101382 Change-Id: I515708a8869498eb91df4fcba85a7b751d13a25c Reviewed-by: Rafael Roquetto <rafael.roquetto@qt.io> Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
* Fix run time failure for UI autotests (INTEGRITY)Tatiana Borisova2022-01-252-8/+18
| | | | | | | | | | | | | | | | - Add WFD resources release: It provides possibility to re-create native window on run time. It allows to run several Qt UI applications (one by one) without device reboot. - Fix crash that found during window re-creation: ~QOpenGLCompositorBacking() calls QOpenGLCompositor::instance(). But compositor is deleted for that moment. Task-number: QTBUG-99123 Pick-to: 6.2 6.3 Change-Id: I1e6dc9a012a166d1fd6cd1c24f9d2e9a8995fc00 Reviewed-by: Kimmo Ollila <kimmo.ollila@qt.io> Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>