diff options
author | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-09-16 15:05:00 +0200 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@theqtcompany.com> | 2015-09-18 14:48:15 +0000 |
commit | 07dffc46ff14a745df020a987c2a17fbfd90d6fe (patch) | |
tree | 7682c357a9936b1c84826197ed18b7561f460532 /src/compositor/compositor_api | |
parent | 660880a997a892e7f65d0d7b4e2f974fc4e487ad (diff) |
Remove the QWaylandOutputSpace
We don't need this abstraction anymore since we don't have global
coordinates in the core api anymore
Change-Id: I553a736a0e71026447d6a0af3f8a64607b8c8f06
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Diffstat (limited to 'src/compositor/compositor_api')
17 files changed, 69 insertions, 480 deletions
diff --git a/src/compositor/compositor_api/compositor_api.pri b/src/compositor/compositor_api/compositor_api.pri index 13a40ba98..70f3e3a12 100644 --- a/src/compositor/compositor_api/compositor_api.pri +++ b/src/compositor/compositor_api/compositor_api.pri @@ -18,8 +18,6 @@ HEADERS += \ compositor_api/qwaylandoutput.h \ compositor_api/qwaylanddrag.h \ compositor_api/qwaylandbufferref.h \ - compositor_api/qwaylandoutputspace.h \ - compositor_api/qwaylandoutputspace_p.h \ compositor_api/qwaylanddestroylistener.h \ compositor_api/qwaylanddestroylistener_p.h \ compositor_api/qwaylandview.h \ @@ -37,7 +35,6 @@ SOURCES += \ compositor_api/qwaylandoutput.cpp \ compositor_api/qwaylanddrag.cpp \ compositor_api/qwaylandbufferref.cpp \ - compositor_api/qwaylandoutputspace.cpp \ compositor_api/qwaylanddestroylistener.cpp \ compositor_api/qwaylandview.cpp \ diff --git a/src/compositor/compositor_api/qwaylandcompositor.cpp b/src/compositor/compositor_api/qwaylandcompositor.cpp index 104f85f2f..cae304f5b 100644 --- a/src/compositor/compositor_api/qwaylandcompositor.cpp +++ b/src/compositor/compositor_api/qwaylandcompositor.cpp @@ -146,8 +146,6 @@ QWaylandCompositorPrivate::QWaylandCompositorPrivate(QWaylandCompositor *composi void QWaylandCompositorPrivate::init() { Q_Q(QWaylandCompositor); - outputSpaces.append(new QWaylandOutputSpace(q)); - QStringList arguments = QCoreApplication::instance()->arguments(); int socketArg = arguments.indexOf(QLatin1String("--wayland-socket-name")); @@ -197,7 +195,7 @@ QWaylandCompositorPrivate::~QWaylandCompositorPrivate() { qDeleteAll(clients); - qDeleteAll(outputSpaces); + qDeleteAll(outputs); delete data_device_manager; @@ -445,12 +443,11 @@ QList<QWaylandSurface *> QWaylandCompositor::surfaces() const return d->all_surfaces; } -QWaylandOutput *QWaylandCompositor::output(QWindow *window) const +QWaylandOutput *QWaylandCompositor::outputFor(QWindow *window) const { Q_D(const QWaylandCompositor); - foreach (QWaylandOutputSpace *outputSpace, d->outputSpaces) { - QWaylandOutput *output = outputSpace->output(window); - if (output) + foreach (QWaylandOutput *output, d->outputs) { + if (output->window() == window) return output; } @@ -463,38 +460,10 @@ QWaylandOutput *QWaylandCompositor::defaultOutput() const return d->defaultOutput(); } -QWaylandOutputSpace *QWaylandCompositor::defaultOutputSpace() const +QList<QWaylandOutput *> QWaylandCompositor::outputs() const { Q_D(const QWaylandCompositor); - return d->defaultOutputSpace(); -} - -void QWaylandCompositor::setDefaultOutputSpace(QWaylandOutputSpace *outputSpace) -{ - Q_D(QWaylandCompositor); - - Q_ASSERT(!d->outputSpaces.isEmpty()); - if (d->outputSpaces.first() == outputSpace) - return; - if (d->outputSpaces.removeOne(outputSpace)) { - d->outputSpaces.prepend(outputSpace); - defaultOutputSpaceChanged(); - } -} - -void QWaylandCompositor::addOutputSpace(QWaylandOutputSpace *outputSpace) -{ - Q_D(QWaylandCompositor); - Q_ASSERT(!d->outputSpaces.contains(outputSpace)); - d->outputSpaces.append(outputSpace); - outputSpacesChanged(); -} - -void QWaylandCompositor::removeOutputSpace(QWaylandOutputSpace *outputSpace) -{ - Q_D(QWaylandCompositor); - if (d->outputSpaces.removeOne(outputSpace)) - outputSpacesChanged(); + return d->outputs; } uint QWaylandCompositor::currentTimeMsecs() const diff --git a/src/compositor/compositor_api/qwaylandcompositor.h b/src/compositor/compositor_api/qwaylandcompositor.h index 7fe17c4f3..2413507e9 100644 --- a/src/compositor/compositor_api/qwaylandcompositor.h +++ b/src/compositor/compositor_api/qwaylandcompositor.h @@ -60,7 +60,6 @@ class QWaylandSurface; class QWaylandInputDevice; class QWaylandGlobalInterface; class QWaylandView; -class QWaylandOutputSpace; class QWaylandPointer; class QWaylandKeyboard; class QWaylandTouch; @@ -71,7 +70,6 @@ class Q_COMPOSITOR_EXPORT QWaylandCompositor : public QObject, public QWaylandEx Q_DECLARE_PRIVATE(QWaylandCompositor) Q_PROPERTY(QByteArray socketName READ socketName WRITE setSocketName) Q_PROPERTY(bool retainedSelection READ retainedSelectionEnabled WRITE setRetainedSelectionEnabled) - Q_PROPERTY(QWaylandOutputSpace *defaultOutputSpace READ defaultOutputSpace WRITE setDefaultOutputSpace NOTIFY defaultOutputSpaceChanged) Q_PROPERTY(QWaylandOutput *defaultOutput READ defaultOutput NOTIFY defaultOutputChanged) Q_PROPERTY(bool useHardwareIntegrationExtension READ useHardwareIntegrationExtension WRITE setUseHardwareIntegrationExtension NOTIFY useHardwareIntegrationExtensionChanged) Q_PROPERTY(QWaylandInputDevice *defaultInputDevice READ defaultInputDevice CONSTANT) @@ -96,14 +94,10 @@ public: QList<QWaylandSurface *> surfaces() const; QList<QWaylandSurface *> surfacesForClient(QWaylandClient* client) const; - Q_INVOKABLE QWaylandOutput *output(QWindow *window) const; + Q_INVOKABLE QWaylandOutput *outputFor(QWindow *window) const; QWaylandOutput *defaultOutput() const; - - QWaylandOutputSpace *defaultOutputSpace() const; - void setDefaultOutputSpace(QWaylandOutputSpace *outputSpace); - void addOutputSpace(QWaylandOutputSpace *outputSpace); - void removeOutputSpace(QWaylandOutputSpace *outputSpace); + QList<QWaylandOutput *> outputs() const; uint currentTimeMsecs() const; @@ -128,9 +122,7 @@ Q_SIGNALS: void surfaceCreated(QWaylandSurface *surface); void surfaceAboutToBeDestroyed(QWaylandSurface *surface); - void defaultOutputSpaceChanged(); void defaultOutputChanged(); - void outputSpacesChanged(); void useHardwareIntegrationExtensionChanged(); protected: diff --git a/src/compositor/compositor_api/qwaylandcompositor_p.h b/src/compositor/compositor_api/qwaylandcompositor_p.h index 3fd5a0671..a9bcdd5a4 100644 --- a/src/compositor/compositor_api/qwaylandcompositor_p.h +++ b/src/compositor/compositor_api/qwaylandcompositor_p.h @@ -40,7 +40,6 @@ #include <QtWaylandCompositor/qwaylandexport.h> #include <QtWaylandCompositor/QWaylandCompositor> -#include <QtWaylandCompositor/QWaylandOutputSpace> #include <QtCore/private/qobject_p.h> #include <QtCore/QSet> #include <QtCore/QElapsedTimer> @@ -72,8 +71,7 @@ public: void destroySurface(QWaylandSurface *surface); void unregisterSurface(QWaylandSurface *surface); - QWaylandOutput *defaultOutput() const { return defaultOutputSpace()->defaultOutput(); } - QWaylandOutputSpace *defaultOutputSpace() const { return outputSpaces.first(); } + QWaylandOutput *defaultOutput() const { return outputs.size() ? outputs.first() : Q_NULLPTR; } inline QtWayland::ClientBufferIntegration *clientBufferIntegration() const; inline QtWayland::ServerBufferIntegration *serverBufferIntegration() const; @@ -92,6 +90,9 @@ public: inline void removeClient(QWaylandClient *client); void addPolishObject(QObject *object); + + inline void addOutput(QWaylandOutput *output); + inline void removeOutput(QWaylandOutput *output); protected: void compositor_create_surface(Resource *resource, uint32_t id) Q_DECL_OVERRIDE; void compositor_create_region(Resource *resource, uint32_t id) Q_DECL_OVERRIDE; @@ -109,8 +110,8 @@ protected: struct wl_display *display; QList<QWaylandInputDevice *> inputDevices; + QList<QWaylandOutput *> outputs; - QList<QWaylandOutputSpace *> outputSpaces; QList<QWaylandSurface *> all_surfaces; QtWayland::DataDeviceManager *data_device_manager; @@ -168,6 +169,20 @@ void QWaylandCompositorPrivate::removeClient(QWaylandClient *client) clients.removeOne(client); } +void QWaylandCompositorPrivate::addOutput(QWaylandOutput *output) +{ + Q_ASSERT(output); + Q_ASSERT(!outputs.contains(output)); + outputs.append(output); +} + +void QWaylandCompositorPrivate::removeOutput(QWaylandOutput *output) +{ + Q_ASSERT(output); + Q_ASSERT(outputs.count(output) == 1); + outputs.removeOne(output); +} + QT_END_NAMESPACE #endif //QWAYLANDCOMPOSITOR_P_H diff --git a/src/compositor/compositor_api/qwaylandinput.cpp b/src/compositor/compositor_api/qwaylandinput.cpp index cbfc6393c..6365e59b8 100644 --- a/src/compositor/compositor_api/qwaylandinput.cpp +++ b/src/compositor/compositor_api/qwaylandinput.cpp @@ -55,7 +55,6 @@ QWaylandInputDevicePrivate::QWaylandInputDevicePrivate(QWaylandInputDevice *inpu : QObjectPrivate() , QtWaylandServer::wl_seat(compositor->display(), 3) , compositor(compositor) - , outputSpace(compositor->defaultOutputSpace()) , mouseFocus(Q_NULLPTR) , capabilities() , data_device() @@ -313,18 +312,6 @@ void QWaylandInputDevice::setMouseFocus(QWaylandView *view) emit mouseFocusChanged(d->mouseFocus, oldFocus); } -QWaylandOutputSpace *QWaylandInputDevice::outputSpace() const -{ - Q_D(const QWaylandInputDevice); - return d->outputSpace; -} - -void QWaylandInputDevice::setOutputSpace(QWaylandOutputSpace *outputSpace) -{ - Q_D(QWaylandInputDevice); - d->outputSpace = outputSpace; -} - QWaylandCompositor *QWaylandInputDevice::compositor() const { Q_D(const QWaylandInputDevice); diff --git a/src/compositor/compositor_api/qwaylandinput.h b/src/compositor/compositor_api/qwaylandinput.h index 17835683e..7ddaffbe6 100644 --- a/src/compositor/compositor_api/qwaylandinput.h +++ b/src/compositor/compositor_api/qwaylandinput.h @@ -53,7 +53,6 @@ class QKeyEvent; class QTouchEvent; class QWaylandView; class QInputEvent; -class QWaylandOutputSpace; class QWaylandInputDevicePrivate; class QWaylandDrag; class QWaylandKeyboard; @@ -112,9 +111,6 @@ public: QWaylandTouch *touch() const; - QWaylandOutputSpace *outputSpace() const; - void setOutputSpace(QWaylandOutputSpace *outputSpace); - QWaylandCompositor *compositor() const; QWaylandDrag *drag() const; diff --git a/src/compositor/compositor_api/qwaylandinput_p.h b/src/compositor/compositor_api/qwaylandinput_p.h index 80e8c76a1..2193af552 100644 --- a/src/compositor/compositor_api/qwaylandinput_p.h +++ b/src/compositor/compositor_api/qwaylandinput_p.h @@ -103,7 +103,6 @@ protected: private: QWaylandCompositor *compositor; - QWaylandOutputSpace *outputSpace; QWaylandView *mouseFocus; QWaylandInputDevice::CapabilityFlags capabilities; diff --git a/src/compositor/compositor_api/qwaylandoutput.cpp b/src/compositor/compositor_api/qwaylandoutput.cpp index 730b0f7af..689c4919f 100644 --- a/src/compositor/compositor_api/qwaylandoutput.cpp +++ b/src/compositor/compositor_api/qwaylandoutput.cpp @@ -42,7 +42,7 @@ #include <QtWaylandCompositor/QWaylandView> #include <QtWaylandCompositor/private/qwaylandsurface_p.h> -#include <QtWaylandCompositor/private/qwaylandoutputspace_p.h> +#include <QtWaylandCompositor/private/qwaylandcompositor_p.h> #include <QtCore/QCoreApplication> #include <QtCore/QtMath> @@ -100,7 +100,7 @@ static QtWaylandServer::wl_output::transform toWlTransform(const QWaylandOutput: QWaylandOutputPrivate::QWaylandOutputPrivate() : QtWaylandServer::wl_output() - , outputSpace(Q_NULLPTR) + , compositor(Q_NULLPTR) , window(Q_NULLPTR) , subpixel(QWaylandOutput::SubpixelUnknown) , transform(QWaylandOutput::TransformNormal) @@ -116,11 +116,6 @@ QWaylandOutputPrivate::QWaylandOutputPrivate() QWaylandOutputPrivate::~QWaylandOutputPrivate() { - Q_Q(QWaylandOutput); - if (outputSpace) { - QWaylandOutputSpacePrivate::get(outputSpace)->removeOutput(q); - outputSpace = Q_NULLPTR; - } } void QWaylandOutputPrivate::output_bind_resource(Resource *resource) @@ -191,17 +186,20 @@ QWaylandOutput::QWaylandOutput() { } -QWaylandOutput::QWaylandOutput(QWaylandOutputSpace *outputSpace, QWindow *window) +QWaylandOutput::QWaylandOutput(QWaylandCompositor *compositor, QWindow *window) : QObject(*new QWaylandOutputPrivate()) { Q_D(QWaylandOutput); - d->outputSpace = outputSpace; + d->compositor = compositor; d->window = window; - QWaylandCompositorPrivate::get(outputSpace->compositor())->addPolishObject(this); + QWaylandCompositorPrivate::get(compositor)->addPolishObject(this); } QWaylandOutput::~QWaylandOutput() { + Q_D(QWaylandOutput); + if (d->compositor) + QWaylandCompositorPrivate::get(d->compositor)->removeOutput(this); } void QWaylandOutput::initialize() @@ -209,20 +207,19 @@ void QWaylandOutput::initialize() Q_D(QWaylandOutput); Q_ASSERT(!d->initialized); - Q_ASSERT(d->outputSpace); + Q_ASSERT(d->compositor); + Q_ASSERT(d->compositor->isCreated()); Q_ASSERT(d->window); - Q_ASSERT(d->outputSpace->compositor()); - Q_ASSERT(d->outputSpace->compositor()->isCreated()); d->mode.size = d->window->size(); - QWaylandOutputSpacePrivate::get(d->outputSpace)->addOutput(this); + QWaylandCompositorPrivate::get(d->compositor)->addOutput(this); QObject::connect(d->window, &QWindow::widthChanged, this, &QWaylandOutput::setWidth); QObject::connect(d->window, &QWindow::heightChanged, this, &QWaylandOutput::setHeight); QObject::connect(d->window, &QObject::destroyed, this, &QWaylandOutput::handleWindowDestroyed); - d->init(d->compositor()->display(), 2); + d->init(d->compositor->display(), 2); d->initialized = true; } @@ -242,45 +239,39 @@ struct ::wl_resource *QWaylandOutput::resourceForClient(QWaylandClient *client) return Q_NULLPTR; } -QWaylandOutputSpace *QWaylandOutput::outputSpace() const +void QWaylandOutput::update() +{ + Q_D(QWaylandOutput); + if (!d->window) + return; + d->window->requestUpdate(); +} + +QWaylandCompositor *QWaylandOutput::compositor() const { - return d_func()->outputSpace; + return d_func()->compositor; } -void QWaylandOutput::setOutputSpace(QWaylandOutputSpace *outputSpace) +void QWaylandOutput::setCompositor(QWaylandCompositor *compositor) { Q_D(QWaylandOutput); - if (d->outputSpace == outputSpace) + if (d->compositor == compositor) return; if (d->initialized) { - qWarning("Setting QWaylandOutputSpace %p on QWaylandOutput %p is not supported after QWaylandOutput has been initialized\n", outputSpace, this); + qWarning("Setting QWaylandCompositor %p on QWaylandOutput %p is not supported after QWaylandOutput has been initialized\n", compositor, this); return; } - if (d->outputSpace && d->outputSpace->compositor() != outputSpace->compositor()) { + if (d->compositor && d->compositor != compositor) { qWarning("Possible initialization error. Moving QWaylandOutput %p between compositor instances.\n", this); } - if (!d->outputSpace) { - QWaylandCompositorPrivate::get(outputSpace->compositor())->addPolishObject(this); - } - d->outputSpace = outputSpace; - emit outputSpaceChanged(); -} + d->compositor = compositor; -void QWaylandOutput::update() -{ - QRect rect(QPoint(0, 0), window()->size()); - QRegion region(rect); - QExposeEvent *event = new QExposeEvent(region); - QCoreApplication::postEvent(window(), event); + QWaylandCompositorPrivate::get(compositor)->addPolishObject(this); } -QWaylandCompositor *QWaylandOutput::compositor() const -{ - return d_func()->compositor(); -} QString QWaylandOutput::manufacturer() const { @@ -543,7 +534,7 @@ void QWaylandOutput::sendFrameCallbacks() surfacemapper.surface->sendFrameCallbacks(); } } - wl_display_flush_clients(d->compositor()->display()); + wl_display_flush_clients(d->compositor->display()); } void QWaylandOutput::surfaceEnter(QWaylandSurface *surface) @@ -582,11 +573,6 @@ void QWaylandOutput::setHeight(int newHeight) setGeometry(QRect(d->position, s)); } -QPointF QWaylandOutput::mapToOutputSpace(const QPointF &point) -{ - return point + d_func()->position; -} - void QWaylandOutput::handleWindowDestroyed() { Q_D(QWaylandOutput); diff --git a/src/compositor/compositor_api/qwaylandoutput.h b/src/compositor/compositor_api/qwaylandoutput.h index 38f624130..2f07f98d5 100644 --- a/src/compositor/compositor_api/qwaylandoutput.h +++ b/src/compositor/compositor_api/qwaylandoutput.h @@ -61,8 +61,8 @@ class Q_COMPOSITOR_EXPORT QWaylandOutput : public QObject, public QWaylandExtens { Q_OBJECT Q_DECLARE_PRIVATE(QWaylandOutput) + Q_PROPERTY(QWaylandCompositor *compositor READ compositor WRITE setCompositor NOTIFY compositorChanged) Q_PROPERTY(QWindow *window READ window WRITE setWindow NOTIFY windowChanged) - Q_PROPERTY(QWaylandOutputSpace *outputSpace READ outputSpace WRITE setOutputSpace NOTIFY outputSpaceChanged) Q_PROPERTY(QString manufacturer READ manufacturer WRITE setManufacturer NOTIFY manufacturerChanged) Q_PROPERTY(QString model READ model WRITE setModel NOTIFY modelChanged) Q_PROPERTY(QPoint position READ position WRITE setPosition NOTIFY positionChanged) @@ -73,7 +73,6 @@ class Q_COMPOSITOR_EXPORT QWaylandOutput : public QObject, public QWaylandExtens Q_PROPERTY(QWaylandOutput::Subpixel subpixel READ subpixel WRITE setSubpixel NOTIFY subpixelChanged) Q_PROPERTY(QWaylandOutput::Transform transform READ transform WRITE setTransform NOTIFY transformChanged) Q_PROPERTY(int scaleFactor READ scaleFactor WRITE setScaleFactor NOTIFY scaleFactorChanged) - Q_PROPERTY(QWaylandCompositor *compositor READ compositor CONSTANT) Q_PROPERTY(bool sizeFollowsWindow READ sizeFollowsWindow WRITE setSizeFollowsWindow NOTIFY sizeFollowsWindowChanged) Q_ENUMS(Subpixel Transform) @@ -105,20 +104,18 @@ public: }; QWaylandOutput(); - QWaylandOutput(QWaylandOutputSpace *outputSpace, QWindow *window); + QWaylandOutput(QWaylandCompositor *compositor, QWindow *window); ~QWaylandOutput(); static QWaylandOutput *fromResource(wl_resource *resource); struct ::wl_resource *resourceForClient(QWaylandClient *client) const; QWaylandCompositor *compositor() const; + void setCompositor(QWaylandCompositor *compositor); QWindow *window() const; void setWindow(QWindow *window); - QWaylandOutputSpace *outputSpace() const; - void setOutputSpace(QWaylandOutputSpace *outputSpace); - QString manufacturer() const; void setManufacturer(const QString &manufacturer); @@ -165,10 +162,8 @@ public: virtual void update(); - Q_INVOKABLE QPointF mapToOutputSpace(const QPointF &point); - Q_SIGNALS: - void outputSpaceChanged(); + void compositorChanged(); void windowChanged(); void positionChanged(); void geometryChanged(); diff --git a/src/compositor/compositor_api/qwaylandoutput_p.h b/src/compositor/compositor_api/qwaylandoutput_p.h index 01e67630c..a84e24ec9 100644 --- a/src/compositor/compositor_api/qwaylandoutput_p.h +++ b/src/compositor/compositor_api/qwaylandoutput_p.h @@ -42,7 +42,6 @@ #include <QtWaylandCompositor/qwaylandexport.h> #include <QtWaylandCompositor/QWaylandOutput> #include <QtWaylandCompositor/QWaylandClient> -#include <QtWaylandCompositor/QWaylandOutputSpace> #include <QtWaylandCompositor/QWaylandSurface> #include <QtWaylandCompositor/private/qwayland-server-wayland.h> @@ -94,13 +93,12 @@ public: void removeView(QWaylandView *view, QWaylandSurface *surface); void sendGeometryInfo(); - QWaylandCompositor *compositor() const { return outputSpace->compositor(); } protected: void output_bind_resource(Resource *resource) Q_DECL_OVERRIDE; private: - QWaylandOutputSpace *outputSpace; + QWaylandCompositor *compositor; QWindow *window; QString manufacturer; QString model; diff --git a/src/compositor/compositor_api/qwaylandoutputspace.cpp b/src/compositor/compositor_api/qwaylandoutputspace.cpp deleted file mode 100644 index d17bc7bbf..000000000 --- a/src/compositor/compositor_api/qwaylandoutputspace.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtWaylandCompositor module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qwaylandoutputspace.h" -#include "qwaylandoutputspace_p.h" -#include "qwaylandcompositor.h" -#include <QtWaylandCompositor/QWaylandView> -#include <QtWaylandCompositor/QWaylandOutput> - -QT_BEGIN_NAMESPACE - -QWaylandOutputSpace::QWaylandOutputSpace(QWaylandCompositor *compositor) - : QObject(*new QWaylandOutputSpacePrivate(compositor), compositor) -{ - -} - -QWaylandCompositor *QWaylandOutputSpace::compositor() const -{ - Q_D(const QWaylandOutputSpace); - return d->compositor; -} - -QRect QWaylandOutputSpace::geometry() const -{ - Q_D(const QWaylandOutputSpace); - return d->geometry; -} - -void QWaylandOutputSpace::setGeometry(const QRect &geometry) -{ - Q_D(QWaylandOutputSpace); - if (d->geometry == geometry || d->geometryConstraint == QWaylandOutputSpace::AutomaticBoundingRect) - return; - d->geometry = geometry; - emit geometryChanged(); -} - -void QWaylandOutputSpace::setGeometryConstraint(QWaylandOutputSpace::GeometryConstraint geometryConstraint) -{ - Q_D(QWaylandOutputSpace); - if (d->geometryConstraint == geometryConstraint) - return; - d->geometryConstraint = geometryConstraint; - emit geometryConstraintChanged(); -} - -QWaylandOutputSpace::GeometryConstraint QWaylandOutputSpace::geometryConstraint() const -{ - Q_D(const QWaylandOutputSpace); - return d->geometryConstraint; -} - -QWaylandOutput *QWaylandOutputSpace::output(QWindow *window) const -{ - Q_D(const QWaylandOutputSpace); - foreach (QWaylandOutput *output, d->outputs) { - if (output->window() == window) - return output; - } - return Q_NULLPTR; -} - -void QWaylandOutputSpace::setDefaultOutput(QWaylandOutput *output) -{ - Q_D(QWaylandOutputSpace); - if (d->outputs.isEmpty() || d->outputs.first() == output) - return; - - if (d->outputs.removeOne(output)) { - d->outputs.prepend(output); - defaultOutputChanged(); - } -} - -QWaylandOutput *QWaylandOutputSpace::defaultOutput() const -{ - Q_D(const QWaylandOutputSpace); - if (d->outputs.isEmpty()) - return Q_NULLPTR; - - return d->outputs.first(); -} - -QList<QWaylandOutput *>QWaylandOutputSpace::outputs() const -{ - Q_D(const QWaylandOutputSpace); - return d->outputs; -} - -QList<QWaylandOutput *>QWaylandOutputSpace::outputs(const QPoint &point) const -{ - Q_D(const QWaylandOutputSpace); - QList<QWaylandOutput *> retOutputs; - foreach (QWaylandOutput *output, d->outputs) { - if (output->geometry().contains(point)) - retOutputs.append(output); - } - return retOutputs; -} - -QT_END_NAMESPACE diff --git a/src/compositor/compositor_api/qwaylandoutputspace.h b/src/compositor/compositor_api/qwaylandoutputspace.h deleted file mode 100644 index 5400febb8..000000000 --- a/src/compositor/compositor_api/qwaylandoutputspace.h +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtWaylandCompositor module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWAYLANDOUTPUTSPACE_H -#define QWAYLANDOUTPUTSPACE_H - -#include <QtCore/QObject> - -#include <QtWaylandCompositor/QWaylandOutput> - -QT_BEGIN_NAMESPACE - -class QWaylandOutputSpacePrivate; - -class Q_COMPOSITOR_EXPORT QWaylandOutputSpace : public QObject -{ - Q_OBJECT - Q_DECLARE_PRIVATE(QWaylandOutputSpace) - - Q_ENUMS(GeometryConstraint) - - Q_PROPERTY(GeometryConstraint geometryConstraint READ geometryConstraint WRITE setGeometryConstraint NOTIFY geometryConstraintChanged) - Q_PROPERTY(QRect geometry READ geometry WRITE setGeometry NOTIFY geometryChanged) - Q_PROPERTY(QWaylandOutput *defaultOutput READ defaultOutput WRITE setDefaultOutput NOTIFY defaultOutputChanged) - Q_PROPERTY(QList<QWaylandOutput *> outputs READ outputs NOTIFY outputsChanged) -public: - enum GeometryConstraint { - AutomaticBoundingRect, - FixedSize - }; - - QWaylandOutputSpace(QWaylandCompositor *compositor); - - QWaylandCompositor *compositor() const; - - QRect geometry() const; - void setGeometry(const QRect &geometry); - - void setGeometryConstraint(GeometryConstraint geometryConstraint); - GeometryConstraint geometryConstraint() const; - - Q_INVOKABLE QWaylandOutput *output(QWindow *window) const; - - QWaylandOutput *defaultOutput() const; - void setDefaultOutput(QWaylandOutput *output); - - Q_INVOKABLE QList<QWaylandOutput *>outputs() const; - Q_INVOKABLE QList<QWaylandOutput *>outputs(const QPoint &point) const; - -Q_SIGNALS: - void geometryConstraintChanged(); - void geometryChanged(); - - void outputsChanged(); - void defaultOutputChanged(); - -private: - Q_DISABLE_COPY(QWaylandOutputSpace) -}; - -QT_END_NAMESPACE - -#endif /*QWAYLANDOUTPUTSPACE_H*/ diff --git a/src/compositor/compositor_api/qwaylandoutputspace_p.h b/src/compositor/compositor_api/qwaylandoutputspace_p.h deleted file mode 100644 index 4f1557962..000000000 --- a/src/compositor/compositor_api/qwaylandoutputspace_p.h +++ /dev/null @@ -1,115 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtWaylandCompositor module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QWAYLANDOUTPUTSPACE_P_H -#define QWAYLANDOUTPUTSPACE_P_H - -#include <QtCore/private/qobject_p.h> - -#include "qwaylandoutputspace.h" - -#include <QtWaylandCompositor/QWaylandCompositor> -#include <QtWaylandCompositor/QWaylandOutput> -#include <QtWaylandCompositor/private/qwaylandcompositor_p.h> -#include <QtWaylandCompositor/private/qwaylandoutput_p.h> - -QT_BEGIN_NAMESPACE - -class QWaylandOutputSpacePrivate : public QObjectPrivate -{ - Q_DECLARE_PUBLIC(QWaylandOutputSpace) - -public: - QWaylandOutputSpacePrivate(QWaylandCompositor *compositor) - : QObjectPrivate() - , compositor(compositor) - , geometryConstraint(QWaylandOutputSpace::AutomaticBoundingRect) - { - - } - - void adjustGeometry() - { - if (geometryConstraint != QWaylandOutputSpace::AutomaticBoundingRect) - return; - - QRect completeRect; - foreach(QWaylandOutput *output, outputs) { - if (completeRect.isNull()) - completeRect = output->geometry(); - else - completeRect = completeRect.united(output->geometry()); - } - geometry = completeRect; - } - - void addOutput(QWaylandOutput *output) - { - Q_Q(QWaylandOutputSpace); - Q_ASSERT(output); - Q_ASSERT(!outputs.contains(output)); - - outputs.append(output); - - adjustGeometry(); - - q->outputsChanged(); - } - - void removeOutput(QWaylandOutput *output) - { - Q_Q(QWaylandOutputSpace); - Q_ASSERT(output); - - bool removed = outputs.removeOne(output); - Q_ASSERT(removed); - - adjustGeometry(); - q->outputsChanged(); - } - - static QWaylandOutputSpacePrivate *get(QWaylandOutputSpace *outputSpace) { return outputSpace->d_func(); } - -private: - QWaylandCompositor *compositor; - QRect geometry; - QWaylandOutputSpace::GeometryConstraint geometryConstraint; - QList<QWaylandOutput *> outputs; -}; - -QT_END_NAMESPACE - -#endif /*QWAYLANDOUTPUTSPACE_P_H*/ diff --git a/src/compositor/compositor_api/qwaylandquickitem.cpp b/src/compositor/compositor_api/qwaylandquickitem.cpp index 90ca49d53..0d5a249cf 100644 --- a/src/compositor/compositor_api/qwaylandquickitem.cpp +++ b/src/compositor/compositor_api/qwaylandquickitem.cpp @@ -373,7 +373,7 @@ void QWaylandQuickItem::handleSurfaceChanged() emit originChanged(); } if (window()) { - QWaylandOutput *output = newSurface->compositor()->output(window()); + QWaylandOutput *output = newSurface->compositor()->outputFor(window()); d->view->setOutput(output); } } @@ -499,7 +499,7 @@ void QWaylandQuickItem::updateWindow() } if (compositor() && d->connectedWindow) { - QWaylandOutput *output = compositor()->output(d->connectedWindow); + QWaylandOutput *output = compositor()->outputFor(d->connectedWindow); Q_ASSERT(output); d->view->setOutput(output); } diff --git a/src/compositor/compositor_api/qwaylandquickoutput.cpp b/src/compositor/compositor_api/qwaylandquickoutput.cpp index 1f3c60736..0c48d1410 100644 --- a/src/compositor/compositor_api/qwaylandquickoutput.cpp +++ b/src/compositor/compositor_api/qwaylandquickoutput.cpp @@ -47,8 +47,8 @@ QWaylandQuickOutput::QWaylandQuickOutput() { } -QWaylandQuickOutput::QWaylandQuickOutput(QWaylandOutputSpace *outputSpace, QWindow *window) - : QWaylandOutput(outputSpace, window) +QWaylandQuickOutput::QWaylandQuickOutput(QWaylandCompositor *compositor, QWindow *window) + : QWaylandOutput(compositor, window) , m_updateScheduled(false) , m_automaticFrameCallback(true) { diff --git a/src/compositor/compositor_api/qwaylandquickoutput.h b/src/compositor/compositor_api/qwaylandquickoutput.h index 0fcd4a192..48f478456 100644 --- a/src/compositor/compositor_api/qwaylandquickoutput.h +++ b/src/compositor/compositor_api/qwaylandquickoutput.h @@ -52,7 +52,7 @@ class Q_COMPOSITOR_EXPORT QWaylandQuickOutput : public QWaylandOutput Q_PROPERTY(bool automaticFrameCallback READ automaticFrameCallback WRITE setAutomaticFrameCallback NOTIFY automaticFrameCallbackChanged) public: QWaylandQuickOutput(); - QWaylandQuickOutput(QWaylandOutputSpace *outputSpace, QWindow *window); + QWaylandQuickOutput(QWaylandCompositor *compositor, QWindow *window); void update() Q_DECL_OVERRIDE; diff --git a/src/compositor/compositor_api/qwaylandview.cpp b/src/compositor/compositor_api/qwaylandview.cpp index 7f1d3b93d..636937abb 100644 --- a/src/compositor/compositor_api/qwaylandview.cpp +++ b/src/compositor/compositor_api/qwaylandview.cpp @@ -37,10 +37,11 @@ #include "qwaylandview.h" #include "qwaylandview_p.h" #include "qwaylandsurface.h" -#include "qwaylandsurface_p.h" #include <QtWaylandCompositor/QWaylandInputDevice> #include <QtWaylandCompositor/QWaylandCompositor> -#include <QtWaylandCompositor/private/qwaylandoutputspace_p.h> + +#include <QtWaylandCompositor/private/qwaylandsurface_p.h> +#include <QtWaylandCompositor/private/qwaylandoutput_p.h> #include <QtCore/QMutex> |