diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2012-05-18 23:32:36 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.p.agocs@nokia.com> | 2012-05-19 07:58:30 +0200 |
commit | 3836847ab68c52e4fe39dff94649534ffda99418 (patch) | |
tree | 875e066d583b9c3bcf9df046b277cc026b7bc0f2 /src/plugins | |
parent | 984f2ef4b3037d7ff68d1de890ac8006c976efe3 (diff) |
Implemented graceful quitting of clients.
Send a quit message to let the client shut down cleanly.
Change-Id: I5f99c9b92341fdb5f1b171f6fe36f26bf8a47026
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
Diffstat (limited to 'src/plugins')
4 files changed, 20 insertions, 1 deletions
diff --git a/src/plugins/platforms/wayland/qwaylandintegration.cpp b/src/plugins/platforms/wayland/qwaylandintegration.cpp index 33883b9cb..0469f3f92 100644 --- a/src/plugins/platforms/wayland/qwaylandintegration.cpp +++ b/src/plugins/platforms/wayland/qwaylandintegration.cpp @@ -87,6 +87,15 @@ QWaylandIntegration::QWaylandIntegration() mInputContext = QPlatformInputContextFactory::create(); } +QWaylandIntegration::~QWaylandIntegration() +{ + delete mDrag; + delete mClipboard; + delete mAccessibility; + delete mNativeInterface; + delete mDisplay; +} + QPlatformNativeInterface * QWaylandIntegration::nativeInterface() const { return mNativeInterface; diff --git a/src/plugins/platforms/wayland/qwaylandintegration.h b/src/plugins/platforms/wayland/qwaylandintegration.h index 093a25bdf..9bb6130a2 100644 --- a/src/plugins/platforms/wayland/qwaylandintegration.h +++ b/src/plugins/platforms/wayland/qwaylandintegration.h @@ -54,6 +54,7 @@ class QWaylandIntegration : public QPlatformIntegration { public: QWaylandIntegration(); + ~QWaylandIntegration(); bool hasCapability(QPlatformIntegration::Capability cap) const; QPlatformWindow *createPlatformWindow(QWindow *window) const; diff --git a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp index 347da619a..25565ad50 100644 --- a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp +++ b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp @@ -125,7 +125,8 @@ void QWaylandWindowManagerIntegration::wlHandleListenerGlobal(wl_display *displa } const struct wl_windowmanager_listener QWaylandWindowManagerIntegration::windowmanager_listener = { - QWaylandWindowManagerIntegration::handle_hints + QWaylandWindowManagerIntegration::handle_hints, + QWaylandWindowManagerIntegration::handle_quit }; void QWaylandWindowManagerIntegration::handle_hints(void *data, wl_windowmanager *ext, int32_t showIsFullScreen) @@ -135,6 +136,13 @@ void QWaylandWindowManagerIntegration::handle_hints(void *data, wl_windowmanager self->d_func()->m_showIsFullScreen = showIsFullScreen; } +void QWaylandWindowManagerIntegration::handle_quit(void *data, wl_windowmanager *ext) +{ + Q_UNUSED(data); + Q_UNUSED(ext); + QGuiApplication::quit(); +} + void QWaylandWindowManagerIntegration::mapClientToProcess(long long processId) { Q_D(QWaylandWindowManagerIntegration); diff --git a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h index 3d61295d5..c2a23290b 100644 --- a/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h +++ b/src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h @@ -86,6 +86,7 @@ private: static void handle_hints(void *data, struct wl_windowmanager *ext, int32_t showIsFullScreen); + static void handle_quit(void *data, struct wl_windowmanager *ext); static const struct wl_windowmanager_listener m_windowManagerListener; |