From 94ef60f73e794a97f5558ac74f91d1e0fd16dbff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Mon, 20 Jul 2020 17:35:56 +0200 Subject: [PATCH] fbd-feedback-base: Add fbd_feedback_is_available () This allows to check if a feedback type is available at all. --- src/fbd-feedback-base.c | 25 +++++++++++++++++++++++++ src/fbd-feedback-base.h | 6 ++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/fbd-feedback-base.c b/src/fbd-feedback-base.c index d9b91ec..23946f6 100644 --- a/src/fbd-feedback-base.c +++ b/src/fbd-feedback-base.c @@ -227,3 +227,28 @@ fbd_feedback_base_done (FbdFeedbackBase *self) priv->ended = TRUE; g_signal_emit (self, signals[SIGNAL_ENDED], 0); } + +/** + * fbd_feedback_available: + * @self: The feedback + * + * Whether this feedback type is available at all. This can be %FALSE e.g. + * due to missing hardware. + * + * Returns: %FALSE if the feedback type is not available at all %TRUE if unsure + * or available. + */ +gboolean +fbd_feedback_is_available (FbdFeedbackBase *self) +{ + FbdFeedbackBaseClass *klass; + + g_return_val_if_fail (FBD_IS_FEEDBACK_BASE (self), FALSE); + + klass = FBD_FEEDBACK_BASE_GET_CLASS (self); + if (klass->is_available) + return klass->is_available (self); + else + return TRUE; +} + diff --git a/src/fbd-feedback-base.h b/src/fbd-feedback-base.h index 893a884..98dc07e 100644 --- a/src/fbd-feedback-base.h +++ b/src/fbd-feedback-base.h @@ -17,8 +17,9 @@ struct _FbdFeedbackBaseClass { GObjectClass parent_class; - void (*run) (FbdFeedbackBase *self); - void (*end) (FbdFeedbackBase *self); + void (*run) (FbdFeedbackBase *self); + void (*end) (FbdFeedbackBase *self); + gboolean (*is_available) (FbdFeedbackBase *self); }; @@ -27,5 +28,6 @@ void fbd_feedback_run (FbdFeedbackBase *self); void fbd_feedback_end (FbdFeedbackBase *self); gboolean fbd_feedback_get_ended (FbdFeedbackBase *self); void fbd_feedback_base_done (FbdFeedbackBase *self); +gboolean fbd_feedback_is_available (FbdFeedbackBase *self); G_END_DECLS