summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* Fix crash when calling setVisible for EGL windows twice within one slotJohan Klokkhammer Helsing2018-03-231-2/+19
| | | | | | Task-number: QTBUG-63411 Change-Id: I56c367a1801d215e93bf195332272cfee300cdd8 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Run shell agnostic tests on all shellsJohan Klokkhammer Helsing2018-03-132-0/+8
| | | | | | | And not just the default one. Change-Id: I6debbda9ae249f5f9df914901dc60722253b7d09 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* Mocking compositor: Don't leak wl_shell_surfacesJohan Klokkhammer Helsing2018-03-121-0/+4
| | | | | Change-Id: Ic133b41bdcfb98418be4a0141f382734f1d5db85 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Add client-side tests for ivi-applicationJohan Klokkhammer Helsing2018-03-128-0/+363
| | | | | | | | Tests ivi surface creation and configuration. Task-number: QTBUG-66512 Change-Id: Idff60eb99eb34b7fce1c935bd036ef18a8f97d7c Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Send configure events in shell-agnostic client testsJohan Klokkhammer Helsing2018-03-089-10/+78
| | | | | | | | | | xdg-shell >= unstable v6 requires surfaces to be configured before buffers can be attached. Make sure to send a configure event when a compositor would normally do it. Task-number: QTBUG-66510 Change-Id: Icbff6ebaa597e858d92d621849aa0df7a8a976f3 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Client test for xdg-shell v6 configure eventsJohan Klokkhammer Helsing2018-03-086-34/+176
| | | | | | Task-number: QTBUG-66689 Change-Id: Ifdf38a9ab73357fdbe61e77f0464b227ddd2e8ac Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Fix nullptr dereference in client testsJohan Klokkhammer Helsing2018-03-081-1/+2
| | | | | Change-Id: I932cd20f17b5486a1161569c5e9a3feebabeee8e Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* Test what happens when wl_display_connect failsJohan Klokkhammer Helsing2018-03-083-1/+65
| | | | | | | | | A failed wl_display_connect should make the platform plugin fail gracefully. Add a test for it to make sure. Change-Id: I87a3d9ee151fcdb1bc6ad9ffba44ad5014ede005 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* Ensure paintGL() is called in tst_WaylandClient::glWindow()Johan Klokkhammer Helsing2018-02-281-0/+4
| | | | | | | | The test is still skipped due to CI problems, though (QTBUG-65802). Task-number: QTBUG-66511 Change-Id: I79a67a80708de4cf2a7347a96c4b6344182d3ae0 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Use override when applicableJohan Klokkhammer Helsing2018-02-286-12/+12
| | | | | | | | | | Applied automatic fixes using clang-tidy's modernize-use-override. This adds the "override" keyword where it's possible and also removes the "virtual" keyword when redundant. Change-Id: I899950e5cf8782785d30a245a9c69c1720905d50 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Use default member initialization for raw pointersJohan Klokkhammer Helsing2018-02-287-17/+17
| | | | | | | | Initialize to nullptr to prevent undefined behavior. Change-Id: I7753c0be77a886d62ecb1cd7b86fc8c98340b0b8 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Init variables where they are declared when possible (clang-tidy)Johan Klokkhammer Helsing2018-02-2710-68/+35
| | | | | | | | | | | | | | | | | | | | clang-tidy -p compile_commands.json $file \ -checks='-*,modernize-use-default-member-init,readability-redundant-member-init' \ -config='{CheckOptions: [{key: modernize-use-default-member-init.UseAssignment, value: "1"}]}' \ -header-filter='qtwayland' \ -fix Afterwards I ran search and replace on the diff to clean up some whitespace errors: - Replaced '(\n\+[^:\n]*)(:\s+\+\s+)' with '$1: ' - Replaced '(\n\+[^,\n]*)(,\s+\+\s+)' with '$1, ' - Replaced '\n\+\s*\n' with '\n' I also had to do some manual edits, because for some reason, this particular clang-tidy check doesn't trigger for some files. Change-Id: I3b3909bac4bf20108bbe8ad1e01bcc54236dae1b Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Client tests: Use generated classes for mocking shellsJohan Klokkhammer Helsing2018-02-268-237/+160
| | | | | | | | | Removes a lot of boiler-plate code and makes the two shells more similar. This also makes it easier to extend the shells with additional mocking functionality. Change-Id: I4a846b06eeda695527d7c5679df339beae983af6 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Fix use after free in tst_WaylandClient::dontCrashOnMultipleCommitsv5.11.0-beta1Kari Oikarinen2018-02-211-12/+14
| | | | | | | | QBackingStore had a pointer to TestWindow window, but it was destroyed only after the TestWindow was already deleted. Change-Id: Id8fe38277cf843d532f2d8c2fdbe1f69d0309a7f Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* Fix crash when connecting a new screenJohan Klokkhammer Helsing2018-02-215-2/+61
| | | | | | | | | | | | | | | | | | | | | | In QWaylandWindow::virtualSiblings, don't include screens that have not been added yet. I.e. QWaylandScreens for which QPlatformIntegration::screenAdded has not yet been called. There are two reasons why this crash wasn't covered by the removePrimaryScreen() test. First of all, the mock output didn't send wl_output.done events when updating the mode/geometry. These wayland events are what causes QWindowSystemInterface::handleScreenGeometryChange() to be called (where virtualSiblings are called). Furthermore, virtualSiblings is only called when the geometry actually changes, so add a new test that changes the screen geometry of the existing screen while a new one is being added (i.e. moves it to the right). Task-number: QTBUG-62044 Change-Id: I623fbf8799d21c6b9293e7120ded301277639cc6 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Aleix Pol Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Fix flakiness in tst_WaylandClient::eventsJohan Klokkhammer Helsing2018-02-211-9/+11
| | | | | | | | | | | | | | | | | | | | | The test was flaky because we have a workaround for a bug in Weston where Weston fails to send the last wl_touch.frame event (QTBUG-36602). We've worked around it by letting our client handle the wl_touch.up event before the frame event if it's the last up event. This caused a race condition in our tests, though (which include the frame event). Because Q_TRY_COMPARE(window.touchEventCount, 1) would pass and the window was sometimes destroyed before the frame event had been sent by the compositor thread. Work around it by moving the touch testing before the pointer testing, so the surface is still alive when the compositor tries to send the frame event. That way the test will not be flaky, and will continue to work when we eventually remove the workaround in QWaylandInputDevice. Task-number: QTBUG-66537 Change-Id: I5673445682810e75343c6df2d1b2a4f1c1b21bcb Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Use nullptr instead of 0 or NULLJohan Klokkhammer Helsing2018-02-203-10/+10
| | | | | | | | Applied automatic fixes using clang-tidy's modernize-use-nullptr, and some manual cleanup to prevent QFlag macros to be affected. Change-Id: I88f94390185bc6e6f23693b68723cd5710815ae6 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Test that xdg_toplevel_v6s are destroyed before xdg_surface_v6sJohan Klokkhammer Helsing2018-02-011-4/+21
| | | | | | | | | Adds an assert so tst_WaylandClientXdgShellV6::createDestroyWindow verifies deletion order. Task-number: QTBUG-65568 Change-Id: I0b4dd350f811495a9c7a78811915647fb713a43a Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* Merge remote-tracking branch 'qt/5.10' into devPaul Olav Tvete2018-01-314-19/+68
|\ | | | | | | Change-Id: I603cbb164e6015c1bb7796bd8bb055d84dbc3b04
| * Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-181-0/+37
| |\ | | | | | | | | | Change-Id: I6c201769561f53d88c89f75cce7d9a7b2643d2f6
| | * Don't recreate hidden egl surfacesDavid Edmundson2018-01-161-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QWaylandEglWindow deletes surfaces when a window changes from hidden to visible, presumably as a result of us not having a valid wl_surface object. By extension it doesn't make sense to create a surface whilst a window is still hidden. This fixes a crash where a QQuickWindow hides and then is destroyed. In QQuickWindow destruction we have to create a valid context in order to delete any textures/assets owned by the scene graph; as the wl_surface has gone this causes an error in the EGL libs when we create an EGL surface. Task-number: QTBUG-65553 Change-Id: I9b37a86326bf2cd7737c4e839c1aa8c74cf08116 Reviewed-by: Johan Helsing <johan.helsing@qt.io>
| * | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-074-19/+30
| |\| | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/compositor/compositor_api/qwaylandquickitem.cpp Change-Id: Id2f49e8703a67daedcee66db83f006df828d9da0
| | * Client tests: Support testing with window decorations enabledJohan Klokkhammer Helsing2018-01-052-16/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously tests would hang because eglInitialize (which was called on window decoration creation) would wait for a Wayland roundtrip while our compositor thread was waiting for more commands. Work around this by prematurely causing the clientBufferIntegration to be initialized before applicationInitialized (when the compositors switches to handling requests synchronously). Change-Id: I793c70a8f3a764cb3a70f00ddcab76cd4044b442 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
| | * Client tests: Fix wrong position being sent when mocking touch eventsJohan Klokkhammer Helsing2018-01-041-2/+6
| | | | | | | | | | | | | | | | | | | | | We were sending ints when we should have been sending wl_fixed_ts. Change-Id: I9f074334cb3ea8a3d61789ff641c2d022a5989b7 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
| | * fix build without xkbcommon-evdevRaphael Freudiger2017-11-161-1/+1
| | | | | | | | | | | | | | | | | | Change-Id: I1a223b440a6678aebc04df49f62fedc382bd898b Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io> Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | | Client: Add removePrimaryScreen testJohan Klokkhammer Helsing2017-11-241-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | Test that removing the primary screen will not crash the application. Task-number: QTBUG-62044 Change-Id: I8ba870e1d608629318ef897f88a6cc0d6e6aa85e Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | | Verify that the client supports the compositor removing outputsJohan Klokkhammer Helsing2017-11-154-0/+35
| | | | | | | | | | | | | | | Change-Id: I799d29fa43ad429b7973d7a210aca554d6b0ce26 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | | Client: Test that the current screen is updated by surface eventsJohan Klokkhammer Helsing2017-11-159-44/+267
| | | | | | | | | | | | | | | Change-Id: If96691a2d844263a1e01a86df8b0d58f23848a4c Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | | Merge remote-tracking branch 'qt/5.10' into devPaul Olav Tvete2017-10-2717-25/+379
|\| | | | | | | | | | | Change-Id: I4f885a551093ada07da97fd3d99902e36f98595e
| * | Merge remote-tracking branch 'qt/5.9' into 5.10v5.10.0-beta3Paul Olav Tvete2017-10-2517-25/+379
| |\| | | | | | | | | | Change-Id: I6c283081669594b3e8c6b30194bb96e389319cb2
| | * Fix crash when wl-shell setType is called with a hidden parentJohan Klokkhammer Helsing2017-10-201-0/+44
| | | | | | | | | | | | | | | | | | | | | | | | Fall back to creating a toplevel instead Change-Id: If7db27d08b79e4f9f8c82fa8f9bf73abdb2585d9 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
| | * Fix outdated BSD license headerKai Koehne2017-10-2010-23/+123
| | | | | | | | | | | | | | | Change-Id: Ib1ee37ca626afad14b65303a3cfb134485ade736 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
| | * Fix crash after destroying view with mouse focusJohan Klokkhammer Helsing2017-10-186-2/+212
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't emit QWaylandSeat::mouseFocusChanged with a destroyed QWaylandView. QWaylandPointer has been refactored to make it easier to follow enter and leave logic. A missing emit for buttonPressedChanged has been fixed as well. This also adds a test for pointer events to verify that setting mouse focus works and that the crash has been fixed. Task-number: QTBUG-63208 Change-Id: Id0c174a7b609dfd0152f3ae446dd51fd8befd554 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | | Compositor tests: Don't assume global numeric name == wayland object idJohan Klokkhammer Helsing2017-10-272-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Throughout the code we consistently and confusingly use the term, "id", instead of "numeric name" for Wayland globals. This is confusing because it's not the same as thing as wl_proxy_get_id returns, although the values frequently are the same because we typically bind to all globals in the order they are announced. So in this patch we turn m_outputs into a map with the numeric name and compare it with the numeric name we get in handleGlobalRemove. Change-Id: I0716bf66e12dbbf7b05b9ca5faa5d2beba297af5 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | | qtwaylandscanner: Remove globals when destroying wrappersJohan Klokkhammer Helsing2017-10-253-6/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When globals are destroyed on the compositor side, send the "global_remove" event and set the resource implementation to nullptr so all further requests are ignored. This also adds a compositor test to see if outputs are removed when they are deleted. Change-Id: Ib77a4c3d4c2c93283a14ac20f5964e2ce08a1d38 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | | Test client side xdg shell v6Johan Klokkhammer Helsing2017-10-2014-24/+274
| | | | | | | | | | | | | | | | | | | | | | | | | | | Apart for some new mocking code for xdg shell v6, this is mostly a refactor of the existing test, to reuse the existing mocking code between the different shell integrations. Change-Id: I68f93ab12ac47e51a50fd69647286cab46a3c595 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | | Use QImage::sizeInBytes() instead of deprecated QImage::byteCount()Johan Klokkhammer Helsing2017-10-191-1/+1
| | | | | | | | | | | | | | | Change-Id: If3f21fc43d0118c1819d354c8ef43f1b79617c7b Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | Add missing field initializer for wl_registry_listener::global_removeJohan Klokkhammer Helsing2017-10-161-1/+2
| | | | | | | | | | | | | | | Change-Id: I237a324657f9932ec4396c87a96b66f7c19ac86a Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | | Tests: Add missing Q_UNUSEDsJohan Klokkhammer Helsing2017-10-162-0/+9
| | | | | | | | | | | | | | | Change-Id: Ifc7e5d000b7f5d75fb899d2294008f8dcabca777 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | | Fix -Wreorder warning by using default member initializersJohan Klokkhammer Helsing2017-10-052-11/+9
| | | | | | | | | | | | | | | Change-Id: I50f2928f1329fe45b4315baa33909b3227be1faa Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-09-271-0/+27
|\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/client/qwaylandwindow.cpp src/client/qwaylandwindow_p.h src/compositor/compositor_api/qwaylandpointer.cpp Change-Id: Icbc22a1ae3cdd9cde438742817d07fccf97f647b
| * | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2017-09-201-0/+27
| |\| | | | | | | | | | Change-Id: I76bfc271efcf75c75bf38f4bf58503e1d2a00839
| | * Fix crash when window attach is called without waiting for frame callbacksJohan Klokkhammer Helsing2017-08-311-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If QWaylandWindow::attach was called before getting the frame callback, it would overwrite mFrameCallback. Hence, all but the last frame callback would still be alive after the QWaylandWindow destructor. When the dangling callbacks got invoked the data pointer was statically casted to the deleted QWaylandWindow, resulting in undefined behavior. In this change we only delete frame callbacks from the render thread, avoiding a race condition we fixed earlier. And we always destroy the frame callback when adding a new one, ensuring that the destructor will clean up the only remaining callback. There's a test confirming that the crash has been fixed. This fixes the flakiness of many of the qtbase auto tests. Change-Id: Iecb08ab48216eac61b1ebc5c0e0664d4aac900c0 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | | Replace Q_NULLPTR with nullptrKevin Funk2017-09-265-8/+8
|/ / | | | | | | | | | | | | Change-Id: I9699a957430b8d3574ce29acb91b7ada9ea6209b Reviewed-by: Jan Arne Petersen <jan.petersen@kdab.com> Reviewed-by: Johan Helsing <johan.helsing@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Compositor: Add support for xdg-shell-unstable-v6Johan Klokkhammer Helsing2017-07-211-0/+48
| | | | | | | | | | | | | | | | | | | | This adds QML and C++ support for xdg-shell-unstable v6 on the compositor side. A couple of things are still missing for complete support, but can be added implemented later without breaking the API. Task-number: QTBUG-56174 Change-Id: I08d7c05aa4f40f00377d92f2519d89ab416daaf4 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Add missing header guard to mocksurface.hJohan Klokkhammer Helsing2017-05-191-0/+5
|/ | | | | Change-Id: I353c8b67c0990ca6fc4d8168c09d2af8899ed081 Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
* Merge remote-tracking branch 'origin/5.8' into devLiang Qi2017-01-2512-27/+172
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf examples/wayland/custom-extension/client-common/main.cpp src/client/qwaylandwlshellintegration_p.h src/client/qwaylandxdgshellintegration_p.h src/compositor/compositor_api/qwaylandquickoutput.h src/plugins/shellintegration/ivi-shell/qwaylandivisurface_p.h Change-Id: Ic78c610ddf102b0a185294f625bbfcb9238b0f3c
| * Replace all occurrences of Q_DECL_OVERRIDE with overrideJohan Klokkhammer Helsing2017-01-238-27/+27
| | | | | | | | | | Change-Id: I16b7b23efe944b49d1fcc9e7588cdb0a991cebd1 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
| * Add support for running compositors with custom device pixel ratioJohan Klokkhammer Helsing2016-12-164-0/+145
| | | | | | | | | | | | | | | | | | | | And add a manual test for showing that it works with different scale factors as well. Task-number: QTBUG-55303 Change-Id: Ib842ea51cfb62a2d46713e95d56b8a9da445d14d Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@hawaiios.org>
* | Fix pointless asserts in compositor testsJohan Klokkhammer Helsing2016-12-231-6/+6
| | | | | | | | | | | | Change-Id: Ie5528c988a15d130056f1d2a3b3e858d78897ba5 Reviewed-by: Jan Arne Petersen <jan.petersen@kdab.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>