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);}