window.c: Fix compile/run using cairo without egl
authorBenjamin Franzke <benjaminfranzke@googlemail.com>
Sat, 16 Jul 2011 19:50:32 +0000 (19:50 +0000)
committerBenjamin Franzke <benjaminfranzke@googlemail.com>
Fri, 15 Jul 2011 17:56:04 +0000 (17:56 +0000)
clients/window.c
configure.ac

index 95e46d5..5679f89 100644 (file)
@@ -702,10 +702,13 @@ window_attach_surface(struct window *window)
 {
        struct display *display = window->display;
        struct wl_buffer *buffer;
+#ifdef HAVE_CAIRO_EGL
        struct egl_window_surface_data *data;
+#endif
        int32_t x, y;
 
        switch (window->buffer_type) {
+#ifdef HAVE_CAIRO_EGL
        case WINDOW_BUFFER_TYPE_EGL_WINDOW:
                data = cairo_surface_get_user_data(window->cairo_surface,
                                                   &surface_data_key);
@@ -716,6 +719,7 @@ window_attach_surface(struct window *window)
                                &window->server_allocation.height);
                break;
        case WINDOW_BUFFER_TYPE_EGL_IMAGE:
+#endif
        case WINDOW_BUFFER_TYPE_SHM:
                window_get_resize_dx_dy(window, &x, &y);
 
@@ -734,6 +738,8 @@ window_attach_surface(struct window *window)
                wl_display_sync_callback(display->display, free_surface,
                                         window);
                break;
+       default:
+               return;
        }
 
        if (window->fullscreen)
@@ -781,6 +787,7 @@ window_set_surface(struct window *window, cairo_surface_t *surface)
        window->cairo_surface = surface;
 }
 
+#ifdef HAVE_CAIRO_EGL
 static void
 window_resize_cairo_window_surface(struct window *window)
 {
@@ -800,6 +807,7 @@ window_resize_cairo_window_surface(struct window *window)
                                  window->allocation.width,
                                  window->allocation.height);
 }
+#endif
 
 void
 window_create_surface(struct window *window)
@@ -1508,8 +1516,12 @@ window_create_internal(struct display *display, struct window *parent,
        window->transparent = 1;
 
        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;
+#endif
        else
                window->buffer_type = WINDOW_BUFFER_TYPE_SHM;
 
@@ -2011,6 +2023,7 @@ display_acquire_window_surface(struct display *display,
                               struct window *window,
                               EGLContext ctx)
 {
+#ifdef HAVE_CAIRO_EGL
        struct egl_window_surface_data *data;
 
        if (!window->cairo_surface)
@@ -2025,6 +2038,7 @@ display_acquire_window_surface(struct display *display,
        cairo_device_acquire(display->device);
        if (!eglMakeCurrent(display->dpy, data->surf, data->surf, ctx))
                fprintf(stderr, "failed to make surface current\n");
+#endif
 }
 
 void
index badecfe..756b125 100644 (file)
@@ -101,7 +101,8 @@ if test x$enable_clients == xyes; then
   PKG_CHECK_MODULES(CAIRO_EGL, [cairo-egl >= 1.11.3],
                    [have_cairo_egl=yes], [have_cairo_egl=no])
   AS_IF([test "x$have_cairo_egl" = "xyes"],
-        [AC_DEFINE([HAVE_CAIRO_EGL], [1], [Have cairo-egl])])
+        [AC_DEFINE([HAVE_CAIRO_EGL], [1], [Have cairo-egl])],
+        [AC_MSG_WARN([Cairo-EGL not found - clients will use cairo image])])
 fi
 
 AM_CONDITIONAL(HAVE_POPPLER, test "x$have_poppler" = "xyes")