summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mplayer.c1
-rw-r--r--playtree.c17
-rw-r--r--playtree.h3
3 files changed, 21 insertions, 0 deletions
diff --git a/mplayer.c b/mplayer.c
index bf0916ba49..8b503dc87c 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -937,6 +937,7 @@ play_dvd:
goto goto_next_file;
}
play_tree_insert_entry(playtree_iter->tree,entry);
+ play_tree_set_params_from(entry,playtree_iter->tree);
entry = playtree_iter->tree;
if(play_tree_iter_step(playtree_iter,1,0) != PLAY_TREE_ITER_ENTRY) {
eof = PT_NEXT_ENTRY;
diff --git a/playtree.c b/playtree.c
index c838cc1223..f9dc4f2d74 100644
--- a/playtree.c
+++ b/playtree.c
@@ -382,6 +382,23 @@ play_tree_unset_param(play_tree_t* pt, char* name) {
return 1;
}
+void
+play_tree_set_params_from(play_tree_t* dest,play_tree_t* src) {
+ int i;
+
+#ifdef MP_DEBUG
+ assert(dest != NULL);
+ assert(src != NULL);
+#endif
+
+ if(!src->params)
+ return;
+
+ for(i = 0; src->params[i].name != NULL ; i++)
+ play_tree_set_param(dest,src->params[i].name,src->params[i].value);
+
+}
+
static void
play_tree_iter_push_params(play_tree_iter_t* iter) {
int n;
diff --git a/playtree.h b/playtree.h
index c1475a9877..aaf0eefda8 100644
--- a/playtree.h
+++ b/playtree.h
@@ -117,6 +117,9 @@ play_tree_set_param(play_tree_t* pt, char* name, char* val);
int
play_tree_unset_param(play_tree_t* pt, char* name);
+// Set all paramter of source in dest
+void
+play_tree_set_params_from(play_tree_t* dest,play_tree_t* src);
/// Iterator