ivi-shell: add shell surface labels
authorPekka Paalanen <pekka.paalanen@collabora.co.uk>
Mon, 7 Mar 2016 14:19:37 +0000 (16:19 +0200)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Thu, 24 Mar 2016 11:48:21 +0000 (13:48 +0200)
To be used by the Weston timeline feature for identifying surfaces in a
trace. The 'get_label' functionality can also be used by any debugging
code, too.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Eugen Friedrich <friedrix@gmail.com>
ivi-shell/ivi-shell.c

index 2ff37847501888c91ad0254df989067bf23782da..9c11f6fca9f977af60eecb2f6b0b1fbe31a41208 100644 (file)
@@ -121,6 +121,19 @@ ivi_shell_surface_configure(struct weston_surface *surface,
        }
 }
 
+static int
+ivi_shell_surface_get_label(struct weston_surface *surface,
+                           char *buf,
+                           size_t len)
+{
+       struct ivi_shell_surface *shell_surf = get_ivi_shell_surface(surface);
+
+       if (!shell_surf)
+               return snprintf(buf, len, "unidentified window in ivi-shell");
+
+       return snprintf(buf, len, "ivi-surface %#x", shell_surf->id_surface);
+}
+
 static void
 layout_surface_cleanup(struct ivi_shell_surface *ivisurf)
 {
@@ -131,6 +144,7 @@ layout_surface_cleanup(struct ivi_shell_surface *ivisurf)
 
        ivisurf->surface->configure = NULL;
        ivisurf->surface->configure_private = NULL;
+       weston_surface_set_label_func(ivisurf->surface, NULL);
        ivisurf->surface = NULL;
 
        // destroy weston_surface destroy signal.
@@ -262,6 +276,8 @@ application_surface_create(struct wl_client *client,
 
        weston_surface->configure = ivi_shell_surface_configure;
        weston_surface->configure_private = ivisurf;
+       weston_surface_set_label_func(weston_surface,
+                                     ivi_shell_surface_get_label);
 
        res = wl_resource_create(client, &ivi_surface_interface, 1, id);
        if (res == NULL) {