summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@nokia.com>2012-05-18 23:32:36 +0200
committerLaszlo Agocs <laszlo.p.agocs@nokia.com>2012-05-19 07:58:30 +0200
commit3836847ab68c52e4fe39dff94649534ffda99418 (patch)
tree875e066d583b9c3bcf9df046b277cc026b7bc0f2 /src/plugins
parent984f2ef4b3037d7ff68d1de890ac8006c976efe3 (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')
-rw-r--r--src/plugins/platforms/wayland/qwaylandintegration.cpp9
-rw-r--r--src/plugins/platforms/wayland/qwaylandintegration.h1
-rw-r--r--src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.cpp10
-rw-r--r--src/plugins/platforms/wayland/windowmanager_integration/qwaylandwindowmanagerintegration.h1
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;