glClear(GL_COLOR_BUFFER_BIT);
wl_list_for_each_reverse(es, &ec->surface_list, link) {
- if (ec->switcher &&
- ec->switcher->current == es)
+ if (ec->overlay == es)
continue;
if (es->visual == &ec->compositor.rgb_visual) {
}
}
- if (ec->switcher)
- wlsc_surface_draw(ec->switcher->current,
- output, &total_damage);
+ if (ec->overlay)
+ wlsc_surface_draw(ec->overlay, output, &total_damage);
if (ec->focus)
wl_list_for_each(eid, &ec->input_device_list, link)
pixman_region32_t damage_region;
struct wl_array vertices, indices;
+ struct wlsc_surface *overlay;
struct wlsc_switcher *switcher;
uint32_t focus;
int
wlsc_shell_init(struct wlsc_compositor *ec);
-struct wlsc_switcher {
- struct wlsc_compositor *compositor;
- struct wlsc_surface *current;
- struct wl_listener listener;
-};
-
void
wlsc_switcher_init(struct wlsc_compositor *compositor);
#include "compositor.h"
+struct wlsc_switcher {
+ struct wlsc_compositor *compositor;
+ struct wlsc_surface *current;
+ struct wl_listener listener;
+};
+
static void
wlsc_switcher_next(struct wlsc_switcher *switcher)
{
wl_list_remove(&switcher->listener.link);
wl_list_insert(switcher->current->surface.destroy_listener_list.prev,
&switcher->listener.link);
+ switcher->compositor->overlay = switcher->current;
wlsc_surface_damage(switcher->current);
}
wlsc_surface_activate(compositor->switcher->current, wd, time);
wlsc_switcher_destroy(compositor->switcher);
compositor->switcher = NULL;
+ compositor->overlay = NULL;
}
}