window_get_child_allocation(gears->window, &allocation);
window_get_allocation(gears->window, &window_allocation);
- display_acquire_window_surface(gears->d,
- gears->window,
- gears->context);
+ if (display_acquire_window_surface(gears->d,
+ gears->window,
+ gears->context) < 0) {
+ die("Unable to acquire window surface, "
+ "compiled without cairo-egl?\n");
+ }
glViewport(allocation.x,
window_allocation.height - allocation.height - allocation.x,
return display->shell;
}
-void
+int
display_acquire_window_surface(struct display *display,
struct window *window,
EGLContext ctx)
cairo_device_t *device;
if (!window->cairo_surface)
- return;
+ return -1;
device = cairo_surface_get_device(window->cairo_surface);
if (!device)
- return;
+ return -1;
if (!ctx) {
if (device == display->rgb_device)
cairo_device_acquire(device);
if (!eglMakeCurrent(display->dpy, data->surf, data->surf, ctx))
fprintf(stderr, "failed to make surface current\n");
+
+ return 0;
+#else
+ return -1;
#endif
}
EGLConfig
display_get_argb_egl_config(struct display *d);
-void
+int
display_acquire_window_surface(struct display *display,
struct window *window,
EGLContext ctx);