Added some options to customize the wayland server socket.
authorSamuel Rødal <samuel.rodal@nokia.com>
Fri, 20 May 2011 08:42:21 +0000 (10:42 +0200)
committerSamuel Rødal <samuel.rodal@nokia.com>
Fri, 20 May 2011 08:42:21 +0000 (10:42 +0200)
src/qt-compositor/compositor_api/waylandcompositor.cpp
src/qt-compositor/compositor_api/waylandcompositor.h
src/qt-compositor/wayland_wrapper/wlcompositor.cpp

index b3a0431..36e358a 100644 (file)
 #include "waylandsurfaceitem.h"
 #endif
 
-WaylandCompositor::WaylandCompositor(QWidget *topLevelWidget)
+WaylandCompositor::WaylandCompositor(QWidget *topLevelWidget, const char *socketName)
     : m_compositor(0)
     , m_toplevel_widget(topLevelWidget)
+    , m_socket_name(socketName)
 {
+    QStringList arguments = QCoreApplication::instance()->arguments();
+
+    int socketArg = arguments.indexOf(QLatin1String("--wayland-socket-name"));
+    if (socketArg != -1 && socketArg + 1 < arguments.size())
+        m_socket_name = arguments.at(socketArg + 1).toLocal8Bit();
+
     m_compositor = new Wayland::Compositor(this);
 #ifdef QT_COMPOSITOR_DECLARATIVE
     qmlRegisterType<WaylandSurfaceItem>("WaylandCompositor", 1, 0, "WaylandSurfaceItem");
@@ -121,3 +128,9 @@ void WaylandCompositor::retainedSelectionReceived(QMimeData *)
 {
 }
 
+const char *WaylandCompositor::socketName() const
+{
+    if (m_socket_name.isEmpty())
+        return 0;
+    return m_socket_name.constData();
+}
index 94a6139..e1438d3 100644 (file)
@@ -61,7 +61,7 @@ namespace Wayland
 class WaylandCompositor
 {
 public:
-    WaylandCompositor(QWidget *topLevelWidget = 0);
+    WaylandCompositor(QWidget *topLevelWidget = 0, const char *socketName = 0);
     virtual ~WaylandCompositor();
 
     void frameFinished(WaylandSurface *surface = 0);
@@ -81,12 +81,14 @@ public:
     void setRetainedSelectionEnabled(bool enable);
     virtual void retainedSelectionReceived(QMimeData *mimeData);
 
+    const char *socketName() const;
+
 private:
     static void retainedSelectionChanged(QMimeData *mimeData, void *param);
 
     Wayland::Compositor *m_compositor;
     QWidget  *m_toplevel_widget;
-
+    QByteArray m_socket_name;
 };
 
 #endif // QTCOMP_H
index d3e1a76..8ddcbee 100644 (file)
@@ -203,7 +203,7 @@ Compositor::Compositor(WaylandCompositor *qt_compositor)
     wl_input_device_init(&m_input, base());
     m_display->addGlobalObject(&m_input.object, &wl_input_device_interface, &input_device_interface, 0);
 
-    if (wl_display_add_socket(m_display->handle(), 0)) {
+    if (wl_display_add_socket(m_display->handle(), qt_compositor->socketName())) {
         fprintf(stderr, "Fatal: Failed to open server socket\n");
         exit(EXIT_FAILURE);
     }