diff options
author | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2011-06-23 08:18:37 +0200 |
---|---|---|
committer | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2011-06-23 08:18:37 +0200 |
commit | 0f7ce5150113c4ee74c49c3a260b85d9d310aab5 (patch) | |
tree | 6a7bf04caa18c52a55697534c8cbfaed11fec874 | |
parent | 08d44c2bae062424de8d013f4549901ee807af6d (diff) |
update pixmap-surface
-rw-r--r-- | egl-wayland-pixmap-surface.c | 30 |
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) |