diff options
author | Jan Arne Petersen <jan.petersen@kdab.com> | 2013-08-27 00:13:32 +0200 |
---|---|---|
committer | Jan Arne Petersen <jan.petersen@kdab.com> | 2013-09-09 14:15:51 +0200 |
commit | 9bbfb94ccd7d7d9c8fc0de377d914149283e4d7b (patch) | |
tree | 6e3c2a79c360ff5a080de398f024942932dc9df8 /src/compositor/wayland_wrapper/qwlcompositor.cpp | |
parent | 330c429991ef1c32ffdd51cdc8627ef1b71604b3 (diff) |
Allow to customize enabled compositor extensions
Add an ExtensionFlag enum to QWaylandCompositor and allow to specify
extensions to enable via the constructor.
Change-Id: If1a691232134034ba4055a9ed280bc211dcaebe8
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Diffstat (limited to 'src/compositor/wayland_wrapper/qwlcompositor.cpp')
-rw-r--r-- | src/compositor/wayland_wrapper/qwlcompositor.cpp | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/src/compositor/wayland_wrapper/qwlcompositor.cpp b/src/compositor/wayland_wrapper/qwlcompositor.cpp index 4f0e6ced9..5dfc34d28 100644 --- a/src/compositor/wayland_wrapper/qwlcompositor.cpp +++ b/src/compositor/wayland_wrapper/qwlcompositor.cpp @@ -123,7 +123,7 @@ Compositor *Compositor::instance() return compositor; } -Compositor::Compositor(QWaylandCompositor *qt_compositor) +Compositor::Compositor(QWaylandCompositor *qt_compositor, QWaylandCompositor::ExtensionFlag extensions) : m_display(new Display) , m_default_input_device(0) , m_pageFlipper(0) @@ -137,10 +137,12 @@ Compositor::Compositor(QWaylandCompositor *qt_compositor) #if defined (QT_COMPOSITOR_WAYLAND_GL) , m_graphics_hw_integration(0) #endif + , m_windowManagerIntegration(0) , m_outputExtension(0) , m_surfaceExtension(0) , m_subSurfaceExtension(0) , m_touchExtension(0) + , m_qtkeyExtension(0) , m_retainNotify(0) { compositor = this; @@ -169,7 +171,8 @@ Compositor::Compositor(QWaylandCompositor *qt_compositor) } #endif - m_windowManagerIntegration = new WindowManagerServerIntegration(qt_compositor, this); + if (extensions & QWaylandCompositor::WindowManagerExtension) + m_windowManagerIntegration = new WindowManagerServerIntegration(qt_compositor, this); wl_display_add_global(m_display->handle(),&wl_compositor_interface,this,Compositor::bind_func); @@ -182,10 +185,16 @@ Compositor::Compositor(QWaylandCompositor *qt_compositor) m_shell = new Shell(); wl_display_add_global(m_display->handle(), &wl_shell_interface, m_shell, Shell::bind_func); - m_outputExtension = new OutputExtensionGlobal(this); - m_surfaceExtension = new SurfaceExtensionGlobal(this); - m_qtkeyExtension = new QtKeyExtensionGlobal(this); - m_touchExtension = new TouchExtensionGlobal(this); + if (extensions & QWaylandCompositor::OutputExtension) + m_outputExtension = new OutputExtensionGlobal(this); + if (extensions & QWaylandCompositor::SurfaceExtension) + m_surfaceExtension = new SurfaceExtensionGlobal(this); + if (extensions & QWaylandCompositor::SubSurfaceExtension) + m_subSurfaceExtension = new SubSurfaceExtensionGlobal(this); + if (extensions & QWaylandCompositor::TouchExtension) + m_touchExtension = new TouchExtensionGlobal(this); + if (extensions & QWaylandCompositor::QtKeyExtension) + m_qtkeyExtension = new QtKeyExtensionGlobal(this); if (wl_display_add_socket(m_display->handle(), qt_compositor->socketName())) { fprintf(stderr, "Fatal: Failed to open server socket\n"); @@ -305,7 +314,8 @@ void Compositor::destroyClient(WaylandClient *c) if (!client) return; - m_windowManagerIntegration->sendQuitMessage(client); + if (m_windowManagerIntegration) + m_windowManagerIntegration->sendQuitMessage(client); wl_client_destroy(client); } @@ -340,14 +350,8 @@ void Compositor::initializeDefaultInputDevice() void Compositor::initializeWindowManagerProtocol() { - m_windowManagerIntegration->initialize(m_display); -} - -void Compositor::enableSubSurfaceExtension() -{ - if (!m_subSurfaceExtension) { - m_subSurfaceExtension = new SubSurfaceExtensionGlobal(this); - } + if (m_windowManagerIntegration) + m_windowManagerIntegration->initialize(m_display); } bool Compositor::setDirectRenderSurface(Surface *surface, QOpenGLContext *context) @@ -448,7 +452,8 @@ int Compositor::outputRefreshRate() const void Compositor::setClientFullScreenHint(bool value) { - m_windowManagerIntegration->setShowIsFullScreen(value); + if (m_windowManagerIntegration) + m_windowManagerIntegration->setShowIsFullScreen(value); } InputDevice* Compositor::defaultInputDevice() |