Woo, running on stock mesa now.
- generate pointer_focus (and drag focus) on raise/lower, move
windows, all kinds of changes in surface stacking.
+ - make a client side circular buffer of pending ping requests with
+ callbacks and data. if buffer fills up, just iterate until an
+ entry becomes available. wl_display_ping(dpy, func, data), basically.
+ func is called when the reply comes in for the ping request.
+
- glyph cache
- dnd, figure out large object transfer: through wayland protocol or
EGLint attribs[] = {
EGL_WIDTH, 0,
EGL_HEIGHT, 0,
- EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA,
- EGL_IMAGE_USE_MESA, EGL_IMAGE_USE_SHARE_MESA |
- EGL_IMAGE_USE_SCANOUT_MESA,
+ EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
+ EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SHARE_MESA |
+ EGL_DRM_BUFFER_USE_SCANOUT_MESA,
EGL_NONE
};
EGLint image_attribs[] = {
EGL_WIDTH, 0,
EGL_HEIGHT, 0,
- EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA,
- EGL_IMAGE_USE_MESA, EGL_IMAGE_USE_SCANOUT_MESA,
+ EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
+ EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SCANOUT_MESA,
EGL_NONE
};
EGLint handle, stride, attribs[] = {
EGL_WIDTH, 0,
EGL_HEIGHT, 0,
- EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA,
- EGL_IMAGE_USE_MESA, EGL_IMAGE_USE_SCANOUT_MESA,
+ EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
+ EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SCANOUT_MESA,
EGL_NONE
};
EGLint attribs[] = {
EGL_WIDTH, 0,
EGL_HEIGHT, 0,
- EGL_IMAGE_STRIDE_MESA, 0,
- EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA,
+ EGL_DRM_BUFFER_STRIDE_MESA, 0,
+ EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
EGL_NONE
};
attribs[5] = buffers[0].pitch / 4;
output->image =
eglCreateImageKHR(c->base.display, c->base.context,
- EGL_DRM_IMAGE_MESA,
+ EGL_DRM_BUFFER_MESA,
(EGLClientBuffer) buffers[0].name,
attribs);
free(reply);
EGLint image_attribs[] = {
EGL_WIDTH, 0,
EGL_HEIGHT, 0,
- EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA,
- EGL_IMAGE_USE_MESA, EGL_IMAGE_USE_SCANOUT_MESA,
+ EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
+ EGL_DRM_BUFFER_USE_MESA, EGL_DRM_BUFFER_USE_SCANOUT_MESA,
EGL_NONE
};
wl_array_init(&drag->types);
drag->source = NULL;
- drag->target = NULL;
+
+ /* FIXME: We need to reset drag->target too, but can't right
+ * now because we need it for send/drop.
+ *
+ * drag->target = NULL; */
drag->time = 0;
drag->pointer_focus = NULL;
}
drag_send(struct wl_client *client,
struct wl_drag *drag, struct wl_array *contents)
{
- wl_client_post_event(client, &drag->base, WL_DRAG_DROP, contents);
+ wl_client_post_event(drag->target,
+ &drag->base, WL_DRAG_DROP, contents);
}
static void
EGLint attribs[] = {
EGL_WIDTH, 0,
EGL_HEIGHT, 0,
- EGL_IMAGE_STRIDE_MESA, 0,
- EGL_IMAGE_FORMAT_MESA, EGL_IMAGE_FORMAT_ARGB8888_MESA,
+ EGL_DRM_BUFFER_STRIDE_MESA, 0,
+ EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_FORMAT_ARGB32_MESA,
EGL_NONE
};
buffer->visual = visual;
buffer->image = eglCreateImageKHR(compositor->display,
compositor->context,
- EGL_DRM_IMAGE_MESA,
+ EGL_DRM_BUFFER_MESA,
(EGLClientBuffer) name, attribs);
if (buffer->image == NULL) {
/* FIXME: Define a real exception event instead of