summaryrefslogtreecommitdiffstats
path: root/src/compositor/wayland_wrapper
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@theqtcompany.com>2015-07-29 13:51:25 +0200
committerJørgen Lind <jorgen.lind@theqtcompany.com>2015-08-28 13:09:41 +0200
commit42c1bf3208e75b131aac2923da397de054cbbe13 (patch)
tree3900195214c0eafffc0ae411d2ed39de8747f5bf /src/compositor/wayland_wrapper
parent7c65f7e9618a104b1304ec1a7a1cf7ee31527c87 (diff)
Make QWaylandCompositor inherit QObject
And remove the constructor arguments, and just having parent as a constructor argument. This requires QWaylandCompositor to have a create semantic familiar from QWindow and QOpenGLContext. On create the native wayland socket is created and initialized. Also the virtual functions surfaceCreated and surfaceAboutToBeDestroyed have been converted to signals, removing the need to subclass QWaylandCompositor Examples have been changed to avoid having two super classes inheriting QObject. This is done by either making the QWindow subclass a member or making the QWaylandCompositor a member. Change-Id: I317d37e2adca15bfe4e1904e20ab0d83943b2d45
Diffstat (limited to 'src/compositor/wayland_wrapper')
-rw-r--r--src/compositor/wayland_wrapper/qwlcompositor.cpp17
-rw-r--r--src/compositor/wayland_wrapper/qwlcompositor_p.h3
2 files changed, 13 insertions, 7 deletions
diff --git a/src/compositor/wayland_wrapper/qwlcompositor.cpp b/src/compositor/wayland_wrapper/qwlcompositor.cpp
index 879d02e07..d59d7ff3d 100644
--- a/src/compositor/wayland_wrapper/qwlcompositor.cpp
+++ b/src/compositor/wayland_wrapper/qwlcompositor.cpp
@@ -155,8 +155,8 @@ Compositor *Compositor::instance()
return compositor;
}
-Compositor::Compositor(QWaylandCompositor *qt_compositor, QWaylandCompositor::ExtensionFlags extensions)
- : m_extensions(extensions)
+Compositor::Compositor(QWaylandCompositor *qt_compositor)
+ : m_extensions(QWaylandCompositor::DefaultExtensions)
, m_display(new Display)
, m_current_frame(0)
, m_last_queued_buf(-1)
@@ -176,6 +176,7 @@ Compositor::Compositor(QWaylandCompositor *qt_compositor, QWaylandCompositor::Ex
, m_inputPanel()
, m_eventHandler(new WindowSystemEventHandler(this))
, m_retainSelection(false)
+ , m_initialized(false)
{
m_timer.start();
compositor = this;
@@ -200,9 +201,11 @@ void Compositor::init()
foreach (wl_shm_format format, formats)
wl_display_add_shm_format(m_display->handle(), format);
- if (wl_display_add_socket(m_display->handle(), m_qt_compositor->socketName())) {
- fprintf(stderr, "Fatal: Failed to open server socket\n");
- exit(EXIT_FAILURE);
+ const char *socketName = 0;
+ if (m_socket_name.size())
+ socketName = m_socket_name.constData();
+ if (wl_display_add_socket(m_display->handle(), socketName)) {
+ qFatal("Fatal: Failed to open server socket\n");
}
m_loop = wl_display_get_event_loop(m_display->handle());
@@ -224,6 +227,8 @@ void Compositor::init()
initializeHardwareIntegration();
initializeExtensions();
initializeDefaultInputDevice();
+
+ m_initialized = true;
}
Compositor::~Compositor()
@@ -341,7 +346,7 @@ void Compositor::compositor_create_surface(Resource *resource, uint32_t id)
QWaylandClient *client = QWaylandClient::fromWlClient(resource->client());
QWaylandSurface *surface = m_qt_compositor->createSurface(client, id, resource->version());
primaryOutput()->addSurface(surface);
- m_qt_compositor->surfaceCreated(surface);
+ emit m_qt_compositor->surfaceCreated(surface);
}
void Compositor::compositor_create_region(Resource *resource, uint32_t id)
diff --git a/src/compositor/wayland_wrapper/qwlcompositor_p.h b/src/compositor/wayland_wrapper/qwlcompositor_p.h
index 0228caaa2..1eee9dc45 100644
--- a/src/compositor/wayland_wrapper/qwlcompositor_p.h
+++ b/src/compositor/wayland_wrapper/qwlcompositor_p.h
@@ -85,7 +85,7 @@ class Q_COMPOSITOR_EXPORT Compositor : public QObject, public QtWaylandServer::w
Q_OBJECT
public:
- Compositor(QWaylandCompositor *qt_compositor, QWaylandCompositor::ExtensionFlags extensions);
+ Compositor(QWaylandCompositor *qt_compositor);
~Compositor();
void init();
@@ -220,6 +220,7 @@ protected:
uint32_t version, uint32_t id);
bool m_retainSelection;
+ bool m_initialized;
friend class QT_PREPEND_NAMESPACE(QWaylandCompositor);
friend class QT_PREPEND_NAMESPACE(QWaylandClient);