summaryrefslogtreecommitdiffstats
path: root/src/compositor/wayland_wrapper/qwlcompositor.cpp
diff options
context:
space:
mode:
authorJan Arne Petersen <jan.petersen@kdab.com>2013-08-27 00:13:32 +0200
committerJan Arne Petersen <jan.petersen@kdab.com>2013-09-09 14:15:51 +0200
commit9bbfb94ccd7d7d9c8fc0de377d914149283e4d7b (patch)
tree6e3c2a79c360ff5a080de398f024942932dc9df8 /src/compositor/wayland_wrapper/qwlcompositor.cpp
parent330c429991ef1c32ffdd51cdc8627ef1b71604b3 (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.cpp37
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()