void ags_recall_real_run_inter(AgsRecall *recall) { GList *list; list = recall->children; while(list != NULL){ if((AGS_RECALL_TEMPLATE & (AGS_RECALL(list->data)->flags)) != 0){ g_warning("running on template\0"); } ags_recall_run_inter(AGS_RECALL(list->data)); list = list->next; } }
void ags_envelope_audio_signal_test_run_inter() { AgsChannel *output; AgsChannel *input; AgsRecycling *recycling; AgsAudioSignal *audio_signal; AgsRecallID *output_audio_recall_id; AgsRecallID *input_audio_recall_id; AgsRecallID *output_recall_id; AgsRecallID *input_recall_id; AgsRecyclingContext *output_recycling_context; AgsRecyclingContext *input_recycling_context; GList *start_list, *list; GList *start_recall_recycling, *recall_recycling; GList *start_recall_audio_signal, *recall_audio_signal; guint i; output = audio->output; input = audio->input; recycling = input->first_recycling; /* output - create recall id and recycling context */ output_audio_recall_id = ags_recall_id_new(); ags_recall_id_set_sound_scope(output_audio_recall_id, AGS_SOUND_SCOPE_PLAYBACK); ags_audio_add_recall_id(audio, output_audio_recall_id); output_recall_id = ags_recall_id_new(); ags_recall_id_set_sound_scope(output_recall_id, AGS_SOUND_SCOPE_PLAYBACK); ags_channel_add_recall_id(output, output_recall_id); output_recycling_context = ags_recycling_context_new(1); ags_recycling_context_replace(output_recycling_context, output->first_recycling, 0); ags_audio_add_recycling_context(audio, output_recycling_context); g_object_set(output_audio_recall_id, "recycling-context", output_recycling_context, NULL); g_object_set(output_recall_id, "recycling-context", output_recycling_context, NULL); g_object_set(output_recycling_context, "recall-id", output_recall_id, NULL); /* input - create recall id and recycling context */ input_audio_recall_id = ags_recall_id_new(); ags_recall_id_set_sound_scope(input_audio_recall_id, AGS_SOUND_SCOPE_PLAYBACK); ags_audio_add_recall_id(audio, input_audio_recall_id); input_recall_id = ags_recall_id_new(); ags_recall_id_set_sound_scope(input_recall_id, AGS_SOUND_SCOPE_PLAYBACK); ags_channel_add_recall_id(input, input_recall_id); input_recycling_context = ags_recycling_context_new(1); ags_recycling_context_replace(input_recycling_context, recycling, 0); ags_audio_add_recycling_context(audio, input_recycling_context); g_object_set(input_audio_recall_id, "recycling-context", input_recycling_context, NULL); g_object_set(input_recall_id, "recycling-context", input_recycling_context, NULL); g_object_set(output_recycling_context, "child", input_recycling_context, NULL); g_object_set(input_recycling_context, "recall-id", input_recall_id, NULL); /* duplicate recall */ ags_audio_duplicate_recall(audio, input_audio_recall_id, 0, 0, 0); ags_channel_duplicate_recall(input, input_recall_id); /* resolve recall */ ags_audio_resolve_recall(audio, input_audio_recall_id); ags_channel_resolve_recall(input, input_recall_id); /* init recall */ ags_audio_init_recall(audio, input_audio_recall_id, (AGS_SOUND_STAGING_CHECK_RT_DATA | AGS_SOUND_STAGING_RUN_INIT_PRE | AGS_SOUND_STAGING_RUN_INIT_INTER | AGS_SOUND_STAGING_RUN_INIT_POST)); ags_channel_init_recall(input, input_recall_id, (AGS_SOUND_STAGING_CHECK_RT_DATA | AGS_SOUND_STAGING_RUN_INIT_PRE | AGS_SOUND_STAGING_RUN_INIT_INTER | AGS_SOUND_STAGING_RUN_INIT_POST)); /* create audio signal */ audio_signal = ags_audio_signal_new(devout, recycling, input_recall_id); ags_audio_signal_stream_resize(audio_signal, AGS_ENVELOPE_AUDIO_SIGNAL_TEST_RUN_INTER_AUDIO_SIGNAL_LENGTH); audio_signal->stream_current = audio_signal->stream; ags_recycling_add_audio_signal(recycling, audio_signal); /* test */ g_object_get(input, "recall", &start_list, NULL); list = ags_recall_find_type_with_recycling_context(start_list, AGS_TYPE_ENVELOPE_CHANNEL_RUN, input_recycling_context); g_object_get(list->data, "child", &start_recall_recycling, NULL); recall_recycling = ags_recall_find_recycling_context(start_recall_recycling, input_recycling_context); g_object_get(start_recall_recycling->data, "child", &start_recall_audio_signal, NULL); recall_audio_signal = ags_recall_find_provider_with_recycling_context(start_recall_audio_signal, audio_signal, input_recycling_context); CU_ASSERT(recall_audio_signal != NULL); CU_ASSERT(AGS_IS_ENVELOPE_AUDIO_SIGNAL(recall_audio_signal->data)); CU_ASSERT(AGS_RECALL_CLASS(AGS_ENVELOPE_AUDIO_SIGNAL_GET_CLASS(recall_audio_signal->data))->run_inter != NULL); g_signal_connect(recall_audio_signal->data, "run-inter", G_CALLBACK(ags_envelope_audio_signal_test_run_inter_callback), NULL); for(i = 0; i < AGS_ENVELOPE_AUDIO_SIGNAL_TEST_RUN_INTER_AUDIO_SIGNAL_LENGTH; i++){ ags_recall_run_inter(recall_audio_signal->data); if(audio_signal->stream_current != NULL){ audio_signal->stream_current = audio_signal->stream_current->next; } } CU_ASSERT(test_run_inter_invoke_count == AGS_ENVELOPE_AUDIO_SIGNAL_TEST_RUN_INTER_AUDIO_SIGNAL_LENGTH); }