Index: mplayer.c =================================================================== --- mplayer.c (révision 22299) +++ mplayer.c (copie de travail) @@ -2485,14 +2485,14 @@ #ifdef HAVE_MENU if(use_menu) { - if(menu_cfg && menu_init(menu_cfg)) + if(menu_cfg && menu_init(mpctx, menu_cfg)) mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_MenuInitialized, menu_cfg); else { menu_cfg = get_path("menu.conf"); - if(menu_init(menu_cfg)) + if(menu_init(mpctx, menu_cfg)) mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_MenuInitialized, menu_cfg); else { - if(menu_init(MPLAYER_CONFDIR "/menu.conf")) + if(menu_init(mpctx, MPLAYER_CONFDIR "/menu.conf")) mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_MenuInitialized, MPLAYER_CONFDIR"/menu.conf"); else { mp_msg(MSGT_CPLAYER,MSGL_INFO,MSGTR_MenuInitFailed); Index: libmenu/menu_list.c =================================================================== --- libmenu/menu_list.c (révision 22299) +++ libmenu/menu_list.c (copie de travail) @@ -1,5 +1,6 @@ #include +#include #include #include #include @@ -10,6 +11,15 @@ #include "libmpcodecs/mp_image.h" #include "m_struct.h" +#include "stream/stream.h" +#include "libmpdemux/demuxer.h" +#include "libmpdemux/stheader.h" +#include "libvo/sub.h" +#include "playtree.h" +#include "libvo/video_out.h" +#include "libao2/audio_out.h" +#include "mixer.h" +#include "mp_core.h" #include "menu.h" #include "libvo/font_load.h" Index: libmenu/vf_menu.c =================================================================== --- libmenu/vf_menu.c (révision 22299) +++ libmenu/vf_menu.c (copie de travail) @@ -22,11 +22,18 @@ #include "libvo/font_load.h" #include "input/input.h" #include "m_struct.h" +#include "stream/stream.h" +#include "libmpdemux/demuxer.h" +#include "libmpdemux/stheader.h" +#include "libvo/sub.h" +#include "playtree.h" +#include "libvo/video_out.h" +#include "libao2/audio_out.h" +#include "mixer.h" +#include "mp_core.h" #include "menu.h" -extern vo_functions_t* video_out; - static struct vf_priv_s* st_priv = NULL; static mp_image_t* pause_mpi = NULL; @@ -82,7 +89,7 @@ put_image(vf,pause_mpi, MP_NOPTS_VALUE); // Don't draw the osd atm //vf->control(vf,VFCTRL_DRAW_OSD,NULL); - video_out->flip_page(); + vf->priv->current->ctx->video_out->flip_page(); } } @@ -279,7 +286,7 @@ return (vf_next_query_format(vf,fmt)); } -static int open(vf_instance_t *vf, char* args){ +static int vfopen(vf_instance_t *vf, char* args){ if(!st_priv) { st_priv = calloc(1,sizeof(struct vf_priv_s)); st_priv->root = st_priv->current = menu_open(args); @@ -309,7 +316,7 @@ "menu", "Albeu", "", - open, + vfopen, NULL }; Index: libmenu/menu_cmdlist.c =================================================================== --- libmenu/menu_cmdlist.c (révision 22299) +++ libmenu/menu_cmdlist.c (copie de travail) @@ -4,6 +4,7 @@ #include "help_mp.h" #include +#include #include #include #include @@ -13,6 +14,15 @@ #include "m_option.h" #include "m_struct.h" +#include "stream/stream.h" +#include "libmpdemux/demuxer.h" +#include "libmpdemux/stheader.h" +#include "libvo/sub.h" +#include "playtree.h" +#include "libvo/video_out.h" +#include "libao2/audio_out.h" +#include "mixer.h" +#include "mp_core.h" #include "asxparser.h" #include "menu.h" #include "menu_list.h" @@ -149,7 +159,7 @@ } } -static int open(menu_t* menu, char* args) { +static int open_cmd(menu_t* menu, char* args) { menu->draw = menu_list_draw; menu->read_cmd = read_cmd; menu->read_key = read_key; @@ -177,5 +187,5 @@ &cfg_dflt, cfg_fields }, - open + open_cmd }; Index: libmenu/menu_txt.c =================================================================== --- libmenu/menu_txt.c (révision 22299) +++ libmenu/menu_txt.c (copie de travail) @@ -4,6 +4,7 @@ #include "help_mp.h" #include +#include #include #include @@ -12,6 +13,15 @@ #include "m_struct.h" #include "m_option.h" +#include "stream/stream.h" +#include "libmpdemux/demuxer.h" +#include "libmpdemux/stheader.h" +#include "libvo/sub.h" +#include "playtree.h" +#include "libvo/video_out.h" +#include "libao2/audio_out.h" +#include "mixer.h" +#include "mp_core.h" #include "menu.h" #include "libvo/font_load.h" @@ -118,7 +128,7 @@ #define BUF_SIZE 1024 -static int open(menu_t* menu, char* args) { +static int open_txt(menu_t* menu, char* args) { FILE* fd; char buf[BUF_SIZE]; char *l; @@ -192,5 +202,5 @@ &cfg_dflt, cfg_fields }, - open, + open_txt, }; Index: libmenu/menu.c =================================================================== --- libmenu/menu.c (révision 22299) +++ libmenu/menu.c (copie de travail) @@ -19,6 +19,14 @@ #include "libmpcodecs/mp_image.h" #include "m_option.h" #include "m_struct.h" +#include "libmpdemux/demuxer.h" +#include "libmpdemux/stheader.h" +#include "libvo/sub.h" +#include "playtree.h" +#include "libvo/video_out.h" +#include "libao2/audio_out.h" +#include "mixer.h" +#include "mp_core.h" #include "menu.h" extern menu_info_t menu_info_cmdlist; @@ -52,6 +60,7 @@ char* args; } menu_def_t; +static MPContext *menu_ctx = NULL; static menu_def_t* menu_list = NULL; static int menu_count = 0; @@ -122,7 +131,7 @@ #define BUF_STEP 1024 #define BUF_MIN 128 #define BUF_MAX BUF_STEP*1024 -int menu_init(char* cfg_file) { +int menu_init(MPContext *mpctx, char* cfg_file) { char* buffer = NULL; int bl = BUF_STEP, br = 0; int f, fd; @@ -160,6 +169,7 @@ close(fd); + menu_ctx = mpctx; f = menu_parse_config(buffer); free(buffer); return f; @@ -216,6 +226,7 @@ m = calloc(1,sizeof(menu_t)); m->priv_st = &(menu_list[i].type->priv_st); m->priv = m_struct_copy(m->priv_st,menu_list[i].cfg); + m->ctx = menu_ctx; if(menu_list[i].type->open(m,menu_list[i].args)) return m; if(m->priv) Index: libmenu/menu_param.c =================================================================== --- libmenu/menu_param.c (révision 22299) +++ libmenu/menu_param.c (copie de travail) @@ -2,6 +2,7 @@ #include "config.h" #include +#include #include #include #include @@ -16,6 +17,15 @@ #include "m_struct.h" #include "m_option.h" #include "m_property.h" +#include "stream/stream.h" +#include "libmpdemux/demuxer.h" +#include "libmpdemux/stheader.h" +#include "libvo/sub.h" +#include "playtree.h" +#include "libvo/video_out.h" +#include "libao2/audio_out.h" +#include "mixer.h" +#include "mp_core.h" #include "asxparser.h" #include "libmpcodecs/img_format.h" @@ -79,7 +89,7 @@ m_option_t* mp_property_find(const char* name); static void entry_set_text(menu_t* menu, list_entry_t* e) { - char* val = m_property_print(e->opt); + char* val = m_property_print(e->opt, menu->ctx); int l,edit = (mpriv->edit && e == mpriv->p.current); if(!val) { if(mpriv->hide_na) { @@ -227,22 +237,22 @@ case MENU_CMD_UP: if(!mpriv->edit) break; case MENU_CMD_RIGHT: - if(m_property_do(e->opt,M_PROPERTY_STEP_UP,NULL) > 0) + if(m_property_do(e->opt,M_PROPERTY_STEP_UP,NULL,menu->ctx) > 0) update_entries(menu); return; case MENU_CMD_DOWN: if(!mpriv->edit) break; case MENU_CMD_LEFT: - if(m_property_do(e->opt,M_PROPERTY_STEP_DOWN,NULL) > 0) + if(m_property_do(e->opt,M_PROPERTY_STEP_DOWN,NULL,menu->ctx) > 0) update_entries(menu); return; case MENU_CMD_OK: // check that the property is writable - if(m_property_do(e->opt,M_PROPERTY_SET,NULL) < 0) return; + if(m_property_do(e->opt,M_PROPERTY_SET,NULL,menu->ctx) < 0) return; // shortcut for flags if(e->opt->type == CONF_TYPE_FLAG) { - if(m_property_do(e->opt,M_PROPERTY_STEP_UP,NULL) > 0) + if(m_property_do(e->opt,M_PROPERTY_STEP_UP,NULL,menu->ctx) > 0) update_entries(menu); return; } Index: libmenu/menu_console.c =================================================================== --- libmenu/menu_console.c (révision 22299) +++ libmenu/menu_console.c (copie de travail) @@ -4,6 +4,7 @@ #include "help_mp.h" #include +#include #include #include #include @@ -20,6 +21,15 @@ #include "m_struct.h" #include "m_option.h" +#include "stream/stream.h" +#include "libmpdemux/demuxer.h" +#include "libmpdemux/stheader.h" +#include "libvo/sub.h" +#include "playtree.h" +#include "libvo/video_out.h" +#include "libao2/audio_out.h" +#include "mixer.h" +#include "mp_core.h" #include "menu.h" #include "libvo/font_load.h" Index: libmenu/menu_dvbin.c =================================================================== --- libmenu/menu_dvbin.c (révision 22299) +++ libmenu/menu_dvbin.c (copie de travail) @@ -1,5 +1,6 @@ #include +#include #include #include #include @@ -15,6 +16,15 @@ #include "m_struct.h" #include "m_option.h" +#include "stream/stream.h" +#include "libmpdemux/demuxer.h" +#include "libmpdemux/stheader.h" +#include "libvo/sub.h" +#include "playtree.h" +#include "libvo/video_out.h" +#include "libao2/audio_out.h" +#include "mixer.h" +#include "mp_core.h" #include "libmpcodecs/img_format.h" #include "libmpcodecs/mp_image.h" Index: libmenu/menu_filesel.c =================================================================== --- libmenu/menu_filesel.c (révision 22299) +++ libmenu/menu_filesel.c (copie de travail) @@ -1,5 +1,6 @@ #include +#include #include #include #include @@ -17,6 +18,15 @@ #include "m_struct.h" #include "m_option.h" +#include "stream/stream.h" +#include "libmpdemux/demuxer.h" +#include "libmpdemux/stheader.h" +#include "libvo/sub.h" +#include "playtree.h" +#include "libvo/video_out.h" +#include "libao2/audio_out.h" +#include "mixer.h" +#include "mp_core.h" #include "libmpcodecs/img_format.h" #include "libmpcodecs/mp_image.h" Index: libmenu/menu_pt.c =================================================================== --- libmenu/menu_pt.c (révision 22299) +++ libmenu/menu_pt.c (copie de travail) @@ -1,5 +1,6 @@ #include +#include #include #include //#include @@ -13,6 +14,15 @@ #include "m_struct.h" #include "m_option.h" +#include "stream/stream.h" +#include "libmpdemux/demuxer.h" +#include "libmpdemux/stheader.h" +#include "libvo/sub.h" +#include "playtree.h" +#include "libvo/video_out.h" +#include "libao2/audio_out.h" +#include "mixer.h" +#include "mp_core.h" #include "menu.h" #include "menu_list.h" @@ -22,7 +32,6 @@ #define mp_basename(s) (strrchr((s),'/')==NULL?(char*)(s):(strrchr((s),'/')+1)) -extern play_tree_iter_t* playtree_iter; struct list_entry_s { struct list_entry p; @@ -60,20 +69,20 @@ mp_cmd_t* c; - if(playtree_iter->tree == mpriv->p.current->pt) + if(menu->ctx->playtree_iter->tree == mpriv->p.current->pt) break; - if(playtree_iter->tree->parent && mpriv->p.current->pt == playtree_iter->tree->parent) + if(menu->ctx->playtree_iter->tree->parent && mpriv->p.current->pt == menu->ctx->playtree_iter->tree->parent) snprintf(str,15,"pt_up_step 1"); else { - for(i = playtree_iter->tree->next; i != NULL ; i = i->next) { + for(i = menu->ctx->playtree_iter->tree->next; i != NULL ; i = i->next) { if(i == mpriv->p.current->pt) break; d++; } if(i == NULL) { d = -1; - for(i = playtree_iter->tree->prev; i != NULL ; i = i->prev) { + for(i = menu->ctx->playtree_iter->tree->prev; i != NULL ; i = i->prev) { if(i == mpriv->p.current->pt) break; d--; @@ -118,14 +127,14 @@ mpriv->p.title = mpriv->title; - if(playtree_iter->tree->parent != playtree_iter->root) { + if(menu->ctx->playtree_iter->tree->parent != menu->ctx->playtree_iter->root) { e = calloc(1,sizeof(list_entry_t)); e->p.txt = ".."; - e->pt = playtree_iter->tree->parent; + e->pt = menu->ctx->playtree_iter->tree->parent; menu_list_add_entry(menu,e); } - for(i = playtree_iter->tree ; i->prev != NULL ; i = i->prev) + for(i = menu->ctx->playtree_iter->tree ; i->prev != NULL ; i = i->prev) /* NOP */; for( ; i != NULL ; i = i->next ) { e = calloc(1,sizeof(list_entry_t)); Index: libmenu/menu.h =================================================================== --- libmenu/menu.h (révision 22299) +++ libmenu/menu.h (copie de travail) @@ -3,6 +3,7 @@ typedef struct menu_s menu_t; struct menu_s { + MPContext *ctx; void (*draw)(menu_t* menu,mp_image_t* mpi); void (*read_cmd)(menu_t* menu,int cmd); void (*read_key)(menu_t* menu,int cmd); @@ -36,7 +37,7 @@ #define MENU_CMD_ACTION 6 /// Global init/uninit -int menu_init(char* cfg_file); +int menu_init(MPContext *mpctx, char* cfg_file); void menu_unint(void); /// Open a menu defined in the config file