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
 

Reply via email to