Hello community, here is the log from the commit of package gsequencer for openSUSE:Factory checked in at 2018-03-12 12:13:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gsequencer (Old) and /work/SRC/openSUSE:Factory/.gsequencer.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gsequencer" Mon Mar 12 12:13:45 2018 rev:9 rq:585777 version:1.4.21 Changes: -------- --- /work/SRC/openSUSE:Factory/gsequencer/gsequencer.changes 2018-02-05 10:53:54.137806004 +0100 +++ /work/SRC/openSUSE:Factory/.gsequencer.new/gsequencer.changes 2018-03-12 12:13:52.802852414 +0100 @@ -1,0 +2,6 @@ +Sun Mar 11 16:38:32 UTC 2018 - jkraehem...@gmail.com + +- New upstream v1.4.21 reverted the use of GMainLoop for pulseaudio + because of a race-condition. Faster lv2 plugin loading. + +------------------------------------------------------------------- Old: ---- gsequencer-1.4.18.tar.gz New: ---- gsequencer-1.4.21.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gsequencer.spec ++++++ --- /var/tmp/diff_new_pack.74x5Fx/_old 2018-03-12 12:13:54.638786907 +0100 +++ /var/tmp/diff_new_pack.74x5Fx/_new 2018-03-12 12:13:54.642786764 +0100 @@ -18,7 +18,7 @@ %define libagssonumber 1 %define libgsequencersonumber 0 Name: gsequencer -Version: 1.4.18 +Version: 1.4.21 Release: 0 Summary: Audio processing engine License: GPL-3.0+ AND AGPL-3.0+ AND GFDL-1.3 ++++++ gsequencer-1.4.18.tar.gz -> gsequencer-1.4.21.tar.gz ++++++ ++++ 3133 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ChangeLog new/gsequencer-1.4.21/ChangeLog --- old/gsequencer-1.4.18/ChangeLog 2018-02-02 22:37:51.000000000 +0100 +++ new/gsequencer-1.4.21/ChangeLog 2018-03-04 21:12:52.000000000 +0100 @@ -1,3 +1,21 @@ +ags (1.4.21) + + [ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ] + * work-around reverted pulseaudio GMainLoop integration + * implemented property AgsBasePlugin:id + * improved ags_lv2_manager.c to be faster + +ags (1.4.20) + + [ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ] + * fixed ags_functional_audio_test.c to create notation as needed + * defaulted to disable OSS4 dependency + +ags (1.4.19) + + [ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ] + * fixed ags_audio_set_audio_channels() to remove unneeded notation, automation and wave objects + ags (1.4.18) [ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/X/ags_xorg_application_context.c new/gsequencer-1.4.21/ags/X/ags_xorg_application_context.c --- old/gsequencer-1.4.18/ags/X/ags_xorg_application_context.c 2018-01-29 16:54:08.000000000 +0100 +++ new/gsequencer-1.4.21/ags/X/ags_xorg_application_context.c 2018-03-04 20:27:35.000000000 +0100 @@ -1692,7 +1692,7 @@ if(has_pulse){ ags_pulse_server_connect_client(pulse_server); - // ags_pulse_server_start_poll(pulse_server); + ags_pulse_server_start_poll(pulse_server); } if(has_jack){ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/audio/ags_audio.c new/gsequencer-1.4.21/ags/audio/ags_audio.c --- old/gsequencer-1.4.18/ags/audio/ags_audio.c 2018-02-02 22:24:33.000000000 +0100 +++ new/gsequencer-1.4.21/ags/audio/ags_audio.c 2018-03-04 20:27:35.000000000 +0100 @@ -2719,10 +2719,9 @@ auto void ags_audio_set_audio_channels_grow(GType type); auto void ags_audio_set_audio_channels_shrink_zero(); auto void ags_audio_set_audio_channels_shrink(); - auto void ags_audio_set_audio_channels_grow_notation(); + auto void ags_audio_set_audio_channels_shrink_notation(); auto void ags_audio_set_audio_channels_shrink_automation(); - auto void ags_audio_set_audio_channels_grow_wave(); auto void ags_audio_set_audio_channels_shrink_wave(); void ags_audio_set_audio_channels_init_parameters(GType type){ @@ -3061,124 +3060,67 @@ } } - void ags_audio_set_audio_channels_grow_notation(){ - GList *list; - guint i; - - i = audio->audio_channels; - -#ifdef AGS_DEBUG - g_message("ags_audio_set_audio_channels_grow_notation\n"); -#endif - - if(audio->audio_channels == 0){ - audio->notation = - list = g_list_alloc(); - goto ags_audio_set_audio_channels_grow_notation0; - }else{ - list = g_list_nth(audio->notation, audio->audio_channels - 1); - } - - for(; i < audio_channels; i++){ - list->next = g_list_alloc(); - list->next->prev = list; - list = list->next; - - ags_audio_set_audio_channels_grow_notation0: - list->data = (gpointer) ags_notation_new((GObject *) audio, - i); - } - } - void ags_audio_set_audio_channels_shrink_notation(){ - GList *list, *list_next; + GList *list_start, *list; - list = g_list_nth(audio->notation, audio_channels); - - if(audio_channels == 0){ - audio->notation = NULL; - }else{ - list->prev->next = NULL; - } + list = + list_start = g_list_copy(audio->notation); while(list != NULL){ - list_next = list->next; - - g_object_unref((GObject *) list->data); - g_list_free1(list); + if(AGS_NOTATION(list->data)->audio_channel >= audio_channels){ + audio->notation = g_list_remove(audio->notation, + list->data); - list = list_next; + g_object_run_dispose(list->data); + g_object_unref(list->data); + } + + list = list->next; } + + g_list_free(list_start); } void ags_audio_set_audio_channels_shrink_automation(){ - GList *automation, *automation_next; + GList *list_start, *list; - automation = audio->automation; + list = + list_start = g_list_copy(audio->automation); - while(automation != NULL){ - automation_next = automation->next; + while(list != NULL){ + if(AGS_AUTOMATION(list->data)->line % audio_channels_old >= audio_channels){ + audio->automation = g_list_remove(audio->automation, + list->data); - if(AGS_AUTOMATION(automation->data)->channel_type != G_TYPE_NONE){ - if(audio_channels == 0 || - AGS_AUTOMATION(automation->data)->line % audio_channels_old >= audio_channels){ - ags_audio_remove_automation(audio, - automation->data); - } + g_object_run_dispose(list->data); + g_object_unref(list->data); } - - automation = automation_next; - } - } - - void ags_audio_set_audio_channels_grow_wave(){ - GList *list; - guint i; - - i = audio->audio_channels; - -#ifdef AGS_DEBUG - g_message("ags_audio_set_audio_channels_grow_wave\n"); -#endif - - if(audio->audio_channels == 0){ - audio->wave = - list = g_list_alloc(); - goto ags_audio_set_audio_channels_grow_wave0; - }else{ - list = g_list_nth(audio->wave, audio->audio_channels - 1); - } - - for(; i < audio_channels; i++){ - list->next = g_list_alloc(); - list->next->prev = list; + list = list->next; + } - ags_audio_set_audio_channels_grow_wave0: - list->data = (gpointer) ags_wave_new((GObject *) audio, - i); - } + g_list_free(list_start); } - - void ags_audio_set_audio_channels_shrink_wave(){ - GList *list, *list_next; - list = g_list_nth(audio->wave, audio_channels); + void ags_audio_set_audio_channels_shrink_wave(){ + GList *list_start, *list; - if(audio_channels == 0){ - audio->wave = NULL; - }else{ - list->prev->next = NULL; - } + list = + list_start = g_list_copy(audio->wave); while(list != NULL){ - list_next = list->next; + if(AGS_WAVE(list->data)->audio_channel >= audio_channels){ + audio->wave = g_list_remove(audio->wave, + list->data); - g_object_unref((GObject *) list->data); - g_list_free1(list); - - list = list_next; + g_object_run_dispose(list->data); + g_object_unref(list->data); + } + + list = list->next; } + + g_list_free(list_start); } /* entry point */ @@ -3193,14 +3135,6 @@ guint i; /* grow audio channels */ - if((AGS_AUDIO_HAS_NOTATION & (audio->flags)) != 0){ - ags_audio_set_audio_channels_grow_notation(); - } - - if((AGS_AUDIO_HAS_WAVE & (audio->flags)) != 0){ - ags_audio_set_audio_channels_grow_wave(); - } - if(audio->input_pads > 0 && (AGS_AUDIO_NO_INPUT & (audio->flags)) == 0){ ags_audio_set_audio_channels_init_parameters(AGS_TYPE_INPUT); @@ -3242,11 +3176,11 @@ /* shrink audio channels */ ags_audio_set_audio_channels_shrink_automation(); - if((AGS_AUDIO_HAS_NOTATION & audio->flags) != 0){ + if((AGS_AUDIO_HAS_NOTATION & (audio->flags)) != 0){ ags_audio_set_audio_channels_shrink_notation(); } - if((AGS_AUDIO_HAS_WAVE & audio->flags) != 0){ + if((AGS_AUDIO_HAS_WAVE & (audio->flags)) != 0){ ags_audio_set_audio_channels_shrink_wave(); } @@ -3405,12 +3339,10 @@ auto void ags_audio_set_pads_unlink_all(AgsChannel *channel); auto void ags_audio_set_pads_shrink_zero(AgsChannel *channel); auto void ags_audio_set_pads_shrink(AgsChannel *channel); - auto void ags_audio_set_pads_alloc_notation(); + auto void ags_audio_set_pads_free_notation(); - auto void ags_audio_set_pads_add_notes(); auto void ags_audio_set_pads_remove_notes(); auto void ags_audio_set_pads_shrink_automation(); - auto void ags_audio_set_pads_alloc_wave(); auto void ags_audio_set_pads_free_wave(); void ags_audio_set_pads_init_parameters(){ @@ -3663,168 +3595,91 @@ } } - void ags_audio_set_pads_alloc_notation(){ - GList *list; - - guint i; - -#ifdef AGS_DEBUG - g_message("ags_audio_set_pads_alloc_notation\n"); -#endif - - if(audio->audio_channels > 0){ - audio->notation = - list = g_list_alloc(); - i = 0; - goto ags_audio_set_pads_alloc_notation0; - }else{ - return; - } - - for(; i < audio->audio_channels; i++){ - list->next = g_list_alloc(); - list->next->prev = list; - list = list->next; - ags_audio_set_pads_alloc_notation0: - - list->data = (gpointer) ags_notation_new((GObject *) audio, - i); - } - } - void ags_audio_set_pads_free_notation(){ - GList *list, *list_next; - - if(audio->audio_channels > 0){ - list = audio->notation; - audio->notation = NULL; - }else{ - return; - } + GList *list_start, *list; + list = + list_start = g_list_copy(audio->notation); + while(list != NULL){ - list_next = list->next; - - g_object_unref(G_OBJECT(list->data)); - g_list_free1(list); - - list = list_next; + g_object_run_dispose((GObject *) list->data); + g_object_unref((GObject *) list->data); + + list = list->next; } - } - void ags_audio_set_pads_add_notes(){ - /* -- useless -- - GList *list; - - list = audio->notation; - - while(list != NULL){ - AGS_NOTATION(list->data)->pads = pads; - - list = list->next; - } - */ + g_list_free(audio->notation); + g_list_free(list_start); + + audio->notation = NULL; } void ags_audio_set_pads_remove_notes(){ - AgsNotation *notation; - GList *notation_i, *note, *note_next; + GList *notation; + GList *note_start, *note; - notation_i = audio->notation; + notation = audio->notation; - while(notation_i != NULL){ - notation = AGS_NOTATION(notation_i->data); - note = notation->notes; + while(notation != NULL){ + note = + note_start = g_list_copy(AGS_NOTATION(notation->data)->notes); while(note != NULL){ - note_next = note->next; - if(AGS_NOTE(note->data)->y >= pads){ - if(note->prev != NULL) - note->prev->next = note_next; - else - notation->notes = note_next; - - if(note_next != NULL) - note_next->prev = note->prev; - - free(note->data); - g_list_free1(note); + AGS_NOTATION(notation->data)->notes = g_list_remove(AGS_NOTATION(notation->data)->notes, + note->data); + + g_object_unref(note->data); } - note = note_next; + note = note->next; } - notation_i = notation_i->next; + g_list_free(note_start); + + notation = notation->next; } } void ags_audio_set_pads_shrink_automation(){ - GList *automation, *automation_next; + GList *list_start, *list; - automation = audio->automation; - - while(automation != NULL){ - automation_next = automation->next; - - if(AGS_AUTOMATION(automation->data)->channel_type == channel_type){ - if(AGS_AUTOMATION(automation->data)->line >= pads * audio->audio_channels){ - ags_audio_remove_automation(audio, - automation->data); - } + list = + list_start = g_list_copy(audio->automation); + + while(list != NULL){ + if(AGS_AUTOMATION(list->data)->channel_type == channel_type && + AGS_AUTOMATION(list->data)->line >= pads * audio->audio_channels){ + audio->automation = g_list_remove(audio->automation, + list->data); + + g_object_run_dispose((GObject *) list->data); + g_object_unref((GObject *) list->data); } - automation = automation_next; - } - } - - void ags_audio_set_pads_alloc_wave(){ - GList *list; - - guint i; - -#ifdef AGS_DEBUG - g_message("ags_audio_set_pads_alloc_wave\n"); -#endif - - if(audio->audio_channels > 0){ - audio->wave = - list = g_list_alloc(); - i = 0; - goto ags_audio_set_pads_alloc_wave0; - }else{ - return; - } - - for(; i < audio->audio_channels; i++){ - list->next = g_list_alloc(); - list->next->prev = list; list = list->next; - ags_audio_set_pads_alloc_wave0: - - list->data = (gpointer) ags_wave_new((GObject *) audio, - i); } + + g_list_free(list_start); } void ags_audio_set_pads_free_wave(){ - GList *list, *list_next; - - if(audio->audio_channels > 0){ - list = audio->wave; - audio->wave = NULL; - }else{ - return; - } + GList *list_start, *list; + list = + list_start = g_list_copy(audio->wave); + while(list != NULL){ - list_next = list->next; - - g_object_unref(G_OBJECT(list->data)); - g_list_free1(list); - - list = list_next; + g_object_run_dispose((GObject *) list->data); + g_object_unref((GObject *) list->data); + + list = list->next; } + + g_list_free(audio->wave); + g_list_free(list_start); + + audio->wave = NULL; } /* entry point */ @@ -3853,17 +3708,6 @@ guint i, j; - /* instantiate notation */ - if(pads_old == 0){ - if((AGS_AUDIO_NOTATION_DEFAULT & (audio->flags)) == 0){ - ags_audio_set_pads_alloc_notation(); - } - - if((AGS_AUDIO_WAVE_DEFAULT & (audio->flags)) == 0){ - ags_audio_set_pads_alloc_wave(); - } - } - if((AGS_AUDIO_NO_OUTPUT & (audio->flags)) == 0){ /* grow channels */ ags_audio_set_pads_grow(); @@ -3980,17 +3824,6 @@ /* grow or shrink */ if(pads > pads_old){ - /* instantiate notation */ - if(pads_old == 0){ - if((AGS_AUDIO_NOTATION_DEFAULT & (audio->flags)) != 0){ - ags_audio_set_pads_alloc_notation(); - } - - if((AGS_AUDIO_WAVE_DEFAULT & (audio->flags)) != 0){ - ags_audio_set_pads_alloc_wave(); - } - } - /* grow channels */ if((AGS_AUDIO_NO_INPUT & (audio->flags)) == 0){ ags_audio_set_pads_grow(); @@ -4544,7 +4377,12 @@ /* remove recall id */ pthread_mutex_lock(mutex); - audio->notation = g_list_remove(audio->notation, notation); + audio->notation = g_list_remove(audio->notation, + notation); + g_object_set(notation, + "audio", NULL, + NULL); + g_object_unref(notation); pthread_mutex_unlock(mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/audio/pulse/ags_pulse_client.c new/gsequencer-1.4.21/ags/audio/pulse/ags_pulse_client.c --- old/gsequencer-1.4.18/ags/audio/pulse/ags_pulse_client.c 2018-01-29 16:54:07.000000000 +0100 +++ new/gsequencer-1.4.21/ags/audio/pulse/ags_pulse_client.c 2018-03-04 21:09:33.000000000 +0100 @@ -19,7 +19,18 @@ #include <ags/audio/pulse/ags_pulse_client.h> -#include <ags/libags.h> +#include <ags/util/ags_id_generator.h> + +#include <ags/object/ags_application_context.h> +#include <ags/object/ags_distributed_manager.h> +#include <ags/object/ags_main_loop.h> +#include <ags/object/ags_connectable.h> +#include <ags/object/ags_distributed_manager.h> +#include <ags/object/ags_soundcard.h> +#include <ags/object/ags_sequencer.h> + +#include <ags/thread/ags_mutex_manager.h> +#include <ags/thread/ags_task_thread.h> #include <ags/audio/ags_sound_provider.h> #include <ags/audio/ags_channel.h> @@ -655,7 +666,6 @@ pa_context_set_state_callback(pulse_client->context, ags_pulse_client_state_callback, pulse_client); -#if 0 ready = FALSE; while(!ready){ @@ -672,7 +682,6 @@ } } #endif -#endif } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/audio/pulse/ags_pulse_port.c new/gsequencer-1.4.21/ags/audio/pulse/ags_pulse_port.c --- old/gsequencer-1.4.18/ags/audio/pulse/ags_pulse_port.c 2018-01-29 16:54:07.000000000 +0100 +++ new/gsequencer-1.4.21/ags/audio/pulse/ags_pulse_port.c 2018-03-04 21:09:37.000000000 +0100 @@ -19,7 +19,18 @@ #include <ags/audio/pulse/ags_pulse_port.h> -#include <ags/libags.h> +#include <ags/util/ags_id_generator.h> + +#include <ags/object/ags_application_context.h> +#include <ags/object/ags_distributed_manager.h> +#include <ags/object/ags_connectable.h> +#include <ags/object/ags_distributed_manager.h> +#include <ags/object/ags_soundcard.h> +#include <ags/object/ags_sequencer.h> + +#include <ags/thread/ags_mutex_manager.h> +#include <ags/thread/ags_task_thread.h> +#include <ags/thread/ags_polling_thread.h> #include <ags/audio/ags_sound_provider.h> #include <ags/audio/ags_audio_signal.h> @@ -930,7 +941,7 @@ } g_atomic_int_and(&(AGS_THREAD(audio_loop)->flags), - (~(AGS_THREAD_TIMING))); + (~(AGS_THREAD_TIMING))); /* */ pthread_mutex_lock(mutex); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/audio/pulse/ags_pulse_server.c new/gsequencer-1.4.21/ags/audio/pulse/ags_pulse_server.c --- old/gsequencer-1.4.18/ags/audio/pulse/ags_pulse_server.c 2018-01-29 16:54:07.000000000 +0100 +++ new/gsequencer-1.4.21/ags/audio/pulse/ags_pulse_server.c 2018-03-04 21:09:28.000000000 +0100 @@ -21,7 +21,15 @@ #include <ags/audio/pulse/ags_pulse_client.h> #include <ags/audio/pulse/ags_pulse_port.h> -#include <ags/libags.h> +#include <ags/object/ags_application_context.h> +#include <ags/object/ags_distributed_manager.h> +#include <ags/object/ags_connectable.h> +#include <ags/object/ags_distributed_manager.h> +#include <ags/object/ags_soundcard.h> +#include <ags/object/ags_sequencer.h> + +#include <ags/thread/ags_mutex_manager.h> +#include <ags/thread/ags_thread-posix.h> #include <ags/audio/pulse/ags_pulse_devout.h> #include <ags/audio/pulse/ags_pulse_devin.h> @@ -310,8 +318,8 @@ pulse_server->application_context = NULL; #ifdef AGS_WITH_PULSE - pulse_server->main_loop = pa_glib_mainloop_new(NULL); - pulse_server->main_loop_api = pa_glib_mainloop_get_api(pulse_server->main_loop); + pulse_server->main_loop = pa_mainloop_new(); + pulse_server->main_loop_api = pa_mainloop_get_api(pulse_server->main_loop); #else pulse_server->main_loop = NULL; pulse_server->main_loop_api = NULL; @@ -1257,7 +1265,7 @@ ags_pulse_server_start_poll(AgsPulseServer *pulse_server) { pthread_create(pulse_server->thread, NULL, - ags_pulse_server_do_poll_loop, pulse_server); + ags_pulse_server_do_poll_loop, pulse_server); } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/audio/pulse/ags_pulse_server.h new/gsequencer-1.4.21/ags/audio/pulse/ags_pulse_server.h --- old/gsequencer-1.4.18/ags/audio/pulse/ags_pulse_server.h 2018-01-26 12:11:35.000000000 +0100 +++ new/gsequencer-1.4.21/ags/audio/pulse/ags_pulse_server.h 2018-03-04 20:27:43.000000000 +0100 @@ -29,7 +29,6 @@ #include <pulse/pulseaudio.h> #include <pulse/stream.h> #include <pulse/error.h> -#include <pulse/glib-mainloop.h> #endif #include <pthread.h> @@ -63,7 +62,7 @@ GObject *application_context; #ifdef AGS_WITH_PULSE - pa_glib_mainloop *main_loop; + pa_mainloop *main_loop; pa_mainloop_api *main_loop_api; #else gpointer main_loop; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/object/ags_config.c new/gsequencer-1.4.21/ags/object/ags_config.c --- old/gsequencer-1.4.18/ags/object/ags_config.c 2018-02-02 22:24:33.000000000 +0100 +++ new/gsequencer-1.4.21/ags/object/ags_config.c 2018-03-04 20:27:35.000000000 +0100 @@ -437,8 +437,8 @@ #endif ags_config_set_value(config, AGS_CONFIG_SOUNDCARD_0, "pcm-channels", "2"); - ags_config_set_value(config, AGS_CONFIG_SOUNDCARD_0, "samplerate", "48000"); - ags_config_set_value(config, AGS_CONFIG_SOUNDCARD_0, "buffer-size", "1024"); + ags_config_set_value(config, AGS_CONFIG_SOUNDCARD_0, "samplerate", "44100"); + ags_config_set_value(config, AGS_CONFIG_SOUNDCARD_0, "buffer-size", "2048"); ags_config_set_value(config, AGS_CONFIG_SOUNDCARD_0, "format", "16"); //ags_config_set_value(config, AGS_CONFIG_SEQUENCER_0, "backend", "jack"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/plugin/ags_base_plugin.c new/gsequencer-1.4.21/ags/plugin/ags_base_plugin.c --- old/gsequencer-1.4.18/ags/plugin/ags_base_plugin.c 2018-02-02 22:24:33.000000000 +0100 +++ new/gsequencer-1.4.21/ags/plugin/ags_base_plugin.c 2018-03-04 20:27:35.000000000 +0100 @@ -61,6 +61,7 @@ enum{ PROP_0, + PROP_ID, PROP_FILENAME, PROP_EFFECT, PROP_EFFECT_INDEX, @@ -119,6 +120,22 @@ /* properties */ /** + * AgsBasePlugin:id: + * + * The assigned id. + * + * Since: 1.4.21 + */ + param_spec = g_param_spec_string("id", + i18n_pspec("id of the plugin"), + i18n_pspec("The id this plugin is located in"), + NULL, + G_PARAM_READABLE | G_PARAM_WRITABLE); + g_object_class_install_property(gobject, + PROP_ID, + param_spec); + + /** * AgsBasePlugin:filename: * * The assigned filename. @@ -365,6 +382,8 @@ ags_base_plugin_init(AgsBasePlugin *base_plugin) { base_plugin->flags = 0; + + base_plugin->id = NULL; base_plugin->filename = NULL; base_plugin->effect = NULL; @@ -392,6 +411,23 @@ base_plugin = AGS_BASE_PLUGIN(gobject); switch(prop_id){ + case PROP_ID: + { + gchar *id; + + id = (gchar *) g_value_get_string(value); + + if(base_plugin->id == id){ + return; + } + + if(base_plugin->id != NULL){ + g_free(base_plugin->id); + } + + base_plugin->id = g_strdup(id); + } + break; case PROP_FILENAME: { gchar *filename; @@ -516,6 +552,11 @@ base_plugin = AGS_BASE_PLUGIN(gobject); switch(prop_id){ + case PROP_ID: + { + g_value_set_string(value, base_plugin->id); + } + break; case PROP_FILENAME: { g_value_set_string(value, base_plugin->filename); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/plugin/ags_base_plugin.h new/gsequencer-1.4.21/ags/plugin/ags_base_plugin.h --- old/gsequencer-1.4.18/ags/plugin/ags_base_plugin.h 2018-02-02 22:24:33.000000000 +0100 +++ new/gsequencer-1.4.21/ags/plugin/ags_base_plugin.h 2018-03-04 20:27:35.000000000 +0100 @@ -92,10 +92,12 @@ GObject object; guint flags; + + gchar *id; gchar *filename; gchar *effect; - + guint port_group_count; guint *port_group; GList *port; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/plugin/ags_lv2_manager.c new/gsequencer-1.4.21/ags/plugin/ags_lv2_manager.c --- old/gsequencer-1.4.18/ags/plugin/ags_lv2_manager.c 2018-01-29 16:54:09.000000000 +0100 +++ new/gsequencer-1.4.21/ags/plugin/ags_lv2_manager.c 2018-03-04 20:27:35.000000000 +0100 @@ -19,11 +19,7 @@ #include <ags/plugin/ags_lv2_manager.h> -#include <ags/lib/ags_string_util.h> -#include <ags/lib/ags_log.h> -#include <ags/lib/ags_turtle_manager.h> - -#include <ags/object/ags_marshal.h> +#include <ags/libags.h> #include <ags/plugin/ags_base_plugin.h> #include <ags/plugin/ags_lv2_plugin.h> @@ -141,9 +137,12 @@ /* initialize lv2 plugin blacklist */ lv2_manager->lv2_plugin_blacklist = NULL; - /* initialize lv2_plugin GList */ + /* initialize lv2 plugin GList */ lv2_manager->lv2_plugin = NULL; + /* current plugin node */ + lv2_manager->current_plugin_node = NULL; + /* initiliaze ags_lv2_default_path string vector */ if(ags_lv2_default_path == NULL){ gchar *lv2_env; @@ -551,14 +550,38 @@ g_message("lv2 check - %s", path); + plugin_so = dlopen(path, + RTLD_NOW); + + if(plugin_so == NULL){ + g_warning("ags_lv2_manager.c - failed to load static object file"); + dlerror(); + + pthread_mutex_unlock(&(mutex)); + + return; + } + + if(dlerror() != NULL){ + return; + } + // xmlSaveFormatFileEnc("-", turtle->doc, "UTF-8", 1); /* parse lv2 plugin */ - xpath = "//rdf-triple//rdf-verb//rdf-pname-ln[substring(text(), string-length(text()) - string-length('doap:name') + 1) = 'doap:name']/ancestor::*[self::rdf-verb][1]/following-sibling::rdf-object-list[1]//rdf-string[text()]"; + lv2_manager->current_plugin_node = g_hash_table_new_full(g_str_hash, g_str_equal, + g_free, + NULL); + + xpath = "/rdf-turtle-doc/rdf-statement/rdf-triple/rdf-predicate-object-list/rdf-verb//rdf-pname-ln[substring(text(), string-length(text()) - string-length('doap:name') + 1) = 'doap:name']/ancestor::*[self::rdf-verb][1]/following-sibling::rdf-object-list[1]//rdf-string[text()]"; effect_list = ags_turtle_find_xpath(turtle, xpath); while(effect_list != NULL){ + xmlNode *current_triple; + + gchar *current_uuid; + /* read effect name */ node = effect_list->data; @@ -578,16 +601,24 @@ effect = g_strndup(str + 1, strlen(str) - 2); - - /* find URI */ + + /* fill current plugin node */ + xpath = "./ancestor::*[self::rdf-triple][1]"; + current_triple = ags_turtle_find_xpath_with_context_node(turtle, + xpath, + node)->data; + + current_uuid = ags_id_generator_create_uuid(); escaped_effect = ags_string_util_escape_single_quote(effect); - xpath = "//rdf-triple//rdf-string[text()='\"%s\"']/ancestor::*[self::rdf-triple][1]/rdf-subject/rdf-iri"; + + g_hash_table_insert(lv2_manager->current_plugin_node, + current_uuid, current_triple); - xpath = g_strdup_printf(xpath, - escaped_effect); - uri_list = ags_turtle_find_xpath(turtle, - xpath); - free(xpath); + /* find URI */ + xpath = "./rdf-subject/rdf-iri"; + uri_list = ags_turtle_find_xpath_with_context_node(turtle, + xpath, + current_triple); uri = NULL; @@ -651,8 +682,9 @@ str = g_strdup_printf("//rdf-pname-ns[text()='%s']/following-sibling::*[self::rdf-iriref][1]", prefix); - prefix_node = ags_turtle_find_xpath(turtle, - str); + prefix_node = ags_turtle_find_xpath_with_context_node(turtle, + str, + current_triple); free(str); if(prefix_node != NULL){ @@ -687,11 +719,10 @@ } /* turtle pname */ - xpath = g_strdup_printf("//rdf-triple//rdf-string[text()='\"%s\"']/ancestor::*[self::rdf-triple]//rdf-pname-ln[1]", - escaped_effect); - - pname_list = ags_turtle_find_xpath(turtle, - xpath); + xpath = "./rdf-pname-ln[1]"; + pname_list = ags_turtle_find_xpath_with_context_node(turtle, + xpath, + current_triple); if(pname_list != NULL){ turtle_pname = xmlNodeGetContent(pname_list->data); @@ -702,23 +733,10 @@ } /* get uri index and append plugin */ - plugin_so = dlopen(path, - RTLD_NOW); - - if(plugin_so == NULL){ - g_warning("ags_lv2_manager.c - failed to load static object file"); - - dlerror(); - - effect_list = effect_list->next; - - continue; - } - lv2_descriptor = (LV2_Descriptor_Function) dlsym(plugin_so, "lv2_descriptor"); - if(dlerror() == NULL && lv2_descriptor){ + if(lv2_descriptor){ for(i = 0; (plugin_descriptor = lv2_descriptor(i)) != NULL; i++){ if(path != NULL && effect != NULL && @@ -745,6 +763,7 @@ lv2_plugin = g_object_new(AGS_TYPE_LV2_PLUGIN, "manifest", manifest, "turtle", turtle, + "id", current_uuid, "filename", path, "effect", effect, "pname", turtle_pname, @@ -765,6 +784,10 @@ } pthread_mutex_unlock(&(mutex)); + + g_hash_table_destroy(lv2_manager->current_plugin_node); + + lv2_manager->current_plugin_node = NULL; } /** @@ -797,7 +820,7 @@ return; } - xpath = "//rdf-triple//rdf-verb[@verb='a']/following-sibling::*[self::rdf-object-list]//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':preset') + 1) = ':preset']/ancestor::*[self::rdf-triple][1]/rdf-subject/rdf-iri"; + xpath = "/rdf-turtle-doc/rdf-statement/rdf-triple/rdf-predicate-object-list/rdf-verb[@verb='a']/following-sibling::*[self::rdf-object-list]//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':preset') + 1) = ':preset']/ancestor::*[self::rdf-triple][1]/rdf-subject/rdf-iri"; preset_list = ags_turtle_find_xpath(preset, xpath); @@ -1024,7 +1047,7 @@ NULL); /* read binary from turtle */ - str = g_strdup_printf("//rdf-triple//rdf-verb//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':binary') + 1) = ':binary']/ancestor::*[self::rdf-verb][1]/following-sibling::*[self::rdf-object-list][1]//rdf-iriref[substring(text(), string-length(text()) - string-length('%s>') + 1) = '%s>']", + str = g_strdup_printf("/rdf-turtle-doc/rdf-statement/rdf-triple/rdf-predicate-object-list/rdf-verb//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':binary') + 1) = ':binary']/ancestor::*[self::rdf-verb][1]/following-sibling::*[self::rdf-object-list][1]//rdf-iriref[substring(text(), string-length(text()) - string-length('%s>') + 1) = '%s>']", AGS_LIBRARY_SUFFIX, AGS_LIBRARY_SUFFIX); @@ -1124,7 +1147,7 @@ } /* read presets from turtle */ - xpath = "//rdf-triple//rdf-verb[@verb='a']/following-sibling::*[self::rdf-object-list]//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':preset') + 1) = ':preset']/ancestor::*[self::rdf-triple]"; + xpath = "/rdf-turtle-doc/rdf-statement/rdf-triple/rdf-predicate-object-list/rdf-verb[@verb='a']/following-sibling::*[self::rdf-object-list]//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':preset') + 1) = ':preset']/ancestor::*[self::rdf-triple]"; preset_list = ags_turtle_find_xpath(manifest, xpath); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/plugin/ags_lv2_manager.h new/gsequencer-1.4.21/ags/plugin/ags_lv2_manager.h --- old/gsequencer-1.4.18/ags/plugin/ags_lv2_manager.h 2017-11-06 00:08:58.000000000 +0100 +++ new/gsequencer-1.4.21/ags/plugin/ags_lv2_manager.h 2018-03-04 20:27:35.000000000 +0100 @@ -50,6 +50,8 @@ GList *lv2_plugin_blacklist; GList *lv2_plugin; + + GHashTable *current_plugin_node; }; struct _AgsLv2ManagerClass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/plugin/ags_lv2_plugin.c new/gsequencer-1.4.21/ags/plugin/ags_lv2_plugin.c --- old/gsequencer-1.4.18/ags/plugin/ags_lv2_plugin.c 2018-02-02 22:24:33.000000000 +0100 +++ new/gsequencer-1.4.21/ags/plugin/ags_lv2_plugin.c 2018-03-04 20:27:35.000000000 +0100 @@ -911,20 +911,11 @@ escaped_effect = ags_string_util_escape_single_quote(base_plugin->effect); - /* retrieve name node as context node */ - xpath = g_strdup_printf("(//rdf-triple//rdf-verb[//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':name') + 1) = ':name'] and following-sibling::*//rdf-string[text()='\"%s\"']]/ancestor::*[self::rdf-triple])[1]", - escaped_effect); + /* retrieve triple node */ + triple_node = g_hash_table_lookup(ags_lv2_manager_get_instance()->current_plugin_node, + base_plugin->id); - list = ags_turtle_find_xpath(lv2_plugin->turtle, - xpath); - - free(xpath); - - if(list != NULL){ - triple_node = (xmlNode *) list->data; - - g_list_free(list); - }else{ + if(triple_node == NULL){ g_warning("rdf-triple not found"); return; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/plugin/ags_lv2ui_manager.c new/gsequencer-1.4.21/ags/plugin/ags_lv2ui_manager.c --- old/gsequencer-1.4.18/ags/plugin/ags_lv2ui_manager.c 2018-01-29 16:54:09.000000000 +0100 +++ new/gsequencer-1.4.21/ags/plugin/ags_lv2ui_manager.c 2018-03-04 20:27:35.000000000 +0100 @@ -506,7 +506,7 @@ while(list != NULL){ /* find URI */ - xpath = "//rdf-triple/rdf-subject/rdf-iri"; + xpath = "/rdf-turtle-doc/rdf-statement/rdf-triple/rdf-subject/rdf-iri"; uri_list = ags_turtle_find_xpath_with_context_node(turtle, xpath, list->data); @@ -614,7 +614,7 @@ continue; } - xpath = "//rdf-triple//rdf-verb//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':binary') + 1) = ':binary']/ancestor::*[self::rdf-verb][1]/following-sibling::*[self::rdf-object-list][1]//rdf-iriref[substring(text(), string-length(text()) - string-length('.so>') + 1) = '.so>']"; + xpath = "/rdf-turtle-doc/rdf-statement/rdf-triple//rdf-verb//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':binary') + 1) = ':binary']/ancestor::*[self::rdf-verb][1]/following-sibling::*[self::rdf-object-list][1]//rdf-iriref[substring(text(), string-length(text()) - string-length('.so>') + 1) = '.so>']"; binary_list = ags_turtle_find_xpath_with_context_node(turtle, xpath, list->data); @@ -736,23 +736,25 @@ pthread_mutex_lock(&(mutex)); /* check if gtk UI */ - xpath = "//rdf-triple//rdf-verb[@verb='a']/following-sibling::*[self::rdf-object-list]//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':gtkui') + 1) = ':gtkui']//ancestor::*[self::rdf-triple]"; + xpath = "/rdf-turtle-doc/rdf-statement/rdf-triple/rdf-predicate-object-list/rdf-verb[@verb='a']/following-sibling::*[self::rdf-object-list]//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':gtkui') + 1) = ':gtkui']//ancestor::*[self::rdf-triple]"; gtk_uri_list = ags_turtle_find_xpath(turtle, xpath); ags_lv2ui_manager_load_file_ui_plugin(gtk_uri_list); - + +#if 0 /* check if qt4 UI */ - xpath = "//rdf-triple//rdf-verb[@verb='a']/following-sibling::*[self::rdf-object-list]//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':qt4ui') + 1) = ':qt4ui']//ancestor::*[self::rdf-triple]"; + xpath = "/rdf-turtle-doc/rdf-statement/rdf-triple/rdf-predicate-object-list/rdf-verb[@verb='a']/following-sibling::*[self::rdf-object-list]//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':qt4ui') + 1) = ':qt4ui']//ancestor::*[self::rdf-triple]"; qt4_uri_list = ags_turtle_find_xpath(turtle, xpath); ags_lv2ui_manager_load_file_ui_plugin(qt4_uri_list); /* check if qt5 UI */ - xpath = "//rdf-triple//rdf-verb[@verb='a']/following-sibling::*[self::rdf-object-list]//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':qt5ui') + 1) = ':qt5ui']//ancestor::*[self::rdf-triple]"; + xpath = "/rdf-turtle-doc/rdf-statement/rdf-triple/rdf-predicate-object-list/rdf-verb[@verb='a']/following-sibling::*[self::rdf-object-list]//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':qt5ui') + 1) = ':qt5ui']//ancestor::*[self::rdf-triple]"; qt5_uri_list = ags_turtle_find_xpath(turtle, xpath); ags_lv2ui_manager_load_file_ui_plugin(qt5_uri_list); - +#endif + /* */ pthread_mutex_unlock(&(mutex)); } @@ -848,7 +850,7 @@ /* read binary from turtle */ binary_list = ags_turtle_find_xpath(manifest, - "//rdf-triple//rdf-verb//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':binary') + 1) = ':binary']/ancestor::*[self::rdf-verb][1]/following-sibling::*[self::rdf-object-list][1]//rdf-iriref[substring(text(), string-length(text()) - string-length('.so>') + 1) = '.so>']"); + "/rdf-turtle-doc/rdf-statement/rdf-triple/rdf-predicate-object-list/rdf-verb//rdf-pname-ln[substring(text(), string-length(text()) - string-length(':binary') + 1) = ':binary']/ancestor::*[self::rdf-verb][1]/following-sibling::*[self::rdf-object-list][1]//rdf-iriref[substring(text(), string-length(text()) - string-length('.so>') + 1) = '.so>']"); /* persist XML */ //NOTE:JK: no need for it diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/ags/test/audio/ags_functional_audio_test.c new/gsequencer-1.4.21/ags/test/audio/ags_functional_audio_test.c --- old/gsequencer-1.4.18/ags/test/audio/ags_functional_audio_test.c 2018-01-29 16:54:07.000000000 +0100 +++ new/gsequencer-1.4.21/ags/test/audio/ags_functional_audio_test.c 2018-03-04 20:27:35.000000000 +0100 @@ -648,6 +648,10 @@ for(i = 0; i < AGS_FUNCTIONAL_AUDIO_TEST_PLAYBACK_N_AUDIO; i++){ AgsNotation *notation; + + AgsTimestamp *timestamp; + + GList *list_notation; audio[i] = ags_audio_new(soundcard); g_object_ref(audio[i]); @@ -678,6 +682,11 @@ link = ags_channel_pad_nth(mixer->input, i); + timestamp = ags_timestamp_new(); + + timestamp->flags &= (~AGS_TIMESTAMP_UNIX); + timestamp->flags |= AGS_TIMESTAMP_OFFSET; + for(j = 0; j < AGS_FUNCTIONAL_AUDIO_TEST_PLAYBACK_N_AUDIO_CHANNELS; j++){ AgsAudioSignal *destination; @@ -690,9 +699,6 @@ destination); /* populate notation */ - notation = g_list_nth(audio[i]->notation, - j)->data; - for(k = 0; k < AGS_FUNCTIONAL_AUDIO_TEST_PLAYBACK_N_NOTES; k++){ AgsNote *note; @@ -701,6 +707,21 @@ note->x[1] = note->x[0] + (rand() % 3) + 1; note->y = rand() % AGS_FUNCTIONAL_AUDIO_TEST_PLAYBACK_N_PADS; + timestamp->timer.ags_offset.offset = (guint64) AGS_NOTATION_DEFAULT_OFFSET * floor((double) note->x[0] / (double) AGS_NOTATION_DEFAULT_OFFSET); + + list_notation = audio[i]->notation; + list_notation = ags_notation_find_near_timestamp(list_notation, j, + timestamp); + + if(list_notation != NULL){ + notation = list_notation->data; + }else{ + notation = ags_notation_new(audio[i], + j); + audio[i]->notation = ags_notation_add(audio[i]->notation, + notation); + } + ags_notation_add_note(notation, note, FALSE); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/gsequencer-1.4.18/configure.ac new/gsequencer-1.4.21/configure.ac --- old/gsequencer-1.4.18/configure.ac 2018-02-02 22:41:50.000000000 +0100 +++ new/gsequencer-1.4.21/configure.ac 2018-03-04 21:12:59.000000000 +0100 @@ -6,7 +6,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_INIT([gsequencer],[1.4.18],[jkraehem...@gmail.com]) +AC_INIT([gsequencer],[1.4.21],[jkraehem...@gmail.com]) AM_INIT_AUTOMAKE([subdir-objects]) AC_CONFIG_SRCDIR([ags/config.h.in]) AC_CONFIG_HEADERS([ags/config.h]) @@ -27,9 +27,9 @@ [enable_alsa=yes]) AC_ARG_ENABLE(oss, [AS_HELP_STRING([--enable-oss], - [enable oss (default is yes)])], + [enable oss (default is no)])], [], - [enable_oss=yes]) + [enable_oss=no]) AC_ARG_ENABLE(jack, [AS_HELP_STRING([--enable-jack], [enable jack (default is yes)])],