Files
feedbackd/libfeedback
Evangelos Ribeiro Tzaras 7391062b87 lfb-event: Notify state change before completing async task
lfb_event_trigger_feedback_async() internally uses a GTask to handle
invocation of the user provided callback when g_task_return_*() is
called.

Currently GTask is completed first and only afterwards is the state of
the event being updated which can lead to suprising behaviour in code
like this:

static void
on_event_triggered (LfbEvent     *event,
                    GAsyncResult *res,
                    CallsRinger  *self)
{
  g_autoptr (GError) err = NULL;
  gboolean ok;

  g_return_if_fail (LFB_IS_EVENT (event));

  ok = lfb_event_trigger_feedback_finish (event, res, &err);
  if (ok) {
    LfbEventState state = lfb_event_get_state (event);
    /* do something with state */
  }
}

In this case `state` would return a stale value that's about to get
changed. Instead it would be better to *first* change the state and only
afterwards complete the GTask.

This also makes the sync and async variants consistent in terms of when
they change the event state.

Closes: #59
2022-10-11 12:32:43 +02:00
..
2022-09-24 12:08:19 +02:00
2020-02-14 17:40:34 +01:00
2020-02-14 17:40:34 +01:00
2020-04-17 11:45:02 +02:00
2020-04-17 11:45:02 +02:00