From e8dfe6974af75de236088edc9649f67fe6a0e01e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Mon, 20 Jul 2020 17:59:28 +0200 Subject: [PATCH] fbd-feedback-manager: Check if feedback is usable If we don't find any usable feedbacks for an event return FBD_EVENT_END_REASON_NOT_FOUND. --- src/fbd-event.h | 2 +- src/fbd-feedback-manager.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/fbd-event.h b/src/fbd-event.h index 38599dc..6562d2b 100644 --- a/src/fbd-event.h +++ b/src/fbd-event.h @@ -13,7 +13,7 @@ G_BEGIN_DECLS typedef enum _FbdEventEndReason { - /* No feedback in current theme for this event */ + /* No usable feedback in current theme for this event */ FBD_EVENT_END_REASON_NOT_FOUND = -1, /* all feedbacks finished playing their natural length */ FBD_EVENT_END_REASON_NATURAL = 0, diff --git a/src/fbd-feedback-manager.c b/src/fbd-feedback-manager.c index de15208..fedb895 100644 --- a/src/fbd-feedback-manager.c +++ b/src/fbd-feedback-manager.c @@ -251,6 +251,7 @@ fbd_feedback_manager_handle_trigger_feedback (LfbGdbusFeedback *object, GSList *feedbacks, *l; gint event_id; FbdFeedbackProfileLevel app_level, level, hint_level = FBD_FEEDBACK_PROFILE_LEVEL_FULL; + gboolean found_fb = FALSE; g_debug ("Event '%s' for '%s'", arg_event, arg_app_id); @@ -295,19 +296,26 @@ fbd_feedback_manager_handle_trigger_feedback (LfbGdbusFeedback *object, if (feedbacks) { for (l = feedbacks; l; l = l->next) { FbdFeedbackBase *fb = l->data; - fbd_event_add_feedback (event, fb); + + if (fbd_feedback_is_available (FBD_FEEDBACK_BASE (fb))) { + fbd_event_add_feedback (event, fb); + found_fb = TRUE; + } g_object_unref (fb); } g_slist_free (feedbacks); + } else { + /* No feedbacks found at all */ + found_fb = FALSE; + } + if (found_fb) { g_signal_connect_object (event, "feedbacks-ended", (GCallback) on_event_feedbacks_ended, self, G_CONNECT_SWAPPED); - fbd_event_run_feedbacks (event); } else { - /* No feedbacks found, so we're done */ lfb_gdbus_feedback_emit_feedback_ended (LFB_GDBUS_FEEDBACK(self), event_id, FBD_EVENT_END_REASON_NOT_FOUND); }