URI: 
       Exit more gracefully on web process crash. - surf - surf browser, a WebKit based browser
  HTML git clone git://git.suckless.org/surf
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit c60523a702fbc77899457243f1a85e4990adfb97
   DIR parent befe481a9b970cf2bc90ca671e1df1d1082ac41e
  HTML Author: Quentin Rameau <quinq@fifth.space>
       Date:   Fri, 16 Mar 2018 12:44:04 +0100
       
       Exit more gracefully on web process crash.
       
       Diffstat:
         M surf.c                              |      14 ++++++++++++++
       
       1 file changed, 14 insertions(+), 0 deletions(-)
       ---
   DIR diff --git a/surf.c b/surf.c
       @@ -206,6 +206,9 @@ static void downloadstarted(WebKitWebContext *wc, WebKitDownload *d,
                                    Client *c);
        static void responsereceived(WebKitDownload *d, GParamSpec *ps, Client *c);
        static void download(Client *c, WebKitURIResponse *r);
       +static void webprocessterminated(WebKitWebView *v,
       +                                 WebKitWebProcessTerminationReason r,
       +                                 Client *c);
        static void closeview(WebKitWebView *v, Client *c);
        static void destroywin(GtkWidget* w, Client *c);
        
       @@ -1187,6 +1190,8 @@ newview(Client *c, WebKitWebView *rv)
                                 G_CALLBACK(permissionrequested), c);
                g_signal_connect(G_OBJECT(v), "ready-to-show",
                                 G_CALLBACK(showview), c);
       +        g_signal_connect(G_OBJECT(v), "web-process-terminated",
       +                         G_CALLBACK(webprocessterminated), c);
        
                return v;
        }
       @@ -1692,6 +1697,15 @@ download(Client *c, WebKitURIResponse *r)
        }
        
        void
       +webprocessterminated(WebKitWebView *v, WebKitWebProcessTerminationReason r,
       +                     Client *c)
       +{
       +        fprintf(stderr, "web process terminated: %s\n",
       +                r == WEBKIT_WEB_PROCESS_CRASHED ? "crashed" : "no memory");
       +        closeview(v, c);
       +}
       +
       +void
        closeview(WebKitWebView *v, Client *c)
        {
                gtk_widget_destroy(c->win);