aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2016-10-18 12:01:10 +0100
committerThomas Adam <thomas@xteddy.org>2016-10-18 12:01:10 +0100
commit8576ecaf322e5828c86e9621015d68e755c0323b (patch)
treefbf6d39f1c743c1b272dc35c2d3086a8b99552f5
parentb3ab39c4d94a0d5785de069ba428a8ad53a0af20 (diff)
parent2e5c49a1fd8c534d546899f7c133a0adf212a7d1 (diff)
downloadrtmux-8576ecaf322e5828c86e9621015d68e755c0323b.tar.gz
rtmux-8576ecaf322e5828c86e9621015d68e755c0323b.tar.bz2
rtmux-8576ecaf322e5828c86e9621015d68e755c0323b.zip
Merge branch 'obsd-master'
-rw-r--r--cmd-queue.c18
-rw-r--r--screen-write.c1
-rw-r--r--tmux.h4
3 files changed, 19 insertions, 4 deletions
diff --git a/cmd-queue.c b/cmd-queue.c
index 5056fffc..24fd0c56 100644
--- a/cmd-queue.c
+++ b/cmd-queue.c
@@ -112,6 +112,8 @@ cmdq_remove(struct cmdq_item *item)
cmd_list_free(item->cmdlist);
TAILQ_REMOVE(item->queue, item, entry);
+
+ free((void *)item->name);
free(item);
}
@@ -147,10 +149,15 @@ cmdq_get_command(struct cmd_list *cmdlist, struct cmd_find_state *current,
struct cmdq_item *item, *first = NULL, *last = NULL;
struct cmd *cmd;
u_int group = cmdq_next_group();
+ char *tmp;
TAILQ_FOREACH(cmd, &cmdlist->list, qentry) {
+ xasprintf(&tmp, "command[%s]", cmd->entry->name);
+
item = xcalloc(1, sizeof *item);
+ item->name = tmp;
item->type = CMDQ_COMMAND;
+
item->group = group;
item->flags = flags;
@@ -220,12 +227,17 @@ out:
/* Get a callback for the command queue. */
struct cmdq_item *
-cmdq_get_callback(cmdq_cb cb, void *data)
+cmdq_get_callback1(const char *name, cmdq_cb cb, void *data)
{
struct cmdq_item *item;
+ char *tmp;
+
+ xasprintf(&tmp, "callback[%s]", name);
item = xcalloc(1, sizeof *item);
+ item->name = tmp;
item->type = CMDQ_CALLBACK;
+
item->group = 0;
item->flags = 0;
@@ -289,8 +301,8 @@ cmdq_next(struct client *c)
item = TAILQ_FIRST(queue);
if (item == NULL)
break;
- log_debug("%s %s: type %d, flags %x", __func__, name,
- item->type, item->flags);
+ log_debug("%s %s: %s (%d), flags %x", __func__, name,
+ item->name, item->type, item->flags);
/*
* Any item with the waiting flag set waits until an external
diff --git a/screen-write.c b/screen-write.c
index 95caabce..d5fc1dee 100644
--- a/screen-write.c
+++ b/screen-write.c
@@ -130,6 +130,7 @@ screen_write_flush(struct screen_write_ctx *ctx)
if (dirty == ctx->dirty)
break;
}
+ ctx->dirty = 0;
s->cx = cx;
s->cy = cy;
diff --git a/tmux.h b/tmux.h
index ed349330..519057e7 100644
--- a/tmux.h
+++ b/tmux.h
@@ -1241,6 +1241,7 @@ enum cmdq_type {
/* Command queue item. */
typedef enum cmd_retval (*cmdq_cb) (struct cmdq_item *, void *);
struct cmdq_item {
+ const char *name;
struct cmdq_list *queue;
struct cmdq_item *next;
@@ -1781,7 +1782,8 @@ char *cmd_list_print(struct cmd_list *);
/* cmd-queue.c */
struct cmdq_item *cmdq_get_command(struct cmd_list *, struct cmd_find_state *,
struct mouse_event *, int);
-struct cmdq_item *cmdq_get_callback(cmdq_cb, void *);
+#define cmdq_get_callback(cb, data) cmdq_get_callback1(#cb, cb, data)
+struct cmdq_item *cmdq_get_callback1(const char *, cmdq_cb, void *);
void cmdq_insert_after(struct cmdq_item *, struct cmdq_item *);
void cmdq_append(struct client *, struct cmdq_item *);
void printflike(3, 4) cmdq_format(struct cmdq_item *, const char *,