summaryrefslogtreecommitdiffstats
path: root/src/qt-compositor/hardware_integration/xpixmap_share
diff options
context:
space:
mode:
Diffstat (limited to 'src/qt-compositor/hardware_integration/xpixmap_share')
-rw-r--r--src/qt-compositor/hardware_integration/xpixmap_share/xpixmap_share.pri10
-rw-r--r--src/qt-compositor/hardware_integration/xpixmap_share/xpixmapbuffer.cpp78
-rw-r--r--src/qt-compositor/hardware_integration/xpixmap_share/xpixmapbuffer.h73
-rw-r--r--src/qt-compositor/hardware_integration/xpixmap_share/xpixmaphandler.cpp80
-rw-r--r--src/qt-compositor/hardware_integration/xpixmap_share/xpixmaphandler.h78
5 files changed, 317 insertions, 2 deletions
diff --git a/src/qt-compositor/hardware_integration/xpixmap_share/xpixmap_share.pri b/src/qt-compositor/hardware_integration/xpixmap_share/xpixmap_share.pri
index d7a5178..b186992 100644
--- a/src/qt-compositor/hardware_integration/xpixmap_share/xpixmap_share.pri
+++ b/src/qt-compositor/hardware_integration/xpixmap_share/xpixmap_share.pri
@@ -1,5 +1,11 @@
INCLUDEPATH += $$PWD
-HEADERS += $$PWD/wayland-xpixmap-server-protocol.h
+HEADERS += \
+ $$PWD/wayland-xpixmap-server-protocol.h \
+ $$PWD/xpixmapbuffer.h \
+ ../../src/qt-compositor/hardware_integration/xpixmap_share/xpixmaphandler.h
-SOURCES += $$PWD/wayland-xpixmap-protocol.c
+SOURCES += \
+ $$PWD/wayland-xpixmap-protocol.c \
+ $$PWD/xpixmapbuffer.cpp \
+ ../../src/qt-compositor/hardware_integration/xpixmap_share/xpixmaphandler.cpp
diff --git a/src/qt-compositor/hardware_integration/xpixmap_share/xpixmapbuffer.cpp b/src/qt-compositor/hardware_integration/xpixmap_share/xpixmapbuffer.cpp
new file mode 100644
index 0000000..2d3a27f
--- /dev/null
+++ b/src/qt-compositor/hardware_integration/xpixmap_share/xpixmapbuffer.cpp
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** This file is part of QtCompositor**
+**
+** Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+**
+** Contact: Nokia Corporation qt-info@nokia.com
+**
+** You may use this file under the terms of the BSD license as follows:
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**
+** Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+**
+** Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** Neither the name of Nokia Corporation and its Subsidiary(-ies) nor the
+** names of its contributors may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+****************************************************************************/
+
+#include "xpixmapbuffer.h"
+
+void destroy_buffer(struct wl_resource *resource, struct wl_client *client)
+{
+
+}
+
+XPixmapBuffer::XPixmapBuffer(Pixmap pixmap, const QSize &size,
+ wl_visual *visual, Wayland::Compositor *compositor)
+ : m_pixmap(pixmap)
+ , m_glxpixmap(0)
+{
+ base()->height = size.height();
+ base()->width = size.width();
+ base()->compositor = compositor->base();
+ base()->visual = visual;
+
+ //These are set to 0 in super constructor, but do it here as well
+ //to make a point out of that this surface is a gl surface
+ base()->attach = 0;
+ base()->damage = 0;
+}
+
+XPixmapBuffer::~XPixmapBuffer()
+{
+
+}
+
+Pixmap XPixmapBuffer::pixmap() const
+{
+ return m_pixmap;
+}
+
+void xPixmapBufferDestroy(struct wl_client *client, struct wl_buffer *buffer)
+{
+ Q_UNUSED(client);
+ delete Wayland::wayland_cast<XPixmapBuffer *>(buffer);
+}
diff --git a/src/qt-compositor/hardware_integration/xpixmap_share/xpixmapbuffer.h b/src/qt-compositor/hardware_integration/xpixmap_share/xpixmapbuffer.h
new file mode 100644
index 0000000..c9574bb
--- /dev/null
+++ b/src/qt-compositor/hardware_integration/xpixmap_share/xpixmapbuffer.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** This file is part of QtCompositor**
+**
+** Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+**
+** Contact: Nokia Corporation qt-info@nokia.com
+**
+** You may use this file under the terms of the BSD license as follows:
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**
+** Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+**
+** Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** Neither the name of Nokia Corporation and its Subsidiary(-ies) nor the
+** names of its contributors may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+****************************************************************************/
+
+#ifndef XPIXMAPBUFFER_H
+#define XPIXMAPBUFFER_H
+
+#include "waylandobject.h"
+#include "wayland_wrapper/wlcompositor.h"
+
+#include <QtCore/QSize>
+
+#include <X11/Xlib.h>
+#include <GL/glx.h>
+
+class XPixmapBuffer : public Wayland::Object<struct wl_buffer>
+{
+public:
+ XPixmapBuffer(Pixmap pixmap, const QSize &size,
+ wl_visual *visual, Wayland::Compositor *compositor);
+
+ ~XPixmapBuffer();
+
+ Pixmap pixmap() const;
+ GLXPixmap m_glxpixmap;
+private:
+ Pixmap m_pixmap;
+};
+
+void xPixmapBufferDestroy(struct wl_client *client, struct wl_buffer *buffer);
+
+const static struct wl_buffer_interface xpixmap_buffer_interface = {
+ xPixmapBufferDestroy
+};
+
+
+#endif // XPIXMAPBUFFER_H
diff --git a/src/qt-compositor/hardware_integration/xpixmap_share/xpixmaphandler.cpp b/src/qt-compositor/hardware_integration/xpixmap_share/xpixmaphandler.cpp
new file mode 100644
index 0000000..3c620c5
--- /dev/null
+++ b/src/qt-compositor/hardware_integration/xpixmap_share/xpixmaphandler.cpp
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** This file is part of QtCompositor**
+**
+** Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+**
+** Contact: Nokia Corporation qt-info@nokia.com
+**
+** You may use this file under the terms of the BSD license as follows:
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**
+** Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+**
+** Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** Neither the name of Nokia Corporation and its Subsidiary(-ies) nor the
+** names of its contributors may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+****************************************************************************/
+
+#include "xpixmaphandler.h"
+
+#include <QtGui/QWidget>
+#include "wayland_wrapper/wlcompositor.h"
+
+#include <QtCore/QDebug>
+
+#include "xpixmapbuffer.h"
+#include <X11/Xlib.h>
+
+XPixmapHandler::XPixmapHandler(Wayland::Compositor *compositor, QWidget *topLevelWidget)
+ :m_compositor(compositor)
+{
+}
+
+XPixmapHandler::~XPixmapHandler()
+{
+ qDebug() << "xpixmapHandler destroyed";
+}
+
+void create_buffer(struct wl_client *client,
+ struct wl_xpixmap *xpixmap,
+ uint32_t id,
+ uint32_t xpixmap_id,
+ int width,
+ int height,
+ struct wl_visual *visual)
+{
+ XPixmapHandler *xpixmapHandler = reinterpret_cast<XPixmapHandler *>(xpixmap);
+ xpixmapHandler->createBuffer(client,id,xpixmap_id,QSize(width,height),visual);
+}
+
+void XPixmapHandler::createBuffer(wl_client *client, uint32_t id, uint32_t xpixmap_id, const QSize &size, wl_visual *visual)
+{
+
+ qDebug() << "creating buffer for id" << xpixmap_id << "and size" << size;
+ Pixmap pixmap = (Pixmap)xpixmap_id;
+ XPixmapBuffer *pixmapBuffer = new XPixmapBuffer(pixmap,size,visual,m_compositor);
+ Wayland::addClientResource(client,&pixmapBuffer->base()->resource,id,&wl_buffer_interface,&xpixmap_buffer_interface,0);
+}
diff --git a/src/qt-compositor/hardware_integration/xpixmap_share/xpixmaphandler.h b/src/qt-compositor/hardware_integration/xpixmap_share/xpixmaphandler.h
new file mode 100644
index 0000000..ad9c24f
--- /dev/null
+++ b/src/qt-compositor/hardware_integration/xpixmap_share/xpixmaphandler.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** This file is part of QtCompositor**
+**
+** Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+**
+** Contact: Nokia Corporation qt-info@nokia.com
+**
+** You may use this file under the terms of the BSD license as follows:
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**
+** Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+**
+** Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in the
+** documentation and/or other materials provided with the distribution.
+**
+** Neither the name of Nokia Corporation and its Subsidiary(-ies) nor the
+** names of its contributors may be used to endorse or promote products
+** derived from this software without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+****************************************************************************/
+
+#ifndef XPIXMAPHANDLER_H
+#define XPIXMAPHANDLER_H
+
+#include "wayland-xpixmap-server-protocol.h"
+
+#include "waylandobject.h"
+#include <QtCore/QSize>
+
+namespace Wayland {
+class Compositor;
+}
+class QWidget;
+
+class XPixmapHandler : public Wayland::Object<struct wl_object>
+{
+public:
+ XPixmapHandler(Wayland::Compositor *compositor, QWidget *topLevelWidget);
+
+ ~XPixmapHandler();
+
+ void createBuffer(wl_client *client, uint32_t id, uint32_t xpixmap_id, const QSize &size, wl_visual *visual);
+private:
+ Wayland::Compositor *m_compositor;
+};
+
+void create_buffer(struct wl_client *client,
+ struct wl_xpixmap *xpixmap,
+ uint32_t id,
+ uint32_t xpixmap_id,
+ int width,
+ int height,
+ struct wl_visual *visual);
+
+const static struct wl_xpixmap_interface xpixmap_interface = {
+ create_buffer
+};
+
+#endif // XPIXMAPHANDLER_H