Don't overwrite our pointer to the music class when music on hold stops. We will use this if it starts again to see if we can resume the music where it left off.

(closes issue #14407)
Reported by: mostyn


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@174218 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Joshua Colp
2009-02-09 14:48:21 +00:00
parent c347a43c9f
commit e2fd8852db

View File

@@ -202,7 +202,7 @@ static void moh_files_release(struct ast_channel *chan, void *data)
state->save_pos = state->pos;
state->class = mohclass_unref(state->class);
mohclass_unref(state->class);
}
@@ -307,8 +307,6 @@ static void *moh_files_alloc(struct ast_channel *chan, void *params)
if (!chan->music_state && (state = ast_calloc(1, sizeof(*state)))) {
chan->music_state = state;
state->class = mohclass_ref(class);
state->save_pos = -1;
} else {
state = chan->music_state;
}
@@ -318,17 +316,13 @@ static void *moh_files_alloc(struct ast_channel *chan, void *params)
}
if (state->class != class) {
/* (re-)initialize */
if (state->class) {
state->class = mohclass_unref(state->class);
}
memset(state, 0, sizeof(*state));
state->class = mohclass_ref(class);
if (ast_test_flag(state->class, MOH_RANDOMIZE) && class->total_files) {
if (ast_test_flag(class, MOH_RANDOMIZE) && class->total_files) {
state->pos = ast_random() % class->total_files;
}
}
state->class = mohclass_ref(class);
state->origwfmt = chan->writeformat;
if (option_verbose > 2) {