diff options
author | Christophe Chapuis <chris.chapuis@gmail.com> | 2019-03-16 11:41:42 +0000 |
---|---|---|
committer | Johan Helsing <johan.helsing@qt.io> | 2019-04-03 07:38:40 +0000 |
commit | d65783c9e1f40e176943b8706bf6bbed8320bcc8 (patch) | |
tree | e32fd81833020809501c80414debf21dc2060640 | |
parent | f602191778cce57a67fdeffe5f3cc0e1cd2c7b53 (diff) | |
download | qtwayland-d65783c9e1f40e176943b8706bf6bbed8320bcc8.tar.gz |
compositor: fix QWaylandShell private objects inheritance
If the public API has inheritance relationships, this should be
reflected in the private classes too.
Otherwise the d_func will cast to a wrong type, leading to crashes.
Change-Id: Iad2dccad4b63326e6b108a44c708ab51f0784678
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
-rw-r--r-- | src/compositor/extensions/qwaylandshell.h | 4 | ||||
-rw-r--r-- | src/compositor/extensions/qwaylandwlshell_p.h | 3 | ||||
-rw-r--r-- | src/compositor/extensions/qwaylandxdgshell_p.h | 3 | ||||
-rw-r--r-- | src/compositor/extensions/qwaylandxdgshellv5_p.h | 3 | ||||
-rw-r--r-- | src/compositor/extensions/qwaylandxdgshellv6_p.h | 3 |
5 files changed, 10 insertions, 6 deletions
diff --git a/src/compositor/extensions/qwaylandshell.h b/src/compositor/extensions/qwaylandshell.h index a8693821..9241b866 100644 --- a/src/compositor/extensions/qwaylandshell.h +++ b/src/compositor/extensions/qwaylandshell.h @@ -96,11 +96,11 @@ public: } protected: - QWaylandShellTemplate(QWaylandCompositorExtensionPrivate &dd) + QWaylandShellTemplate(QWaylandShellPrivate &dd) : QWaylandShell(dd) { } - QWaylandShellTemplate(QWaylandObject *container, QWaylandCompositorExtensionPrivate &dd) + QWaylandShellTemplate(QWaylandObject *container, QWaylandShellPrivate &dd) : QWaylandShell(container,dd) { } }; diff --git a/src/compositor/extensions/qwaylandwlshell_p.h b/src/compositor/extensions/qwaylandwlshell_p.h index e8d568fc..b2beca16 100644 --- a/src/compositor/extensions/qwaylandwlshell_p.h +++ b/src/compositor/extensions/qwaylandwlshell_p.h @@ -43,6 +43,7 @@ #include <QtWaylandCompositor/qtwaylandcompositorglobal.h> #include <QtWaylandCompositor/qwaylandsurface.h> #include <QtWaylandCompositor/private/qwaylandcompositorextension_p.h> +#include <QtWaylandCompositor/private/qwaylandshell_p.h> #include <QtWaylandCompositor/QWaylandWlShellSurface> #include <QtWaylandCompositor/QWaylandSeat> @@ -67,7 +68,7 @@ QT_BEGIN_NAMESPACE class Q_WAYLAND_COMPOSITOR_EXPORT QWaylandWlShellPrivate - : public QWaylandCompositorExtensionPrivate + : public QWaylandShellPrivate , public QtWaylandServer::wl_shell { Q_DECLARE_PUBLIC(QWaylandWlShell) diff --git a/src/compositor/extensions/qwaylandxdgshell_p.h b/src/compositor/extensions/qwaylandxdgshell_p.h index 9d1140fb..3223abf3 100644 --- a/src/compositor/extensions/qwaylandxdgshell_p.h +++ b/src/compositor/extensions/qwaylandxdgshell_p.h @@ -38,6 +38,7 @@ #define QWAYLANDXDGSHELL_P_H #include <QtWaylandCompositor/private/qwaylandcompositorextension_p.h> +#include <QtWaylandCompositor/private/qwaylandshell_p.h> #include <QtWaylandCompositor/private/qwayland-server-xdg-shell.h> #include <QtWaylandCompositor/QWaylandXdgShell> @@ -73,7 +74,7 @@ struct Q_WAYLAND_COMPOSITOR_EXPORT QWaylandXdgPositionerData { }; class Q_WAYLAND_COMPOSITOR_EXPORT QWaylandXdgShellPrivate - : public QWaylandCompositorExtensionPrivate + : public QWaylandShellPrivate , public QtWaylandServer::xdg_wm_base { Q_DECLARE_PUBLIC(QWaylandXdgShell) diff --git a/src/compositor/extensions/qwaylandxdgshellv5_p.h b/src/compositor/extensions/qwaylandxdgshellv5_p.h index 681c4537..8f5af746 100644 --- a/src/compositor/extensions/qwaylandxdgshellv5_p.h +++ b/src/compositor/extensions/qwaylandxdgshellv5_p.h @@ -41,6 +41,7 @@ #define QWAYLANDXDGSHELLV5_P_H #include <QtWaylandCompositor/private/qwaylandcompositorextension_p.h> +#include <QtWaylandCompositor/private/qwaylandshell_p.h> #include <QtWaylandCompositor/private/qwayland-server-xdg-shell-unstable-v5_p.h> #include <QtWaylandCompositor/QWaylandXdgShellV5> @@ -61,7 +62,7 @@ QT_BEGIN_NAMESPACE class Q_WAYLAND_COMPOSITOR_EXPORT QWaylandXdgShellV5Private - : public QWaylandCompositorExtensionPrivate + : public QWaylandShellPrivate , public QtWaylandServer::xdg_shell_v5 { Q_DECLARE_PUBLIC(QWaylandXdgShellV5) diff --git a/src/compositor/extensions/qwaylandxdgshellv6_p.h b/src/compositor/extensions/qwaylandxdgshellv6_p.h index adc25cb7..457bc220 100644 --- a/src/compositor/extensions/qwaylandxdgshellv6_p.h +++ b/src/compositor/extensions/qwaylandxdgshellv6_p.h @@ -38,6 +38,7 @@ #define QWAYLANDXDGSHELLV6_P_H #include <QtWaylandCompositor/private/qwaylandcompositorextension_p.h> +#include <QtWaylandCompositor/private/qwaylandshell_p.h> #include <QtWaylandCompositor/private/qwayland-server-xdg-shell-unstable-v6.h> #include <QtWaylandCompositor/QWaylandXdgShellV6> @@ -71,7 +72,7 @@ struct Q_WAYLAND_COMPOSITOR_EXPORT QWaylandXdgPositionerV6Data { }; class Q_WAYLAND_COMPOSITOR_EXPORT QWaylandXdgShellV6Private - : public QWaylandCompositorExtensionPrivate + : public QWaylandShellPrivate , public QtWaylandServer::zxdg_shell_v6 { Q_DECLARE_PUBLIC(QWaylandXdgShellV6) |