<div dir="ltr"><div>I actually found the reason, in the function `weston_output_repaint`, the frame_callbacks <br></div><div>only send the done events for surface which has view on the compositor's view_list, <br></div><div>but this poses a dilemma, since I cannot either destroy or unmap the view before the</div><div>output repainted.</div><div><br></div><div>Sichem<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jul 28, 2018 at 8:15 PM, Sichem Zhou <span dir="ltr"><<a href="mailto:sichem.zh@gmail.com" target="_blank">sichem.zh@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Dear Weston devs:</div><div><br></div><div>Sorry for the bothering in when weston-5.0 is approaching, but I am stuck</div><div> in the project for three days I need some one's help very much.</div><div><br></div><div>I have a widget implementation of shell widgets that destroys the weston_view <br></div><div>when pressed Esc. The widget is implemented in wayland EGL. Here is the <br></div><div>view_destroy code.</div><div><br></div><div>void<br>twshell_close_ui_surface(<wbr>struct weston_surface *wd_surface)<br>{<br>        struct weston_view *view, *next;<br>        wd_surface->committed = NULL;<br>        wd_surface->committed_private = NULL;<br>        wl_list_for_each_safe(view, next, &wd_surface->views, surface_link) {<br>                weston_view_destroy(view);<br>        }<br>}</div><div><br></div><div>The weston_view is destroyed but the the buffer in the last commit was not <br></div><div>released and the done event was not sent to the widget. When I triggered <br></div><div>the event to show widget again, the client was stuck in EGLSwapbuffer. I <br></div><div>found out about this by using WAYLAND_DEBUG env variable, I hope to the <br></div><div>way to release the buffer after umapping the weston view. Thanks very much.</div><div><br></div><div>Regards,</div><div>Sichem<br></div></div>
</blockquote></div><br></div>