diff options
author | Jorgen Lind <jorgen.lind@digia.com> | 2014-03-07 08:39:17 +0100 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@digia.com> | 2014-03-07 12:08:09 +0100 |
commit | 63b0fef9eb1fe6e65333b03418b9c9a2fb33dfbc (patch) | |
tree | 3db0ad5b2209dbf74667672f828cdf67e249830f | |
parent | 698efae3cb2d24e7ed215bbbb80a2e0540bc4b04 (diff) |
Make QtWayland::Compositor subclass the generated wl_compositor class
Change-Id: If07c7ca86ef87f503e1e79663beb9b4ddbafd739
Reviewed-by: Jan Arne Petersen <jan.petersen@kdab.com>
Reviewed-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
-rw-r--r-- | src/compositor/wayland_wrapper/qwlcompositor.cpp | 55 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/qwlcompositor_p.h | 7 |
2 files changed, 20 insertions, 42 deletions
diff --git a/src/compositor/wayland_wrapper/qwlcompositor.cpp b/src/compositor/wayland_wrapper/qwlcompositor.cpp index 1e0823971..731d8840a 100644 --- a/src/compositor/wayland_wrapper/qwlcompositor.cpp +++ b/src/compositor/wayland_wrapper/qwlcompositor.cpp @@ -101,32 +101,6 @@ namespace QtWayland { static Compositor *compositor; -void compositor_create_surface(struct wl_client *client, - struct wl_resource *resource, uint32_t id) -{ - static_cast<Compositor *>(resource->data)->createSurface(client,id); -} - -void compositor_create_region(struct wl_client *client, - struct wl_resource *compositor, uint32_t id) -{ - Q_UNUSED(compositor); - new Region(client, id); -} - -const static struct wl_compositor_interface compositor_interface = { - compositor_create_surface, - compositor_create_region -}; - -void Compositor::bind_func(struct wl_client *client, void *data, - uint32_t version, uint32_t id) -{ - Q_UNUSED(version); - struct wl_resource *resource = wl_resource_create(client, &wl_compositor_interface, version, id); - wl_resource_set_implementation(resource, &compositor_interface, data, 0); -} - Compositor *Compositor::instance() { return compositor; @@ -158,11 +132,7 @@ Compositor::Compositor(QWaylandCompositor *qt_compositor, QWaylandCompositor::Ex m_timer.start(); compositor = this; - wl_global_create(m_display->handle(), - &wl_compositor_interface, - wl_compositor_interface.version, - this, - Compositor::bind_func); + wl_compositor::init(m_display->handle()); m_data_device_manager = new DataDeviceManager(this); @@ -236,15 +206,6 @@ void Compositor::frameFinished(Surface *surface) } } -void Compositor::createSurface(struct wl_client *client, uint32_t id) -{ - Surface *surface = new Surface(client,id, this); - - m_surfaces << surface; - //BUG: This may not be an on-screen window surface though - m_qt_compositor->surfaceCreated(surface->waylandSurface()); -} - uint Compositor::currentTimeMsecs() const { return m_timer.elapsed(); @@ -293,6 +254,20 @@ void Compositor::cleanupGraphicsResources() m_destroyed_surfaces.clear(); } +void Compositor::compositor_create_surface(Resource *resource, uint32_t id) +{ + Surface *surface = new Surface(resource->client(), id, this); + m_surfaces << surface; + //BUG: This may not be an on-screen window surface though + m_qt_compositor->surfaceCreated(surface->waylandSurface()); +} + +void Compositor::compositor_create_region(Resource *resource, uint32_t id) +{ + Q_UNUSED(compositor); + new Region(resource->client(), id); +} + void Compositor::markSurfaceAsDirty(QtWayland::Surface *surface) { m_dirty_surfaces.insert(surface); diff --git a/src/compositor/wayland_wrapper/qwlcompositor_p.h b/src/compositor/wayland_wrapper/qwlcompositor_p.h index 6993660d6..91697a29d 100644 --- a/src/compositor/wayland_wrapper/qwlcompositor_p.h +++ b/src/compositor/wayland_wrapper/qwlcompositor_p.h @@ -44,6 +44,7 @@ #include <QtCompositor/qwaylandexport.h> #include <QtCompositor/qwaylandcompositor.h> +#include <QtCompositor/private/qwayland-server-wayland.h> #include <QtCore/QElapsedTimer> #include <QtCore/QSet> @@ -80,7 +81,7 @@ class HardwareIntegration; class ClientBufferIntegration; class ServerBufferIntegration; -class Q_COMPOSITOR_EXPORT Compositor : public QObject +class Q_COMPOSITOR_EXPORT Compositor : public QObject, public QtWaylandServer::wl_compositor { Q_OBJECT @@ -92,7 +93,6 @@ public: InputDevice *defaultInputDevice(); //we just have 1 default device for now (since QPA doesn't give us anything else) - void createSurface(struct wl_client *client, uint32_t id); void destroySurface(Surface *surface); void markSurfaceAsDirty(Surface *surface); @@ -160,6 +160,9 @@ public: public slots: void cleanupGraphicsResources(); +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; private slots: void processWaylandEvents(); |