Sync up with the latest wayland developments.

This commit makes the qtwayland module compatible with
wayland sha1 677c5180e67be18b7a0867fafb7f205b57a6e9ff.

Change-Id: I5af0510034b7e4a038313b80f1f6e0b18fa48eb3
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
This commit is contained in:
Hannu Lyytinen 2012-04-18 23:14:47 +03:00 committed by Samuel Rødal
parent e009b62037
commit d4884fa940
4 changed files with 22 additions and 15 deletions

View File

@ -244,11 +244,9 @@ void Compositor::bindCompositor(wl_client *client, void *compositorData, uint32_
wl_client_add_object(client, &wl_compositor_interface, &compositorInterface, id, compositorData);
}
static void unregisterResourceCallback(wl_listener *listener,
wl_resource *resource,
uint32_t time)
static void unregisterResourceCallback(wl_listener *listener, void *data)
{
Q_UNUSED(time);
struct wl_resource *resource = reinterpret_cast<struct wl_resource *>(data);
wl_list_remove(&resource->link);
delete listener;
}
@ -258,9 +256,9 @@ void registerResource(wl_list *list, wl_resource *resource)
wl_list_insert(list, &resource->link);
wl_listener *listener = new wl_listener;
listener->func = unregisterResourceCallback;
listener->notify = unregisterResourceCallback;
wl_list_insert(&resource->destroy_listener_list, &listener->link);
wl_signal_add(&resource->destroy_signal, listener);
}
QVector<Surface *> Compositor::surfaces() const
@ -268,6 +266,11 @@ QVector<Surface *> Compositor::surfaces() const
return m_surfaces;
}
uint32_t Compositor::nextSerial()
{
return wl_display_next_serial(m_display);
}
void Compositor::addSurface(Surface *surface)
{
m_surfaces << surface;

View File

@ -69,6 +69,7 @@ public:
int fileDescriptor() const { return m_fd; }
void dispatchEvents(int timeout = 0);
uint32_t nextSerial();
uint32_t time() { return ++m_time; }
static void setOutputGeometry(void *compositor, const QList<QVariant> &parameters);

View File

@ -95,7 +95,7 @@ static wl_surface *resolveSurface(const QVariant &v)
void Compositor::setKeyboardFocus(void *data, const QList<QVariant> &parameters)
{
Compositor *compositor = static_cast<Compositor *>(data);
wl_input_device_set_keyboard_focus(&compositor->m_input, resolveSurface(parameters.first()), compositor->time());
wl_input_device_set_keyboard_focus(&compositor->m_input, resolveSurface(parameters.first()));
}
void Compositor::sendMousePress(void *data, const QList<QVariant> &parameters)
@ -106,9 +106,10 @@ void Compositor::sendMousePress(void *data, const QList<QVariant> &parameters)
return;
QPoint pos = parameters.last().toPoint();
wl_input_device_set_pointer_focus(&compositor->m_input, surface, compositor->time(), pos.x(), pos.y());
wl_input_device_set_pointer_focus(&compositor->m_input, surface, pos.x(), pos.y());
wl_input_device_send_motion(compositor->m_input.pointer_focus_resource, compositor->time(), pos.x(), pos.y());
wl_input_device_send_button(compositor->m_input.pointer_focus_resource, compositor->time(), 0x110, 1);
wl_input_device_send_button(compositor->m_input.pointer_focus_resource,
compositor->nextSerial(), compositor->time(), 0x110, 1);
}
void Compositor::sendMouseRelease(void *data, const QList<QVariant> &parameters)
@ -118,7 +119,8 @@ void Compositor::sendMouseRelease(void *data, const QList<QVariant> &parameters)
if (!surface)
return;
wl_input_device_send_button(compositor->m_input.pointer_focus_resource, compositor->time(), 0x110, 0);
wl_input_device_send_button(compositor->m_input.pointer_focus_resource,
compositor->nextSerial(), compositor->time(), 0x110, 0);
}
void Compositor::sendKeyPress(void *data, const QList<QVariant> &parameters)
@ -129,7 +131,8 @@ void Compositor::sendKeyPress(void *data, const QList<QVariant> &parameters)
return;
QPoint pos = parameters.last().toPoint();
wl_input_device_send_key(compositor->m_input.keyboard_focus_resource, compositor->time(), parameters.last().toUInt() - 8, 1);
wl_input_device_send_key(compositor->m_input.keyboard_focus_resource,
compositor->nextSerial(), compositor->time(), parameters.last().toUInt() - 8, 1);
}
void Compositor::sendKeyRelease(void *data, const QList<QVariant> &parameters)
@ -139,7 +142,8 @@ void Compositor::sendKeyRelease(void *data, const QList<QVariant> &parameters)
if (!surface)
return;
wl_input_device_send_key(compositor->m_input.keyboard_focus_resource, compositor->time(), parameters.last().toUInt() - 8, 0);
wl_input_device_send_key(compositor->m_input.keyboard_focus_resource,
compositor->nextSerial(), compositor->time(), parameters.last().toUInt() - 8, 0);
}
}

View File

@ -53,8 +53,7 @@ void destroy_surface(wl_resource *resource)
static void surface_destroy(wl_client *, wl_resource *surfaceResource)
{
Surface *surface = static_cast<Surface *>(surfaceResource->data);
wl_resource_destroy(surfaceResource, surface->compositor()->time());
wl_resource_destroy(surfaceResource);
}
void surface_attach(wl_client *client, wl_resource *surfaceResource,
@ -99,7 +98,7 @@ void surface_damage(wl_client *client, wl_resource *surfaceResource,
wl_resource *frameCallback;
wl_list_for_each(frameCallback, &surface->m_frameCallbackList, link) {
wl_callback_send_done(frameCallback, surface->m_compositor->time());
wl_resource_destroy(frameCallback, surface->m_compositor->time());
wl_resource_destroy(frameCallback);
}
wl_list_init(&surface->m_frameCallbackList);