Merge branch 'obsd-master'

This commit is contained in:
Thomas Adam 2016-10-18 12:01:10 +01:00
commit 8576ecaf32
3 changed files with 19 additions and 4 deletions

View File

@ -112,6 +112,8 @@ cmdq_remove(struct cmdq_item *item)
cmd_list_free(item->cmdlist); cmd_list_free(item->cmdlist);
TAILQ_REMOVE(item->queue, item, entry); TAILQ_REMOVE(item->queue, item, entry);
free((void *)item->name);
free(item); 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 cmdq_item *item, *first = NULL, *last = NULL;
struct cmd *cmd; struct cmd *cmd;
u_int group = cmdq_next_group(); u_int group = cmdq_next_group();
char *tmp;
TAILQ_FOREACH(cmd, &cmdlist->list, qentry) { TAILQ_FOREACH(cmd, &cmdlist->list, qentry) {
xasprintf(&tmp, "command[%s]", cmd->entry->name);
item = xcalloc(1, sizeof *item); item = xcalloc(1, sizeof *item);
item->name = tmp;
item->type = CMDQ_COMMAND; item->type = CMDQ_COMMAND;
item->group = group; item->group = group;
item->flags = flags; item->flags = flags;
@ -220,12 +227,17 @@ out:
/* Get a callback for the command queue. */ /* Get a callback for the command queue. */
struct cmdq_item * 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; struct cmdq_item *item;
char *tmp;
xasprintf(&tmp, "callback[%s]", name);
item = xcalloc(1, sizeof *item); item = xcalloc(1, sizeof *item);
item->name = tmp;
item->type = CMDQ_CALLBACK; item->type = CMDQ_CALLBACK;
item->group = 0; item->group = 0;
item->flags = 0; item->flags = 0;
@ -289,8 +301,8 @@ cmdq_next(struct client *c)
item = TAILQ_FIRST(queue); item = TAILQ_FIRST(queue);
if (item == NULL) if (item == NULL)
break; break;
log_debug("%s %s: type %d, flags %x", __func__, name, log_debug("%s %s: %s (%d), flags %x", __func__, name,
item->type, item->flags); item->name, item->type, item->flags);
/* /*
* Any item with the waiting flag set waits until an external * Any item with the waiting flag set waits until an external

View File

@ -130,6 +130,7 @@ screen_write_flush(struct screen_write_ctx *ctx)
if (dirty == ctx->dirty) if (dirty == ctx->dirty)
break; break;
} }
ctx->dirty = 0;
s->cx = cx; s->cx = cx;
s->cy = cy; s->cy = cy;

4
tmux.h
View File

@ -1241,6 +1241,7 @@ enum cmdq_type {
/* Command queue item. */ /* Command queue item. */
typedef enum cmd_retval (*cmdq_cb) (struct cmdq_item *, void *); typedef enum cmd_retval (*cmdq_cb) (struct cmdq_item *, void *);
struct cmdq_item { struct cmdq_item {
const char *name;
struct cmdq_list *queue; struct cmdq_list *queue;
struct cmdq_item *next; struct cmdq_item *next;
@ -1781,7 +1782,8 @@ char *cmd_list_print(struct cmd_list *);
/* cmd-queue.c */ /* cmd-queue.c */
struct cmdq_item *cmdq_get_command(struct cmd_list *, struct cmd_find_state *, struct cmdq_item *cmdq_get_command(struct cmd_list *, struct cmd_find_state *,
struct mouse_event *, int); 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_insert_after(struct cmdq_item *, struct cmdq_item *);
void cmdq_append(struct client *, struct cmdq_item *); void cmdq_append(struct client *, struct cmdq_item *);
void printflike(3, 4) cmdq_format(struct cmdq_item *, const char *, void printflike(3, 4) cmdq_format(struct cmdq_item *, const char *,