summaryrefslogtreecommitdiffstats
path: root/libmenu
diff options
context:
space:
mode:
authorUoti Urpala <uau@symbol.nonexistent.invalid>2008-04-30 13:00:59 +0300
committerUoti Urpala <uau@symbol.nonexistent.invalid>2008-04-30 14:46:21 +0300
commit423b95bf5cc46da5952a907fa565c0c7119724f0 (patch)
tree1bca5f4ac7cb5fb0d17cabcee6708d23ced2cb99 /libmenu
parentf7b608812ea637f89d9f9e860982940fd7101495 (diff)
downloadmpv-423b95bf5cc46da5952a907fa565c0c7119724f0.tar.bz2
mpv-423b95bf5cc46da5952a907fa565c0c7119724f0.tar.xz
input: Move cmd_queue to context struct
Menu instances now also need a input context pointer to queue commands.
Diffstat (limited to 'libmenu')
-rw-r--r--libmenu/menu.c8
-rw-r--r--libmenu/menu.h4
-rw-r--r--libmenu/menu_chapsel.c4
-rw-r--r--libmenu/menu_cmdlist.c8
-rw-r--r--libmenu/menu_console.c2
-rw-r--r--libmenu/menu_dvbin.c4
-rw-r--r--libmenu/menu_filesel.c4
-rw-r--r--libmenu/menu_param.c2
-rw-r--r--libmenu/menu_pt.c2
9 files changed, 22 insertions, 16 deletions
diff --git a/libmenu/menu.c b/libmenu/menu.c
index 6d3c6fb83e..0741f05448 100644
--- a/libmenu/menu.c
+++ b/libmenu/menu.c
@@ -72,6 +72,7 @@ int menu_mouse_pos_updated = 0;
static struct MPContext *menu_ctx = NULL;
static struct m_config *menu_mconfig = NULL;
+static struct input_ctx *menu_input = NULL;
static menu_def_t* menu_list = NULL;
static int menu_count = 0;
static menu_cmd_bindings_t *cmd_bindings = NULL;
@@ -214,7 +215,7 @@ static int menu_parse_config(char* buffer, struct m_config *mconfig)
#define BUF_MIN 128
#define BUF_MAX BUF_STEP*1024
int menu_init(struct MPContext *mpctx, struct m_config *mconfig,
- char* cfg_file)
+ struct input_ctx *input_ctx, char* cfg_file)
{
char* buffer = NULL;
int bl = BUF_STEP, br = 0;
@@ -255,6 +256,7 @@ int menu_init(struct MPContext *mpctx, struct m_config *mconfig,
menu_ctx = mpctx;
menu_mconfig = mconfig;
+ menu_input = input_ctx;
f = menu_parse_config(buffer, mconfig);
free(buffer);
return f;
@@ -291,7 +293,8 @@ int menu_dflt_read_key(menu_t* menu,int cmd) {
for (i = 0; i < bindings->binding_num; ++i) {
if (bindings->bindings[i].key == cmd) {
if (bindings->bindings[i].cmd)
- mp_input_parse_and_queue_cmds(bindings->bindings[i].cmd);
+ mp_input_parse_and_queue_cmds(menu->input_ctx,
+ bindings->bindings[i].cmd);
return 1;
}
}
@@ -317,6 +320,7 @@ menu_t* menu_open(char *name) {
m->priv = m_struct_copy(m->priv_st,menu_list[i].cfg);
m->ctx = menu_ctx;
m->mconfig = menu_mconfig;
+ m->input_ctx = menu_input;
m->type = &menu_list[i];
if(menu_list[i].type->open(m,menu_list[i].args))
return m;
diff --git a/libmenu/menu.h b/libmenu/menu.h
index 7b63fad547..3a3f8fd6c3 100644
--- a/libmenu/menu.h
+++ b/libmenu/menu.h
@@ -14,6 +14,7 @@ struct m_struct_st;
struct menu_s {
struct MPContext *ctx;
struct m_config *mconfig;
+ struct input_ctx *input_ctx;
void (*draw)(menu_t* menu,mp_image_t* mpi);
void (*read_cmd)(menu_t* menu,int cmd);
int (*read_key)(menu_t* menu,int cmd);
@@ -53,7 +54,8 @@ typedef struct menu_info_s {
#define MENU_CMD_CLICK 11
/// Global init/uninit
-int menu_init(struct MPContext *mpctx, struct m_config *mconfig, char* cfg_file);
+int menu_init(struct MPContext *mpctx, struct m_config *mconfig,
+ struct input_ctx *input_ctx, char* cfg_file);
void menu_uninit(void);
/// Open a menu defined in the config file
diff --git a/libmenu/menu_chapsel.c b/libmenu/menu_chapsel.c
index 825524531b..d446147e7a 100644
--- a/libmenu/menu_chapsel.c
+++ b/libmenu/menu_chapsel.c
@@ -141,9 +141,9 @@ static void read_cmd (menu_t* menu, int cmd)
case MENU_CMD_OK: {
char cmdbuf[26];
sprintf(cmdbuf, "seek_chapter %d 1", menu->priv->p.current->cid);
- mp_input_queue_cmd(mp_input_parse_cmd(cmdbuf));
+ mp_input_queue_cmd(menu->input_ctx, mp_input_parse_cmd(cmdbuf));
if (menu->priv->auto_close)
- mp_input_queue_cmd(mp_input_parse_cmd("menu hide"));
+ mp_input_queue_cmd(menu->input_ctx, mp_input_parse_cmd("menu hide"));
break;
}
default:
diff --git a/libmenu/menu_cmdlist.c b/libmenu/menu_cmdlist.c
index 13025c222c..2c2edf0970 100644
--- a/libmenu/menu_cmdlist.c
+++ b/libmenu/menu_cmdlist.c
@@ -55,21 +55,21 @@ static void read_cmd(menu_t* menu,int cmd) {
switch(cmd) {
case MENU_CMD_RIGHT:
if(mpriv->p.current->right) {
- mp_input_parse_and_queue_cmds(mpriv->p.current->right);
+ mp_input_parse_and_queue_cmds(menu->input_ctx, mpriv->p.current->right);
break;
} // fallback on ok if right is not defined
case MENU_CMD_OK:
if (mpriv->p.current->ok)
- mp_input_parse_and_queue_cmds(mpriv->p.current->ok);
+ mp_input_parse_and_queue_cmds(menu->input_ctx, mpriv->p.current->ok);
break;
case MENU_CMD_LEFT:
if(mpriv->p.current->left) {
- mp_input_parse_and_queue_cmds(mpriv->p.current->left);
+ mp_input_parse_and_queue_cmds(menu->input_ctx, mpriv->p.current->left);
break;
} // fallback on cancel if left is not defined
case MENU_CMD_CANCEL:
if(mpriv->p.current->cancel) {
- mp_input_parse_and_queue_cmds(mpriv->p.current->cancel);
+ mp_input_parse_and_queue_cmds(menu->input_ctx, mpriv->p.current->cancel);
break;
}
default:
diff --git a/libmenu/menu_console.c b/libmenu/menu_console.c
index abc941cdca..4b99412e1e 100644
--- a/libmenu/menu_console.c
+++ b/libmenu/menu_console.c
@@ -403,7 +403,7 @@ static void read_cmd(menu_t* menu,int cmd) {
run_shell_cmd(menu,c->args[0].v.s);
break;
default: // Send the other commands to mplayer
- mp_input_queue_cmd(c);
+ mp_input_queue_cmd(menu->input_ctx, c);
}
}
return;
diff --git a/libmenu/menu_dvbin.c b/libmenu/menu_dvbin.c
index f59f55d3ec..5b007afadd 100644
--- a/libmenu/menu_dvbin.c
+++ b/libmenu/menu_dvbin.c
@@ -215,8 +215,8 @@ static void read_cmd(menu_t* menu, int cmd)
if(c)
{
if(mpriv->auto_close)
- mp_input_queue_cmd (mp_input_parse_cmd ("menu hide"));
- mp_input_queue_cmd(c);
+ mp_input_queue_cmd(menu->input_ctx, mp_input_parse_cmd ("menu hide"));
+ mp_input_queue_cmd(menu->input_ctx, c);
}
}
}
diff --git a/libmenu/menu_filesel.c b/libmenu/menu_filesel.c
index faad082b64..92d9728658 100644
--- a/libmenu/menu_filesel.c
+++ b/libmenu/menu_filesel.c
@@ -351,7 +351,7 @@ static void read_cmd(menu_t* menu,int cmd) {
char *action = mpriv->p.current->d ? mpriv->dir_action:mpriv->file_action;
sprintf(filename,"%s%s",mpriv->dir,mpriv->p.current->p.txt);
str = replace_path(action, filename);
- mp_input_parse_and_queue_cmds(str);
+ mp_input_parse_and_queue_cmds(menu->input_ctx, str);
if (str != action)
free(str);
}
@@ -362,7 +362,7 @@ static void read_cmd(menu_t* menu,int cmd) {
char *str;
sprintf(filename,"%s%s",mpriv->dir,mpriv->p.current->p.txt);
str = replace_path(action, filename);
- mp_input_parse_and_queue_cmds(str);
+ mp_input_parse_and_queue_cmds(menu->input_ctx, str);
if(str != action)
free(str);
} break;
diff --git a/libmenu/menu_param.c b/libmenu/menu_param.c
index 6eadf8825d..8afd084b64 100644
--- a/libmenu/menu_param.c
+++ b/libmenu/menu_param.c
@@ -219,7 +219,7 @@ static void read_cmd(menu_t* menu,int cmd) {
char* txt = malloc(10 + strlen(e->menu) + 1);
sprintf(txt,"set_menu %s",e->menu);
c = mp_input_parse_cmd(txt);
- if(c) mp_input_queue_cmd(c);
+ if(c) mp_input_queue_cmd(menu->input_ctx, c);
return;
}
}
diff --git a/libmenu/menu_pt.c b/libmenu/menu_pt.c
index 27ce5ae0e3..1728c251a9 100644
--- a/libmenu/menu_pt.c
+++ b/libmenu/menu_pt.c
@@ -86,7 +86,7 @@ static void read_cmd(menu_t* menu,int cmd) {
}
c = mp_input_parse_cmd(str);
if(c)
- mp_input_queue_cmd(c);
+ mp_input_queue_cmd(menu->input_ctx, c);
else
mp_msg(MSGT_GLOBAL,MSGL_WARN,MSGTR_LIBMENU_FailedToBuildCommand,str);
} break;