[SCM] gsequencer/upstream: fixed linkage
jkraehemann-guest at users.alioth.debian.org
jkraehemann-guest at users.alioth.debian.org
Sun Jun 14 16:07:02 UTC 2015
The following commit has been merged in the upstream branch:
commit 64e18af0ae2fe4f69738dbad95263642539e5d81
Author: Joël Krähemann <weedlight at gmail.com>
Date: Sat Apr 18 21:52:54 2015 +0000
fixed linkage
diff --git a/src/ags/X/machine/ags_synth.c b/src/ags/X/machine/ags_synth.c
index 60df855..6d6c0cb 100644
--- a/src/ags/X/machine/ags_synth.c
+++ b/src/ags/X/machine/ags_synth.c
@@ -393,7 +393,7 @@ ags_synth_map_recall(AgsMachine *machine)
audio = machine->audio;
synth = AGS_SYNTH(machine);
- /* ags-delay */
+ /* ags-delay * /
ags_recall_factory_create(audio,
NULL, NULL,
"ags-stream\0",
@@ -401,10 +401,10 @@ ags_synth_map_recall(AgsMachine *machine)
0, audio->output_pads,
(AGS_RECALL_FACTORY_OUTPUT |
AGS_RECALL_FACTORY_ADD |
- AGS_RECALL_FACTORY_PLAY |
- AGS_RECALL_FACTORY_RECALL),
+ AGS_RECALL_FACTORY_PLAY),
0);
-
+ */
+
AGS_MACHINE_CLASS(ags_synth_parent_class)->map_recall(machine);
}
diff --git a/src/ags/audio/ags_audio.c b/src/ags/audio/ags_audio.c
index 3090d1e..6656832 100644
--- a/src/ags/audio/ags_audio.c
+++ b/src/ags/audio/ags_audio.c
@@ -2812,11 +2812,10 @@ ags_audio_duplicate_recall(AgsAudio *audio,
}
/* append to AgsAudio */
- if(recall_id->recycling_container->parent == NULL)
- audio->play = g_list_append(audio->play, copy);
- else
- audio->recall = g_list_append(audio->recall, copy);
-
+ ags_audio_add_recall(audio,
+ copy,
+ ((recall_id->recycling_container->parent == NULL) ? TRUE: FALSE));
+
/* connect */
ags_connectable_connect(AGS_CONNECTABLE(copy));
}
diff --git a/src/ags/audio/ags_channel.c b/src/ags/audio/ags_channel.c
index b49b670..16e124d 100644
--- a/src/ags/audio/ags_channel.c
+++ b/src/ags/audio/ags_channel.c
@@ -1589,15 +1589,13 @@ ags_channel_set_recycling(AgsChannel *channel,
while(recall_id != NULL){
if(AGS_IS_OUTPUT(channel)){
- if(AGS_RECALL_ID(recall_id->data)->recycling != NULL &&
- !AGS_IS_OUTPUT(AGS_RECYCLING(AGS_RECALL_ID(recall_id->data)->recycling)->channel)){
+ if(AGS_RECALL_ID(recall_id->data)->recycling != old_first_recycling){
recall_id = recall_id->next;
continue;
}
}else{
- if(AGS_RECALL_ID(recall_id->data)->recycling != NULL &&
- !AGS_IS_INPUT(AGS_RECYCLING(AGS_RECALL_ID(recall_id->data)->recycling)->channel)){
+ if(AGS_RECALL_ID(recall_id->data)->recycling != old_first_recycling){
recall_id = recall_id->next;
continue;
@@ -1616,7 +1614,9 @@ ags_channel_set_recycling(AgsChannel *channel,
NULL);
ags_audio_add_recycling_container(audio,
recycling_container);
-
+ ags_audio_remove_recycling_container(audio,
+ old_recycling_container);
+
ags_channel_recursive_reset_recycling_container(channel,
old_recycling_container,
recycling_container);
@@ -1710,6 +1710,24 @@ ags_channel_recursive_reset_recycling_container(AgsChannel *channel,
channel = channel->link;
}
+
+ /* update all in recycling context */
+ if(AGS_IS_INPUT(channel) &&
+ (AGS_AUDIO_ASYNC & (audio->flags)) != 0){
+ AgsChannel *input;
+
+ input = ags_channel_nth(audio->input,
+ channel->audio_channel);
+
+ while(input != NULL){
+ if(input != channel){
+ ags_channel_reset_recycling_container(input->recall_id);
+ ags_channel_recursive_reset_recycling_container_down_output(input->link);
+ }
+
+ input = input->next_pad;
+ }
+ }
}
void ags_channel_recursive_reset_recycling_container_down_input(AgsChannel *output){
AgsChannel *input;
@@ -1774,9 +1792,6 @@ ags_channel_recursive_reset_recycling_container(AgsChannel *channel,
}
if(AGS_IS_INPUT(channel)){
- ags_channel_reset_recycling_container(AGS_AUDIO(channel->audio)->recall_id);
- ags_channel_reset_recycling_container(channel->recall_id);
-
ags_channel_recursive_reset_recycling_container_down_output(channel->link);
ags_channel_recursive_reset_recycling_container_up(channel);
}else{
@@ -2676,9 +2691,9 @@ ags_channel_duplicate_recall(AgsChannel *channel,
return;
}
- //#ifdef AGS_DEBUG
+#ifdef AGS_DEBUG
g_message("duplicate channel %d\0", channel->line);
- //#endif
+#endif
audio = AGS_AUDIO(channel->audio);
@@ -2736,11 +2751,10 @@ ags_channel_duplicate_recall(AgsChannel *channel,
}
/* append to AgsAudio */
- if(recall_id->recycling_container->parent == NULL)
- channel->play = g_list_append(channel->play, copy);
- else
- channel->recall = g_list_append(channel->recall, copy);
-
+ ags_channel_add_recall(channel,
+ copy,
+ (recall_id->recycling_container->parent == NULL) ? TRUE: FALSE);
+
/* connect */
ags_connectable_connect(AGS_CONNECTABLE(copy));
@@ -2892,7 +2906,6 @@ ags_channel_recursive_play_init(AgsChannel *channel, gint stage,
AgsAudio *audio;
AgsChannel *current;
AgsRecallID *audio_recall_id;
- AgsRecallID *default_recall_id;
AgsRecycling *recycling;
AgsRecyclingContainer *recycling_container;
gint recycling_length;
@@ -2903,7 +2916,6 @@ ags_channel_recursive_play_init(AgsChannel *channel, gint stage,
}
audio = AGS_AUDIO(channel->audio);
- default_recall_id = NULL;
current = channel;
@@ -3065,23 +3077,23 @@ ags_channel_recursive_play_init(AgsChannel *channel, gint stage,
}
/* audio recall id */
- audio_recall_id = g_object_new(AGS_TYPE_RECALL_ID,
- "recycling\0", current->first_recycling,
- "recycling_container\0", recall_id->recycling_container,
- NULL);
+ recall_id = g_object_new(AGS_TYPE_RECALL_ID,
+ "recycling\0", current->first_recycling,
+ "recycling_container\0", recall_id->recycling_container,
+ NULL);
ags_audio_add_recall_id(audio,
- audio_recall_id);
+ recall_id);
if(playback){
- audio_recall_id->flags |= AGS_RECALL_ID_PLAYBACK;
+ recall_id->flags |= AGS_RECALL_ID_PLAYBACK;
}
if(sequencer){
- audio_recall_id->flags |= AGS_RECALL_ID_SEQUENCER;
+ recall_id->flags |= AGS_RECALL_ID_SEQUENCER;
}
if(notation){
- audio_recall_id->flags |= AGS_RECALL_ID_NOTATION;
+ recall_id->flags |= AGS_RECALL_ID_NOTATION;
}
/* AgsOutput */
@@ -3102,7 +3114,7 @@ ags_channel_recursive_play_init(AgsChannel *channel, gint stage,
/* output recall id with default recycling container */
recall_id = g_object_new(AGS_TYPE_RECALL_ID,
"recycling\0", current->first_recycling,
- "recycling_container\0", audio_recall_id->recycling_container,
+ "recycling_container\0", recall_id->recycling_container,
NULL);
ags_channel_add_recall_id(current,
recall_id);
@@ -3134,7 +3146,7 @@ ags_channel_recursive_play_init(AgsChannel *channel, gint stage,
current = current->link;
}
- return(recall_id);
+ return(audio_recall_id);
}
AgsRecallID** ags_channel_recursive_play_init_arrange_recall_id_down_input(AgsChannel *output,
AgsRecallID *default_recall_id,
@@ -4112,8 +4124,8 @@ ags_channel_recursive_play_init(AgsChannel *channel, gint stage,
"parent\0", NULL,
"length\0", recycling_length,
NULL);
- audio->recycling_container = g_list_prepend(audio->recycling_container,
- recycling_container);
+ ags_audio_add_recycling_container(audio,
+ recycling_container);
/* set up recycling container */
recycling = input->first_recycling;
@@ -4431,12 +4443,6 @@ ags_channel_tillrecycling_cancel(AgsChannel *channel,
AgsRecallID *default_recall_id);
auto void ags_channel_tillrecycling_cancel_down(AgsChannel *output,
AgsRecallID *recall_id);
- auto void ags_channel_tillrecycling_remove_up(AgsChannel *channel,
- AgsRecallID *recall_id);
- auto void ags_channel_tillrecycling_remove_down_input(AgsChannel *output,
- AgsRecallID *default_recall_id);
- auto void ags_channel_tillrecycling_remove_down(AgsChannel *output,
- AgsRecallID *recall_id);
void ags_channel_tillrecycling_cancel_up(AgsChannel *channel,
AgsRecallID *recall_id)
@@ -4496,7 +4502,6 @@ ags_channel_tillrecycling_cancel(AgsChannel *channel,
/* AgsAudio */
audio_recall_id = ags_recall_id_find_recycling_container(audio->recall_id,
recall_id->recycling_container);
-
ags_audio_cancel(audio,
audio_recall_id);
}
@@ -4671,281 +4676,25 @@ ags_channel_tillrecycling_cancel(AgsChannel *channel,
}
}
- void ags_channel_tillrecycling_remove_up(AgsChannel *channel,
- AgsRecallID *recall_id)
- {
- AgsAudio *audio;
- AgsChannel *current;
-
- if(channel == NULL){
- return;
- }
-
- audio = AGS_AUDIO(channel->audio);
-
- current = channel;
-
- if(AGS_IS_OUTPUT(channel)){
- goto ags_channel_tillrecycling_remove_up_OUTPUT;
- }
-
- /* goto toplevel AgsChannel */
- while(current != NULL){
- /* AgsInput */
- recall_id = ags_recall_id_find_recycling_container(current->recall_id,
- recall_id->recycling_container);
-
- ags_channel_remove(current,
- recall_id);
-
- /* AgsAudio */
- recall_id = ags_recall_id_find_recycling_container(audio->recall_id,
- recall_id->recycling_container);
-
- ags_audio_remove(audio,
- recall_id);
-
- /* AgsOutput */
- if((AGS_AUDIO_OUTPUT_HAS_RECYCLING & (audio->flags)) != 0){
- break;
- }
-
- if((AGS_AUDIO_ASYNC & (audio->flags)) != 0){
- current = ags_channel_nth(audio->output, current->audio_channel);
- }else{
- current = ags_channel_nth(audio->output, current->line);
- }
-
- recall_id = ags_recall_id_find_recycling_container(current->recall_id,
- recall_id->recycling_container);
-
- ags_channel_tillrecycling_remove_up_OUTPUT:
- ags_channel_remove(current,
- recall_id);
-
- if(current == channel){
- AgsRecallID *audio_recall_id;
-
- /* AgsAudio */
- audio_recall_id = ags_recall_id_find_recycling_container(audio->recall_id,
- recall_id->recycling_container);
-
- ags_audio_remove(audio,
- audio_recall_id);
- }
-
- /* iterate */
- if(current->link == NULL){
- break;
- }
-
- audio = AGS_AUDIO(current->link->audio);
-
- //NOTE:JK: see documentation
- // if((AGS_AUDIO_INPUT_HAS_RECYCLING & (audio->flags)) != 0)
- // break;
-
- current = current->link;
- }
- }
- void ags_channel_tillrecycling_remove_down_input(AgsChannel *output,
- AgsRecallID *default_recall_id)
- {
- AgsAudio *audio;
- AgsChannel *input, *input_start;
- AgsRecallID *input_recall_id;
-
- audio = AGS_AUDIO(output->audio);
-
- if(audio->input == NULL){
- return;
- }
-
- if((AGS_AUDIO_ASYNC & (audio->flags)) != 0){ /* async order of channels within audio */
- /* retrieve input */
- input_start =
- input = ags_channel_nth(audio->input,
- output->audio_channel);
-
- /* remove recalls on input */
- while(input != NULL){
- input_recall_id = ags_recall_id_find_recycling_container(input->recall_id,
- default_recall_id->recycling_container);
-
- /* remove input */
- ags_channel_remove(input,
- input_recall_id);
-
- /* iterate */
- input = input->next_pad;
- }
-
- /* traverse the tree */
- input = input_start;
-
- while(input != NULL){
- if(input->link != NULL){
- input_recall_id = ags_recall_id_find_recycling_container(input->recall_id,
- default_recall_id->recycling_container);
-
- /* follow the links */
- ags_channel_tillrecycling_remove_down(input->link,
- input_recall_id);
- }
-
- /* iterate */
- input = input->next_pad;
- }
-
- }else{ /* sync order of channels within audio */
- /* retrieve input */
- input = ags_channel_nth(audio->input, output->line);
-
- input_recall_id = ags_recall_id_find_recycling_container(input->recall_id,
- default_recall_id->recycling_container);
-
- /* remove recalls on input */
- ags_channel_remove(input,
- input_recall_id);
-
- /* follow the links */
- if(input->link != NULL){
- /* follow the links */
- ags_channel_tillrecycling_remove_down(input->link,
- input_recall_id);
- }
- }
- }
- void ags_channel_tillrecycling_remove_down(AgsChannel *output,
- AgsRecallID *recall_id)
- {
- AgsAudio *audio;
- AgsRecallID *audio_recall_id, *default_recall_id;
- GList *list;
-
- if(output == NULL || recall_id == NULL){
- return;
- }
-
- /* AgsAudio */
- audio = AGS_AUDIO(output->audio);
-
- if((AGS_AUDIO_OUTPUT_HAS_RECYCLING & (audio->flags)) != 0){
- if(recall_id->recycling_container != NULL &&
- recall_id->recycling_container->parent != NULL){
- list = output->recall_id;
-
- while(list != NULL){
- if(AGS_RECALL_ID(list->data)->recycling_container->parent == recall_id->recycling_container){
- recall_id = list->data;
- break;
- }
-
- list = list->next;
- }
-
- if(list == NULL){
- recall_id = NULL;
- }
- }
- }else{
- recall_id = ags_recall_id_find_recycling_container(output->recall_id,
- recall_id->recycling_container);
- }
-
- /* remove output */
- ags_channel_remove(output,
- recall_id);
-
- /* retrieve next recall id */
- if((AGS_AUDIO_OUTPUT_HAS_RECYCLING & (audio->flags)) != 0){
- AgsChannel *input;
- AgsRecyclingContainer *recycling_container;
-
- if((AGS_AUDIO_ASYNC & (audio->flags)) != 0){
- input = ags_channel_nth(audio->input,
- output->audio_channel);
- }else{
- input = ags_channel_nth(audio->input,
- output->line);
- }
-
- audio_recall_id = ags_recall_id_find_recycling_container(audio->recall_id,
- recall_id->recycling_container);
-
- list = audio_recall_id->recycling_container->children;
- default_recall_id = ags_recall_id_find_recycling_container(audio->recall_id,
- AGS_RECYCLING_CONTAINER(list->data));
- }else{
- audio_recall_id = ags_recall_id_find_recycling_container(audio->recall_id,
- recall_id->recycling_container);
-
- default_recall_id = audio_recall_id;
- }
-
- if((AGS_AUDIO_OUTPUT_HAS_RECYCLING & (audio->flags)) != 0){
- /* call function which remove input */
- ags_channel_tillrecycling_remove_down_input(output,
- default_recall_id);
-
- /* remove audio */
- ags_audio_remove(audio,
- audio_recall_id);
-
- ags_audio_remove(audio,
- default_recall_id);
- }else{
- /* call function which remove input */
- ags_channel_tillrecycling_remove_down_input(output,
- default_recall_id);
-
- /* remove audio */
- ags_audio_remove(audio,
- audio_recall_id);
- }
- }
-
/* entry point */
audio = channel->audio;
if(AGS_IS_OUTPUT(channel)){
ags_channel_tillrecycling_cancel_down(channel,
recall_id);
- }else{
- /* get audio recall id */
- audio_recall_id = ags_recall_id_find_recycling_container(audio->recall_id,
- recall_id->recycling_container);
-
- /* get default recall id */
- if((AGS_AUDIO_OUTPUT_HAS_RECYCLING & (audio->flags)) == 0){
- default_recall_id = audio_recall_id;
- }else{
- default_recall_id = recall_id;
- }
-
- /* follow the links */
- if(channel->link != NULL){
- ags_channel_tillrecycling_cancel_down(channel->link,
- default_recall_id);
- }
- }
- ags_channel_tillrecycling_cancel_up(channel,
- recall_id);
-
- if(AGS_IS_OUTPUT(channel)){
- ags_channel_tillrecycling_remove_down(channel,
- recall_id);
+ ags_channel_tillrecycling_cancel_up(channel->link,
+ recall_id);
}else{
/* follow the links */
if(channel->link != NULL){
- ags_channel_tillrecycling_remove_down(channel->link,
- default_recall_id);
+ ags_channel_tillrecycling_cancel_down(channel->link,
+ recall_id);
}
+
+ ags_channel_tillrecycling_cancel_up(channel,
+ recall_id);
}
-
- ags_channel_tillrecycling_remove_up(channel,
- recall_id);
}
/**
diff --git a/src/ags/audio/ags_recall.c b/src/ags/audio/ags_recall.c
index 2f0a55b..95540c9 100644
--- a/src/ags/audio/ags_recall.c
+++ b/src/ags/audio/ags_recall.c
@@ -1664,7 +1664,7 @@ ags_recall_remove(AgsRecall *recall)
g_signal_emit(G_OBJECT(recall),
recall_signals[REMOVE], 0);
g_object_unref(G_OBJECT(recall));
- g_object_unref(recall);
+ // g_object_unref(recall);
}
/**
diff --git a/src/ags/audio/ags_recall_channel_run.c b/src/ags/audio/ags_recall_channel_run.c
index 651af09..ee9212c 100644
--- a/src/ags/audio/ags_recall_channel_run.c
+++ b/src/ags/audio/ags_recall_channel_run.c
@@ -957,10 +957,6 @@ ags_recall_channel_run_remap_child_source(AgsRecallChannelRun *recall_channel_ru
source_recycling = new_start_changed_region;
while(source_recycling != new_end_changed_region->next){
- if(AGS_RECALL(recall_channel_run)->recall_id->recycling_container->parent == NULL){
- g_warning("a !!!\0");
- }
-
recall_recycling = g_object_new(AGS_RECALL(recall_channel_run)->child_type,
"devout\0", AGS_RECALL(recall_channel_run)->devout,
"recall_id\0", AGS_RECALL(recall_channel_run)->recall_id,
@@ -1057,7 +1053,9 @@ ags_recall_channel_run_source_recycling_changed_callback(AgsChannel *channel,
AgsRecycling *new_start_changed_region, AgsRecycling *new_end_changed_region,
AgsRecallChannelRun *recall_channel_run)
{
- /* empty */
+ ags_recall_channel_run_remap_child_source(recall_channel_run,
+ old_start_changed_region, old_end_changed_region,
+ new_start_changed_region, new_end_changed_region);
}
void
diff --git a/src/ags/audio/ags_recall_recycling.c b/src/ags/audio/ags_recall_recycling.c
index c5d22e5..ae28c03 100644
--- a/src/ags/audio/ags_recall_recycling.c
+++ b/src/ags/audio/ags_recall_recycling.c
@@ -650,14 +650,6 @@ ags_recall_recycling_source_add_audio_signal_callback(AgsRecycling *source,
recall = AGS_RECALL(recall_recycling);
channel = AGS_RECALL_CHANNEL_RUN(recall->parent)->source;
-
- if(audio_signal->recall_id != NULL && recall->recall_id != NULL){
- g_message("%x, %x\0", recall->recall_id->recycling_container, AGS_RECALL_ID(audio_signal->recall_id)->recycling_container);
-
- if(recall->recall_id->recycling_container->parent == NULL){
- g_warning("b !!!\0");
- }
- }
if((AGS_AUDIO_SIGNAL_TEMPLATE & (audio_signal->flags)) == 0 &&
audio_signal->recall_id != NULL && recall->recall_id != NULL &&
@@ -685,7 +677,6 @@ ags_recall_recycling_source_add_audio_signal_callback(AgsRecycling *source,
}
#endif
-
if((AGS_RECALL_RECYCLING_MAP_CHILD_SOURCE & (recall_recycling->flags)) != 0){
g_object_set(G_OBJECT(recall_recycling),
"child_source\0", audio_signal,
diff --git a/src/ags/audio/ags_recycling_container.c b/src/ags/audio/ags_recycling_container.c
index 9b205ec..e65ee55 100644
--- a/src/ags/audio/ags_recycling_container.c
+++ b/src/ags/audio/ags_recycling_container.c
@@ -661,26 +661,32 @@ ags_recycling_container_reset_recycling(AgsRecyclingContainer *recycling_contain
/* instantiate */
if(new_context){
new_recycling_container = g_object_new(AGS_TYPE_RECYCLING_CONTAINER,
- "parent\0", recycling_container->parent,
"length\0", new_length,
NULL);
}else{
new_recycling_container = g_object_new(AGS_TYPE_RECYCLING_CONTAINER,
- "parent\0", recycling_container->parent,
"length\0", (recycling_container->length -
(last_index - first_index) +
new_length),
NULL);
}
+
+ if(recycling_container->parent != NULL){
+ GList *list;
+
+ list = g_list_find(recycling_container->parent->children,
+ recycling_container);
+ list->data = new_recycling_container;
+ g_object_ref(new_recycling_container);
+
+ new_recycling_container->parent = recycling_container->parent;
+ g_object_ref(new_recycling_container->parent);
+
+ new_recycling_container->recall_id = recycling_container->recall_id;
+ g_object_ref(recycling_container->recall_id);
+ }
new_recycling_container->children = g_list_copy(recycling_container->children);
- g_object_set(new_recycling_container,
- "parent\0", recycling_container->parent,
- NULL);
- g_object_set(recycling_container,
- "parent\0", NULL,
- NULL);
-
/* copy heading */
if(!new_context){
@@ -709,7 +715,7 @@ ags_recycling_container_reset_recycling(AgsRecyclingContainer *recycling_contain
(new_recycling_container->length - first_index - new_length) * sizeof(AgsRecycling *));
}
}
-
+
return(new_recycling_container);
}
diff --git a/src/ags/audio/recall/ags_buffer_audio_signal.c b/src/ags/audio/recall/ags_buffer_audio_signal.c
index 4b44136..2308633 100644
--- a/src/ags/audio/recall/ags_buffer_audio_signal.c
+++ b/src/ags/audio/recall/ags_buffer_audio_signal.c
@@ -250,10 +250,6 @@ ags_buffer_audio_signal_run_init_pre(AgsRecall *recall)
recycling_container = recall->recall_id->recycling_container;
parent_recycling_container = recycling_container->parent;
- if(parent_recycling_container == NULL){
- g_warning("!!!\0");
- }
-
/* create new audio signal */
destination = ags_audio_signal_new((GObject *) devout,
(GObject *) recycling,
diff --git a/src/ags/audio/recall/ags_copy_pattern_channel_run.c b/src/ags/audio/recall/ags_copy_pattern_channel_run.c
index c7ce9a6..752bcc0 100644
--- a/src/ags/audio/recall/ags_copy_pattern_channel_run.c
+++ b/src/ags/audio/recall/ags_copy_pattern_channel_run.c
@@ -453,17 +453,13 @@ ags_copy_pattern_channel_run_sequencer_alloc_callback(AgsDelayAudioRun *delay_au
while(list != NULL){
if(AGS_RECALL_ID(list->data)->recycling_container->parent == AGS_RECALL(copy_pattern_channel_run)->recall_id->recycling_container){
child_recall_id = list->data;
- g_message("found\0");
break;
- }else{
- g_message("!%x, !%x\0", AGS_RECALL_ID(list->data)->recycling_container->parent, AGS_RECALL(copy_pattern_channel_run)->recall_id->recycling_container);
}
list = list->next;
}
if(list == NULL){
- g_warning("!!!!\0");
child_recall_id = NULL;
}
}
--
gsequencer packaging
More information about the pkg-multimedia-commits
mailing list