Merge pull request #142 from psychon/check-cairo-setup
Test if cairo-xcb is usable during startup
This commit is contained in:
commit
6c0a21ec04
|
@ -437,6 +437,9 @@ main(int argc, char **argv)
|
||||||
if (xcb_cursor_context_new(globalconf.connection, globalconf.screen, &globalconf.cursor_ctx) < 0)
|
if (xcb_cursor_context_new(globalconf.connection, globalconf.screen, &globalconf.cursor_ctx) < 0)
|
||||||
fatal("Failed to initialize xcb-cursor");
|
fatal("Failed to initialize xcb-cursor");
|
||||||
|
|
||||||
|
/* Did we get some usable data from the above X11 setup? */
|
||||||
|
draw_test_cairo_xcb();
|
||||||
|
|
||||||
/* initialize dbus */
|
/* initialize dbus */
|
||||||
a_dbus_init();
|
a_dbus_init();
|
||||||
|
|
||||||
|
|
16
draw.c
16
draw.c
|
@ -21,6 +21,7 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "draw.h"
|
#include "draw.h"
|
||||||
|
#include "globalconf.h"
|
||||||
|
|
||||||
#include <langinfo.h>
|
#include <langinfo.h>
|
||||||
#include <iconv.h>
|
#include <iconv.h>
|
||||||
|
@ -298,4 +299,19 @@ uint8_t draw_visual_depth(const xcb_screen_t *s, xcb_visualid_t vis)
|
||||||
fatal("Could not find a visual's depth");
|
fatal("Could not find a visual's depth");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void draw_test_cairo_xcb(void)
|
||||||
|
{
|
||||||
|
xcb_pixmap_t pixmap = xcb_generate_id(globalconf.connection);
|
||||||
|
xcb_create_pixmap(globalconf.connection, globalconf.default_depth, pixmap,
|
||||||
|
globalconf.screen->root, 1, 1);
|
||||||
|
cairo_surface_t *surface = cairo_xcb_surface_create(globalconf.connection,
|
||||||
|
pixmap, globalconf.visual, 1, 1);
|
||||||
|
if(cairo_surface_status(surface) != CAIRO_STATUS_SUCCESS)
|
||||||
|
fatal("Could not set up display: got cairo surface with status %s",
|
||||||
|
cairo_status_to_string(cairo_surface_status(surface)));
|
||||||
|
cairo_surface_finish(surface);
|
||||||
|
cairo_surface_destroy(surface);
|
||||||
|
xcb_free_pixmap(globalconf.connection, pixmap);
|
||||||
|
}
|
||||||
|
|
||||||
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
||||||
|
|
2
draw.h
2
draw.h
|
@ -75,5 +75,7 @@ xcb_visualtype_t *draw_default_visual(const xcb_screen_t *s);
|
||||||
xcb_visualtype_t *draw_argb_visual(const xcb_screen_t *s);
|
xcb_visualtype_t *draw_argb_visual(const xcb_screen_t *s);
|
||||||
uint8_t draw_visual_depth(const xcb_screen_t *s, xcb_visualid_t vis);
|
uint8_t draw_visual_depth(const xcb_screen_t *s, xcb_visualid_t vis);
|
||||||
|
|
||||||
|
void draw_test_cairo_xcb(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
// vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
|
||||||
|
|
Loading…
Reference in New Issue