static int session_take_control_fn(sd_bus *bus,
                                   sd_bus_message *reply,
                                   void *userdata,
                                   sd_bus_error *ret_error) {
        sysview_session *session = userdata;
        int r, error;

        session->slot_take_control = sd_bus_slot_unref(session->slot_take_control);

        if (sd_bus_message_is_method_error(reply, NULL)) {
                const sd_bus_error *e = sd_bus_message_get_error(reply);

                log_debug("sysview: %s: TakeControl failed: %s: %s",
                          session->name, e->name, e->message);
                error = -sd_bus_error_get_errno(e);
        } else {
                session->has_control = true;
                error = 0;
        }

        r = context_raise_session_control(session->seat->context, session, error);
        if (r < 0)
                log_debug_errno(r, "sysview: callback failed while signalling session control '%d' on session '%s': %m",
                                error, session->name);

        return 0;
}
示例#2
0
static int session_take_control_fn(sd_bus *bus,
                                   sd_bus_message *reply,
                                   void *userdata,
                                   sd_bus_error *ret_error) {
        sysview_session *session = userdata;
        int error;

        session->slot_take_control = sd_bus_slot_unref(session->slot_take_control);

        if (sd_bus_message_is_method_error(reply, NULL)) {
                const sd_bus_error *e = sd_bus_message_get_error(reply);

                log_debug("sysview: %s: TakeControl failed: %s: %s",
                          session->name, e->name, e->message);
                error = sd_bus_error_get_errno(e);
        } else {
                session->has_control = true;
                error = 0;
        }

        return context_raise_session_control(session->seat->context, session, error);
}