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.
This commit is contained in:
committed by
Guido Gunther
parent
542fe52cc2
commit
e8dfe6974a
+1
-1
@@ -13,7 +13,7 @@
|
|||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
typedef enum _FbdEventEndReason {
|
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,
|
FBD_EVENT_END_REASON_NOT_FOUND = -1,
|
||||||
/* all feedbacks finished playing their natural length */
|
/* all feedbacks finished playing their natural length */
|
||||||
FBD_EVENT_END_REASON_NATURAL = 0,
|
FBD_EVENT_END_REASON_NATURAL = 0,
|
||||||
|
|||||||
@@ -251,6 +251,7 @@ fbd_feedback_manager_handle_trigger_feedback (LfbGdbusFeedback *object,
|
|||||||
GSList *feedbacks, *l;
|
GSList *feedbacks, *l;
|
||||||
gint event_id;
|
gint event_id;
|
||||||
FbdFeedbackProfileLevel app_level, level, hint_level = FBD_FEEDBACK_PROFILE_LEVEL_FULL;
|
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);
|
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) {
|
if (feedbacks) {
|
||||||
for (l = feedbacks; l; l = l->next) {
|
for (l = feedbacks; l; l = l->next) {
|
||||||
FbdFeedbackBase *fb = l->data;
|
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_object_unref (fb);
|
||||||
}
|
}
|
||||||
g_slist_free (feedbacks);
|
g_slist_free (feedbacks);
|
||||||
|
} else {
|
||||||
|
/* No feedbacks found at all */
|
||||||
|
found_fb = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found_fb) {
|
||||||
g_signal_connect_object (event, "feedbacks-ended",
|
g_signal_connect_object (event, "feedbacks-ended",
|
||||||
(GCallback) on_event_feedbacks_ended,
|
(GCallback) on_event_feedbacks_ended,
|
||||||
self,
|
self,
|
||||||
G_CONNECT_SWAPPED);
|
G_CONNECT_SWAPPED);
|
||||||
|
|
||||||
fbd_event_run_feedbacks (event);
|
fbd_event_run_feedbacks (event);
|
||||||
} else {
|
} else {
|
||||||
/* No feedbacks found, so we're done */
|
|
||||||
lfb_gdbus_feedback_emit_feedback_ended (LFB_GDBUS_FEEDBACK(self), event_id,
|
lfb_gdbus_feedback_emit_feedback_ended (LFB_GDBUS_FEEDBACK(self), event_id,
|
||||||
FBD_EVENT_END_REASON_NOT_FOUND);
|
FBD_EVENT_END_REASON_NOT_FOUND);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user