From 10c03c3c9fd6e03f6460fb17b8fa263fb5038a68 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Tue, 4 Mar 2008 18:22:18 -0500 Subject: [PATCH] call a painting function --- dcompmgr.c | 15 +++++++++++++++ render.c | 9 +++++++++ render.h | 8 ++++++++ screen.c | 4 ++++ screen.h | 2 ++ 5 files changed, 38 insertions(+) create mode 100644 render.c create mode 100644 render.h diff --git a/dcompmgr.c b/dcompmgr.c index f72bf57..c03393c 100644 --- a/dcompmgr.c +++ b/dcompmgr.c @@ -111,6 +111,18 @@ event(d_display_t *dpy) } static void +paint(d_display_t *dpy) +{ + int i; + + for (i = 0; i < dpy->nscreens; ++i) { + d_screen_t *sc = display_screen_n(dpy, i); + + sc->paint(sc); + } +} + +static void run(d_display_t *dpy) { gboolean quit; @@ -121,6 +133,8 @@ run(d_display_t *dpy) FD_SET(dpy->fd, &fds); max = MAX(max, dpy->fd); + paint(dpy); + quit = FALSE; while (!quit) { int r; @@ -134,6 +148,7 @@ run(d_display_t *dpy) printf("select data\n"); /*if (FD_ISSET(dpy->fd, &fds))*/ { event(dpy); + paint(dpy); } } diff --git a/render.c b/render.c new file mode 100644 index 0000000..9d1ba92 --- /dev/null +++ b/render.c @@ -0,0 +1,9 @@ +#include "render.h" +#include +#include + +void render_paint_screen(struct d_screen *sc) +{ + (void)sc; + printf("painting\n"); +} diff --git a/render.h b/render.h new file mode 100644 index 0000000..128b8c0 --- /dev/null +++ b/render.h @@ -0,0 +1,8 @@ +#ifndef gc__render_h +#define gc__render_h + +struct d_screen; + +void render_paint_screen(struct d_screen *sc); + +#endif diff --git a/screen.c b/screen.c index 0c74e72..e238bc7 100644 --- a/screen.c +++ b/screen.c @@ -2,6 +2,7 @@ #include "display.h" #include "list.h" #include "window.h" +#include "render.h" #include "gettext.h" #include #include @@ -129,6 +130,9 @@ screen_init(d_screen_t *sc) xcb_change_window_attributes(sc->dpy->conn, sc->super.root, XCB_CW_EVENT_MASK, &mask); + /* use the render backend */ + sc->paint = render_paint_screen; + sc->winhash = g_hash_table_new((GHashFunc)xcb_window_hash, (GCompareFunc)xcb_window_compare); sc->stacking = list_new(); diff --git a/screen.h b/screen.h index 5a8ef8d..bfa93ed 100644 --- a/screen.h +++ b/screen.h @@ -21,6 +21,8 @@ typedef struct d_screen { GHashTable *winhash; struct d_list *stacking; + + void (*paint)(struct d_screen *sc); } d_screen_t; /*! Tries to register on the screen given by @sc. If it succeeds, it fills -- 1.9.1