summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2011-06-23 08:18:37 +0200
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2011-06-23 08:18:37 +0200
commit0f7ce5150113c4ee74c49c3a260b85d9d310aab5 (patch)
tree6a7bf04caa18c52a55697534c8cbfaed11fec874
parent08d44c2bae062424de8d013f4549901ee807af6d (diff)
update pixmap-surface
-rw-r--r--egl-wayland-pixmap-surface.c30
1 files changed, 12 insertions, 18 deletions
diff --git a/egl-wayland-pixmap-surface.c b/egl-wayland-pixmap-surface.c
index 410402f..353529e 100644
--- a/egl-wayland-pixmap-surface.c
+++ b/egl-wayland-pixmap-surface.c
@@ -11,7 +11,6 @@
struct display {
struct wl_display *display;
- struct wl_egl_display *egl_display;
struct {
struct wl_compositor *compositor;
struct wl_shell *shell;
@@ -56,7 +55,7 @@ init_egl(struct display *display)
EGL_NONE
};
- display->egl.dpy = eglGetDisplay(display->egl_display);
+ display->egl.dpy = eglGetDisplay(display->display);
assert(display->egl.dpy);
assert(eglInitialize(display->egl.dpy, &major, &minor));
@@ -79,8 +78,7 @@ create_egl_surface(struct display *display, struct window *window)
visual = wl_display_get_premultiplied_argb_visual(display->display);
window->egl_pixmap =
- wl_egl_pixmap_create(display->egl_display,
- window->width,
+ wl_egl_pixmap_create(window->width,
window->height,
visual, 0);
window->buffer = NULL;
@@ -112,7 +110,7 @@ init_gl(struct window *window)
}
static void
-redraw(void *data, uint32_t time)
+redraw(struct wl_surface *surface, void *data, uint32_t time)
{
struct window *window = data;
static const GLfloat verts[3][2] = {
@@ -160,11 +158,9 @@ redraw(void *data, uint32_t time)
glPopMatrix();
if (!window->buffer)
- window->buffer = wl_egl_pixmap_create_buffer(
- window->display->egl_display, window->egl_pixmap);
+ window->buffer = wl_egl_pixmap_create_buffer(window->egl_pixmap);
//printf("buffer. %p\n", window->buffer);
glFlush();
- wl_egl_pixmap_flush(window->display->egl_display, window->egl_pixmap);
//eglSwapBuffers(window->display->egl.dpy, window->egl.surf);
wl_surface_attach(window->surface, window->buffer,
@@ -177,7 +173,8 @@ redraw(void *data, uint32_t time)
wl_surface_damage(window->surface, 0, 0,
window->width, window->height);
- wl_display_frame_callback(window->display->display, redraw, window);
+ wl_display_frame_callback(window->display->display, window->surface,
+ redraw, window);
}
enum window_location {
@@ -221,7 +218,7 @@ handle_configure(void *data, struct wl_shell *shell,
dy = window->attached_height - height;
if (window->buffer) {
- wl_buffer_destroy(window->buffer);
+ //wl_buffer_destroy(window->buffer);
window->buffer = NULL;
}
@@ -246,10 +243,10 @@ display_handle_global(struct wl_display *display, uint32_t id,
{
struct display *d = data;
- if (strcmp(interface, "compositor") == 0) {
- d->interface.compositor = wl_compositor_create(display, id);
- } else if (strcmp(interface, "shell") == 0) {
- d->interface.shell = wl_shell_create(display, id);
+ if (strcmp(interface, "wl_compositor") == 0) {
+ d->interface.compositor = wl_compositor_create(display, id, 1);
+ } else if (strcmp(interface, "wl_shell") == 0) {
+ d->interface.shell = wl_shell_create(display, id, 1);
wl_shell_add_listener(d->interface.shell, &wayland_shell_listener, d);
}
}
@@ -277,9 +274,6 @@ main(int argc, char **argv)
display.display = wl_display_connect(NULL);
assert(display.display);
- display.egl_display = wl_egl_display_create(display.display);
- assert(display.egl_display);
-
wl_display_add_global_listener(display.display,
display_handle_global, &display);
/* process connection events */
@@ -295,7 +289,7 @@ main(int argc, char **argv)
wl_surface_map_toplevel(window.surface);
- wl_display_frame_callback(display.display, redraw, &window);
+ wl_display_frame_callback(display.display, window.surface, redraw, &window);
wl_display_get_fd(display.display, event_mask_update, &display);
while (true)