aboutsummaryrefslogtreecommitdiff
path: root/src/block.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/block.c')
-rw-r--r--src/block.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/block.c b/src/block.c
new file mode 100644
index 0000000..442e753
--- /dev/null
+++ b/src/block.c
@@ -0,0 +1,23 @@
+#include "block.h"
+#include "util.h"
+#include "any_log.h"
+
+void block_update(block_t *block)
+{
+ if (block->update_cb != NULL) {
+ struct timespec now, diff;
+ timespec_get(&now, TIME_UTC);
+ diff = timespec_diff(block->update_last, now);
+
+ if (timespec_greater(diff, block->update_interval)) {
+ block->update_cb(block);
+ block->update_last = now;
+ log_debug("Updated block");
+ }
+ }
+
+ if (block->type == BLOCK_GROUP) {
+ for (int i = 0; i < block->group.n_children; i++)
+ block_update(&block->group.children[i]);
+ }
+}