summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@theqtcompany.com>2015-09-16 10:28:48 +0200
committerPaul Olav Tvete <paul.tvete@theqtcompany.com>2015-09-16 10:49:43 +0000
commitbb46fc4cd6ad89346597bb03882f2c6f3525faa3 (patch)
tree859136d26db24dca28b72db15abf1a423c88d8b9
parentdae5d55dea859bb3a5722bf665d077f1f9b3d360 (diff)
Also draw surfaces without a shell surface
...and minor cleanups Change-Id: I278eb549af49480939973dafbe1c0628fabf16fc Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
-rw-r--r--examples/wayland/qwindow-compositor/compositorwindow.cpp2
-rw-r--r--examples/wayland/qwindow-compositor/compositorwindow.h2
-rw-r--r--examples/wayland/qwindow-compositor/main.cpp1
-rw-r--r--examples/wayland/qwindow-compositor/windowcompositor.cpp29
-rw-r--r--examples/wayland/qwindow-compositor/windowcompositor.h3
5 files changed, 28 insertions, 9 deletions
diff --git a/examples/wayland/qwindow-compositor/compositorwindow.cpp b/examples/wayland/qwindow-compositor/compositorwindow.cpp
index 94bb10e21..b08a5b2a5 100644
--- a/examples/wayland/qwindow-compositor/compositorwindow.cpp
+++ b/examples/wayland/qwindow-compositor/compositorwindow.cpp
@@ -98,6 +98,8 @@ void CompositorWindow::paintGL()
functions->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Q_FOREACH (WindowCompositorView *view, m_compositor->views()) {
+ if (view->isCursor())
+ continue;
GLuint textureId = view->getTexture();
QWaylandSurface *surface = view->surface();
if (surface && surface->isMapped()) {
diff --git a/examples/wayland/qwindow-compositor/compositorwindow.h b/examples/wayland/qwindow-compositor/compositorwindow.h
index 8ca9ecccd..4e6a25f74 100644
--- a/examples/wayland/qwindow-compositor/compositorwindow.h
+++ b/examples/wayland/qwindow-compositor/compositorwindow.h
@@ -69,8 +69,6 @@ protected:
void keyPressEvent(QKeyEvent *e) Q_DECL_OVERRIDE;
void keyReleaseEvent(QKeyEvent *e) Q_DECL_OVERRIDE;
- QSize sizeHint() const Q_DECL_OVERRIDE;
-
private slots:
void startMove();
void startResize(int edge);
diff --git a/examples/wayland/qwindow-compositor/main.cpp b/examples/wayland/qwindow-compositor/main.cpp
index 101367cfd..c4fa43256 100644
--- a/examples/wayland/qwindow-compositor/main.cpp
+++ b/examples/wayland/qwindow-compositor/main.cpp
@@ -50,6 +50,7 @@ int main(int argc, char *argv[])
WindowCompositor compositor(&window);
window.setCompositor(&compositor);
compositor.create();
+ window.resize(800,600);
window.show();
return app.exec();
diff --git a/examples/wayland/qwindow-compositor/windowcompositor.cpp b/examples/wayland/qwindow-compositor/windowcompositor.cpp
index b9e675f39..761c6387d 100644
--- a/examples/wayland/qwindow-compositor/windowcompositor.cpp
+++ b/examples/wayland/qwindow-compositor/windowcompositor.cpp
@@ -63,6 +63,11 @@ GLuint WindowCompositorView::getTexture() {
return m_texture;
}
+bool WindowCompositorView::isCursor() const
+{
+ return surface()->isCursorSurface();
+}
+
WindowCompositor::WindowCompositor(QWindow *window)
: QWaylandCompositor()
, m_window(window)
@@ -90,6 +95,11 @@ void WindowCompositor::onSurfaceCreated(QWaylandSurface *surface)
connect(surface, &QWaylandSurface::mappedChanged, this, &WindowCompositor::surfaceMappedChanged);
connect(surface, &QWaylandSurface::redraw, this, &WindowCompositor::triggerRender);
connect(surface, &QWaylandSurface::offsetForNextFrame, this, &WindowCompositor::frameOffset);
+ WindowCompositorView *view = new WindowCompositorView;
+ view->setSurface(surface);
+ view->setOutput(output(m_window));
+ m_views << view;
+ connect(view, &QWaylandView::surfaceDestroyed, this, &WindowCompositor::viewSurfaceDestroyed);
}
void WindowCompositor::surfaceMappedChanged()
@@ -97,7 +107,7 @@ void WindowCompositor::surfaceMappedChanged()
QWaylandSurface *surface = qobject_cast<QWaylandSurface *>(sender());
if (surface->isMapped()) {
if (!surface->isCursorSurface())
- defaultInputDevice()->setKeyboardFocus(surface);
+ defaultInputDevice()->setKeyboardFocus(surface);
}
triggerRender();
}
@@ -119,19 +129,24 @@ void WindowCompositor::surfaceCommittedSlot()
triggerRender();
}
+WindowCompositorView * WindowCompositor::findView(const QWaylandSurface *s) const
+{
+ Q_FOREACH (WindowCompositorView* view, m_views) {
+ if (view->surface() == s)
+ return view;
+ }
+ return Q_NULLPTR;
+}
+
void WindowCompositor::onCreateShellSurface(QWaylandSurface *s, QWaylandClient *client, uint id)
{
QWaylandSurface *surface = s;
- WindowCompositorView *view = new WindowCompositorView;
- view->setSurface(surface);
- view->setOutput(output(m_window));
- m_views << view;
- connect(view, &QWaylandView::surfaceDestroyed, this, &WindowCompositor::viewSurfaceDestroyed);
-
QWaylandShellSurface *shellSurface = new QWaylandShellSurface(m_shell, surface, client, id);
connect(shellSurface, &QWaylandShellSurface::startMove, this, &WindowCompositor::startMove);
connect(shellSurface, &QWaylandShellSurface::startResize, this, &WindowCompositor::onStartResize);
+ WindowCompositorView *view = findView(s);
+ Q_ASSERT(view);
view->m_shellSurface = shellSurface;
}
diff --git a/examples/wayland/qwindow-compositor/windowcompositor.h b/examples/wayland/qwindow-compositor/windowcompositor.h
index 18db41c2d..55d964cab 100644
--- a/examples/wayland/qwindow-compositor/windowcompositor.h
+++ b/examples/wayland/qwindow-compositor/windowcompositor.h
@@ -60,6 +60,8 @@ public:
GLuint getTexture();
QPointF position() const { return m_position; }
void setPosition(const QPointF &pos) { m_position = pos; }
+ bool isCursor() const;
+ bool hasShell() const { return m_shellSurface; }
private:
friend class WindowCompositor;
GLuint m_texture;
@@ -104,6 +106,7 @@ private slots:
void onCreateShellSurface(QWaylandSurface *s, QWaylandClient *client, uint id);
void updateCursor();
private:
+ WindowCompositorView *findView(const QWaylandSurface *s) const;
QWindow *m_window;
QList<WindowCompositorView*> m_views;
QWaylandShell *m_shell;