+ typedef std::pair<char const *, std::function<void(struct controller *)>>
+ name_task_pair;
+ std::vector<name_task_pair> pending;
+
+ void add_task(char const *name,
+ std::function<void(struct controller *)> &&f) {
+ this->pending.emplace_back(std::make_pair(name, f));
+ }
+
+ void execute_pending() {
+ if (!this->pending.empty()) {
+ for (auto &t : this->pending) {
+ logdebug("executing task '%s'", t.first);
+ t.second(this);
+ }
+ this->pending.clear();
+ ivi_controller_commit_changes(this->proxy);
+ }
+ }
+