This will help once we get to implementing layer-shell
P3BVYOM6YV7M33KYMI5XNLZ6F44BBAP3I6NXPNTTCUAAPVPJ3PVQC
XKWY25ZVEJIJU7R23CEG5CTYRAWKZ5FXSHY3ZEZRGCIWYIKQSLOAC
D425ND7AT3F7QJ3CCSESMVDOC3J5C5P32M5SJDBHECZJXLHNQ2FAC
J6OSBEBQXZR5JZ5TOCCUPELBPUVEQULGCXURXLPY7WFYTDEQOU2AC
7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC
HHQZAOG5ZVAAVGOEGOYMX2MMMTCDGAXN2AST2MXIHF4RAEEK3MHAC
LQPHYO7IIMLXHUD5IK657BO4BE3SGT5HYDRJDU5OFDF5YUXKIRTAC
CJH33PU2NGWN3E6HQQ3QE6PB25JVMXWJXZTSP4ZGPU4TZRZGNLYAC
O5JVMDEEKP334BAYMJ6HHXROW4X4WC24JHCYZTKJRQE5UGYXV7YQC
renderclients(Monitor *m, struct timespec *now)
{
/* Each subsequent window we render is rendered on top of the last. Because
* our stacking list is ordered front-to-back, we iterate over it backwards. */
Client *c;
wl_list_for_each_reverse(c, &stack, slink) {
/* Only render clients which are on this monitor. */
/* XXX consider checking wlr_output_layout_intersects, in case a
* window can be seen on multiple outputs */
if (!VISIBLEON(c, m))
continue;
struct render_data rdata = {
.output = m->wlr_output,
.when = now,
.x = c->x,
.y = c->y,
};
/* This calls our render function for each surface among the
* xdg_surface's toplevel and popups. */
wlr_xdg_surface_for_each_surface(c->xdg_surface, render, &rdata);
}
}
void
/* Each subsequent window we render is rendered on top of the last. Because
* our stacking list is ordered front-to-back, we iterate over it backwards. */
Client *c;
wl_list_for_each_reverse(c, &stack, slink) {
/* Only render clients which are on this monitor. */
/* XXX consider checking wlr_output_layout_intersects, in case a
* window can be seen on multiple outputs */
if (!VISIBLEON(c, m))
continue;
renderclients(m, &now);
struct render_data rdata = {
.output = m->wlr_output,
.when = &now,
.x = c->x,
.y = c->y,
};
/* This calls our render function for each surface among the
* xdg_surface's toplevel and popups. */
wlr_xdg_surface_for_each_surface(c->xdg_surface, render, &rdata);
}