summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarius Bugge Monsen <mmonsen@trolltech.com>2010-02-10 14:42:20 +0100
committerMarius Bugge Monsen <mmonsen@trolltech.com>2010-02-10 14:42:20 +0100
commit835a1416e58a6facf10550d830546433aaca1b43 (patch)
treee7de63d48aa976b58d098f217f3f7e1f52b94281
parent1f4a0e464aa766bfe58f2a8d1246a204678239bc (diff)
Add license header to the protocol.
-rw-r--r--protocol.h89
-rw-r--r--qgraphicssystem_dd.cpp75
-rw-r--r--qgraphicssystem_dd.h5
3 files changed, 128 insertions, 41 deletions
diff --git a/protocol.h b/protocol.h
index f918565..b35143c 100644
--- a/protocol.h
+++ b/protocol.h
@@ -1,7 +1,49 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
#ifndef PROTOCOL_H
#define PROTOCOL_H
#include <QtCore/QRectF>
+#include <QtCore/QDataStream>
struct Message
{
@@ -13,12 +55,14 @@ struct Message
EventMessage
};
- inline Message(MessageType message = InvalidMessage, quint16 type = -1, quint32 id = -1, const QRectF &rect = QRectF())
- : message(message), type(type), id(id), rect(rect) {}
+ inline Message(MessageType message = InvalidMessage, quint16 type = -1, quint32 id = -1,
+ quint32 value = 0, const QRectF &rect = QRectF())
+ : message(message), type(type), id(id), value(value), rect(rect) {}
quint16 message;
quint16 type;
quint32 id;
+ quint32 value;
QRectF rect;
};
@@ -27,18 +71,19 @@ struct Request : public Message
enum RequestType
{
InvalidRequest,
- CreateRequest,
- DestroyRequest,
- ShowRequest,
- HideRequest,
- RaiseRequest,
- LowerRequest,
- UpdateRequest,
- SetGeometryRequest,
+ CreateWindowRequest,
+ DestroyWindowRequest,
+ ShowWindowRequest,
+ HideWindowRequest,
+ RaiseWindowRequest,
+ LowerWindowRequest,
+ UpdateWindowRequest,
+ SetWindowGeometryRequest,
};
- inline Request(RequestType type = InvalidRequest, quint32 id = -1, const QRectF &rect = QRectF())
- : Message(RequestMessage, type, id, rect) {}
+ inline Request(RequestType type = InvalidRequest, quint32 id = -1,
+ quint32 value = 0, const QRectF &rect = QRectF())
+ : Message(RequestMessage, type, id, value, rect) {}
};
struct Response : public Message
@@ -46,11 +91,12 @@ struct Response : public Message
enum ResponseType
{
InvalidResponse,
- CreatedResponse
+ CreatedWindowResponse
};
- inline Response(ResponseType type = InvalidResponse, quint32 id = -1, const QRectF &rect = QRectF())
- : Message(ResponseMessage, type, id, rect) {}
+ inline Response(ResponseType type = InvalidResponse, quint32 id = -1,
+ quint32 value = 0, const QRectF &rect = QRectF())
+ : Message(ResponseMessage, type, id, value, rect) {}
};
struct Event : public Message
@@ -59,16 +105,17 @@ struct Event : public Message
{
InvalidEvent,
ErrorEvent,
- ShowEvent,
- HideEvent,
- PaintEvent,
GeometryChangeEvent,
MousePressEvent,
MouseReleaseEvent,
+ MouseMoveEvent,
+ KeyPressEvent,
+ KeyReleaseEvent
};
- inline Event(EventType type = InvalidEvent, quint32 id = -1, const QRectF &rect = QRectF())
- : Message(EventMessage, type, id, rect) {}
+ inline Event(EventType type = InvalidEvent, quint32 id = -1,
+ quint32 value = 0, const QRectF &rect = QRectF())
+ : Message(EventMessage, type, id, value, rect) {}
};
inline QDataStream &operator>>(QDataStream &in, Message &message)
@@ -76,6 +123,7 @@ inline QDataStream &operator>>(QDataStream &in, Message &message)
in >> message.message;
in >> message.type;
in >> message.id;
+ in >> message.value;
in >> message.rect;
return in;
}
@@ -85,6 +133,7 @@ inline QDataStream &operator<<(QDataStream &out, const Message &message)
out << message.message;
out << message.type;
out << message.id;
+ out << message.value;
out << message.rect;
return out;
}
diff --git a/qgraphicssystem_dd.cpp b/qgraphicssystem_dd.cpp
index 28f8c18..8916ba9 100644
--- a/qgraphicssystem_dd.cpp
+++ b/qgraphicssystem_dd.cpp
@@ -63,7 +63,7 @@ QDevDaysWindowSurface::QDevDaysWindowSurface(QWidget *window, QDevDaysGraphicsSy
{
quint32 parentId = system->m_ids.value(window->parentWidget(), 0);
- Request request(Request::CreateRequest, parentId);
+ Request request(Request::CreateWindowRequest, parentId);
system->sendRequest(request);
Response response;
@@ -76,7 +76,7 @@ QDevDaysWindowSurface::QDevDaysWindowSurface(QWidget *window, QDevDaysGraphicsSy
QDevDaysWindowSurface::~QDevDaysWindowSurface()
{
- Request request(Request::DestroyRequest, m_id);
+ Request request(Request::DestroyWindowRequest, m_id);
m_system->sendRequest(request);
m_system->m_surfaces.remove(m_id);
m_system->m_ids.remove(window());
@@ -95,7 +95,7 @@ void QDevDaysWindowSurface::flush(QWidget *widget, const QRegion &region, const
Q_UNUSED(offset);
qDebug() << "WINDOW: flush";
// send an update request to the server
- Request request(Request::UpdateRequest, m_id); // ### rect
+ Request request(Request::UpdateWindowRequest, m_id); // ### rect
m_system->sendRequest(request);
// we don't expect any response
}
@@ -104,21 +104,22 @@ void QDevDaysWindowSurface::setGeometry(const QRect &rect)
{
qDebug() << "WINDOW: setGeometry";
QWindowSurface::setGeometry(rect);
+ qDebug() << "WINDOW: geometry" << geometry();
// create or resize the shared memory
qint32 byteCount = rect.width() * rect.height() * sizeof(quint32); // ### server should hold the pixel format
qDebug() << "WINDOW: byte count" << byteCount;
if (byteCount > m_shared.size()) {
- if (m_shared.key().isEmpty())
- m_shared.setKey(QString::number(m_id));
- else
- m_shared.detach();
+ if (!m_shared.key().isEmpty())
+ m_shared.setKey(QString()); // detach
+ m_shared.setKey(QString::number(m_id));
if (!m_shared.create(byteCount) && !m_shared.attach())
qWarning() << m_shared.errorString() << m_shared.key();
qDebug() << "WINDOW: data" << m_shared.data() << "key" << m_shared.key();
+ Q_ASSERT(m_shared.data());
}
- Request request(Request::SetGeometryRequest, m_id, rect);
+ Request request(Request::SetWindowGeometryRequest, m_id, 0, rect);
m_system->sendRequest(request);
}
@@ -151,7 +152,7 @@ void QDevDaysWindowSurface::endPaint(const QRegion &region)
else
qDebug() << "WINDOW: failed to unlock shared memory";
}
-
+/*
void QDevDaysWindowSurface::handleMouseEvent(const Event &event)
{
QEvent::Type type = QEvent::None;
@@ -163,6 +164,9 @@ void QDevDaysWindowSurface::handleMouseEvent(const Event &event)
case Event::MouseReleaseEvent:
type = QEvent::MouseButtonPress;
break;
+ case Event::MouseMoveEvent:
+ type = QEvent::MouseMove;
+ break;
default:
break;
}
@@ -170,11 +174,28 @@ void QDevDaysWindowSurface::handleMouseEvent(const Event &event)
QApplicationPrivate::handleMouseEvent(window(), mouseEvent);
}
+void QDevDaysWindowSurface::handleKeyEvent(const Event &event)
+{
+ QEvent::Type type = QEvent::None;
+ quint32 key = 0;
+
+ switch (event.type) {
+ case Event::KeyPressEvent:
+ type = QEvent::KeyPress;
+ break;
+ case Event::KeyReleaseEvent:
+ type = QEvent::KeyRelease;
+ break;
+ }
+ QKeyEvent keyEvent(type, key, Qt::NoModifier, QString(), true, 0);
+ QApplicationPrivate::handleKeyEvent(window(), keyEvent);
+}
+
void QDevDaysWindowSurface::handleGeometryChanged(const Event &event)
{
QApplicationPrivate::handleGeometryChange(window(), event.rect.toRect());
}
-
+*/
//
// graphics system
//
@@ -256,22 +277,38 @@ void QDevDaysGraphicsSystem::eventDispatcher()
QDataStream in(&m_connection);
in >> m_message;
switch (m_message.message) {
- case Event::EventMessage:
- qDebug() << "SYSTEM: received event" << m_message.type;
+ case Event::EventMessage: {
QDevDaysWindowSurface *surface = m_surfaces.value(m_message.id);
+ QWidget *window = surface ? surface->window() : 0;
+ qDebug() << "SYSTEM: received event" << m_message.type << window;
switch (m_message.type) {
+ case Event::GeometryChangeEvent: {
+ QApplicationPrivate::handleGeometryChange(window, m_message.rect.toRect());
+ break; }
case Event::MousePressEvent: {
- // ### we don't support multiple buttons or keyboard modifiers
- QMouseEvent me(QEvent::MouseButtonPress, m_message.rect.topLeft().toPoint(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
- QApplicationPrivate::handleMouseEvent(surface->window(), me);
+ // ### we don't support multiple buttons or any keyboard modifiers
+ QPoint pos = m_message.rect.topLeft().toPoint();
+ QMouseEvent me(QEvent::MouseButtonPress, pos, pos + window->pos(),
+ Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
+ QApplicationPrivate::handleMouseEvent(window, me);
break; }
case Event::MouseReleaseEvent: {
- // ### we don't support multiple buttons or keyboard modifiers
- QMouseEvent me(QEvent::MouseButtonRelease, m_message.rect.topLeft().toPoint(), Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
- QApplicationPrivate::handleMouseEvent(surface->window(), me);
+ // ### we don't support multiple buttons or any keyboard modifiers
+ QPoint pos = m_message.rect.topLeft().toPoint();
+ QMouseEvent me(QEvent::MouseButtonRelease, pos, pos + window->pos(),
+ Qt::LeftButton, Qt::NoButton, Qt::NoModifier);
+ QApplicationPrivate::handleMouseEvent(window, me);
+ break; }
+ case Event::KeyPressEvent: {
+ QKeyEvent ke(QEvent::KeyPress, m_message.value, Qt::NoModifier);
+ QApplicationPrivate::handleKeyEvent(window, &ke);
+ break; }
+ case Event::KeyReleaseEvent: {
+ QKeyEvent ke(QEvent::KeyRelease, m_message.value, Qt::NoModifier);
+ QApplicationPrivate::handleKeyEvent(window, &ke);
break; }
}
- break;
+ break; }
case Response::ResponseMessage:
case Request::RequestMessage:
default:
diff --git a/qgraphicssystem_dd.h b/qgraphicssystem_dd.h
index 9e8af8a..5fd2045 100644
--- a/qgraphicssystem_dd.h
+++ b/qgraphicssystem_dd.h
@@ -69,8 +69,9 @@ public:
void endPaint(const QRegion &region);
// event handlers
- void handleMouseEvent(const Event &event);
- void handleGeometryChanged(const Event &event);
+ //void handleMouseEvent(const Event &event);
+ //void handleKeyEvent(const Event &event);
+ //void handleGeometryChanged(const Event &event);
private:
QDevDaysGraphicsSystem *m_system;