<div dir="ltr">Looks good to me.</div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/3/30 Philipp Brüschweiler <span dir="ltr"><<a href="mailto:blei42@gmail.com" target="_blank">blei42@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This will not catch the cases where weston crashes, but it's at least<br>
better than the current state.<br>
---<br>
 src/compositor.c | 28 +++++++++++++++++++---------<br>
 1 file changed, 19 insertions(+), 9 deletions(-)<br>
<br>
diff --git a/src/compositor.c b/src/compositor.c<br>
index a3d1ede..7a656e7 100644<br>
--- a/src/compositor.c<br>
+++ b/src/compositor.c<br>
@@ -3236,10 +3236,15 @@ weston_version(int *major, int *minor, int *micro)<br>
<br>
 static int on_term_signal(int signal_number, void *data)<br>
 {<br>
-       struct wl_display *display = data;<br>
+       struct weston_compositor *ec = data;<br>
<br>
        weston_log("caught signal %d\n", signal_number);<br>
-       wl_display_terminate(display);<br>
+<br>
+       /* Turn DPMS back on, so we're not left with a black screen */<br>
+       if (ec->state == WESTON_COMPOSITOR_SLEEPING)<br>
+               weston_compositor_dpms(ec, WESTON_DPMS_ON);<br>
+<br>
+       wl_display_terminate(ec->wl_display);<br>
<br>
        return 1;<br>
 }<br>
@@ -3577,15 +3582,9 @@ int main(int argc, char *argv[])<br>
        display = wl_display_create();<br>
<br>
        loop = wl_display_get_event_loop(display);<br>
-       signals[0] = wl_event_loop_add_signal(loop, SIGTERM, on_term_signal,<br>
-                                             display);<br>
-       signals[1] = wl_event_loop_add_signal(loop, SIGINT, on_term_signal,<br>
-                                             display);<br>
-       signals[2] = wl_event_loop_add_signal(loop, SIGQUIT, on_term_signal,<br>
-                                             display);<br>
<br>
        wl_list_init(&child_process_list);<br>
-       signals[3] = wl_event_loop_add_signal(loop, SIGCHLD, sigchld_handler,<br>
+       signals[0] = wl_event_loop_add_signal(loop, SIGCHLD, sigchld_handler,<br>
                                              NULL);<br>
<br>
        if (!backend) {<br>
@@ -3610,6 +3609,13 @@ int main(int argc, char *argv[])<br>
                exit(EXIT_FAILURE);<br>
        }<br>
<br>
+       signals[1] = wl_event_loop_add_signal(loop, SIGTERM, on_term_signal,<br>
+                                             ec);<br>
+       signals[2] = wl_event_loop_add_signal(loop, SIGINT, on_term_signal,<br>
+                                             ec);<br>
+       signals[3] = wl_event_loop_add_signal(loop, SIGQUIT, on_term_signal,<br>
+                                             ec);<br>
+<br>
        catch_signals();<br>
        segv_compositor = ec;<br>
<br>
@@ -3642,6 +3648,10 @@ int main(int argc, char *argv[])<br>
        wl_display_run(display);<br>
<br>
  out:<br>
+       /* Turn DPMS back on, so we're not left with a black screen */<br>
+       if (ec->state == WESTON_COMPOSITOR_SLEEPING)<br>
+               weston_compositor_dpms(ec, WESTON_DPMS_ON);<br>
+<br>
        /* prevent further rendering while shutting down */<br>
        ec->state = WESTON_COMPOSITOR_OFFSCREEN;<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
1.8.2<br>
<br>
_______________________________________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
</font></span></blockquote></div><br></div>