diff options
author | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-07-29 13:51:25 +0200 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-08-28 13:09:41 +0200 |
commit | 42c1bf3208e75b131aac2923da397de054cbbe13 (patch) | |
tree | 3900195214c0eafffc0ae411d2ed39de8747f5bf /src/compositor/wayland_wrapper | |
parent | 7c65f7e9618a104b1304ec1a7a1cf7ee31527c87 (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.cpp | 17 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/qwlcompositor_p.h | 3 |
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); |