Create drawing contexts when creating windows

This commit is contained in:
XANTRONIX Development 2019-06-13 16:55:37 -05:00
parent 0083200cfa
commit 7dfe7a2cd3
3 changed files with 25 additions and 8 deletions

View file

@ -118,8 +118,8 @@ int main(int argc, char **argv) {
/* /*
* Set up the rendering surfaces * Set up the rendering surfaces
*/ */
fg = hexagram_window_create_fg_context(window); fg = hexagram_window_get_fg_context(window);
bg = hexagram_window_create_bg_context(window); bg = hexagram_window_get_bg_context(window);
/* /*
* Draw the background layer * Draw the background layer

View file

@ -30,8 +30,8 @@ int hexagram_window_refresh_bg(hexagram_window *window);
int hexagram_window_swap_buffer(hexagram_window *window); int hexagram_window_swap_buffer(hexagram_window *window);
cairo_t *hexagram_window_create_bg_context(hexagram_window *window); cairo_t *hexagram_window_get_bg_context(hexagram_window *window);
cairo_t *hexagram_window_create_fg_context(hexagram_window *window); cairo_t *hexagram_window_get_fg_context(hexagram_window *window);
#endif /* _HEXAGRAM_WINDOW_H */ #endif /* _HEXAGRAM_WINDOW_H */

View file

@ -28,6 +28,9 @@ struct _hexagram_window {
cairo_surface_t *surface_bg, cairo_surface_t *surface_bg,
*surface_fg; *surface_fg;
cairo_t *cairo_bg,
*cairo_fg;
}; };
hexagram_window *hexagram_window_new_x11(const char *display, hexagram_window *hexagram_window_new_x11(const char *display,
@ -121,8 +124,22 @@ hexagram_window *hexagram_window_new_x11(const char *display,
width, width,
height); height);
if ((window->cairo_bg = cairo_create(window->surface_bg)) == NULL) {
goto error_cairo_create_bg;
}
if ((window->cairo_fg = cairo_create(window->surface_fg)) == NULL) {
goto error_cairo_create_fg;
}
return window; return window;
error_cairo_create_fg:
cairo_destroy(window->cairo_bg);
error_cairo_create_bg:
cairo_surface_destroy(window->surface_fg);
error_cairo_xlib_surface_create_fg: error_cairo_xlib_surface_create_fg:
cairo_surface_destroy(window->surface_bg); cairo_surface_destroy(window->surface_bg);
@ -204,10 +221,10 @@ int hexagram_window_swap_buffer(hexagram_window *window) {
return XdbeSwapBuffers(window->display, &window->swapinfo, 1) == 0? -1: 1; return XdbeSwapBuffers(window->display, &window->swapinfo, 1) == 0? -1: 1;
} }
cairo_t *hexagram_window_create_bg_context(hexagram_window *window) { cairo_t *hexagram_window_get_bg_context(hexagram_window *window) {
return cairo_create(window->surface_bg); return window->cairo_bg;
} }
cairo_t *hexagram_window_create_fg_context(hexagram_window *window) { cairo_t *hexagram_window_get_fg_context(hexagram_window *window) {
return cairo_create(window->surface_fg); return window->cairo_fg;
} }