commit gsequencer for openSUSE:Factory
Hello community, here is the log from the commit of package gsequencer for openSUSE:Factory checked in at 2019-07-08 15:10:33 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gsequencer (Old) and /work/SRC/openSUSE:Factory/.gsequencer.new.4615 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "gsequencer" Mon Jul 8 15:10:33 2019 rev:44 rq:713586 version:2.2.10 Changes: -------- --- /work/SRC/openSUSE:Factory/gsequencer/gsequencer.changes 2019-07-04 15:43:53.626167509 +0200 +++ /work/SRC/openSUSE:Factory/.gsequencer.new.4615/gsequencer.changes 2019-07-08 15:10:34.747319417 +0200 @@ -1,0 +2,6 @@ +Fri Jul 5 05:58:02 UTC 2019 - Joël Krähemann <jkraehemann@gmail.com> + +- new upstream v2.2.10 providing a new sync counter to AgsMainLoop + interface, resulting in less synchronization overhead. + +------------------------------------------------------------------- Old: ---- gsequencer-2.2.9.tar.gz New: ---- gsequencer-2.2.10.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gsequencer.spec ++++++ --- /var/tmp/diff_new_pack.FCHe8N/_old 2019-07-08 15:10:35.639320273 +0200 +++ /var/tmp/diff_new_pack.FCHe8N/_new 2019-07-08 15:10:35.643320277 +0200 @@ -21,7 +21,7 @@ # activated with --with run_functional_tests command line switch. %bcond_with run_functional_tests Name: gsequencer -Version: 2.2.9 +Version: 2.2.10 Release: 0 Summary: Audio processing engine License: GPL-3.0+ AND AGPL-3.0+ AND GFDL-1.3 ++++++ gsequencer-2.2.9.tar.gz -> gsequencer-2.2.10.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/ChangeLog new/gsequencer-2.2.10/ChangeLog --- old/gsequencer-2.2.9/ChangeLog 2019-07-02 20:00:28.000000000 +0200 +++ new/gsequencer-2.2.10/ChangeLog 2019-07-04 18:36:33.000000000 +0200 @@ -1,3 +1,12 @@ +ags (2.2.10) + + [ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ] + * implemented ags_thread_global_get_use_sync_counter() synchronize threads with reduced overhead + * implemented ags_main_loop_sync_counter_inc() + * implemented ags_main_loop_sync_counter_dec() + * implemented ags_main_loop_sync_counter_test() + * fixed memory-leak in ags_message_envelope_free() + ags (2.2.9) [ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/ags/audio/thread/ags_audio_loop.c new/gsequencer-2.2.10/ags/audio/thread/ags_audio_loop.c --- old/gsequencer-2.2.9/ags/audio/thread/ags_audio_loop.c 2019-06-24 00:53:09.000000000 +0200 +++ new/gsequencer-2.2.10/ags/audio/thread/ags_audio_loop.c 2019-07-04 18:33:41.000000000 +0200 @@ -60,6 +60,9 @@ guint time_cycle, guint *time_spent); void ags_audio_loop_change_frequency(AgsMainLoop *main_loop, gdouble frequency); +void ags_audio_loop_sync_counter_inc(AgsMainLoop *main_loop, guint tic); +void ags_audio_loop_sync_counter_dec(AgsMainLoop *main_loop, guint tic); +gboolean ags_audio_loop_sync_counter_test(AgsMainLoop *main_loop, guint tic); void ags_audio_loop_start(AgsThread *thread); void ags_audio_loop_run(AgsThread *thread); @@ -253,15 +256,24 @@ ags_audio_loop_main_loop_interface_init(AgsMainLoopInterface *main_loop) { main_loop->get_tree_lock = ags_audio_loop_get_tree_lock; + main_loop->set_async_queue = ags_audio_loop_set_async_queue; main_loop->get_async_queue = ags_audio_loop_get_async_queue; + main_loop->set_tic = ags_audio_loop_set_tic; main_loop->get_tic = ags_audio_loop_get_tic; + main_loop->set_last_sync = ags_audio_loop_set_last_sync; main_loop->get_last_sync = ags_audio_loop_get_last_sync; + main_loop->interrupt = NULL; main_loop->monitor = ags_audio_loop_monitor; + main_loop->change_frequency = ags_audio_loop_change_frequency; + + main_loop->sync_counter_inc = ags_audio_loop_sync_counter_inc; + main_loop->sync_counter_dec = ags_audio_loop_sync_counter_dec; + main_loop->sync_counter_test = ags_audio_loop_sync_counter_test; } void @@ -801,6 +813,100 @@ } void +ags_audio_loop_sync_counter_inc(AgsMainLoop *main_loop, guint tic) +{ + AgsAudioLoop *audio_loop; + + pthread_mutex_t *thread_mutex; + + if(tic >= 3){ + return; + } + + audio_loop = AGS_AUDIO_LOOP(main_loop); + + /* get thread mutex */ + pthread_mutex_lock(ags_thread_get_class_mutex()); + + thread_mutex = AGS_THREAD(audio_loop)->obj_mutex; + + pthread_mutex_unlock(ags_thread_get_class_mutex()); + + /* increment */ + pthread_mutex_lock(thread_mutex); + + audio_loop->sync_counter[tic] += 1; + + pthread_mutex_unlock(thread_mutex); +} + +void +ags_audio_loop_sync_counter_dec(AgsMainLoop *main_loop, guint tic) +{ + AgsAudioLoop *audio_loop; + + pthread_mutex_t *thread_mutex; + + if(tic >= 3){ + return; + } + + audio_loop = AGS_AUDIO_LOOP(main_loop); + + /* get thread mutex */ + pthread_mutex_lock(ags_thread_get_class_mutex()); + + thread_mutex = AGS_THREAD(audio_loop)->obj_mutex; + + pthread_mutex_unlock(ags_thread_get_class_mutex()); + + /* increment */ + pthread_mutex_lock(thread_mutex); + + if(audio_loop->sync_counter[tic] > 0){ + audio_loop->sync_counter[tic] -= 1; + } + + pthread_mutex_unlock(thread_mutex); +} + +gboolean +ags_audio_loop_sync_counter_test(AgsMainLoop *main_loop, guint tic) +{ + AgsAudioLoop *audio_loop; + + gboolean success; + + pthread_mutex_t *thread_mutex; + + if(tic >= 3){ + return(FALSE); + } + + audio_loop = AGS_AUDIO_LOOP(main_loop); + + /* get thread mutex */ + pthread_mutex_lock(ags_thread_get_class_mutex()); + + thread_mutex = AGS_THREAD(audio_loop)->obj_mutex; + + pthread_mutex_unlock(ags_thread_get_class_mutex()); + + /* test */ + success = FALSE; + + pthread_mutex_lock(thread_mutex); + + if(audio_loop->sync_counter[tic] == 0){ + success = TRUE; + } + + pthread_mutex_unlock(thread_mutex); + + return(success); +} + +void ags_audio_loop_start(AgsThread *thread) { AgsAudioLoop *audio_loop; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/ags/audio/thread/ags_audio_loop.h new/gsequencer-2.2.10/ags/audio/thread/ags_audio_loop.h --- old/gsequencer-2.2.9/ags/audio/thread/ags_audio_loop.h 2019-04-29 20:06:20.000000000 +0200 +++ new/gsequencer-2.2.10/ags/audio/thread/ags_audio_loop.h 2019-07-04 16:24:22.000000000 +0200 @@ -84,6 +84,8 @@ guint time_cycle; volatile guint time_spent; + + guint sync_counter[3]; GObject *application_context; GObject *default_output_soundcard; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/ags/object/ags_main_loop.c new/gsequencer-2.2.10/ags/object/ags_main_loop.c --- old/gsequencer-2.2.9/ags/object/ags_main_loop.c 2019-04-29 20:06:20.000000000 +0200 +++ new/gsequencer-2.2.10/ags/object/ags_main_loop.c 2019-07-04 16:21:34.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2015 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * @@ -390,3 +390,68 @@ 0, frequency); } + +/** + * ags_main_loop_sync_counter_inc: + * @main_loop: the #AgsMainLoop + * @tic: the current tic + * + * Increment sync counter. + * + * Since: 2.2.10 + */ +void +ags_main_loop_sync_counter_inc(AgsMainLoop *main_loop, guint tic) +{ + AgsMainLoopInterface *main_loop_interface; + + g_return_val_if_fail(AGS_IS_MAIN_LOOP(main_loop), FALSE); + main_loop_interface = AGS_MAIN_LOOP_GET_INTERFACE(main_loop); + g_return_val_if_fail(main_loop_interface->sync_counter_inc, FALSE); + + main_loop_interface->sync_counter_inc(main_loop, tic); +} + +/** + * ags_main_loop_sync_counter_dec: + * @main_loop: the #AgsMainLoop + * @tic: the current tic + * + * Decrement sync counter. + * + * Since: 2.2.10 + */ +void +ags_main_loop_sync_counter_dec(AgsMainLoop *main_loop, guint tic) +{ + AgsMainLoopInterface *main_loop_interface; + + g_return_val_if_fail(AGS_IS_MAIN_LOOP(main_loop), FALSE); + main_loop_interface = AGS_MAIN_LOOP_GET_INTERFACE(main_loop); + g_return_val_if_fail(main_loop_interface->sync_counter_dec, FALSE); + + main_loop_interface->sync_counter_dec(main_loop, tic); +} + +/** + * ags_main_loop_sync_counter_inc: + * @main_loop: the #AgsMainLoop + * @tic: the current tic + * + * test sync counter. + * + * Returns: %TRUE if synced, otherwise %FALSE + * + * Since: 2.2.10 + */ +gboolean +ags_main_loop_sync_counter_test(AgsMainLoop *main_loop, guint tic) +{ + AgsMainLoopInterface *main_loop_interface; + + g_return_val_if_fail(AGS_IS_MAIN_LOOP(main_loop), FALSE); + main_loop_interface = AGS_MAIN_LOOP_GET_INTERFACE(main_loop); + g_return_val_if_fail(main_loop_interface->sync_counter_test, FALSE); + + return(main_loop_interface->sync_counter_test(main_loop, tic)); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/ags/object/ags_main_loop.h new/gsequencer-2.2.10/ags/object/ags_main_loop.h --- old/gsequencer-2.2.9/ags/object/ags_main_loop.h 2019-04-29 20:06:20.000000000 +0200 +++ new/gsequencer-2.2.10/ags/object/ags_main_loop.h 2019-07-04 16:22:01.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2015 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * @@ -63,6 +63,10 @@ void (*change_frequency)(AgsMainLoop *main_loop, gdouble frequency); + + void (*sync_counter_inc)(AgsMainLoop *main_loop, guint tic); + void (*sync_counter_dec)(AgsMainLoop *main_loop, guint tic); + gboolean (*sync_counter_test)(AgsMainLoop *main_loop, guint tic); }; GType ags_main_loop_get_type(); @@ -90,4 +94,8 @@ void ags_main_loop_change_frequency(AgsMainLoop *main_loop, gdouble frequency); +void ags_main_loop_sync_counter_inc(AgsMainLoop *main_loop, guint tic); +void ags_main_loop_sync_counter_dec(AgsMainLoop *main_loop, guint tic); +gboolean ags_main_loop_sync_counter_test(AgsMainLoop *main_loop, guint tic); + #endif /*__AGS_MAIN_LOOP_H__*/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/ags/thread/ags_generic_main_loop.c new/gsequencer-2.2.10/ags/thread/ags_generic_main_loop.c --- old/gsequencer-2.2.9/ags/thread/ags_generic_main_loop.c 2019-04-29 20:06:21.000000000 +0200 +++ new/gsequencer-2.2.10/ags/thread/ags_generic_main_loop.c 2019-07-04 18:34:49.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2015 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * @@ -43,6 +43,9 @@ guint ags_generic_main_loop_get_tic(AgsMainLoop *main_loop); void ags_generic_main_loop_set_last_sync(AgsMainLoop *main_loop, guint last_sync); guint ags_generic_main_loop_get_last_sync(AgsMainLoop *main_loop); +void ags_generic_main_loop_sync_counter_inc(AgsMainLoop *main_loop, guint tic); +void ags_generic_main_loop_sync_counter_dec(AgsMainLoop *main_loop, guint tic); +gboolean ags_generic_main_loop_sync_counter_test(AgsMainLoop *main_loop, guint tic); void ags_generic_main_loop_start(AgsThread *thread); @@ -153,12 +156,19 @@ ags_generic_main_loop_main_loop_interface_init(AgsMainLoopInterface *main_loop) { main_loop->get_tree_lock = ags_generic_main_loop_get_tree_lock; + main_loop->set_async_queue = ags_generic_main_loop_set_async_queue; main_loop->get_async_queue = ags_generic_main_loop_get_async_queue; + main_loop->set_tic = ags_generic_main_loop_set_tic; main_loop->get_tic = ags_generic_main_loop_get_tic; + main_loop->set_last_sync = ags_generic_main_loop_set_last_sync; main_loop->get_last_sync = ags_generic_main_loop_get_last_sync; + + main_loop->sync_counter_inc = ags_generic_main_loop_sync_counter_inc; + main_loop->sync_counter_dec = ags_generic_main_loop_sync_counter_dec; + main_loop->sync_counter_test = ags_generic_main_loop_sync_counter_test; } void @@ -328,6 +338,100 @@ } void +ags_generic_main_loop_sync_counter_inc(AgsMainLoop *main_loop, guint tic) +{ + AgsGenericMainLoop *generic_main_loop; + + pthread_mutex_t *thread_mutex; + + if(tic >= 3){ + return; + } + + generic_main_loop = AGS_GENERIC_MAIN_LOOP(main_loop); + + /* get thread mutex */ + pthread_mutex_lock(ags_thread_get_class_mutex()); + + thread_mutex = AGS_THREAD(generic_main_loop)->obj_mutex; + + pthread_mutex_unlock(ags_thread_get_class_mutex()); + + /* increment */ + pthread_mutex_lock(thread_mutex); + + generic_main_loop->sync_counter[tic] += 1; + + pthread_mutex_unlock(thread_mutex); +} + +void +ags_generic_main_loop_sync_counter_dec(AgsMainLoop *main_loop, guint tic) +{ + AgsGenericMainLoop *generic_main_loop; + + pthread_mutex_t *thread_mutex; + + if(tic >= 3){ + return; + } + + generic_main_loop = AGS_GENERIC_MAIN_LOOP(main_loop); + + /* get thread mutex */ + pthread_mutex_lock(ags_thread_get_class_mutex()); + + thread_mutex = AGS_THREAD(generic_main_loop)->obj_mutex; + + pthread_mutex_unlock(ags_thread_get_class_mutex()); + + /* increment */ + pthread_mutex_lock(thread_mutex); + + if(generic_main_loop->sync_counter[tic] > 0){ + generic_main_loop->sync_counter[tic] -= 1; + } + + pthread_mutex_unlock(thread_mutex); +} + +gboolean +ags_generic_main_loop_sync_counter_test(AgsMainLoop *main_loop, guint tic) +{ + AgsGenericMainLoop *generic_main_loop; + + gboolean success; + + pthread_mutex_t *thread_mutex; + + if(tic >= 3){ + return(FALSE); + } + + generic_main_loop = AGS_GENERIC_MAIN_LOOP(main_loop); + + /* get thread mutex */ + pthread_mutex_lock(ags_thread_get_class_mutex()); + + thread_mutex = AGS_THREAD(generic_main_loop)->obj_mutex; + + pthread_mutex_unlock(ags_thread_get_class_mutex()); + + /* test */ + success = FALSE; + + pthread_mutex_lock(thread_mutex); + + if(generic_main_loop->sync_counter[tic] == 0){ + success = TRUE; + } + + pthread_mutex_unlock(thread_mutex); + + return(success); +} + +void ags_generic_main_loop_start(AgsThread *thread) { if((AGS_THREAD_SINGLE_LOOP & (g_atomic_int_get(&(thread->flags)))) == 0){ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/ags/thread/ags_generic_main_loop.h new/gsequencer-2.2.10/ags/thread/ags_generic_main_loop.h --- old/gsequencer-2.2.9/ags/thread/ags_generic_main_loop.h 2019-04-29 20:06:21.000000000 +0200 +++ new/gsequencer-2.2.10/ags/thread/ags_generic_main_loop.h 2019-07-04 18:32:41.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2015 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * @@ -48,6 +48,8 @@ volatile guint tic; volatile guint last_sync; + guint sync_counter[3]; + GObject *application_context; GObject *async_queue; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/ags/thread/ags_message_queue.c new/gsequencer-2.2.10/ags/thread/ags_message_queue.c --- old/gsequencer-2.2.9/ags/thread/ags_message_queue.c 2019-04-29 20:06:21.000000000 +0200 +++ new/gsequencer-2.2.10/ags/thread/ags_message_queue.c 2019-07-04 16:21:29.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2017 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * @@ -301,10 +301,12 @@ void ags_message_envelope_free(AgsMessageEnvelope *message) { + guint i; + if(message == NULL){ return; } - + if(message->sender != NULL){ g_object_unref(message->sender); } @@ -318,6 +320,11 @@ } g_free(message->parameter_name); + + for(i = 0; i < message->n_params; i++){ + g_value_unset(&(message->value[i])); + } + g_free(message->value); g_free(message); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/ags/thread/ags_message_queue.h new/gsequencer-2.2.10/ags/thread/ags_message_queue.h --- old/gsequencer-2.2.9/ags/thread/ags_message_queue.h 2019-04-29 20:06:21.000000000 +0200 +++ new/gsequencer-2.2.10/ags/thread/ags_message_queue.h 2019-07-04 16:22:23.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2017 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/ags/thread/ags_thread-posix.c new/gsequencer-2.2.10/ags/thread/ags_thread-posix.c --- old/gsequencer-2.2.9/ags/thread/ags_thread-posix.c 2019-06-01 20:20:06.000000000 +0200 +++ new/gsequencer-2.2.10/ags/thread/ags_thread-posix.c 2019-07-04 17:28:29.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2018 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * @@ -124,6 +124,8 @@ static pthread_mutex_t ags_thread_class_mutex = PTHREAD_MUTEX_INITIALIZER; +static gboolean ags_thread_global_use_sync_counter = TRUE; + GType ags_thread_get_type() { @@ -1058,6 +1060,29 @@ } /** + * ags_thread_global_get_use_sync_counter: + * + * Get global config value use sync counter. + * + * Returns: if %TRUE use sync counter, else not + * + * Since: 2.2.10 + */ +gboolean +ags_thread_global_get_use_sync_counter() +{ + gboolean use_sync_counter; + + pthread_mutex_lock(ags_thread_get_class_mutex()); + + use_sync_counter = ags_thread_global_use_sync_counter; + + pthread_mutex_unlock(ags_thread_get_class_mutex()); + + return(use_sync_counter); +} + +/** * ags_thread_test_flags: * @thread: the #AgsThread * @flags: the flags @@ -2108,8 +2133,12 @@ main_loop = ags_thread_get_toplevel(thread); - retval = ags_thread_is_tree_ready_recursive(main_loop); - + if(ags_thread_global_get_use_sync_counter()){ + retval = ags_main_loop_sync_counter_test(AGS_MAIN_LOOP(main_loop), tic); + }else{ + retval = ags_thread_is_tree_ready_recursive(main_loop); + } + return(retval); } @@ -2747,10 +2776,18 @@ void ags_thread_clock_sync(AgsThread *thread){ guint next_tic, current_tic; + gboolean skip_sync_counter; + /* sync */ + skip_sync_counter = FALSE; + pthread_mutex_lock(ags_main_loop_get_tree_lock(AGS_MAIN_LOOP(main_loop))); if((AGS_THREAD_INITIAL_RUN & (g_atomic_int_get(&(thread->flags)))) != 0){ + if((AGS_THREAD_IMMEDIATE_SYNC & (g_atomic_int_get(&(thread->flags)))) == 0){ + skip_sync_counter = TRUE; + } + g_atomic_int_or(&(thread->sync_flags), AGS_THREAD_MARK_SYNCED); @@ -2828,6 +2865,16 @@ } break; } + + if(ags_thread_global_get_use_sync_counter()){ + if(!skip_sync_counter){ + ags_main_loop_sync_counter_dec(AGS_MAIN_LOOP(main_loop), + thread->current_tic); + } + + ags_main_loop_sync_counter_inc(AGS_MAIN_LOOP(main_loop), + next_tic); + } if(!ags_thread_is_tree_ready(thread, current_tic)){ @@ -2871,7 +2918,7 @@ ags_thread_reset_all(main_loop); pthread_mutex_unlock(ags_main_loop_get_tree_lock(AGS_MAIN_LOOP(main_loop))); - } + } } void ags_thread_clock_wait_async(){ @@ -3378,7 +3425,7 @@ thread->current_tic = ags_main_loop_get_tic(AGS_MAIN_LOOP(main_loop)); - pthread_mutex_unlock(ags_main_loop_get_tree_lock(AGS_MAIN_LOOP(main_loop))); + pthread_mutex_unlock(ags_main_loop_get_tree_lock(AGS_MAIN_LOOP(main_loop))); }else{ thread->current_tic = 0; } @@ -3785,6 +3832,11 @@ break; } + if(ags_thread_global_get_use_sync_counter()){ + ags_main_loop_sync_counter_dec(AGS_MAIN_LOOP(main_loop), + thread->current_tic); + } + if(ags_thread_is_tree_ready(thread, thread->current_tic)){ guint next_tic, current_tic; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/ags/thread/ags_thread-posix.h new/gsequencer-2.2.10/ags/thread/ags_thread-posix.h --- old/gsequencer-2.2.9/ags/thread/ags_thread-posix.h 2019-04-29 20:06:21.000000000 +0200 +++ new/gsequencer-2.2.10/ags/thread/ags_thread-posix.h 2019-07-04 16:35:42.000000000 +0200 @@ -1,5 +1,5 @@ /* GSequencer - Advanced GTK Sequencer - * Copyright (C) 2005-2018 Joël Krähemann + * Copyright (C) 2005-2019 Joël Krähemann * * This file is part of GSequencer. * @@ -289,6 +289,8 @@ pthread_mutex_t* ags_thread_get_class_mutex(); +gboolean ags_thread_global_get_use_sync_counter(); + gboolean ags_thread_test_flags(AgsThread *thread, guint flags); void ags_thread_set_flags(AgsThread *thread, guint flags); void ags_thread_unset_flags(AgsThread *thread, guint flags); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/configure new/gsequencer-2.2.10/configure --- old/gsequencer-2.2.9/configure 2019-07-02 20:04:02.000000000 +0200 +++ new/gsequencer-2.2.10/configure 2019-07-04 18:42:51.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for gsequencer 2.2.9. +# Generated by GNU Autoconf 2.69 for gsequencer 2.2.10. # # Report bugs to <jkraehemann@gmail.com>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='gsequencer' PACKAGE_TARNAME='gsequencer' -PACKAGE_VERSION='2.2.9' -PACKAGE_STRING='gsequencer 2.2.9' +PACKAGE_VERSION='2.2.10' +PACKAGE_STRING='gsequencer 2.2.10' PACKAGE_BUGREPORT='jkraehemann@gmail.com' PACKAGE_URL='' @@ -1508,7 +1508,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures gsequencer 2.2.9 to adapt to many kinds of systems. +\`configure' configures gsequencer 2.2.10 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1583,7 +1583,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gsequencer 2.2.9:";; + short | recursive ) echo "Configuration of gsequencer 2.2.10:";; esac cat <<\_ACEOF @@ -1790,7 +1790,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gsequencer configure 2.2.9 +gsequencer configure 2.2.10 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2388,7 +2388,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gsequencer $as_me 2.2.9, which was +It was created by gsequencer $as_me 2.2.10, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3255,7 +3255,7 @@ # Define the identity of the package. PACKAGE='gsequencer' - VERSION='2.2.9' + VERSION='2.2.10' cat >>confdefs.h <<_ACEOF @@ -23891,7 +23891,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gsequencer $as_me 2.2.9, which was +This file was extended by gsequencer $as_me 2.2.10, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -23957,7 +23957,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -gsequencer config.status 2.2.9 +gsequencer config.status 2.2.10 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/configure.ac new/gsequencer-2.2.10/configure.ac --- old/gsequencer-2.2.9/configure.ac 2019-07-02 20:03:45.000000000 +0200 +++ new/gsequencer-2.2.10/configure.ac 2019-07-04 18:42:35.000000000 +0200 @@ -8,7 +8,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_INIT([gsequencer],[2.2.9],[jkraehemann@gmail.com]) +AC_INIT([gsequencer],[2.2.10],[jkraehemann@gmail.com]) AM_INIT_AUTOMAKE([subdir-objects]) AC_CONFIG_SRCDIR([ags/config.h.in]) AC_CONFIG_HEADERS([ags/config.h]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/libags.sym new/gsequencer-2.2.10/libags.sym --- old/gsequencer-2.2.9/libags.sym 2019-07-02 20:05:09.000000000 +0200 +++ new/gsequencer-2.2.10/libags.sym 2019-07-04 18:43:30.000000000 +0200 @@ -243,6 +243,9 @@ ags_main_loop_interrupt ags_main_loop_monitor ags_main_loop_change_frequency +ags_main_loop_sync_counter_inc +ags_main_loop_sync_counter_dec +ags_main_loop_sync_counter_test ags_seekable_get_type ags_seekable_seek ags_cursor_get_type diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/libags.sym.in new/gsequencer-2.2.10/libags.sym.in --- old/gsequencer-2.2.9/libags.sym.in 2019-06-29 12:22:54.000000000 +0200 +++ new/gsequencer-2.2.10/libags.sym.in 2019-07-04 18:41:56.000000000 +0200 @@ -261,6 +261,9 @@ ags_main_loop_interrupt ags_main_loop_monitor ags_main_loop_change_frequency +ags_main_loop_sync_counter_inc +ags_main_loop_sync_counter_dec +ags_main_loop_sync_counter_test ags_seekable_get_type ags_seekable_seek ags_cursor_get_type diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/libags_thread.sym new/gsequencer-2.2.10/libags_thread.sym --- old/gsequencer-2.2.9/libags_thread.sym 2019-07-02 20:05:09.000000000 +0200 +++ new/gsequencer-2.2.10/libags_thread.sym 2019-07-04 18:43:30.000000000 +0200 @@ -16,6 +16,7 @@ ags_thread_resume ags_thread_get_type ags_thread_get_class_mutex +ags_thread_global_get_use_sync_counter ags_thread_test_flags ags_thread_set_flags ags_thread_unset_flags diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gsequencer-2.2.9/libags_thread.sym.in new/gsequencer-2.2.10/libags_thread.sym.in --- old/gsequencer-2.2.9/libags_thread.sym.in 2019-06-29 12:22:54.000000000 +0200 +++ new/gsequencer-2.2.10/libags_thread.sym.in 2019-07-04 18:41:56.000000000 +0200 @@ -34,6 +34,7 @@ ags_thread_resume ags_thread_get_type ags_thread_get_class_mutex +ags_thread_global_get_use_sync_counter ags_thread_test_flags ags_thread_set_flags ags_thread_unset_flags
participants (1)
-
root