From 747638b46be785d2e00d00cae1030518193858a7 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Kristian=20H=C3=B8gsberg?= Date: Mon, 12 Jul 2010 17:06:06 -0400 Subject: [PATCH] Fix window picking order --- compositor.c | 6 +++--- wayland-util.h | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/compositor.c b/compositor.c index f3017ab..824bf0d 100644 --- a/compositor.c +++ b/compositor.c @@ -335,7 +335,7 @@ wlsc_surface_raise(struct wlsc_surface *surface) struct wlsc_compositor *compositor = surface->compositor; wl_list_remove(&surface->link); - wl_list_insert(compositor->surface_list.prev, &surface->link); + wl_list_insert(&compositor->surface_list, &surface->link); } static void @@ -344,7 +344,7 @@ wlsc_surface_lower(struct wlsc_surface *surface) struct wlsc_compositor *compositor = surface->compositor; wl_list_remove(&surface->link); - wl_list_insert(&compositor->surface_list, &surface->link); + wl_list_insert(compositor->surface_list.prev, &surface->link); } void @@ -372,7 +372,7 @@ wlsc_output_repaint(struct wlsc_output *output) else glClear(GL_COLOR_BUFFER_BIT); - wl_list_for_each(es, &ec->surface_list, link) + wl_list_for_each_reverse(es, &ec->surface_list, link) wlsc_surface_draw(es, output); if (ec->focus) diff --git a/wayland-util.h b/wayland-util.h index bc9d89b..6ccc56a 100644 --- a/wayland-util.h +++ b/wayland-util.h @@ -98,6 +98,11 @@ int wl_list_empty(struct wl_list *list); &pos->member != (head); \ pos = __container_of(pos->member.next, pos, member)) +#define wl_list_for_each_reverse(pos, head, member) \ + for (pos = __container_of((head)->prev, pos, member); \ + &pos->member != (head); \ + pos = __container_of(pos->member.prev, pos, member)) + struct wl_array { uint32_t size; uint32_t alloc; -- 2.7.4