aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/event/multiqueue.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/event/multiqueue.c')
-rw-r--r--src/nvim/event/multiqueue.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/nvim/event/multiqueue.c b/src/nvim/event/multiqueue.c
index a17bae31e3..b144347fdb 100644
--- a/src/nvim/event/multiqueue.c
+++ b/src/nvim/event/multiqueue.c
@@ -55,6 +55,7 @@
#include "nvim/event/multiqueue.h"
#include "nvim/memory.h"
+#include "nvim/log.h"
#include "nvim/os/time.h"
typedef struct multiqueue_item MultiQueueItem;
@@ -151,6 +152,40 @@ void multiqueue_process_events(MultiQueue *this)
}
}
+void multiqueue_process_debug(MultiQueue *this)
+{
+ assert(this);
+ QUEUE *start = QUEUE_HEAD(&this->headtail);
+ QUEUE *cur = start;
+ // MultiQueue *start = this;
+ // MultiQueue *cur = start;
+ do {
+ MultiQueueItem *item = multiqueue_node_data(cur);
+ Event ev;
+ if (item->link) {
+ assert(!this->parent);
+ // get the next node in the linked queue
+ MultiQueue *linked = item->data.queue;
+ assert(!multiqueue_empty(linked));
+ MultiQueueItem *child =
+ multiqueue_node_data(QUEUE_HEAD(&linked->headtail));
+ ev = child->data.item.event;
+ } else {
+ ev = item->data.item.event;
+ }
+
+ // Event event = multiqueue_get(this);
+ // if (event.handler) {
+ // event.handler(event.argv);
+ // }
+
+ ILOG("ev: priority=%d, handler=%p arg1=%s", ev.priority, ev.handler,
+ ev.argv ? ev.argv[0] : "(null)");
+
+ cur = cur->next;
+ } while (cur && cur != start);
+}
+
/// Removes all events without processing them.
void multiqueue_purge_events(MultiQueue *this)
{