Fixes: https://codeberg.org/dwl/dwl/issues/601
RKEDCMUBUWQCBSFWJVFT4L4GJEIRX2PSC2QC2APAZIFX3HGTJH2QC
HQ7H76DZBXQOQEYAB7WD76B5R6KSY65ANHC5XTLDDMPJ7KPYCOAAC
I5C76NH3Q4SRQHGGJEUR2NA5HPW4KDG52HGZTLMAAZQGLHWXTQIAC
6US7XFRJWUNIUZHKTODZDU3DX6WO5K3J2G3ECIQYSVBDII3DXGWAC
7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC
EQRGODLKSVSPFSUZU7BV5ER72U4QS4ATSBKV544XXQVKKTOSC7EAC
N54JKDQTHG2GSXAXR6PGMVVEKAHLKENNDSQ2IUGKQUDHGA72J4XQC
}
void
gpureset(struct wl_listener *listener, void *data)
{
struct wlr_renderer *old_drw = drw;
struct wlr_allocator *old_alloc = alloc;
struct Monitor *m;
if (!(drw = wlr_renderer_autocreate(backend)))
die("couldn't recreate renderer");
if (!(alloc = wlr_allocator_autocreate(backend, drw)))
die("couldn't recreate allocator");
LISTEN_STATIC(&drw->events.lost, gpureset);
wlr_compositor_set_renderer(compositor, drw);
wl_list_for_each(m, &mons, link) {
wlr_output_init_render(m->wlr_output, alloc, drw);
}
wlr_allocator_destroy(old_alloc);
wlr_renderer_destroy(old_drw);