void ags_automation_editor_disconnect(AgsConnectable *connectable) { AgsAutomationEditor *automation_editor; automation_editor = AGS_AUTOMATION_EDITOR(connectable); ags_connectable_disconnect(AGS_CONNECTABLE(automation_editor->automation_toolbar)); ags_connectable_disconnect(AGS_CONNECTABLE(automation_editor->machine_selector)); }
void ags_connectable_test_disconnect() { GObject *current; GType current_type; guint i; gboolean success; success = TRUE; for(i = 0; connectable_test_types[i] != G_TYPE_NONE; i++){ current = g_object_new(connectable_test_types[i], NULL); if(AGS_CONNECTABLE_GET_INTERFACE(AGS_CONNECTABLE(current))->disconnect == NULL){ g_message("AgsConnectable::disconnect missing: %s", G_OBJECT_TYPE_NAME(current)); success = FALSE; } ags_connectable_connect(current); ags_connectable_disconnect(current); } CU_ASSERT(success); }
void ags_envelope_dialog_disconnect(AgsConnectable *connectable) { AgsEnvelopeDialog *envelope_dialog; envelope_dialog = AGS_ENVELOPE_DIALOG(connectable); if((AGS_ENVELOPE_DIALOG_CONNECTED & (envelope_dialog->flags)) == 0){ return; } envelope_dialog->flags &= (~AGS_ENVELOPE_DIALOG_CONNECTED); ags_connectable_disconnect(AGS_CONNECTABLE(envelope_dialog->envelope_editor)); ags_connectable_disconnect(AGS_CONNECTABLE(envelope_dialog->envelope_info)); if(envelope_dialog->pattern_envelope != NULL){ ags_connectable_disconnect(AGS_CONNECTABLE(envelope_dialog->pattern_envelope)); } /* applicable */ g_object_disconnect((GObject *) envelope_dialog->apply, "any_signal::clicked", G_CALLBACK(ags_envelope_dialog_apply_callback), (gpointer) envelope_dialog, NULL); g_object_disconnect((GObject *) envelope_dialog->ok, "any_signal::clicked", G_CALLBACK(ags_envelope_dialog_ok_callback), (gpointer) envelope_dialog, NULL); g_object_disconnect((GObject *) envelope_dialog->cancel, "any_signal::clicked", G_CALLBACK(ags_envelope_dialog_cancel_callback), (gpointer) envelope_dialog, NULL); }
void ags_machine_popup_destroy_activate_callback(GtkWidget *widget, AgsMachine *machine) { AgsWindow *window; AgsRemoveAudio *remove_audio; window = (AgsWindow *) gtk_widget_get_toplevel((GtkWidget *) machine); remove_audio = ags_remove_audio_new(window->devout, machine->audio); ags_task_thread_append_task(AGS_TASK_THREAD(AGS_AUDIO_LOOP(AGS_MAIN(window->ags_main)->main_loop)->task_thread), AGS_TASK(remove_audio)); ags_connectable_disconnect(AGS_CONNECTABLE(machine)); gtk_widget_destroy((GtkWidget *) machine); }
void ags_wave_window_disconnect(AgsConnectable *connectable) { AgsWaveWindow *wave_window; wave_window = AGS_WAVE_WINDOW(connectable); if((AGS_WAVE_WINDOW_CONNECTED & (wave_window->flags)) == 0){ return; } wave_window->flags &= (~AGS_WAVE_WINDOW_CONNECTED); if(wave_window->wave_editor != NULL){ ags_connectable_disconnect(AGS_CONNECTABLE(wave_window->wave_editor)); } }
void ags_recall_disconnect(AgsConnectable *connectable) { AgsRecall *recall; GList *list; recall = AGS_RECALL(connectable); list = recall->children; while(list != NULL){ ags_connectable_disconnect(AGS_CONNECTABLE(list->data)); list = list->next; } recall->flags &= (~AGS_RECALL_CONNECTED); }
void ags_track_collection_disconnect(AgsConnectable *connectable) { AgsTrackCollection *track_collection; GList *list, *list_start; track_collection = AGS_TRACK_COLLECTION(connectable); /* children */ list_start = list = gtk_container_get_children(track_collection->child); while(list != NULL){ ags_connectable_disconnect(AGS_CONNECTABLE(list->data)); list = list->next; } g_list_free(list_start); }
void ags_recall_finalize(GObject *gobject) { AgsRecall *recall; recall = AGS_RECALL(gobject); #ifdef AGS_DEBUG g_message("finalize %s\n\0", G_OBJECT_TYPE_NAME(gobject)); #endif if(recall->devout != NULL){ g_object_unref(recall->devout); } if((AGS_RECALL_CONNECTED & (recall->flags)) != 0){ ags_connectable_disconnect(AGS_CONNECTABLE(recall)); } if((AGS_RECALL_RUN_INITIALIZED & (recall->flags)) != 0){ ags_dynamic_connectable_disconnect_dynamic(AGS_DYNAMIC_CONNECTABLE(recall)); } // if(recall->name != NULL) // g_free(recall->name); ags_list_free_and_unref_link(recall->dependencies); ags_list_free_and_unref_link(recall->children); if(recall->container != NULL){ ags_packable_unpack(recall); } if(recall->parent != NULL){ //TODO:JK: implement me } /* call parent */ G_OBJECT_CLASS(ags_recall_parent_class)->finalize(gobject); }
void ags_pulse_client_disconnect(AgsConnectable *connectable) { AgsPulseClient *pulse_client; GList *list_start, *list; pthread_mutex_t *pulse_client_mutex; if(!ags_connectable_is_connected(connectable)){ return; } pulse_client = AGS_PULSE_CLIENT(connectable); ags_pulse_client_unset_flags(pulse_client, AGS_PULSE_CLIENT_CONNECTED); /* get pulse client mutex */ pthread_mutex_lock(ags_pulse_client_get_class_mutex()); pulse_client_mutex = pulse_client->obj_mutex; pthread_mutex_unlock(ags_pulse_client_get_class_mutex()); /* port */ pthread_mutex_lock(pulse_client_mutex); list = list_start = g_list_copy(pulse_client->port); pthread_mutex_unlock(pulse_client_mutex); while(list != NULL){ ags_connectable_disconnect(AGS_CONNECTABLE(list->data)); list = list->next; } g_list_free(list_start); }
void ags_synth_input_line_disconnect(AgsConnectable *connectable) { AgsSynthInputLine *synth_input_line; synth_input_line = AGS_SYNTH_INPUT_LINE(connectable); if((AGS_LINE_CONNECTED & (AGS_LINE(synth_input_line)->flags)) == 0){ return; } ags_synth_input_line_parent_connectable_interface->disconnect(connectable); ags_connectable_disconnect(AGS_CONNECTABLE(synth_input_line->oscillator)); g_object_disconnect((GObject *) synth_input_line->oscillator, "any_signal::control-changed", G_CALLBACK(ags_synth_input_line_oscillator_control_changed_callback), (gpointer) synth_input_line, NULL); }
void ags_machine_popup_destroy_activate_callback(GtkWidget *widget, AgsMachine *machine) { AgsWindow *window; AgsAudio *audio; AgsRemoveAudio *remove_audio; AgsThread *gui_thread; AgsApplicationContext *application_context; GList *list, *list_start; window = (AgsWindow *) gtk_widget_get_toplevel((GtkWidget *) machine); application_context = (AgsApplicationContext *) window->application_context; /* destroy editor */ list = list_start = gtk_container_get_children((GtkContainer *) window->notation_editor->machine_selector); list = list->next; while(list != NULL){ if(AGS_IS_MACHINE_RADIO_BUTTON(list->data) && AGS_MACHINE_RADIO_BUTTON(list->data)->machine == machine){ gtk_widget_destroy(list->data); break; } list = list->next; } g_list_free(list_start); /* destroy automation editor */ list = list_start = gtk_container_get_children((GtkContainer *) window->automation_window->automation_editor->machine_selector); list = list->next; while(list != NULL){ if(AGS_IS_MACHINE_RADIO_BUTTON(list->data) && AGS_MACHINE_RADIO_BUTTON(list->data)->machine == machine){ gtk_widget_destroy(list->data); break; } list = list->next; } g_list_free(list_start); /* destroy machine */ audio = machine->audio; g_object_ref(audio); ags_connectable_disconnect(AGS_CONNECTABLE(machine)); gtk_widget_destroy((GtkWidget *) machine); /* get task thread */ gui_thread = ags_ui_provider_get_gui_thread(AGS_UI_PROVIDER(application_context)); remove_audio = ags_remove_audio_new(application_context, audio); ags_gui_thread_schedule_task((AgsGuiThread *) gui_thread, (GObject *) remove_audio); }
void ags_notation_toolbar_disconnect(AgsConnectable *connectable) { AgsNotationToolbar *notation_toolbar; GList *list; notation_toolbar = AGS_NOTATION_TOOLBAR(connectable); if((AGS_NOTATION_TOOLBAR_CONNECTED & (notation_toolbar->flags)) == 0){ return; } notation_toolbar->flags &= (~AGS_NOTATION_TOOLBAR_CONNECTED); /* tool */ g_object_disconnect(G_OBJECT(notation_toolbar->position), "any_signal::toggled", G_CALLBACK(ags_notation_toolbar_position_callback), notation_toolbar, NULL); g_object_disconnect(G_OBJECT(notation_toolbar->edit), "any_signal::toggled", G_CALLBACK(ags_notation_toolbar_edit_callback), notation_toolbar, NULL); g_object_disconnect(G_OBJECT(notation_toolbar->clear), "any_signal::toggled", G_CALLBACK(ags_notation_toolbar_clear_callback), notation_toolbar, NULL); g_object_disconnect(G_OBJECT(notation_toolbar->select), "any_signal::toggled", G_CALLBACK(ags_notation_toolbar_select_callback), notation_toolbar, NULL); /* edit */ g_object_disconnect(G_OBJECT(notation_toolbar->copy), "any_signal::clicked", G_CALLBACK(ags_notation_toolbar_copy_or_cut_callback), notation_toolbar, NULL); g_object_disconnect(G_OBJECT(notation_toolbar->cut), "any_signal::clicked", G_CALLBACK(ags_notation_toolbar_copy_or_cut_callback), notation_toolbar, NULL); g_object_disconnect(G_OBJECT(notation_toolbar->paste_tool), "any_signal::clicked", G_CALLBACK(ags_notation_toolbar_paste_callback), notation_toolbar, NULL); g_object_disconnect(G_OBJECT(notation_toolbar->invert), "any_signal::clicked", G_CALLBACK(ags_notation_toolbar_invert_callback), notation_toolbar, NULL); list = gtk_container_get_children((GtkContainer *) gtk_menu_tool_button_get_menu(notation_toolbar->paste_tool)); g_object_disconnect(G_OBJECT(list->data), "any_signal::activate", G_CALLBACK(ags_notation_toolbar_match_audio_channel_callback), notation_toolbar, NULL); g_object_disconnect(G_OBJECT(list->next->data), "any_signal::activate", G_CALLBACK(ags_notation_toolbar_no_duplicates_callback), notation_toolbar, NULL); g_list_free(list); /* additional tools */ ags_connectable_disconnect(AGS_CONNECTABLE(notation_toolbar->position_notation_cursor)); ags_connectable_disconnect(AGS_CONNECTABLE(notation_toolbar->crop_note)); ags_connectable_disconnect(AGS_CONNECTABLE(notation_toolbar->move_note)); ags_connectable_disconnect(AGS_CONNECTABLE(notation_toolbar->select_note)); /* zoom */ g_object_disconnect(G_OBJECT(notation_toolbar->zoom), "any_signal::changed", G_CALLBACK(ags_notation_toolbar_zoom_callback), notation_toolbar, NULL); /* opacity */ g_object_disconnect(G_OBJECT(notation_toolbar->opacity), "any_signal::value-changed", G_CALLBACK(ags_notation_toolbar_opacity_callback), notation_toolbar, NULL); }