Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package feedbackd for openSUSE:Factory checked in at 2023-09-08 21:15:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/feedbackd (Old) and /work/SRC/openSUSE:Factory/.feedbackd.new.1766 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "feedbackd" Fri Sep 8 21:15:36 2023 rev:6 rq:1109641 version:0.2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/feedbackd/feedbackd.changes 2023-03-22 22:32:11.798662573 +0100 +++ /work/SRC/openSUSE:Factory/.feedbackd.new.1766/feedbackd.changes 2023-09-08 21:16:26.960418336 +0200 @@ -1,0 +2,28 @@ +Wed Sep 6 08:56:55 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 0.2.1: + + event: Fix doc link + + treewide: Drop superfluous '()' after functions in doc strings. + Otherwise we have that doubled in the docs. + + doc: + - Better cross reference manpages. + - Add manpage for feedback themes. This should direct users to + the documentation. + +------------------------------------------------------------------- +Fri Jul 21 10:46:54 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 0.2.0: + + build: Bump version to 0.2.0. We have a slight api change. + + lfb-event: Avoid allocation when getting profile. We can return + the const *. This makes it consistent with other getters. This + is an API change we didn't find any users and the API is + declared unstable. + + tests: Get properties all at once. + + lfb-event: Add getter and setter for app-id. For applications + this is figured out automatically but notification daemons and + portal implementations might want to override it to have the + per-app feedback profile picked up automatically. +- Drop 109.patch: Fixed upstream. + +------------------------------------------------------------------- Old: ---- 109.patch feedbackd-0.1.0.obscpio New: ---- feedbackd-0.2.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ feedbackd.spec ++++++ --- /var/tmp/diff_new_pack.oQUPCo/_old 2023-09-08 21:16:28.208462940 +0200 +++ /var/tmp/diff_new_pack.oQUPCo/_new 2023-09-08 21:16:28.208462940 +0200 @@ -19,14 +19,12 @@ %define soname libfeedback-0_0-0 Name: feedbackd -Version: 0.1.0 +Version: 0.2.1 Release: 0 Summary: Feedback library for GNOME License: GPL-3.0-only AND LGPL-2.1-only URL: https://source.puri.sm/Librem5/feedbackd Source0: %{name}-%{version}.tar.xz -# PATCH-FIX-UPSTREAM 109.patch -- Fix build with glib-2.76.x -Patch0: https://source.puri.sm/Librem5/feedbackd/-/merge_requests/109.patch BuildRequires: c_compiler BuildRequires: dbus-1 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.oQUPCo/_old 2023-09-08 21:16:28.244464227 +0200 +++ /var/tmp/diff_new_pack.oQUPCo/_new 2023-09-08 21:16:28.248464369 +0200 @@ -1,7 +1,7 @@ <services> <service mode="manual" name="obs_scm"> <param name="url">https://source.puri.sm/Librem5/feedbackd.git</param> - <param name="revision">refs/tags/v0.1.0</param> + <param name="revision">refs/tags/v0.2.1</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="scm">git</param> ++++++ feedbackd-0.1.0.obscpio -> feedbackd-0.2.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/NEWS new/feedbackd-0.2.1/NEWS --- old/feedbackd-0.1.0/NEWS 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/NEWS 2023-08-31 11:51:38.000000000 +0200 @@ -1,3 +1,25 @@ +feedback 0.2.1 +-------------- +Released August 2023 +* Minor documentation updates + +feedback 0.2.0 +-------------- +Released April 2023 +* lfbevent: Add api to set app-id +* lfbevent: Change signature of get_feedback_profile(). + (API change but no known users) +* Contributors: + * Guido Günther + +feedbackd 0.1.1 +--------------- +Released March 2023 +* Fix test failure exposed by glib 2.76 +* Leak fixes +* Contributors: + * Guido Günther + feedbackd 0.1.0 --------------- Released February 2023 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/debian/changelog new/feedbackd-0.2.1/debian/changelog --- old/feedbackd-0.1.0/debian/changelog 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/debian/changelog 2023-08-31 11:51:38.000000000 +0200 @@ -1,3 +1,56 @@ +feedbackd (0.2.1) experimental; urgency=medium + + * Update NEWS + * event: Fix doc link + * treewide: Drop superfluous '()' after functions in doc strings. + Otherwise we have that doubled in the docs + * doc: Better cross reference manpages + * doc: Add manpage for feedback themes. + This should direct users to the documentation. + + -- Guido Günther <a...@sigxcpu.org> Tue, 29 Aug 2023 18:32:09 +0200 + +feedbackd (0.2.0) experimental; urgency=medium + + * build: Bump version to 0.2.0. We have a slight api change. + * lfb-event: Avoid allocation when getting profile. + We can return the const *. This makes it consistent with other getters. + This is an API change we didn't find any users and the API is declared + unstable. + * tests: Get properties all at once + * lfb-event: Add getter and setter for app-id. + For applications this is figured out automatically but notification + daemons and portal implementations might want to override it to have the + per-app feedback profile picked up automatically. + + -- Guido Günther <a...@sigxcpu.org> Mon, 17 Apr 2023 12:14:14 +0200 + +feedbackd (0.1.1) experimental; urgency=medium + + * build: Avoid meson deprecation warning + * fbd-event: Make sure we iterate the list safely. + When all feedbacks are done the event signals "feedbacks-ended" which + lets the manager dispose the feedback. When all feedbacks end instantly + and synchronously (as is the case with the dummy feedback) this triggers + the disposal of the event within the loop leading to a crash. + Make sure the object doesn't go away be referencing it during the loop + iteration. + We didn't see this before as glib's slice allocator for lists papered + over this for us. + Closes: https://source.puri.sm/Librem5/feedbackd/-/issues/69 + * tests: Don't leak json string + * tests: Don't leak profiles and test that. + We finalize the theme first so the last reference is dropped when + finalizing the profiles. + * feedback-profile: Don't leak json array when serializing profile + json_array_add_element doesn't transfer ownership + * feedback-theme: Don't leak json array when serializing profile + json_array_add_element doesn't transfer ownership. + * feedback-theme: Don't leak parent name + * tests/profile: Don't leak json node + + -- Guido Günther <a...@sigxcpu.org> Thu, 23 Mar 2023 10:35:01 +0100 + feedbackd (0.1.0) experimental; urgency=medium [ Dylan Van Assche ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/debian/libfeedback-0.0-0.symbols new/feedbackd-0.2.1/debian/libfeedback-0.0-0.symbols --- old/feedbackd-0.1.0/debian/libfeedback-0.0-0.symbols 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/debian/libfeedback-0.0-0.symbols 2023-08-31 11:51:38.000000000 +0200 @@ -1,3 +1,53 @@ libfeedback-0.0.so.0 libfeedback-0.0-0 #MINVER# -* Build-Depends-Package: libfeedback-dev - *@LIBFEEDBACK_0_0_0 0.0.0+git20200707 + LIBFEEDBACK_0_0_0@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_end_feedback@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_end_feedback_async@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_end_feedback_finish@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_end_reason_get_type@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_get_app_id@LIBFEEDBACK_0_0_0 0.2.0 + lfb_event_get_end_reason@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_get_event@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_get_feedback_profile@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_get_state@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_get_timeout@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_get_type@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_new@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_set_app_id@LIBFEEDBACK_0_0_0 0.2.0 + lfb_event_set_feedback_profile@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_set_timeout@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_state_get_type@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_trigger_feedback@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_trigger_feedback_async@LIBFEEDBACK_0_0_0 0.1.1 + lfb_event_trigger_feedback_finish@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_call_end_feedback@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_call_end_feedback_finish@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_call_end_feedback_sync@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_call_trigger_feedback@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_call_trigger_feedback_finish@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_call_trigger_feedback_sync@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_complete_end_feedback@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_complete_trigger_feedback@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_dup_profile@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_emit_feedback_ended@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_get_profile@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_get_type@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_interface_info@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_override_properties@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_proxy_get_type@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_proxy_new@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_proxy_new_finish@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_proxy_new_for_bus@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_proxy_new_for_bus_finish@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_proxy_new_for_bus_sync@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_proxy_new_sync@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_set_profile@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_skeleton_get_type@LIBFEEDBACK_0_0_0 0.1.1 + lfb_gdbus_feedback_skeleton_new@LIBFEEDBACK_0_0_0 0.1.1 + lfb_get_app_id@LIBFEEDBACK_0_0_0 0.1.1 + lfb_get_feedback_profile@LIBFEEDBACK_0_0_0 0.1.1 + lfb_get_proxy@LIBFEEDBACK_0_0_0 0.1.1 + lfb_init@LIBFEEDBACK_0_0_0 0.1.1 + lfb_is_initted@LIBFEEDBACK_0_0_0 0.1.1 + lfb_set_app_id@LIBFEEDBACK_0_0_0 0.1.1 + lfb_set_feedback_profile@LIBFEEDBACK_0_0_0 0.1.1 + lfb_uninit@LIBFEEDBACK_0_0_0 0.1.1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/doc/fbcli.rst new/feedbackd-0.2.1/doc/fbcli.rst --- old/feedbackd-0.1.0/doc/fbcli.rst 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/doc/fbcli.rst 2023-08-31 11:51:38.000000000 +0200 @@ -46,4 +46,4 @@ See also ======== -``feedbackd(8)`` +``feedbackd(8)`` ``fbd-theme-validate(1)`` ``feedback-themes(5)`` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/doc/feedback-themes.rst new/feedbackd-0.2.1/doc/feedback-themes.rst --- old/feedbackd-0.1.0/doc/feedback-themes.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/feedbackd-0.2.1/doc/feedback-themes.rst 2023-08-31 11:51:38.000000000 +0200 @@ -0,0 +1,32 @@ +.. _feedback-themes(5): + +=============== +feedback themes +=============== + +--------------------------------- +Theme configuration for feedbackd +--------------------------------- + +DESCRIPTION +=========== + +In order to reflect device specifics and user overrides the feedback +(such as sound, haptic or led) that are being triggered by events can +be configured. This allows for device as well as user specific +configuration. Themes use a json format and can be validated by +``fbd-theme-validate``. + +For details on how to create or modify feedback themes see [feedbackd's documentation]( +https://source.puri.sm/Librem5/feedbackd#feedback-theme) + +Sound events +============ + +Sound feedbacks specify an event name from a XDG sound theme. Sound themes +are described in the [Sound theme spec](https://freedesktop.org/wiki/Specifications/sound-theme-spec/). + +See also +======== + +``feedbackd(8)`` ``fbcli(1)`` ``fbd-theme-validate(1)`` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/doc/feedbackd.rst new/feedbackd-0.2.1/doc/feedbackd.rst --- old/feedbackd-0.1.0/doc/feedbackd.rst 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/doc/feedbackd.rst 2023-08-31 11:51:38.000000000 +0200 @@ -39,4 +39,4 @@ See also ======== -``fbcli(1)`` +``fbcli(1)`` ``fbd-theme-validate(1)`` ``feedback-themes(5)`` ``feedback-themes(5)`` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/doc/meson.build new/feedbackd-0.2.1/doc/meson.build --- old/feedbackd-0.1.0/doc/meson.build 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/doc/meson.build 2023-08-31 11:51:38.000000000 +0200 @@ -53,6 +53,7 @@ ['fbcli', 1], ['fbd-theme-validate', 1], ['feedbackd', 8], + ['feedback-themes', 5], ] rst2man = find_program('rst2man', 'rst2man.py', required: false) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/libfeedback/lfb-event.c new/feedbackd-0.2.1/libfeedback/lfb-event.c --- old/feedbackd-0.1.0/libfeedback/lfb-event.c 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/libfeedback/lfb-event.c 2023-08-31 11:51:38.000000000 +0200 @@ -23,9 +23,9 @@ * One event can trigger multiple feedbacks at once (e.g. audio and * haptic feedback). This is determined by the feedback theme in * use (which is not under the appliction's control) and the active - * feedback profile (see [func@Lfb.set_feedback_profile](). + * feedback profile (see [func@Lfb.set_feedback_profile]. * - * After initializing the library via [f...@lfb.init]() feedback can be + * After initializing the library via [f...@lfb.init] feedback can be * triggered like: * * ```c @@ -38,7 +38,7 @@ * * When all feedback for this event has ended the [signal@LfbEvent::feedback-ended] * signal is emitted. If you want to end the feedback ahead of time use - * [method@LfbEvent.end_feedback](): + * [method@LfbEvent.end_feedback]: * * ```c * if (!lfb_event_end_feedback (event, &err)) @@ -46,7 +46,7 @@ * ``` * * Since these methods involve DBus calls there are asynchronous variants - * available, e.g. [method@LfbEvent.trigger_feedback_async](): + * available, e.g. [method@LfbEvent.trigger_feedback_async]: * * ```c * static void @@ -79,6 +79,7 @@ PROP_STATE, PROP_END_REASON, PROP_FEEDBACK_PROFILE, + PROP_APP_ID, PROP_LAST_PROP, }; static GParamSpec *props[PROP_LAST_PROP]; @@ -95,6 +96,7 @@ char *event; gint timeout; gchar *profile; + char *app_id; guint id; LfbEventState state; @@ -221,6 +223,9 @@ case PROP_FEEDBACK_PROFILE: lfb_event_set_feedback_profile (self, g_value_get_string (value)); break; + case PROP_APP_ID: + lfb_event_set_app_id (self, g_value_get_string (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; @@ -244,7 +249,10 @@ g_value_set_int (value, self->timeout); break; case PROP_FEEDBACK_PROFILE: - g_value_set_string (value, self->profile); + g_value_set_string (value, lfb_event_get_feedback_profile (self)); + break; + case PROP_APP_ID: + g_value_set_string (value, lfb_event_get_app_id (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -262,6 +270,7 @@ g_clear_pointer (&self->event, g_free); g_clear_pointer (&self->profile, g_free); + g_clear_pointer (&self->app_id, g_free); G_OBJECT_CLASS (lfb_event_parent_class)->finalize (object); } @@ -294,7 +303,7 @@ * * How long feedback should be provided in seconds. The special value * %-1 uses the natural length of each feedback while %0 plays each feedback - * in a loop until ended explicitly via e.g. [method@LfbEvent.end_feedback](). + * in a loop until ended explicitly via e.g. [method@LfbEvent.end_feedback]. */ props[PROP_TIMEOUT] = g_param_spec_int ( @@ -326,7 +335,7 @@ * LfbEvent:feedback-profile: * * The name of the feedback profile to use for this event. See - * [method@LfbEvent.set_feedback_profile]() for details. + * [method@LfbEvent.set_feedback_profile] for details. */ props[PROP_FEEDBACK_PROFILE] = g_param_spec_string ( @@ -336,6 +345,20 @@ NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); + /** + * LfbEvent:app-id: + * + * The application id to use for the event. + * [method@LfbEvent.set_feedback_profile] for details. + */ + props[PROP_APP_ID] = + g_param_spec_string ( + "app-id", + "Application Id", + "The Application id to use for this event", + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY); + g_object_class_install_properties (object_class, PROP_LAST_PROP, props); /** @@ -411,6 +434,7 @@ { LfbGdbusFeedback *proxy; gboolean success; + const char *app_id; g_return_val_if_fail (LFB_IS_EVENT (self), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); @@ -429,8 +453,9 @@ G_CONNECT_SWAPPED); } + app_id = self->app_id ?: lfb_get_app_id (); success = lfb_gdbus_feedback_call_trigger_feedback_sync (proxy, - lfb_get_app_id (), + app_id, self->event, build_hints (self), self->timeout, @@ -452,7 +477,7 @@ * * Tells the feedback server to provide proper feedback for the give * event to the user. This is the sync version of - * [method@LfbEvent.trigger_feedback](). + * [method@LfbEvent.trigger_feedback]. */ void lfb_event_trigger_feedback_async (LfbEvent *self, @@ -462,6 +487,7 @@ { LfbAsyncData *data; LfbGdbusFeedback *proxy; + const char *app_id; g_return_if_fail (LFB_IS_EVENT (self)); if (!lfb_is_initted ()) @@ -481,8 +507,10 @@ data = g_new0 (LfbAsyncData, 1); data->task = g_task_new (self, cancellable, callback, user_data); data->event = g_object_ref (self); + + app_id = self->app_id ?: lfb_get_app_id (); lfb_gdbus_feedback_call_trigger_feedback (proxy, - lfb_get_app_id (), + app_id, self->event, build_hints (self), self->timeout, @@ -497,7 +525,7 @@ * @res: Result object passed to the callback of [method@LfbEvent.trigger_feedback_async] * @error: Return location for error * - * Finish an async operation started by [method@LfbEvent.trigger_feedback_async](). You + * Finish an async operation started by [method@LfbEvent.trigger_feedback_async]. You * must call this function in the callback to free memory and receive any * errors which occurred. * @@ -543,7 +571,7 @@ /** * lfb_event_end_feedback_finish: * @self: the event - * @res: Result object passed to the callback of [method@LfbEvent.end_feedback_async]() + * @res: Result object passed to the callback of [method@LfbEvent.end_feedback_async] * @error: Return location for error * * Finish an async operation started by lfb_event_end_feedback_async. You @@ -609,10 +637,10 @@ * Tells the feedback server to end feedack after #timeout seconds. * The value -1 indicates to not set a timeout and let feedbacks stop * on their own while 0 indicates to loop all feedbacks endlessly. - * They must be stopped via [method@LfbEvent.end_feedback]() in this case. + * They must be stopped via [method@LfbEvent.end_feedback] in this case. * * It is an error to change the timeout after the feedback has been triggered - * via [method@LfbEvent.trigger_feedback](). + * via [method@LfbEvent.trigger_feedback]. */ void lfb_event_set_timeout (LfbEvent *self, gint timeout) @@ -716,13 +744,60 @@ * lfb_event_get_feedback_profile: * @self: The event * - * Returns:(transfer full): The set feedback profile to use for this - * event or %NULL. + * Gets the set feedback profile. If no profile was set it returns + * %NULL. The event uses the system wide profile in this case. + * + * Returns: The set feedback profile to use for this event or %NULL. */ -char * +const char * lfb_event_get_feedback_profile (LfbEvent *self) { g_return_val_if_fail (LFB_IS_EVENT (self), NULL); - return g_strdup (self->profile); + return self->profile; +} + +/** + * lfb_event_set_app_id: + * @self: The event + * @app_id: The application id to use + * + * Tells the feedback server to use the given application id for + * this event when it is submitted. The server might ignore this + * request. This can be used by notification daemons to honor per + * application settings automatically. + * + * The functions is usually not used by applications. + * + * A value of %NULL (the default) lets the server pick the profile. + */ +void +lfb_event_set_app_id (LfbEvent *self, const gchar *app_id) +{ + g_return_if_fail (LFB_IS_EVENT (self)); + + if (!g_strcmp0 (self->app_id, app_id)) + return; + + g_free (self->app_id); + self->app_id = g_strdup (app_id); + g_object_notify_by_pspec (G_OBJECT (self), props[PROP_APP_ID]); +} + +/** + * lfb_event_get_app_id: + * @self: The event + * + * Returns the app-id for this event. If no app-id has been explicitly + * set, %NULL is returned. The event uses the app-id returned by + * [func@Lfb.get_app_id] in this case. + * + * Returns:(transfer none): The set app-id for this event or %NULL. + */ +const char * +lfb_event_get_app_id (LfbEvent *self) +{ + g_return_val_if_fail (LFB_IS_EVENT (self), NULL); + + return self->app_id; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/libfeedback/lfb-event.h new/feedbackd-0.2.1/libfeedback/lfb-event.h --- old/feedbackd-0.1.0/libfeedback/lfb-event.h 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/libfeedback/lfb-event.h 2023-08-31 11:51:38.000000000 +0200 @@ -74,7 +74,9 @@ void lfb_event_set_timeout (LfbEvent *self, gint timeout); gint lfb_event_get_timeout (LfbEvent *self); void lfb_event_set_feedback_profile (LfbEvent *self, const char *profile); -char *lfb_event_get_feedback_profile (LfbEvent *self); +const char *lfb_event_get_feedback_profile (LfbEvent *self); +void lfb_event_set_app_id (LfbEvent *self, const char *app_id); +const char *lfb_event_get_app_id (LfbEvent *self); const char *lfb_event_get_event (LfbEvent *self); LfbEventState lfb_event_get_state (LfbEvent *self); LfbEventEndReason lfb_event_get_end_reason (LfbEvent *self); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/libfeedback/libfeedback.c new/feedbackd-0.2.1/libfeedback/libfeedback.c --- old/feedbackd-0.1.0/libfeedback/libfeedback.c 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/libfeedback/libfeedback.c 2023-08-31 11:51:38.000000000 +0200 @@ -131,7 +131,7 @@ /** * lfb_get_app_id: * - * Get the application id set via [func@Lfb.set_app_id](). + * Get the application id set via [func@Lfb.set_app_id]. * * Returns: the application id. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/libfeedback/meson.build new/feedbackd-0.2.1/libfeedback/meson.build --- old/feedbackd-0.1.0/libfeedback/meson.build 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/libfeedback/meson.build 2023-08-31 11:51:38.000000000 +0200 @@ -87,7 +87,6 @@ '--quiet', '-DLIBFEEDBACK_COMPILATION', '-DLIBFEEDBACK_USE_UNSTABLE_API', - '--warn-error', '--warn-all', ] @@ -104,6 +103,7 @@ install_dir_gir : girdir, install_dir_typelib : typelibdir, extra_args : libfeedback_gir_extra_args, + fatal_warnings : true, ) if get_option('vapi') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/meson.build new/feedbackd-0.2.1/meson.build --- old/feedbackd-0.1.0/meson.build 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/meson.build 2023-08-31 11:51:38.000000000 +0200 @@ -1,5 +1,5 @@ project('feedbackd', 'c', - version : '0.1.0', + version : '0.2.1', license : 'LGPLv3+', meson_version : '>= 0.56.0', default_options : [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/src/fbd-event.c new/feedbackd-0.2.1/src/fbd-event.c --- old/feedbackd-0.1.0/src/fbd-event.c 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/src/fbd-event.c 2023-08-31 11:51:38.000000000 +0200 @@ -376,8 +376,6 @@ void fbd_event_run_feedbacks (FbdEvent *self) { - GSList *l; - g_return_if_fail (FBD_IS_EVENT (self)); g_debug ("Running %d feedbacks for event %d", g_slist_length (self->feedbacks), self->id); @@ -392,10 +390,12 @@ g_source_set_name_by_id (self->timeout_id, "event timeout source"); } - for (l = self->feedbacks; l; l = l->next) { + g_object_ref (self); + for (GSList *l = self->feedbacks; l; l = l->next) { FbdFeedbackBase *fb = FBD_FEEDBACK_BASE (l->data); fbd_feedback_run (fb); } + g_object_unref (self); } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/src/fbd-feedback-profile.c new/feedbackd-0.2.1/src/fbd-feedback-profile.c --- old/feedbackd-0.1.0/src/fbd-feedback-profile.c 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/src/fbd-feedback-profile.c 2023-08-31 11:51:38.000000000 +0200 @@ -58,7 +58,7 @@ GHashTableIter iter; gpointer key; FbdFeedbackProfile *profile; - JsonArray *array = json_array_sized_new (FBD_FEEDBACK_PROFILE_N_PROFILES); + g_autoptr (JsonArray) array = json_array_sized_new (FBD_FEEDBACK_PROFILE_N_PROFILES); g_hash_table_iter_init (&iter, self->feedbacks); while (g_hash_table_iter_next (&iter, (gpointer *)&key, (gpointer *) &profile)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/src/fbd-feedback-theme.c new/feedbackd-0.2.1/src/fbd-feedback-theme.c --- old/feedbackd-0.1.0/src/fbd-feedback-theme.c 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/src/fbd-feedback-theme.c 2023-08-31 11:51:38.000000000 +0200 @@ -53,7 +53,7 @@ GHashTableIter iter; gpointer key; FbdFeedbackProfile *profile; - JsonArray *array = json_array_sized_new (FBD_FEEDBACK_PROFILE_N_PROFILES); + g_autoptr (JsonArray) array = json_array_sized_new (FBD_FEEDBACK_PROFILE_N_PROFILES); g_hash_table_iter_init (&iter, self->profiles); while (g_hash_table_iter_next (&iter, (gpointer *)&key, (gpointer *) &profile)) { @@ -182,6 +182,7 @@ { FbdFeedbackTheme *self = FBD_FEEDBACK_THEME (object); + g_clear_pointer (&self->parent_name, g_free); g_clear_pointer (&self->name, g_free); G_OBJECT_CLASS (fbd_feedback_theme_parent_class)->finalize (object); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/tests/test-fbd-feedback-profile.c new/feedbackd-0.2.1/tests/test-fbd-feedback-profile.c --- old/feedbackd-0.1.0/tests/test-fbd-feedback-profile.c 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/tests/test-fbd-feedback-profile.c 2023-08-31 11:51:38.000000000 +0200 @@ -68,7 +68,7 @@ " } "; g_autoptr (GError) err = NULL; g_autoptr (FbdFeedbackProfile) profile = NULL; - JsonNode *node; + g_autoptr (JsonNode) node = NULL; FbdFeedbackBase *fb; node = json_from_string(json, &err); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/tests/test-fbd-feedback-theme.c new/feedbackd-0.2.1/tests/test-fbd-feedback-theme.c --- old/feedbackd-0.1.0/tests/test-fbd-feedback-theme.c 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/tests/test-fbd-feedback-theme.c 2023-08-31 11:51:38.000000000 +0200 @@ -36,11 +36,11 @@ g_autoptr (FbdFeedbackDummy) full_fb2 = g_object_new (FBD_TYPE_FEEDBACK_DUMMY, "event-name", "event2", NULL); - g_autoptr(FbdFeedbackTheme) theme = fbd_feedback_theme_new (THEME_NAME); - + FbdFeedbackTheme *theme = fbd_feedback_theme_new (THEME_NAME); FbdFeedbackProfile *profile_full = fbd_feedback_profile_new ("full"); FbdFeedbackProfile *profile_quiet = fbd_feedback_profile_new ("quiet"); FbdFeedbackProfile *profile; + g_autofree char *json = NULL; fbd_feedback_profile_add_feedback (profile_quiet, FBD_FEEDBACK_BASE(quiet_fb1)); fbd_feedback_profile_add_feedback (profile_quiet, FBD_FEEDBACK_BASE(quiet_fb2)); @@ -55,7 +55,12 @@ profile = fbd_feedback_theme_get_profile (theme, "full"); g_assert_true (FBD_IS_FEEDBACK_PROFILE (profile)); - g_print ("%s\n", json_gobject_to_data (G_OBJECT(theme), NULL)); + json = json_gobject_to_data (G_OBJECT(theme), NULL); + g_print ("%s\n", json); + + g_assert_finalize_object (theme); + g_assert_finalize_object (profile_full); + g_assert_finalize_object (profile_quiet); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/feedbackd-0.1.0/tests/test-lfb-event.c new/feedbackd-0.2.1/tests/test-lfb-event.c --- old/feedbackd-0.1.0/tests/test-lfb-event.c 2023-02-27 17:20:02.000000000 +0100 +++ new/feedbackd-0.2.1/tests/test-lfb-event.c 2023-08-31 11:51:38.000000000 +0200 @@ -14,6 +14,7 @@ g_autoptr(LfbEvent) event = NULL; g_autofree gchar *evname = NULL; g_autofree gchar *profile = NULL; + g_autofree gchar *app_id = NULL; gint timeout; g_assert_true (lfb_init (TEST_APP_ID, NULL)); @@ -21,23 +22,29 @@ event = lfb_event_new ("window-close"); g_assert_true (LFB_IS_EVENT (event)); - g_object_get (event, "event", &evname, NULL); + g_object_get (event, + "event", &evname, + "timeout", &timeout, + "feedback-profile", &profile, + "app-id", &app_id, + NULL); g_assert_cmpstr (evname, ==, "window-close"); - - g_object_get (event, "timeout", &timeout, NULL); g_assert_cmpint (timeout, ==, -1); + g_assert_null (profile); + g_assert_null (app_id); g_assert_cmpint (lfb_event_get_end_reason (event), ==, LFB_EVENT_END_REASON_NATURAL); g_assert_cmpint (lfb_event_get_state (event), ==, LFB_EVENT_STATE_NONE); - g_object_get (event, "feedback-profile", &profile, NULL); - g_assert_null (profile); g_object_set (event, "feedback-profile", "full", NULL); g_object_get (event, "feedback-profile", &profile, NULL); g_assert_cmpstr (profile, ==, "full"); - g_free (profile); - profile = lfb_event_get_feedback_profile (event); - g_assert_cmpstr (profile, ==, "full"); + g_assert_cmpstr (lfb_event_get_feedback_profile (event), ==, "full"); + + g_object_set (event, "app-id", "com.example.foo", NULL); + g_object_get (event, "app-id", &app_id, NULL); + g_assert_cmpstr (app_id, ==, "com.example.foo"); + g_assert_cmpstr (lfb_event_get_app_id (event), ==, "com.example.foo"); lfb_uninit (); } ++++++ feedbackd.obsinfo ++++++ --- /var/tmp/diff_new_pack.oQUPCo/_old 2023-09-08 21:16:28.452471661 +0200 +++ /var/tmp/diff_new_pack.oQUPCo/_new 2023-09-08 21:16:28.460471947 +0200 @@ -1,5 +1,5 @@ name: feedbackd -version: 0.1.0 -mtime: 1677514802 -commit: 2db8a72ef9432f80894eb5b36ce1e667496a931b +version: 0.2.1 +mtime: 1693475498 +commit: 1104cef50acb0b18a0d545e6a09773e3feb42e5b