Exit more gracefully on web process crash.

This commit is contained in:
Quentin Rameau 2018-03-16 12:44:04 +01:00
parent befe481a9b
commit c60523a702
1 changed files with 14 additions and 0 deletions

14
surf.c
View File

@ -206,6 +206,9 @@ static void downloadstarted(WebKitWebContext *wc, WebKitDownload *d,
Client *c); Client *c);
static void responsereceived(WebKitDownload *d, GParamSpec *ps, Client *c); static void responsereceived(WebKitDownload *d, GParamSpec *ps, Client *c);
static void download(Client *c, WebKitURIResponse *r); 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 closeview(WebKitWebView *v, Client *c);
static void destroywin(GtkWidget* w, Client *c); static void destroywin(GtkWidget* w, Client *c);
@ -1187,6 +1190,8 @@ newview(Client *c, WebKitWebView *rv)
G_CALLBACK(permissionrequested), c); G_CALLBACK(permissionrequested), c);
g_signal_connect(G_OBJECT(v), "ready-to-show", g_signal_connect(G_OBJECT(v), "ready-to-show",
G_CALLBACK(showview), c); G_CALLBACK(showview), c);
g_signal_connect(G_OBJECT(v), "web-process-terminated",
G_CALLBACK(webprocessterminated), c);
return v; return v;
} }
@ -1691,6 +1696,15 @@ download(Client *c, WebKitURIResponse *r)
spawn(c, &a); spawn(c, &a);
} }
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 void
closeview(WebKitWebView *v, Client *c) closeview(WebKitWebView *v, Client *c)
{ {