summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-12-12 09:49:15 +0100
committerLiang Qi <liang.qi@qt.io>2016-12-12 09:49:16 +0100
commit9fd54bac3075eb74413776657464027a277d43cf (patch)
treeae74789b061df42fef2fd9d97446cd0b34a9a083 /src
parent2a47c83674a8e19b287cc731cbe814ca411f269f (diff)
parent391c71b4488d69f3a0b16171b01f569fbc9ec07b (diff)
Merge remote-tracking branch 'origin/5.8' into dev
Diffstat (limited to 'src')
-rw-r--r--src/3rdparty/protocol/qt_attribution.json4
-rw-r--r--src/client/global/qwaylandclientextension.h1
-rw-r--r--src/client/qwaylandintegration.cpp5
-rw-r--r--src/compositor/compositor_api/qwaylandquickitem.cpp7
-rw-r--r--src/compositor/doc/qtwaylandcompositor.qdocconf1
-rw-r--r--src/compositor/extensions/qwaylandwlshellintegration.cpp2
-rw-r--r--src/compositor/extensions/qwaylandxdgshellv5.cpp1
7 files changed, 17 insertions, 4 deletions
diff --git a/src/3rdparty/protocol/qt_attribution.json b/src/3rdparty/protocol/qt_attribution.json
index 327c408b9..76fd33d37 100644
--- a/src/3rdparty/protocol/qt_attribution.json
+++ b/src/3rdparty/protocol/qt_attribution.json
@@ -4,6 +4,7 @@
"Name": "Wayland Protocol",
"QDocModule": "qtwaylandcompositor",
"QtUsage": "Used in the Qt Wayland Compositor, and the Qt Wayland platform plugin.",
+ "Files": "wayland.xml",
"Description": "Wayland is a protocol for a compositor to talk to its clients.",
"Homepage": "https://wayland.freedesktop.org",
@@ -22,6 +23,7 @@
"Name": "Wayland IVI Extension Protocol",
"QDocModule": "qtwaylandcompositor",
"QtUsage": "Used in the Qt Wayland Compositor, and the Qt Wayland platform plugin.",
+ "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",
@@ -39,6 +41,7 @@ Copyright (c) 2013 BMW Car IT GmbH"
"Name": "Wayland XDG Shell Protocol",
"QDocModule": "qtwaylandcompositor",
"QtUsage": "Used in the Qt Wayland Compositor, and the Qt Wayland platform plugin.",
+ "Files": "xdg-shell.xml",
"Description": "The XDG-Shell protocol is an extended way to manage surfaces under Wayland compositors.",
"Homepage": "https://wayland.freedesktop.org",
@@ -58,6 +61,7 @@ Copyright © 2010-2013 Intel Corporation"
"Name": "Wayland Text Input Protocol",
"QDocModule": "qtwaylandcompositor",
"QtUsage": "Used in the Qt Wayland Compositor, and the Qt Wayland platform plugin.",
+ "Files": "text-input-unstable-v2.xml",
"Description": "Adds support for text input and input methods to applications.",
"Homepage": "https://wayland.freedesktop.org",
diff --git a/src/client/global/qwaylandclientextension.h b/src/client/global/qwaylandclientextension.h
index 37345202c..abf753249 100644
--- a/src/client/global/qwaylandclientextension.h
+++ b/src/client/global/qwaylandclientextension.h
@@ -40,6 +40,7 @@
#include <QObject>
#include <QtWaylandClient/qtwaylandclientglobal.h>
+struct wl_interface;
struct wl_registry;
QT_BEGIN_NAMESPACE
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index f9ee61156..8bd9f4901 100644
--- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp
@@ -217,6 +217,11 @@ void QWaylandIntegration::initialize()
int fd = wl_display_get_fd(mDisplay->wl_display());
QSocketNotifier *sn = new QSocketNotifier(fd, QSocketNotifier::Read, mDisplay.data());
QObject::connect(sn, SIGNAL(activated(int)), mDisplay.data(), SLOT(flushRequests()));
+
+ if (mDisplay->screens().isEmpty()) {
+ qWarning() << "Running on a compositor with no screens is not supported";
+ ::exit(EXIT_FAILURE);
+ }
}
QPlatformFontDatabase *QWaylandIntegration::fontDatabase() const
diff --git a/src/compositor/compositor_api/qwaylandquickitem.cpp b/src/compositor/compositor_api/qwaylandquickitem.cpp
index 4c5bf0757..7e44dfae7 100644
--- a/src/compositor/compositor_api/qwaylandquickitem.cpp
+++ b/src/compositor/compositor_api/qwaylandquickitem.cpp
@@ -1125,9 +1125,12 @@ void QWaylandQuickItem::updateInputMethod(Qt::InputMethodQueries queries)
QSGNode *QWaylandQuickItem::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
Q_D(QWaylandQuickItem);
- const bool hasContent = surface() && surface()->hasContent() && d->view->currentBuffer().hasContent();
+ const bool bufferHasContent = d->view->currentBuffer().hasContent();
- if (!hasContent || !d->paintEnabled) {
+ if (d->view->isBufferLocked() && !bufferHasContent && d->paintEnabled)
+ return oldNode;
+
+ if (!bufferHasContent || !d->paintEnabled) {
delete oldNode;
return 0;
}
diff --git a/src/compositor/doc/qtwaylandcompositor.qdocconf b/src/compositor/doc/qtwaylandcompositor.qdocconf
index 3954cb22f..73331aa09 100644
--- a/src/compositor/doc/qtwaylandcompositor.qdocconf
+++ b/src/compositor/doc/qtwaylandcompositor.qdocconf
@@ -44,4 +44,3 @@ Cpp.ignoredirectives += Q_DECLARE_LOGGING_CATEGORY
navigation.landingpage = "Qt Wayland Compositor"
navigation.qmltypespage = "Qt Wayland Compositor QML Types"
navigation.cppclassespage = "Qt Wayland Compositor C++ Classes"
-navigation.homepage = "Qt Documentation (Technology Preview)"
diff --git a/src/compositor/extensions/qwaylandwlshellintegration.cpp b/src/compositor/extensions/qwaylandwlshellintegration.cpp
index 761a9022e..abf5b627c 100644
--- a/src/compositor/extensions/qwaylandwlshellintegration.cpp
+++ b/src/compositor/extensions/qwaylandwlshellintegration.cpp
@@ -201,7 +201,7 @@ void WlShellIntegration::handlePopupClosed()
void WlShellIntegration::handlePopupRemoved()
{
- if (m_shellSurface->shell()->mappedPopups().isEmpty())
+ if (!m_shellSurface || m_shellSurface->shell()->mappedPopups().isEmpty())
QWaylandQuickShellEventFilter::cancelFilter();
isPopup = false;
}
diff --git a/src/compositor/extensions/qwaylandxdgshellv5.cpp b/src/compositor/extensions/qwaylandxdgshellv5.cpp
index fd23865cf..0a86b9f6f 100644
--- a/src/compositor/extensions/qwaylandxdgshellv5.cpp
+++ b/src/compositor/extensions/qwaylandxdgshellv5.cpp
@@ -222,6 +222,7 @@ void QWaylandXdgShellV5Private::xdg_shell_pong(Resource *resource, uint32_t seri
QWaylandXdgSurfaceV5Private::QWaylandXdgSurfaceV5Private()
: QWaylandCompositorExtensionPrivate()
, xdg_surface()
+ , m_xdgShell(nullptr)
, m_surface(nullptr)
, m_parentSurface(nullptr)
, m_windowType(UnknownWindowType)