xwm: set the shell_surface's title

add a new function pointer to the weston_shell_interface struct that
shells will set accordingly.
diff --git a/src/xwayland/window-manager.c b/src/xwayland/window-manager.c
index f775734..b4f64d3 100644
--- a/src/xwayland/window-manager.c
+++ b/src/xwayland/window-manager.c
@@ -363,6 +363,8 @@
 weston_wm_window_read_properties(struct weston_wm_window *window)
 {
 	struct weston_wm *wm = window->wm;
+	struct weston_shell_interface *shell_interface =
+		&wm->server->compositor->shell_interface;
 
 #define F(field) offsetof(struct weston_wm_window, field)
 	const struct {
@@ -468,6 +470,9 @@
 		}
 		free(reply);
 	}
+
+	if (window->shsurf && window->name)
+		shell_interface->set_title(window->shsurf, window->name);
 }
 
 static void
@@ -1875,6 +1880,9 @@
 
 	wm_log("surface for xid %d destroyed\n", window->id);
 
+	/* This should have been freed by the shell.
+       Don't try to use it later. */
+	window->shsurf = NULL;
 	window->surface = NULL;
 }
 
@@ -2029,6 +2037,9 @@
 						      window->surface,
 						      &shell_client);
 
+	if (window->name)
+		shell_interface->set_title(window->shsurf, window->name);
+
 	if (window->fullscreen) {
 		window->saved_width = window->width;
 		window->saved_height = window->height;