On Wed, May 22, 2013 at 10:20:05AM +0300, ppaala...@gmail.com wrote: > From: Pekka Paalanen <pekka.paala...@collabora.co.uk> > > Apparently some compilers complain about set but not used variables > 'available' and 'bufs', but I don't get the warning. Still, separate the > debugging code from shm_surface_buffer_release(), so that we only > compute 'bufs' when it is printed. This should fix the warnings. > > The debugging code now prints the shm_surface buffer state before and > after, instead of just after.
Thanks Pekka. Kristian > Signed-off-by: Pekka Paalanen <pekka.paala...@collabora.co.uk> > --- > clients/window.c | 48 +++++++++++++++++++++++++++++++----------------- > 1 file changed, 31 insertions(+), 17 deletions(-) > > diff --git a/clients/window.c b/clients/window.c > index 40c0ef4..627f1e8 100644 > --- a/clients/window.c > +++ b/clients/window.c > @@ -420,7 +420,9 @@ enum window_location { > > static const cairo_user_data_key_t shm_surface_data_key; > > -#if 0 > +/* #define DEBUG */ > + > +#ifdef DEBUG > > static void > debug_print(void *proxy, int line, const char *func, const char *fmt, ...) > @@ -893,20 +895,43 @@ to_shm_surface(struct toysurface *base) > } > > static void > +shm_surface_buffer_state_debug(struct shm_surface *surface, const char *msg) > +{ > +#ifdef DEBUG > + struct shm_surface_leaf *leaf; > + char bufs[MAX_LEAVES + 1]; > + int i; > + > + for (i = 0; i < MAX_LEAVES; i++) { > + leaf = &surface->leaf[i]; > + > + if (leaf->busy) > + bufs[i] = 'b'; > + else if (leaf->cairo_surface) > + bufs[i] = 'a'; > + else > + bufs[i] = ' '; > + } > + > + bufs[MAX_LEAVES] = '\0'; > + DBG_OBJ(surface->surface, "%s, leaves [%s]\n", msg, bufs); > +#endif > +} > + > +static void > shm_surface_buffer_release(void *data, struct wl_buffer *buffer) > { > struct shm_surface *surface = data; > struct shm_surface_leaf *leaf; > int i; > int free_found; > - int available = MAX_LEAVES; > - char bufs[MAX_LEAVES + 1]; > + > + shm_surface_buffer_state_debug(surface, "buffer_release before"); > > for (i = 0; i < MAX_LEAVES; i++) { > leaf = &surface->leaf[i]; > if (leaf->data && leaf->data->buffer == buffer) { > leaf->busy = 0; > - available = i; > break; > } > } > @@ -917,27 +942,16 @@ shm_surface_buffer_release(void *data, struct wl_buffer > *buffer) > for (i = 0; i < MAX_LEAVES; i++) { > leaf = &surface->leaf[i]; > > - if (leaf->busy) > - bufs[i] = 'b'; > - else if (leaf->cairo_surface) > - bufs[i] = 'a'; > - else > - bufs[i] = ' '; > - > if (!leaf->cairo_surface || leaf->busy) > continue; > > if (!free_found) > free_found = 1; > - else { > + else > shm_surface_leaf_release(leaf); > - bufs[i] = '*'; > - } > } > > - bufs[MAX_LEAVES] = '\0'; > - DBG_OBJ(surface->surface, "leaf %d released, leaves [%s]\n", > - available, bufs); > + shm_surface_buffer_state_debug(surface, "buffer_release after"); > } > > static const struct wl_buffer_listener shm_surface_buffer_listener = { > -- > 1.8.1.5 > _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel