<div dir="ltr"><div><div><div><div>Hi,<br></div>Based on the wayland protocol specification for wl_surface::attach<br>>>If wl_surface.attach is sent with a NULL wl_buffer, the
following wl_surface.commit will remove the surface content.<br><br></div>Wondering if wl_surface_attach called with wl_buffer=NULL, will there be any wl_buffer release event or frame callbacks?<br><br></div>Modified the redraw in simple-shm.c as below and not receiving any callback or buffer release. It just got stuck.<br></div><div>The same thing is being done in qtwayland to hide the surface and it is getting stuck. Some help to check this case would be helpful.<br><br></div><div>static int odd = 1;<br>if(odd == 1){<br> wl_surface_attach(window->surface, buffer->buffer, 0, 0);<br> wl_surface_damage(window->surface,<br> 20, 20, window->width - 40, window->height - 40); <br> odd = 0;<br> }<br> else{<br> wl_surface_attach(window->surface, 0, 0, 0);<br> wl_surface_damage(window->surface,<br> 0, 0, 0, 0);<br> odd=1; <br> }<br><br></div><br><br>[823379.816] -> wl_compositor@4.create_surface(new id wl_surface@3)<br>[823379.949] -> xdg_shell@6.get_xdg_surface(new id xdg_surface@7, wl_surface@3)<br>[823380.120] -> xdg_surface@7.set_title("simple-shm")<br>[823380.244] -> wl_surface@3.damage(0, 0, 250, 250)<br>[823381.333] -> wl_shm@5.create_pool(new id wl_shm_pool@8, fd 5, 250000)<br>[823381.561] -> wl_shm_pool@8.create_buffer(new id wl_buffer@9, 0, 250, 250, 1000, 1)<br>[823381.870] -> wl_shm_pool@8.destroy()<br>[823384.880] -> wl_surface@3.attach(wl_buffer@9, 0, 0)<br>[823385.095] -> wl_surface@3.damage(20, 20, 210, 210)<br>[823385.317] -> wl_surface@3.frame(new id wl_callback@10)<br>[823385.443] -> wl_surface@3.commit()<br>[823388.852] wl_display@1.delete_id(8)<br>[823388.979] xdg_surface@7.configure(0, 0, array, 4)<br>[823389.238] -> xdg_surface@7.ack_configure(4)<br>[823401.773] wl_display@1.delete_id(10)<br>[823401.908] wl_buffer@9.release()<br>[823401.991] wl_callback@10.done(4056537)<br>[823404.239] -> wl_surface@3.attach(nil, 0, 0)<br>[823404.442] -> wl_surface@3.damage(0, 0, 0, 0)<br>[823404.663] -> wl_surface@3.frame(new id wl_callback@10)<br>[823404.792] -> wl_surface@3.commit()<br>[823406.292] xdg_surface@7.configure(0, 0, array, 5)<br>[823406.524] -> xdg_surface@7.ack_configure(5)<br><br></div>