[SCM] gsequencer/master: added fix to mangled AgsMainLoop interface

jkraehemann-guest at users.alioth.debian.org jkraehemann-guest at users.alioth.debian.org
Sun Feb 5 14:58:38 UTC 2017


The following commit has been merged in the master branch:
commit ed25972ac0b17d468fdefbc3bdd0f81f9181acf0
Author: Joël Krähemann <jkraehemann-guest at users.alioth.debian.org>
Date:   Sun Feb 5 15:22:50 2017 +0100

    added fix to mangled AgsMainLoop interface

diff --git a/debian/patches/fix-audio-loop.patch b/debian/patches/fix-audio-loop.patch
new file mode 100644
index 0000000..59b309b
--- /dev/null
+++ b/debian/patches/fix-audio-loop.patch
@@ -0,0 +1,102 @@
+Description: This patch is considered critical since it fixes mangled function
+ availability to change	main loop frequency.
+ The main loop which does audio computation has the same frequency as soundcard,
+ sequencer, export, audio or channel thread. The frequency changes as you modify
+ the buffer size or samplerate.
+Author: Joël Krähmann <jkraehemann at gmail.com>
+Applied-Upstream: 0.7.122.x, http://git.savannah.gnu.org/cgit/gsequencer.git
+Last-Update: 2017-02-05
+--- a/ags/audio/thread/ags_audio_loop.c
++++ b/ags/audio/thread/ags_audio_loop.c
+@@ -68,6 +68,8 @@
+ guint ags_audio_loop_get_last_sync(AgsMainLoop *main_loop);
+ gboolean ags_audio_loop_monitor(AgsMainLoop *main_loop,
+ 				guint time_cycle, guint *time_spent);
++void ags_audio_loop_change_frequency(AgsMainLoop *main_loop,
++				     gdouble frequency);
+ void ags_audio_loop_finalize(GObject *gobject);
+ 
+ void ags_audio_loop_start(AgsThread *thread);
+@@ -271,6 +273,7 @@
+   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;
+ }
+ 
+ void
+@@ -592,6 +595,74 @@
+   }
+ }
+ 
++void
++ags_audio_loop_change_frequency(AgsMainLoop *main_loop,
++				gdouble frequency)
++{
++  AgsThread *audio_loop, *thread;
++
++  audio_loop = AGS_THREAD(main_loop);
++  
++  g_object_set(audio_loop,
++	       "frequency\0", frequency,
++	       NULL);
++
++  /* reset soundcard thread */
++  thread = audio_loop;
++
++  while(ags_thread_find_type(thread, AGS_TYPE_SOUNDCARD_THREAD) != NULL){
++    g_object_set(thread,
++		 "frequency\0", frequency,
++		 NULL);
++
++    thread = g_atomic_pointer_get(&(thread->next));
++  }
++
++  /* reset sequencer thread */
++  thread = audio_loop;
++
++  while(ags_thread_find_type(thread, AGS_TYPE_SEQUENCER_THREAD) != NULL){
++    g_object_set(thread,
++		 "frequency\0", frequency,
++		 NULL);
++
++    thread = g_atomic_pointer_get(&(thread->next));
++  }
++
++  /* reset export thread */
++  thread = audio_loop;
++
++  while(ags_thread_find_type(thread, AGS_TYPE_EXPORT_THREAD) != NULL){
++    g_object_set(thread,
++		 "frequency\0", frequency,
++		 NULL);
++
++    thread = g_atomic_pointer_get(&(thread->next));
++  }
++
++  /* reset audio thread */
++  thread = audio_loop;
++
++  while(ags_thread_find_type(thread, AGS_TYPE_AUDIO_THREAD) != NULL){
++    g_object_set(thread,
++		 "frequency\0", frequency,
++		 NULL);
++
++    thread = g_atomic_pointer_get(&(thread->next));
++  }
++
++  /* reset channel thread */
++  thread = audio_loop;
++
++  while(ags_thread_find_type(thread, AGS_TYPE_CHANNEL_THREAD) != NULL){
++    g_object_set(thread,
++		 "frequency\0", frequency,
++		 NULL);
++
++    thread = g_atomic_pointer_get(&(thread->next));
++  }
++}
++
+ void
+ ags_audio_loop_finalize(GObject *gobject)
+ {
diff --git a/debian/patches/series b/debian/patches/series
index fa05ddd..8c4993d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
+fix-audio-loop.patch
 fix-main-loop-c.patch
 fix-main-loop-h.patch
 wish-line-c.patch

-- 
gsequencer packaging



More information about the pkg-multimedia-commits mailing list