summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJorgen Lind <jorgen.lind@digia.com>2014-03-07 08:39:17 +0100
committerJørgen Lind <jorgen.lind@digia.com>2014-03-07 12:08:09 +0100
commit63b0fef9eb1fe6e65333b03418b9c9a2fb33dfbc (patch)
tree3db0ad5b2209dbf74667672f828cdf67e249830f
parent698efae3cb2d24e7ed215bbbb80a2e0540bc4b04 (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.cpp55
-rw-r--r--src/compositor/wayland_wrapper/qwlcompositor_p.h7
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();