libweston: Notify timeline of object modification
We notify the timeline of the fact that the object suffered modifications through the 'set_label' function. Remove the old refresh variable. Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
This commit is contained in:
@@ -2049,6 +2049,10 @@ weston_log_ctx_compositor_destroy(struct weston_compositor *compositor);
|
|||||||
int
|
int
|
||||||
weston_compositor_enable_content_protection(struct weston_compositor *compositor);
|
weston_compositor_enable_content_protection(struct weston_compositor *compositor);
|
||||||
|
|
||||||
|
void
|
||||||
|
weston_timeline_refresh_subscription_objects(struct weston_compositor *wc,
|
||||||
|
void *object);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -42,14 +42,6 @@ struct weston_timeline_object {
|
|||||||
|
|
||||||
/* Object id in the timeline JSON output. 0 is invalid. */
|
/* Object id in the timeline JSON output. 0 is invalid. */
|
||||||
unsigned id;
|
unsigned id;
|
||||||
|
|
||||||
/*
|
|
||||||
* If non-zero, forces a re-emission of object description.
|
|
||||||
* Should be set to non-zero, when changing long-lived
|
|
||||||
* object state that is not emitted on normal timeline
|
|
||||||
* events.
|
|
||||||
*/
|
|
||||||
unsigned force_refresh;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* WESTON_TIMELINE_OBJECT_H */
|
#endif /* WESTON_TIMELINE_OBJECT_H */
|
||||||
|
|||||||
@@ -4088,7 +4088,8 @@ weston_surface_set_label_func(struct weston_surface *surface,
|
|||||||
char *, size_t))
|
char *, size_t))
|
||||||
{
|
{
|
||||||
surface->get_label = desc;
|
surface->get_label = desc;
|
||||||
surface->timeline.force_refresh = 1;
|
weston_timeline_refresh_subscription_objects(surface->compositor,
|
||||||
|
surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Get the size of surface contents
|
/** Get the size of surface contents
|
||||||
|
|||||||
@@ -308,6 +308,34 @@ emit_gpu_timestamp(struct timeline_emit_context *ctx, void *obj)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct weston_timeline_subscription_object *
|
||||||
|
weston_timeline_get_subscription_object(struct weston_log_subscription *sub,
|
||||||
|
void *object)
|
||||||
|
{
|
||||||
|
struct weston_timeline_subscription *tl_sub;
|
||||||
|
|
||||||
|
tl_sub = weston_log_subscription_get_data(sub);
|
||||||
|
if (!tl_sub)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return weston_timeline_subscription_search(tl_sub, object);
|
||||||
|
}
|
||||||
|
|
||||||
|
WL_EXPORT void
|
||||||
|
weston_timeline_refresh_subscription_objects(struct weston_compositor *wc,
|
||||||
|
void *object)
|
||||||
|
{
|
||||||
|
struct weston_log_subscription *sub = NULL;
|
||||||
|
|
||||||
|
while ((sub = weston_log_subscription_iterate(wc->timeline, sub))) {
|
||||||
|
struct weston_timeline_subscription_object *sub_obj;
|
||||||
|
|
||||||
|
sub_obj = weston_timeline_get_subscription_object(sub, object);
|
||||||
|
if (sub_obj)
|
||||||
|
sub_obj->force_refresh = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
typedef int (*type_func)(struct timeline_emit_context *ctx, void *obj);
|
typedef int (*type_func)(struct timeline_emit_context *ctx, void *obj);
|
||||||
|
|
||||||
static const type_func type_dispatch[] = {
|
static const type_func type_dispatch[] = {
|
||||||
|
|||||||
Reference in New Issue
Block a user