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>
dev
Marius Vlad 5 years ago
parent 0c7beb0b67
commit 9bb1c3a3c2
  1. 4
      compositor/main.c
  2. 1
      include/libweston/weston-log.h
  3. 2
      libweston/backend-drm/drm.c
  4. 2
      libweston/compositor.c
  5. 2
      libweston/content-protection.c
  6. 9
      libweston/weston-log.c
  7. 2
      meson.build
  8. 2
      pipewire/pipewire-plugin.c
  9. 2
      xwayland/launcher.c

@ -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);

@ -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);

@ -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;
} }

Loading…
Cancel
Save