weston-log: Add 'destroy_subscription' callback for the subscription
As 'new_subscription' can create additional objects, 'destroy_subscription' will be needed when cleaning up. As this requires a libweston_major bump (noticed by @pq), bump it up to 8. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Suggested-by: Daniel Stone <daniel.stone@collabora.com>
This commit is contained in:
+2
-2
@@ -3187,7 +3187,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
log_scope = weston_compositor_add_log_scope(log_ctx, "log",
|
log_scope = weston_compositor_add_log_scope(log_ctx, "log",
|
||||||
"Weston and Wayland log\n", NULL, NULL);
|
"Weston and Wayland log\n", NULL, NULL, NULL);
|
||||||
|
|
||||||
weston_log_file_open(log);
|
weston_log_file_open(log);
|
||||||
weston_log_set_handler(vlog, vlog_continue);
|
weston_log_set_handler(vlog, vlog_continue);
|
||||||
@@ -3274,7 +3274,7 @@ int main(int argc, char *argv[])
|
|||||||
weston_compositor_add_log_scope(log_ctx,
|
weston_compositor_add_log_scope(log_ctx,
|
||||||
"proto",
|
"proto",
|
||||||
"Wayland protocol dump for all clients.\n",
|
"Wayland protocol dump for all clients.\n",
|
||||||
NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
|
|
||||||
if (debug_protocol) {
|
if (debug_protocol) {
|
||||||
protologger = wl_display_add_protocol_logger(display,
|
protologger = wl_display_add_protocol_logger(display,
|
||||||
|
|||||||
@@ -67,6 +67,7 @@ weston_compositor_add_log_scope(struct weston_log_context *compositor,
|
|||||||
const char *name,
|
const char *name,
|
||||||
const char *description,
|
const char *description,
|
||||||
weston_log_scope_cb new_subscription,
|
weston_log_scope_cb new_subscription,
|
||||||
|
weston_log_scope_cb destroy_subscription,
|
||||||
void *user_data);
|
void *user_data);
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -3408,7 +3408,7 @@ drm_backend_create(struct weston_compositor *compositor,
|
|||||||
b->debug = weston_compositor_add_log_scope(compositor->weston_log_ctx,
|
b->debug = weston_compositor_add_log_scope(compositor->weston_log_ctx,
|
||||||
"drm-backend",
|
"drm-backend",
|
||||||
"Debug messages from DRM/KMS backend\n",
|
"Debug messages from DRM/KMS backend\n",
|
||||||
NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
|
|
||||||
compositor->backend = &b->base;
|
compositor->backend = &b->base;
|
||||||
|
|
||||||
|
|||||||
@@ -7309,7 +7309,7 @@ weston_compositor_create(struct wl_display *display,
|
|||||||
ec->debug_scene =
|
ec->debug_scene =
|
||||||
weston_compositor_add_log_scope(ec->weston_log_ctx, "scene-graph",
|
weston_compositor_add_log_scope(ec->weston_log_ctx, "scene-graph",
|
||||||
"Scene graph details\n",
|
"Scene graph details\n",
|
||||||
debug_scene_graph_cb,
|
debug_scene_graph_cb, NULL,
|
||||||
ec);
|
ec);
|
||||||
|
|
||||||
return ec;
|
return ec;
|
||||||
|
|||||||
@@ -343,6 +343,6 @@ weston_compositor_enable_content_protection(struct weston_compositor *compositor
|
|||||||
cp->debug = weston_compositor_add_log_scope(compositor->weston_log_ctx,
|
cp->debug = weston_compositor_add_log_scope(compositor->weston_log_ctx,
|
||||||
"content-protection-debug",
|
"content-protection-debug",
|
||||||
"debug-logs for content-protection",
|
"debug-logs for content-protection",
|
||||||
NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ struct weston_log_scope {
|
|||||||
char *name;
|
char *name;
|
||||||
char *desc;
|
char *desc;
|
||||||
weston_log_scope_cb new_subscription;
|
weston_log_scope_cb new_subscription;
|
||||||
|
weston_log_scope_cb destroy_subscription;
|
||||||
void *user_data;
|
void *user_data;
|
||||||
struct wl_list compositor_link;
|
struct wl_list compositor_link;
|
||||||
struct wl_list subscription_list; /**< weston_log_subscription::source_link */
|
struct wl_list subscription_list; /**< weston_log_subscription::source_link */
|
||||||
@@ -260,6 +261,10 @@ void
|
|||||||
weston_log_subscription_destroy(struct weston_log_subscription *sub)
|
weston_log_subscription_destroy(struct weston_log_subscription *sub)
|
||||||
{
|
{
|
||||||
assert(sub);
|
assert(sub);
|
||||||
|
|
||||||
|
if (sub->source->destroy_subscription)
|
||||||
|
sub->source->destroy_subscription(sub, sub->source->user_data);
|
||||||
|
|
||||||
if (sub->owner)
|
if (sub->owner)
|
||||||
wl_list_remove(&sub->owner_link);
|
wl_list_remove(&sub->owner_link);
|
||||||
|
|
||||||
@@ -518,6 +523,8 @@ weston_compositor_is_debug_protocol_enabled(struct weston_compositor *wc)
|
|||||||
* @param description The log scope description for humans; must not be NULL.
|
* @param description The log scope description for humans; must not be NULL.
|
||||||
* @param new_subscription Optional callback when a client subscribes to this
|
* @param new_subscription Optional callback when a client subscribes to this
|
||||||
* scope.
|
* scope.
|
||||||
|
* @param destroy_subscription Optional callback when a client destroys the
|
||||||
|
* subscription.
|
||||||
* @param user_data Optional user data pointer for the callback.
|
* @param user_data Optional user data pointer for the callback.
|
||||||
* @returns A valid pointer on success, NULL on failure.
|
* @returns A valid pointer on success, NULL on failure.
|
||||||
*
|
*
|
||||||
@@ -561,6 +568,7 @@ weston_compositor_add_log_scope(struct weston_log_context *log_ctx,
|
|||||||
const char *name,
|
const char *name,
|
||||||
const char *description,
|
const char *description,
|
||||||
weston_log_scope_cb new_subscription,
|
weston_log_scope_cb new_subscription,
|
||||||
|
weston_log_scope_cb destroy_subscription,
|
||||||
void *user_data)
|
void *user_data)
|
||||||
{
|
{
|
||||||
struct weston_log_scope *scope;
|
struct weston_log_scope *scope;
|
||||||
@@ -593,6 +601,7 @@ weston_compositor_add_log_scope(struct weston_log_context *log_ctx,
|
|||||||
scope->name = strdup(name);
|
scope->name = strdup(name);
|
||||||
scope->desc = strdup(description);
|
scope->desc = strdup(description);
|
||||||
scope->new_subscription = new_subscription;
|
scope->new_subscription = new_subscription;
|
||||||
|
scope->destroy_subscription = destroy_subscription;
|
||||||
scope->user_data = user_data;
|
scope->user_data = user_data;
|
||||||
wl_list_init(&scope->subscription_list);
|
wl_list_init(&scope->subscription_list);
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ project('weston',
|
|||||||
license: 'MIT/Expat',
|
license: 'MIT/Expat',
|
||||||
)
|
)
|
||||||
|
|
||||||
libweston_major = 7
|
libweston_major = 8
|
||||||
|
|
||||||
# libweston_revision is manufactured to follow the autotools build's
|
# libweston_revision is manufactured to follow the autotools build's
|
||||||
# library file naming, thanks to libtool
|
# library file naming, thanks to libtool
|
||||||
|
|||||||
@@ -819,7 +819,7 @@ weston_module_init(struct weston_compositor *compositor)
|
|||||||
compositor->weston_log_ctx,
|
compositor->weston_log_ctx,
|
||||||
"pipewire",
|
"pipewire",
|
||||||
"Debug messages from pipewire plugin\n",
|
"Debug messages from pipewire plugin\n",
|
||||||
NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
|
|
||||||
pipewire->destroy_listener.notify = weston_pipewire_destroy;
|
pipewire->destroy_listener.notify = weston_pipewire_destroy;
|
||||||
wl_signal_add(&compositor->destroy_signal, &pipewire->destroy_listener);
|
wl_signal_add(&compositor->destroy_signal, &pipewire->destroy_listener);
|
||||||
|
|||||||
+1
-1
@@ -398,7 +398,7 @@ weston_module_init(struct weston_compositor *compositor)
|
|||||||
weston_compositor_add_log_scope(wxs->compositor->weston_log_ctx,
|
weston_compositor_add_log_scope(wxs->compositor->weston_log_ctx,
|
||||||
"xwm-wm-x11",
|
"xwm-wm-x11",
|
||||||
"XWM's window management X11 events\n",
|
"XWM's window management X11 events\n",
|
||||||
NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user