diff options
author | Liang Qi <liang.qi@qt.io> | 2017-04-18 22:07:42 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-04-18 22:07:42 +0200 |
commit | dcff152a9b010455af1c1a29e5470f1350a48fe3 (patch) | |
tree | b0eb2f1a8b1a3aa9ecdbd02ce936ae26eefcd992 /src | |
parent | 5f62af28b2238097f99119317cd708d68ac1249b (diff) | |
parent | a92eab837f7a7088ddd26bda2bb10d47c9c12142 (diff) | |
download | qtwayland-dcff152a9b010455af1c1a29e5470f1350a48fe3.tar.gz |
Merge remote-tracking branch 'origin/5.8' into 5.9
Change-Id: I436178527be54fd0efa6ffbe39918740d4737478
Diffstat (limited to 'src')
11 files changed, 39 insertions, 12 deletions
diff --git a/src/3rdparty/protocol/qt_attribution.json b/src/3rdparty/protocol/qt_attribution.json index 76fd33d3..f35dec4f 100644 --- a/src/3rdparty/protocol/qt_attribution.json +++ b/src/3rdparty/protocol/qt_attribution.json @@ -26,9 +26,9 @@ "Files": "ivi-controller.xml ivi-application.xml", "Description": "\"Wayland IVI Extension\" is forked from IVI Layer Management to define a common set of APIs by wayland style protocol and provide reference implementation which can be loaded on Weston.", - "Homepage": "http://projects.genivi.org/wayland-ivi-extension", + "Homepage": "https://at.projects.genivi.org/wiki/display/WIE/Wayland+IVI+Extension+Home", "Version": "1.9.1", - "DownloadLocation": "http://git.projects.genivi.org/?p=wayland-ivi-extension.git;a=commit;h=44598504503eea5ac7f94c88477a5a78bda01f30", + "DownloadLocation": "https://github.com/GENIVI/wayland-ivi-extension/releases/tag/1.9.1", "LicenseId": "MIT", "License": "MIT License", "LicenseFile": "MIT_LICENSE.txt", diff --git a/src/compositor/extensions/qwaylandivisurfaceintegration.cpp b/src/compositor/extensions/qwaylandivisurfaceintegration.cpp index 3a3d9c1c..88b727df 100644 --- a/src/compositor/extensions/qwaylandivisurfaceintegration.cpp +++ b/src/compositor/extensions/qwaylandivisurfaceintegration.cpp @@ -54,6 +54,11 @@ IviSurfaceIntegration::IviSurfaceIntegration(QWaylandQuickShellSurfaceItem *item connect(m_shellSurface, &QWaylandIviSurface::destroyed, this, &IviSurfaceIntegration::handleIviSurfaceDestroyed); } +IviSurfaceIntegration::~IviSurfaceIntegration() +{ + m_item->setSurface(nullptr); +} + void IviSurfaceIntegration::handleIviSurfaceDestroyed() { m_shellSurface = nullptr; diff --git a/src/compositor/extensions/qwaylandivisurfaceintegration_p.h b/src/compositor/extensions/qwaylandivisurfaceintegration_p.h index 534caf64..eaccd959 100644 --- a/src/compositor/extensions/qwaylandivisurfaceintegration_p.h +++ b/src/compositor/extensions/qwaylandivisurfaceintegration_p.h @@ -61,6 +61,7 @@ class IviSurfaceIntegration : public QWaylandQuickShellIntegration Q_OBJECT public: IviSurfaceIntegration(QWaylandQuickShellSurfaceItem *item); + ~IviSurfaceIntegration(); private Q_SLOTS: void handleIviSurfaceDestroyed(); diff --git a/src/compositor/extensions/qwaylandquickshellsurfaceitem.cpp b/src/compositor/extensions/qwaylandquickshellsurfaceitem.cpp index 91f9d777..64d89561 100644 --- a/src/compositor/extensions/qwaylandquickshellsurfaceitem.cpp +++ b/src/compositor/extensions/qwaylandquickshellsurfaceitem.cpp @@ -112,7 +112,14 @@ void QWaylandQuickShellSurfaceItem::setShellSurface(QWaylandShellSurface *shellS d->m_shellSurface = shellSurface; - d->m_shellIntegration = shellSurface->createIntegration(this); + if (d->m_shellIntegration) { + delete d->m_shellIntegration; + d->m_shellIntegration = nullptr; + } + + if (shellSurface) + d->m_shellIntegration = shellSurface->createIntegration(this); + emit shellSurfaceChanged(); } diff --git a/src/compositor/extensions/qwaylandwlshellintegration.cpp b/src/compositor/extensions/qwaylandwlshellintegration.cpp index b3241676..c3d278a5 100644 --- a/src/compositor/extensions/qwaylandwlshellintegration.cpp +++ b/src/compositor/extensions/qwaylandwlshellintegration.cpp @@ -68,6 +68,11 @@ WlShellIntegration::WlShellIntegration(QWaylandQuickShellSurfaceItem *item) connect(m_shellSurface.data(), &QWaylandWlShellSurface::destroyed, this, &WlShellIntegration::handleShellSurfaceDestroyed); } +WlShellIntegration::~WlShellIntegration() +{ + m_item->setSurface(nullptr); +} + void WlShellIntegration::handleStartMove(QWaylandSeat *seat) { grabberState = GrabberState::Move; diff --git a/src/compositor/extensions/qwaylandwlshellintegration_p.h b/src/compositor/extensions/qwaylandwlshellintegration_p.h index 814f5e12..15aec01c 100644 --- a/src/compositor/extensions/qwaylandwlshellintegration_p.h +++ b/src/compositor/extensions/qwaylandwlshellintegration_p.h @@ -61,6 +61,7 @@ class WlShellIntegration : public QWaylandQuickShellIntegration Q_OBJECT public: WlShellIntegration(QWaylandQuickShellSurfaceItem *item); + ~WlShellIntegration(); bool mouseMoveEvent(QMouseEvent *event) override; bool mouseReleaseEvent(QMouseEvent *event) override; diff --git a/src/compositor/extensions/qwaylandxdgshellv5integration.cpp b/src/compositor/extensions/qwaylandxdgshellv5integration.cpp index e2aa6b3e..156d5679 100644 --- a/src/compositor/extensions/qwaylandxdgshellv5integration.cpp +++ b/src/compositor/extensions/qwaylandxdgshellv5integration.cpp @@ -65,6 +65,11 @@ XdgShellV5Integration::XdgShellV5Integration(QWaylandQuickShellSurfaceItem *item connect(m_xdgSurface->surface(), &QWaylandSurface::sizeChanged, this, &XdgShellV5Integration::handleSurfaceSizeChanged); } +XdgShellV5Integration::~XdgShellV5Integration() +{ + m_item->setSurface(nullptr); +} + bool XdgShellV5Integration::mouseMoveEvent(QMouseEvent *event) { if (grabberState == GrabberState::Resize) { @@ -190,6 +195,7 @@ void XdgShellV5Integration::handleSurfaceSizeChanged() XdgPopupV5Integration::XdgPopupV5Integration(QWaylandQuickShellSurfaceItem *item) : QWaylandQuickShellIntegration (item) + , m_item(item) , m_xdgPopup(qobject_cast<QWaylandXdgPopupV5 *>(item->shellSurface())) , m_xdgShell(QWaylandXdgPopupV5Private::get(m_xdgPopup)->m_xdgShell) { @@ -206,6 +212,11 @@ XdgPopupV5Integration::XdgPopupV5Integration(QWaylandQuickShellSurfaceItem *item connect(m_xdgPopup, &QWaylandXdgPopupV5::destroyed, this, &XdgPopupV5Integration::handlePopupDestroyed); } +XdgPopupV5Integration::~XdgPopupV5Integration() +{ + m_item->setSurface(nullptr); +} + void XdgPopupV5Integration::handlePopupDestroyed() { QWaylandXdgShellV5Private *shellPrivate = QWaylandXdgShellV5Private::get(m_xdgShell); diff --git a/src/compositor/extensions/qwaylandxdgshellv5integration_p.h b/src/compositor/extensions/qwaylandxdgshellv5integration_p.h index 6f02ab39..90c425e6 100644 --- a/src/compositor/extensions/qwaylandxdgshellv5integration_p.h +++ b/src/compositor/extensions/qwaylandxdgshellv5integration_p.h @@ -60,6 +60,7 @@ class XdgShellV5Integration : public QWaylandQuickShellIntegration Q_OBJECT public: XdgShellV5Integration(QWaylandQuickShellSurfaceItem *item); + ~XdgShellV5Integration(); bool mouseMoveEvent(QMouseEvent *event) override; bool mouseReleaseEvent(QMouseEvent *event) override; @@ -111,11 +112,13 @@ class XdgPopupV5Integration : public QWaylandQuickShellIntegration Q_OBJECT public: XdgPopupV5Integration(QWaylandQuickShellSurfaceItem *item); + ~XdgPopupV5Integration(); private Q_SLOTS: void handlePopupDestroyed(); private: + QWaylandQuickShellSurfaceItem *m_item; QWaylandXdgPopupV5 *m_xdgPopup; QWaylandXdgShellV5 *m_xdgShell; }; diff --git a/src/hardwareintegration/client/brcm-egl/brcm-egl.pri b/src/hardwareintegration/client/brcm-egl/brcm-egl.pri index 3961f4f1..f9f8d072 100644 --- a/src/hardwareintegration/client/brcm-egl/brcm-egl.pri +++ b/src/hardwareintegration/client/brcm-egl/brcm-egl.pri @@ -1,10 +1,8 @@ INCLUDEPATH += $$PWD -QMAKE_USE += egl wayland-client +QMAKE_USE += egl wayland-client libdl QT += egl_support-private -LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD - SOURCES += $$PWD/qwaylandbrcmeglintegration.cpp \ $$PWD/qwaylandbrcmglcontext.cpp \ $$PWD/qwaylandbrcmeglwindow.cpp diff --git a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.cpp b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.cpp index 22618b4a..9842f61c 100644 --- a/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.cpp +++ b/src/hardwareintegration/client/brcm-egl/qwaylandbrcmeglwindow.cpp @@ -252,9 +252,7 @@ void QWaylandBrcmEglWindow::swapBuffers() return; m_buffers[m_current]->bind(); - attach(m_buffers[m_current], 0, 0); - damage(QRect(QPoint(), geometry().size())); - wl_surface::commit(); + commit(m_buffers[m_current], QRegion(0, 0, geometry().size().width(), geometry().size().height())); m_current = (m_current + 1) % m_count; m_buffers[m_current]->waitForRelease(); diff --git a/src/hardwareintegration/client/xcomposite-glx/xcomposite-glx.pri b/src/hardwareintegration/client/xcomposite-glx/xcomposite-glx.pri index 2307319a..a2f5376a 100644 --- a/src/hardwareintegration/client/xcomposite-glx/xcomposite-glx.pri +++ b/src/hardwareintegration/client/xcomposite-glx/xcomposite-glx.pri @@ -1,9 +1,7 @@ INCLUDEPATH += $$PWD include ($$PWD/../xcomposite_share/xcomposite_share.pri) -QMAKE_USE += wayland-client glx - -LIBS_PRIVATE += $$QMAKE_LIBS_DYNLOAD +QMAKE_USE += wayland-client glx libdl QT += glx_support-private |