summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2015-06-12Fix input devices leak in clientOlivier Blin1-0/+3
Change-Id: I28200698706168308e450b2cd3cfa99df517f9b7 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-12Fix xkb keymap string leak in the compositorOlivier Blin1-0/+1
Change-Id: Ie02e6667e5867b729cf5a519705ded4f79b9f4b1 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-12Fix private object leak in surface op/interface classesOlivier Blin2-0/+8
Change-Id: I7ad508cb07a73d6699e9d2742ea029409f498a87 Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-06-12Fix QWaylandDrag leak in the compositorOlivier Blin2-2/+2
Make it a scoped pointer. Change-Id: Iaeef87cad2022496ebe3a7c746b02584fac9a485 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-12Fix build without OpenGLOlivier Blin2-1/+19
Also fix a comment alongside. Change-Id: I0091a89ff8e7ed46e769ea47a0225bc87db2c1f5 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-06-09Fix typo that leads to mis-evaluation of an expression.Christian Kandeler1-1/+1
Change-Id: I5d6eedeb3dfb80ca9df7ca27e29ad6604dbfe683 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-09Fix wheel events when the decorations are enabledGiulio Camuffo3-5/+29
We must offset the wheel events' position, as we do with the other types of mouse events. Change-Id: If85e93ffe95304c7dee4c2a3ff195a73243a8182 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-09bradient: Activate the decoration's buttons on mouse release, not pressGiulio Camuffo1-6/+36
Change-Id: I5a161119b20301a405bdde9bbea6bfbdcc4b9fa0 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-09Fix a corner case freed memory use/crashGiulio Camuffo1-1/+1
QWaylandDisplay::flushRequests() does not only flush them, but also dispatches the pending events. If we have two wl_data_device.selection events in the queue we must not dispatch the second one while we are dealing with the first one because that will replace the data offer and delete us while we're in QWaylandMimeData::retrieveData_sys(). Change-Id: Ib58ca571867faa2633daa9ec94fe7094df02e9fd Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-09Don't generate spurious selection eventsGiulio Camuffo1-1/+1
By calling destroy() on the active wl_data_source before replacing it with a new one and calling set_selection() we trigger a spurious selection(null) event before the one with the offer for the source we are going to set. Change-Id: I6c2f2fd029fa523312b9892c6a5050805dfa83b0 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-05-29Fix that we pick up the generated headers in source packagesJørgen Lind1-0/+2
Change-Id: If5ae8749ccbddfc878ae4e0adaa40f072527d425 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-05-28Fix crash when the wl_shm global comes after a wl_output oneGiulio Camuffo3-1/+8
Task-number: QTBUG-44503 Change-Id: I6932df57bb4560b6dceb72a5cb7c536cd090e92a Reviewed-by: Martin Gräßlin <mgraesslin@kde.org> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-05-17Fix the build error in public headersBhushan Shah2-3/+3
One should always use Q_SLOTS/Q_SIGNALS in then public headers Change-Id: Ibbba0d3ff402bd320049bcd58ced07ad1342ef3b Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-05-15Add safety check in QWaylandInputDevice::Keyboard::modifiers()Martin Gräßlin1-0/+3
::modifiers() might be invoked before being initialised. E.g. when a pointer button event is emitted before the keymap is sent. Change-Id: Ib95f9866d808b2a32ddfaa0862cdb3226fab1938 Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-05-14Fix threaded OpenGL rendering on Mesa and possibly other EGLsGiulio Camuffo3-4/+14
eglBindAPI's docs says "defines the current rendering API for EGL in the thread it is called from". We were instead just calling it in the thread the context was created in, not in the thread used for rendering. Change-Id: Iba8ffe75a6f4f8b9d1bba59c0e7cce34499e9c48 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-05-07Reset wayland object pointer after destroyArnaud Vrac1-0/+4
This allows calling init() on the wayland object again after destroy() Change-Id: I7856cc8ec676eee7575e15a5d1f81cf1b89537c8 Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-05-07Track last input window with a QPointer in case it is destroyedArnaud Vrac2-2/+8
Change-Id: I61d7aa4b6a37922eb3beefd983154ee267cae0ef Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-05-07Map more XKB key codesArnaud Vrac1-0/+17
Change-Id: I0a2b56043235666bc57b46ae4ac78ca5e24e736d Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-05-04Fix crash on keyboard removeGiulio Camuffo1-0/+4
If the compositor sent a wl_keyboard.leave and a new wl_seat.capabilities without the keyboard bit we would end up deleting the Keyboard object with a roundtrip in flight, ending up using freed memory later. Destroy the callback when destroying the keyboard, and notify the window system the active window is active no more. Change-Id: Ie415ca62b46e0b8ef0fe4d09c8e7a8130928df90 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-04-24Let the underlying system decide the default keymap parametersGiulio Camuffo1-2/+2
By passing "" instead of hardcoded defaults we let xkbcommon decide what the default parameters for the keymap should be. The user can change that with environment variables, as described here: http://xkbcommon.org/doc/current/structxkb__rule__names.html Change-Id: I8fb037201aeababaa0aa4755cae339ae3d9800b9 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-04-24Use a FontSmoothingGamma value of 1.0Giulio Camuffo1-0/+7
This is what the xcb plugin does, be consistent with it. Change-Id: I5befa2de3ff514ca0c9196eb7137682586cec126 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-04-24Use defines instead of hardcoded stringsGiulio Camuffo1-6/+4
Change-Id: Id382a1e39f2c052fbfeb96caa9b01becb31e81c9 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-04-24Do not manually update the xkb stateGiulio Camuffo1-1/+0
xkb_state_update_key() is not supposed to be used in apps with a master process, such as wayland clients, which use xkb_state_update_mask() with the state serialized by the master. Change-Id: Ie51a39ca0c567c54072b221d1ab8cf7b8ea15c55 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-04-21Move surfaces to outputsPier Luigi Fiorini15-50/+274
Moving surfaces to belong to a specific output. Surfaces can be viewed on a different output anyway. Change-Id: I9ef76300f85190d84b83431374e76e581786e4e7 Done-with: Jørgen Lind <jorgen.lind@theqtcompany.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-04-16Add client side support for media keysGiulio Camuffo1-0/+7
Unfortunately we don't have a keysym in libxkbcommon for PlayPause, we only have Play. We're going to pretend XKB_KEY_XF86AudioPlay is really PlayPause since that is what is most common. Change-Id: I1a75d8b5b0ea360e0f62eb7a93004ba3fababfa8 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
2015-04-15Merge remote-tracking branch 'origin/5.4' into 5.5Liang Qi18-34/+50
Conflicts: src/client/qwaylandshmbackingstore.cpp src/client/qwaylandwindow.cpp Change-Id: I795fd08f0fc5d3cb5ed55bf16e724f66b7567723
2015-04-11brcm-egl: Avoid conflicts with GLES3Pier Luigi Fiorini1-0/+2
qopengl.h includes GLES3 which conflicts with GLES2 declarations. Might happen because Qt is built with desktop GL. This patch fixes the following build error. In file included from ../../../../hardwareintegration/compositor/brcm-egl/brcmeglintegration.cpp:61:0: /opt/vc/include/GLES2/gl2.h:600:125: error: conflicting declaration of C function 'void glShaderSource(GLuint, GLsizei, const GLchar**, const GLint*)' GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length); ^ In file included from /usr/include/qt/QtGui/qopengl.h:97:0, from ../../../../../include/QtCompositor/5.5.0/QtCompositor/private/../../../../../src/compositor/hardware_integration/qwlclientbufferintegration_p.h:46, from ../../../../../include/QtCompositor/5.5.0/QtCompositor/private/qwlclientbufferintegration_p.h:1, from ../../../../hardwareintegration/compositor/brcm-egl/brcmeglintegration.h:44, from ../../../../hardwareintegration/compositor/brcm-egl/brcmeglintegration.cpp:44: /usr/include/GLES3/gl3.h:475:29: note: previous declaration 'void glShaderSource(GLuint, GLsizei, const GLchar* const*, const GLint*)' GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); Change-Id: I49ae11457b70b05f740ce70b8c1cfa5d6aa554bb Reviewed-by: Olivier Blin <qt@blino.org> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-04-10Remove .desktop suffix to appIdPier Luigi Fiorini1-4/+18
The appId is the desktop entry identifier. According to the desktop entry specifications [1], for applications the part of the name should follow the reverse DNS convention (see [2]). To do this we use the application domain if available, otherwise for lack of information we fall back to the executable base name like other toolkits such as Gtk+ do. [1] http://standards.freedesktop.org/desktop-entry-spec/latest/ [2] http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s02.html Change-Id: I181ad23a9736844e07e8060d78e756a943c27f67 Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-04-08Don't handle mouse events in decos if buttons were pressed in the content areaGiulio Camuffo1-1/+2
This fixes the decorations stealing the mouse events when going outside the content area. Change-Id: I8f3592fbda6b9c1da6498d74820a73be11c6999d Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-03-30Fix build for brcm-egl integrationPier Luigi Fiorini1-3/+0
Change-Id: I5540dfb8e115ab6b3c90bb78618b277783a912f3 Reviewed-by: Olivier Blin <qt@blino.org> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-03-30brcm-egl: Disambiguate wl_registryPier Luigi Fiorini1-0/+1
Include wayland-client.h to disambiguate between QtWaylandClient::wl_registry and wl_registry. Change-Id: Idf33fd56a6b2c2436f5cbabc953980d05826ebba Reviewed-by: Olivier Blin <qt@blino.org> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-03-29Drop unused mScreensInitialized variable in QWaylandDisplayOlivier Blin1-1/+0
Unused since commit 78a701272e68d4f0ab95df4062374b8d34ef2919: Made wayland plugin single-threaded, yay :) Change-Id: I1fae78d77179feaac79f5dba6dcad8084e3e97fa Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-03-27Fix shm buffers init and destruction on failureOlivier Blin2-5/+12
Some pointers need to be initialized in QWaylandBuffer and QWaylandShmBuffer, and checked at destruction. This avoids crashes when shm surface creation fails. Change-Id: I6f6afa3cc6c67533b5130700cbc27b271764109e Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-03-27Fix BrcmBuffer buildOlivier Blin1-1/+1
It got broken after commit b332630c86014eada07990acf66c13e000b3482b: Fix generated code for interface names not starting with qt_ or wl_ Like done in xcompositebuffer.h Change-Id: Ib9b44536d4214737d8d68d62c8512e18a80d5b5d Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-03-27Remove useless EGL linking in pluginsOlivier Blin5-10/+0
EGL libs are already linked from the hardwareintegration pri file, and the plugins do not make direct use of any EGL symbol. Change-Id: If6ecfee16e8c9d8fee67f03419941ced92d1eff8 Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-03-27Make QWaylandShellSurface a QObject to allow build without RTTIOlivier Blin4-7/+11
dynamic_cast can not be used when RTTI is disabled, so make QWaylandShellSurface a QObject. QWaylandWlShellSurface and QWaylandXdgSurface must also inherit from QWaylandShellSurface first, to properly inherit from QObject. Change-Id: I2addb8105a0fe61615d4bc905414f7ee7277029f Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-03-24ShellSurface: fix leak of QWaylandSurfaceItem on destructionOlivier Blin1-0/+1
The QWaylandSurfaceView/QWaylandSurfaceItem object is never destroyed from ShellSurface. This was also leaking the underlying GL texture. Task-number: QTBUG-41180 Change-Id: If74c956075744115b8b5a7e8cb89b584714ec7e6 Done-with: Nicolas Marc <nicolas.marc@softathome.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-03-24Use Qt foreach instead of C++11 specific range-base for loopOlivier Blin1-1/+1
To fix build with compilers without C++11 support. Change-Id: If5a5d5d874b196f60bcc5b7bd5a543b58f9c89a3 Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-03-20Fix build with gcc <= 4.5Olivier Blin1-1/+1
nullptr is not defined with gcc <= 4.5, use 0 instead. Change-Id: I90d9170e57258f26b8ba7770a957a135539364de Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-03-10Disable -Wcast-qual in qtwaylandThiago Macieira3-0/+9
We have a lot of generated C source code that needs to do casting and C doesn't have const_cast, so the -Wcast-qual option produces a lot of noise. Let's make sure it isn't enabled in qmake.conf or qt_common.prf. Change-Id: Iee8cbc07c4434ce9b560ffff13c9635861a8eca9 Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-03-10Send done and scale events only when clients support wl_output >= 2Pier Luigi Fiorini1-8/+14
Those events were added with wl_output version 2 and we can't send them to clients supporting wl_output version 1. Change-Id: I4a673b8cc0476675532d31b4391a537d8473987b Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-03-10Check the surface input mask for hover eventsGiulio Camuffo2-9/+8
We also remove the hoverLeaveEvent() reimplementation, as it serves no real purpose. Change-Id: Ic218be864564032c38f91d3946ccfdf2ccfc0d25 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2015-02-20Merge remote-tracking branch 'origin/5.4' into 5.5Frederik Gladhorn1-2/+9
Change-Id: I03fd08fc0576ffac813f64905c23de4d65e67433
2015-02-17Update copyright headersJani Heikkinen277-4028/+2724
Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I5a74d32515c3f1fe7aa1916f4241c92832510f8c Reviewed-by: Antti Kokko <antti.kokko@theqtcompany.com>
2015-02-17Fix buildGiulio Camuffo1-0/+2
Change-Id: I790e9bfbcffc7458e2a46f2da32dcbde0c6bffe8 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2015-02-17Add a way to get the native hardware integration buffer for a sufaceGiulio Camuffo2-0/+6
When running on wayland-egl it will be a EGLImageKHR. The compositor can then use it to pass it to something like a hardware compositor, or a parent compositor using the egl extension EGL_WL_create_wayland_buffer_from_image. Change-Id: I61a165c9af444509f28ab92d00be146e2e78eb52 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-02-17Run eventDispatcher in QWaylandDisplay::forceRoundTripMartin Gräßlin1-2/+9
If the application uses QCoreApplication::setEventDispatcher before the QGuiApplication is created the blocking roundtrip might block the application indefinitely. This can happen if the application starts a Wayland server in the same process before the QGuiApplication is created. And the QtWayland plugin connects to this server. In this case a roundtrip blocks as the Wayland server cannot process the events the QWaylandDisplay is waiting for. By running the event dispatcher manually and using the pending variant for dispatching the Wayland event queue, the application can be kept alive. Change-Id: I9c36fccbae8921e1ae9a0a8b7f460520b1b65d5c Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-02-16Add a integration hook to get the wayland queue used by the QPA pluginGiulio Camuffo1-0/+2
This comes handy for clients directly using raw wayland objects. Change-Id: Ie526ac7b25a6c6a34ce61699103e612616bffbb8 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-02-16Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn14-31/+112
Conflicts: src/client/qwaylanddataoffer.cpp src/client/qwaylanddisplay.cpp src/client/qwaylandinputdevice.cpp src/client/qwaylandwindow.cpp src/compositor/compositor_api/qwaylandsurfaceitem.cpp Change-Id: I2eae0fd43a71fbfd7c907ca715707a26f3c134c5
2015-02-13Sanitize popup behavior.Laszlo Agocs6-21/+37
Popups are pretty important for widget apps. Menus, combobox dropdows and such are all popups. Currently they are completely borked when activated via keyboard or touch. This is because of the bizarre set_popup request in the protocol, and Weston's current implementation, that ignore the fact that a popup can be opened as a result of a keyboard event too or may not originate from an input event at all. Pass the last input device and serial we have seen, regardless of the type, by tracking it globally in the QWaylandDisplay. With this patch menus and such will not freeze the application anymore when activated with keyboard or touch without sending a mouse event to the window first. The behavior is still broken in some ways, especially with keyboard due to immediately getting a popup_done, but at least applications remain usable. Task-number: QTBUG-41142 Task-number: QTBUG-41147 Change-Id: I18de501004ae8a62ff8667e72225d08c2d3ba491 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>