BW2EZIIAEAWT5MYAEMTMHOIIQXGZR7FHGU4KO7Q6IEHUF3WZLZRAC
PWBVW7HTUCT24NN3OLMFJ45AX54LO4XXEC6ELEC2LVCON4WDOULAC
P3BVYOM6YV7M33KYMI5XNLZ6F44BBAP3I6NXPNTTCUAAPVPJ3PVQC
QM6BQVVQOKLO6AYHJ272NTAOXJTVKN4FX7BU6J6YQKWBKEJDDFXQC
7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC
J6OSBEBQXZR5JZ5TOCCUPELBPUVEQULGCXURXLPY7WFYTDEQOU2AC
PLJJLNS7E2UXW2YARGBSV6IHZEBGL5EW354IMMHPDATY5DQD77DAC
4QUF4MKRSB5LYYS5FSYTCDSIEMYIERI2BQZLRGJ3GIGVYCPJVEPAC
LQPHYO7IIMLXHUD5IK657BO4BE3SGT5HYDRJDU5OFDF5YUXKIRTAC
wl_list_for_each(layersurface, layer_surfaces, link)
wlr_surface_for_each_surface(layersurface->layer_surface->surface,
renderlayersurface, layersurface);
}
void
renderlayersurface(struct wlr_surface *surface, int sx, int sy, void *data)
{
LayerSurface *layersurface = data;
struct wlr_texture *texture = wlr_surface_get_texture(surface);
struct wlr_output *output;
double ox = 0, oy = 0;
enum wl_output_transform transform;
struct wlr_box box;
float matrix[9];
struct timespec now;
wl_list_for_each(layersurface, layer_surfaces, link) {
rdata.output = layersurface->layer_surface->output;
rdata.when = now;
rdata.x = layersurface->geo.x;
rdata.y = layersurface->geo.y;
output = layersurface->layer_surface->output;
wlr_output_layout_output_coords(output_layout, output, &ox, &oy);
ox += layersurface->geo.x + sx, oy += layersurface->geo.y + sy;
transform = wlr_output_transform_invert(surface->current.transform);
memcpy(&box, &layersurface->geo, sizeof(struct wlr_box));
wlr_matrix_project_box(matrix, &box, transform, 0,
output->transform_matrix);
wlr_render_texture_with_matrix(drw, texture, matrix, 1);
clock_gettime(CLOCK_MONOTONIC, &now);
wlr_surface_send_frame_done(surface, &now);
renderlayer(m, &m->layers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND]);
renderlayer(m, &m->layers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM]);
renderlayer(&m->layers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND], &now);
renderlayer(&m->layers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM], &now);