window: Drop EGLImage surface type
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 10 Apr 2012 15:49:45 +0000 (11:49 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 10 Apr 2012 15:49:45 +0000 (11:49 -0400)
clients/window.c
clients/window.h

index 8a682b4..53f8593 100644 (file)
@@ -313,132 +313,6 @@ display_create_egl_window_surface(struct display *display,
        return cairo_surface;
 }
 
-struct egl_image_surface_data {
-       struct surface_data data;
-       cairo_device_t *device;
-       EGLImageKHR image;
-       GLuint texture;
-       struct display *display;
-       struct wl_egl_pixmap *pixmap;
-};
-
-static void
-egl_image_surface_data_destroy(void *p)
-{
-       struct egl_image_surface_data *data = p;
-       struct display *d = data->display;
-
-       cairo_device_acquire(data->device);
-       glDeleteTextures(1, &data->texture);
-       cairo_device_release(data->device);
-
-       d->destroy_image(d->dpy, data->image);
-       wl_buffer_destroy(data->data.buffer);
-       wl_egl_pixmap_destroy(data->pixmap);
-       free(p);
-}
-
-EGLImageKHR
-display_get_image_for_egl_image_surface(struct display *display,
-                                       cairo_surface_t *surface)
-{
-       struct egl_image_surface_data *data;
-
-       data = cairo_surface_get_user_data (surface, &surface_data_key);
-
-       return data->image;
-}
-
-static cairo_surface_t *
-display_create_egl_image_surface(struct display *display,
-                                uint32_t flags,
-                                struct rectangle *rectangle)
-{
-       struct egl_image_surface_data *data;
-       EGLDisplay dpy = display->dpy;
-       cairo_surface_t *surface;
-       cairo_content_t content;
-
-       data = malloc(sizeof *data);
-       if (data == NULL)
-               return NULL;
-
-       data->display = display;
-
-       data->pixmap = wl_egl_pixmap_create(rectangle->width,
-                                           rectangle->height, 0);
-       if (data->pixmap == NULL) {
-               free(data);
-               return NULL;
-       }
-
-       data->device = display->argb_device;
-       content = CAIRO_CONTENT_COLOR_ALPHA;
-
-       data->image = display->create_image(dpy, NULL,
-                                           EGL_NATIVE_PIXMAP_KHR,
-                                           (EGLClientBuffer) data->pixmap,
-                                           NULL);
-       if (data->image == EGL_NO_IMAGE_KHR) {
-               wl_egl_pixmap_destroy(data->pixmap);
-               free(data);
-               return NULL;
-       }
-
-       data->data.buffer =
-               wl_egl_pixmap_create_buffer(data->pixmap);
-
-       cairo_device_acquire(data->device);
-       glGenTextures(1, &data->texture);
-       glBindTexture(GL_TEXTURE_2D, data->texture);
-       display->image_target_texture_2d(GL_TEXTURE_2D, data->image);
-       cairo_device_release(data->device);
-
-       surface = cairo_gl_surface_create_for_texture(data->device,
-                                                     content,
-                                                     data->texture,
-                                                     rectangle->width,
-                                                     rectangle->height);
-
-       cairo_surface_set_user_data (surface, &surface_data_key,
-                                    data, egl_image_surface_data_destroy);
-
-       return surface;
-}
-
-static cairo_surface_t *
-display_create_egl_image_surface_from_file(struct display *display,
-                                          const char *filename,
-                                          struct rectangle *rect)
-{
-       cairo_surface_t *surface;
-       pixman_image_t *image;
-       struct egl_image_surface_data *data;
-
-       image = load_image(filename);
-       if (image == NULL)
-               return NULL;
-
-       surface = display_create_egl_image_surface(display, 0, rect);
-       if (surface == NULL) {
-               pixman_image_unref(image);
-               return NULL;
-       }
-
-       data = cairo_surface_get_user_data(surface, &surface_data_key);
-
-       cairo_device_acquire(display->argb_device);
-       glBindTexture(GL_TEXTURE_2D, data->texture);
-       glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, rect->width, rect->height,
-                       GL_RGBA, GL_UNSIGNED_BYTE,
-                       pixman_image_get_data(image));
-       cairo_device_release(display->argb_device);
-
-       pixman_image_unref(image);
-
-       return surface;
-}
-
 #endif
 
 struct wl_buffer *
@@ -750,7 +624,6 @@ window_attach_surface(struct window *window)
                                &window->server_allocation.width,
                                &window->server_allocation.height);
                break;
-       case WINDOW_BUFFER_TYPE_EGL_IMAGE:
 #endif
        case WINDOW_BUFFER_TYPE_SHM:
                buffer =
@@ -851,11 +724,6 @@ window_create_surface(struct window *window)
                                                 window->surface,
                                                 &window->allocation, flags);
                break;
-       case WINDOW_BUFFER_TYPE_EGL_IMAGE:
-               surface = display_create_surface(window->display,
-                                                NULL,
-                                                &window->allocation, flags);
-               break;
 #endif
        case WINDOW_BUFFER_TYPE_SHM:
                surface = display_create_shm_surface(window->display,
@@ -2332,7 +2200,6 @@ window_create_internal(struct display *display, struct window *parent)
 
        if (display->dpy)
 #ifdef HAVE_CAIRO_EGL
-               /* FIXME: make TYPE_EGL_IMAGE choosable for testing */
                window->buffer_type = WINDOW_BUFFER_TYPE_EGL_WINDOW;
 #else
                window->buffer_type = WINDOW_BUFFER_TYPE_SHM;
index e6b7b4b..628c4ae 100644 (file)
@@ -253,7 +253,6 @@ window_create_surface(struct window *window);
 
 enum window_buffer_type {
        WINDOW_BUFFER_TYPE_EGL_WINDOW,
-       WINDOW_BUFFER_TYPE_EGL_IMAGE,
        WINDOW_BUFFER_TYPE_SHM,
 };