[SCM] gsequencer/master: merged patches related to Bug#857947

jkraehemann-guest at users.alioth.debian.org jkraehemann-guest at users.alioth.debian.org
Thu Mar 16 16:06:27 UTC 2017


The following commit has been merged in the master branch:
commit 54bb55b92f1b73a7a3ba3f8b5860e1d7e8c64762
Author: Joël Krähemann <jkraehemann-guest at users.alioth.debian.org>
Date:   Thu Mar 16 17:00:06 2017 +0100

    merged patches related to Bug#857947

diff --git a/debian/patches/fix-clear-buffer-h.patch b/debian/patches/fix-clear-buffer-h.patch
deleted file mode 100644
index 52c3d49..0000000
--- a/debian/patches/fix-clear-buffer-h.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-Description: AgsClearBuffer fixes data-race causing distorted audio output
- resulting in useless audio output. Introduced due to low-latency sync
- strategy for ALSA audio output and alsa MIDI input. Might end in application
- crash and is required by immediate sync strategy. This patch includes the
- header file of the task clearing soundcard buffers in order you can do
- additive mixing, during ordinary run context.
-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-01-31
---- /dev/null
-+++ b/ags/audio/task/ags_clear_buffer.h
-@@ -0,0 +1,54 @@
-+/* GSequencer - Advanced GTK Sequencer
-+ * Copyright (C) 2005-2015 Joël Krähemann
-+ *
-+ * This file is part of GSequencer.
-+ *
-+ * GSequencer is free software: you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation, either version 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * GSequencer is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with GSequencer.  If not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#ifndef __AGS_CLEAR_BUFFER_H__
-+#define __AGS_CLEAR_BUFFER_H__
-+
-+#include <glib.h>
-+#include <glib-object.h>
-+
-+#include <ags/thread/ags_task.h>
-+
-+#define AGS_TYPE_CLEAR_BUFFER                (ags_clear_buffer_get_type())
-+#define AGS_CLEAR_BUFFER(obj)                (G_TYPE_CHECK_INSTANCE_CAST((obj), AGS_TYPE_CLEAR_BUFFER, AgsClearBuffer))
-+#define AGS_CLEAR_BUFFER_CLASS(class)        (G_TYPE_CHECK_CLASS_CAST((class), AGS_TYPE_CLEAR_BUFFER, AgsClearBufferClass))
-+#define AGS_IS_CLEAR_BUFFER(obj)             (G_TYPE_CHECK_INSTANCE_TYPE((obj), AGS_TYPE_CLEAR_BUFFER))
-+#define AGS_IS_CLEAR_BUFFER_CLASS(class)     (G_TYPE_CHECK_CLASS_TYPE((class), AGS_TYPE_CLEAR_BUFFER))
-+#define AGS_CLEAR_BUFFER_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS((obj), AGS_TYPE_CLEAR_BUFFER, AgsClearBufferClass))
-+
-+typedef struct _AgsClearBuffer AgsClearBuffer;
-+typedef struct _AgsClearBufferClass AgsClearBufferClass;
-+
-+struct _AgsClearBuffer
-+{
-+  AgsTask task;
-+
-+  GObject *device;
-+};
-+
-+struct _AgsClearBufferClass
-+{
-+  AgsTaskClass task;
-+};
-+
-+GType ags_clear_buffer_get_type();
-+
-+AgsClearBuffer* ags_clear_buffer_new(GObject *device);
-+
-+#endif /*__AGS_CLEAR_BUFFER_H__*/
diff --git a/debian/patches/fix-devout.patch b/debian/patches/fix-devout.patch
deleted file mode 100644
index cdb0ac4..0000000
--- a/debian/patches/fix-devout.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-Description: AgsClearBuffer fixes data-race causing distorted audio output
- resulting in useless audio output. Introduced due to low-latency sync
- strategy for ALSA audio output and alsa MIDI input. Might end in application
- crash and is required by immediate sync strategy.
- These changes make use of the task by ags_devout_alsa_play() and
- ags_devout_oss_play().
-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-01-31
---- a/ags/audio/ags_devout.c
-+++ b/ags/audio/ags_devout.c
-@@ -33,6 +33,7 @@
- #include <ags/thread/ags_poll_fd.h>
- 
- #include <ags/audio/task/ags_tic_device.h>
-+#include <ags/audio/task/ags_clear_buffer.h>
- #include <ags/audio/task/ags_switch_buffer_flag.h>
- #include <ags/audio/task/ags_notify_soundcard.h>
- 
-@@ -2210,6 +2211,7 @@
-   AgsDevout *devout;
- 
-   AgsTicDevice *tic_device;
-+  AgsClearBuffer *clear_buffer;
-   AgsSwitchBufferFlag *switch_buffer_flag;
-   
-   AgsThread *task_thread;
-@@ -2402,9 +2404,6 @@
-     nth_ring_buffer = 1;
-   }
- 
--  /* clear next buffer */
--  memset(devout->buffer[next_buffer], 0, (size_t) devout->pcm_channels * devout->buffer_size * word_size);
--
- #ifdef AGS_WITH_OSS    
-   /* fill ring buffer */
-   ags_devout_oss_play_fill_ring_buffer(devout->buffer[nth_buffer],
-@@ -2434,6 +2433,11 @@
-   tic_device = ags_tic_device_new((GObject *) devout);
-   task = g_list_append(task,
- 		       tic_device);
-+
-+  /* reset - clear buffer */
-+  clear_buffer = ags_clear_buffer_new((GObject *) devout);
-+  task = g_list_append(task,
-+		       clear_buffer);
-   
-   /* reset - switch buffer flags */
-   switch_buffer_flag = ags_switch_buffer_flag_new((GObject *) devout);
-@@ -2951,6 +2955,7 @@
-   AgsDevout *devout;
- 
-   AgsTicDevice *tic_device;
-+  AgsClearBuffer *clear_buffer;
-   AgsSwitchBufferFlag *switch_buffer_flag;
-   
-   AgsThread *task_thread;
-@@ -3166,9 +3171,6 @@
-     nth_ring_buffer = 1;
-   }
- 
--  /* clear next buffer */
--  memset(devout->buffer[next_buffer], 0, (size_t) devout->pcm_channels * devout->buffer_size * word_size);
--
- #ifdef AGS_WITH_ALSA
- 
-   /* fill ring buffer */
-@@ -3227,6 +3229,11 @@
-   tic_device = ags_tic_device_new((GObject *) devout);
-   task = g_list_append(task,
- 		       tic_device);
-+
-+  /* reset - clear buffer */
-+  clear_buffer = ags_clear_buffer_new((GObject *) devout);
-+  task = g_list_append(task,
-+		       clear_buffer);
-   
-   /* reset - switch buffer flags */
-   switch_buffer_flag = ags_switch_buffer_flag_new((GObject *) devout);
diff --git a/debian/patches/fix-jack-client.patch b/debian/patches/fix-jack-client.patch
deleted file mode 100644
index 7c4ddad..0000000
--- a/debian/patches/fix-jack-client.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Description: This fix eliminates clearing buffer by memset(). The AgsClearBuffer
- task is used instead in ags_jack_devout.c. Related to data-race and concurrent
- access causing possible SIGINT.
-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-01-31
---- a/ags/audio/jack/ags_jack_client.c
-+++ b/ags/audio/jack/ags_jack_client.c
-@@ -886,8 +886,6 @@
-       }
-     
-       if(!no_event){
--	memset(jack_devout->buffer[nth_buffer], 0, (size_t) jack_devout->pcm_channels * jack_devout->buffer_size * word_size);
--
- 	/* signal finish */
- 	pthread_mutex_lock(device_mutex);
- 
diff --git a/debian/patches/fix-jack-devout.patch b/debian/patches/fix-jack-devout.patch
deleted file mode 100644
index 60974ea..0000000
--- a/debian/patches/fix-jack-devout.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-Description: AgsClearBuffer fixes data-race causing distorted audio output
- resulting in useless audio output. Introduced due to low-latency sync
- strategy for ALSA audio output and alsa MIDI input. Might end in application
- crash and is required by immediate sync strategy.
- These changes make use of the task by ags_jack_devout_port_play().
-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-01-31
---- a/ags/audio/jack/ags_jack_devout.c
-+++ b/ags/audio/jack/ags_jack_devout.c
-@@ -40,6 +40,7 @@
- 
- #include <ags/audio/task/ags_notify_soundcard.h>
- #include <ags/audio/task/ags_tic_device.h>
-+#include <ags/audio/task/ags_clear_buffer.h>
- #include <ags/audio/task/ags_switch_buffer_flag.h>
- 
- #include <ags/audio/thread/ags_audio_loop.h>
-@@ -1609,7 +1610,7 @@
- {
-   AgsJackClient *jack_client;
-   AgsJackDevout *jack_devout;
--
-+  
-   AgsMutexManager *mutex_manager;
-   AgsTaskThread *task_thread;
- 
-@@ -1728,6 +1729,7 @@
- 
-   if(task_thread != NULL){
-     AgsTicDevice *tic_device;
-+    AgsClearBuffer *clear_buffer;
-     AgsSwitchBufferFlag *switch_buffer_flag;
-       
-     GList *task;
-@@ -1738,7 +1740,12 @@
-     tic_device = ags_tic_device_new((GObject *) jack_devout);
-     task = g_list_append(task,
- 			 tic_device);
--  
-+
-+    /* reset - clear buffer */
-+    clear_buffer = ags_clear_buffer_new((GObject *) jack_devout);
-+    task = g_list_append(task,
-+			 clear_buffer); 
-+    
-     /* reset - switch buffer flags */
-     switch_buffer_flag = ags_switch_buffer_flag_new((GObject *) jack_devout);
-     task = g_list_append(task,
-@@ -1748,9 +1755,57 @@
-     ags_task_thread_append_tasks((AgsTaskThread *) task_thread,
- 				 task);
-   }else{
-+    guint nth_buffer;
-+    guint word_size;
-+    
-     /* tic */
-     ags_soundcard_tic(AGS_SOUNDCARD(jack_devout));
--	  
-+
-+    switch(jack_devout->format){
-+    case AGS_SOUNDCARD_SIGNED_8_BIT:
-+      {
-+	word_size = sizeof(signed char);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_16_BIT:
-+      {
-+	word_size = sizeof(signed short);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_24_BIT:
-+      {
-+	//NOTE:JK: The 24-bit linear samples use 32-bit physical space
-+	word_size = sizeof(signed long);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_32_BIT:
-+      {
-+	word_size = sizeof(signed long);
-+      }
-+      break;
-+    case AGS_SOUNDCARD_SIGNED_64_BIT:
-+      {
-+	word_size = sizeof(signed long long);
-+      }
-+      break;
-+    default:
-+      g_warning("ags_jack_devout_port_play(): unsupported word size\0");
-+      return;
-+    }
-+        
-+    /* reset - clear buffer */
-+    if((AGS_JACK_DEVOUT_BUFFER0 & (jack_devout->flags)) != 0){
-+      nth_buffer = 3;
-+    }else if((AGS_JACK_DEVOUT_BUFFER1 & (jack_devout->flags)) != 0){
-+      nth_buffer = 0;
-+    }else if((AGS_JACK_DEVOUT_BUFFER2 & (jack_devout->flags)) != 0){
-+      nth_buffer = 1;
-+    }else if((AGS_JACK_DEVOUT_BUFFER3 & jack_devout->flags) != 0){
-+      nth_buffer = 2;
-+    }
-+    
-+    memset(jack_devout->buffer[nth_buffer], 0, (size_t) jack_devout->pcm_channels * jack_devout->buffer_size * word_size);
-+    
-     /* reset - switch buffer flags */
-     ags_jack_devout_switch_buffer_flag(jack_devout);
-   }
diff --git a/debian/patches/fix-clear-buffer-c.patch b/debian/patches/fix-soundcard-data-race.diff
similarity index 58%
rename from debian/patches/fix-clear-buffer-c.patch
rename to debian/patches/fix-soundcard-data-race.diff
index 263498c..e2396a8 100644
--- a/debian/patches/fix-clear-buffer-c.patch
+++ b/debian/patches/fix-soundcard-data-race.diff
@@ -1,12 +1,3 @@
-Description: AgsClearBuffer fixes data-race causing distorted audio output
- resulting in useless audio output. Introduced due to low-latency sync
- strategy for ALSA audio output and alsa MIDI input. Might end in application
- crash and is required by immediate sync strategy. This patch includes the
- c-source file of the task clearing soundcard buffers in order you can do
- additive mixing, during ordinary run context.
-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-01-31
 --- /dev/null
 +++ b/ags/audio/task/ags_clear_buffer.c
 @@ -0,0 +1,379 @@
@@ -389,3 +380,241 @@ Last-Update: 2017-01-31
 +
 +  return(clear_buffer);
 +}
+--- /dev/null
++++ b/ags/audio/task/ags_clear_buffer.h
+@@ -0,0 +1,54 @@
++/* GSequencer - Advanced GTK Sequencer
++ * Copyright (C) 2005-2015 Joël Krähemann
++ *
++ * This file is part of GSequencer.
++ *
++ * GSequencer is free software: you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation, either version 3 of the License, or
++ * (at your option) any later version.
++ *
++ * GSequencer is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with GSequencer.  If not, see <http://www.gnu.org/licenses/>.
++ */
++
++#ifndef __AGS_CLEAR_BUFFER_H__
++#define __AGS_CLEAR_BUFFER_H__
++
++#include <glib.h>
++#include <glib-object.h>
++
++#include <ags/thread/ags_task.h>
++
++#define AGS_TYPE_CLEAR_BUFFER                (ags_clear_buffer_get_type())
++#define AGS_CLEAR_BUFFER(obj)                (G_TYPE_CHECK_INSTANCE_CAST((obj), AGS_TYPE_CLEAR_BUFFER, AgsClearBuffer))
++#define AGS_CLEAR_BUFFER_CLASS(class)        (G_TYPE_CHECK_CLASS_CAST((class), AGS_TYPE_CLEAR_BUFFER, AgsClearBufferClass))
++#define AGS_IS_CLEAR_BUFFER(obj)             (G_TYPE_CHECK_INSTANCE_TYPE((obj), AGS_TYPE_CLEAR_BUFFER))
++#define AGS_IS_CLEAR_BUFFER_CLASS(class)     (G_TYPE_CHECK_CLASS_TYPE((class), AGS_TYPE_CLEAR_BUFFER))
++#define AGS_CLEAR_BUFFER_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS((obj), AGS_TYPE_CLEAR_BUFFER, AgsClearBufferClass))
++
++typedef struct _AgsClearBuffer AgsClearBuffer;
++typedef struct _AgsClearBufferClass AgsClearBufferClass;
++
++struct _AgsClearBuffer
++{
++  AgsTask task;
++
++  GObject *device;
++};
++
++struct _AgsClearBufferClass
++{
++  AgsTaskClass task;
++};
++
++GType ags_clear_buffer_get_type();
++
++AgsClearBuffer* ags_clear_buffer_new(GObject *device);
++
++#endif /*__AGS_CLEAR_BUFFER_H__*/
+--- a/ags/audio/ags_devout.c
++++ b/ags/audio/ags_devout.c
+@@ -33,6 +33,7 @@
+ #include <ags/thread/ags_poll_fd.h>
+ 
+ #include <ags/audio/task/ags_tic_device.h>
++#include <ags/audio/task/ags_clear_buffer.h>
+ #include <ags/audio/task/ags_switch_buffer_flag.h>
+ #include <ags/audio/task/ags_notify_soundcard.h>
+ 
+@@ -2210,6 +2211,7 @@
+   AgsDevout *devout;
+ 
+   AgsTicDevice *tic_device;
++  AgsClearBuffer *clear_buffer;
+   AgsSwitchBufferFlag *switch_buffer_flag;
+   
+   AgsThread *task_thread;
+@@ -2402,9 +2404,6 @@
+     nth_ring_buffer = 1;
+   }
+ 
+-  /* clear next buffer */
+-  memset(devout->buffer[next_buffer], 0, (size_t) devout->pcm_channels * devout->buffer_size * word_size);
+-
+ #ifdef AGS_WITH_OSS    
+   /* fill ring buffer */
+   ags_devout_oss_play_fill_ring_buffer(devout->buffer[nth_buffer],
+@@ -2434,6 +2433,11 @@
+   tic_device = ags_tic_device_new((GObject *) devout);
+   task = g_list_append(task,
+ 		       tic_device);
++
++  /* reset - clear buffer */
++  clear_buffer = ags_clear_buffer_new((GObject *) devout);
++  task = g_list_append(task,
++		       clear_buffer);
+   
+   /* reset - switch buffer flags */
+   switch_buffer_flag = ags_switch_buffer_flag_new((GObject *) devout);
+@@ -2951,6 +2955,7 @@
+   AgsDevout *devout;
+ 
+   AgsTicDevice *tic_device;
++  AgsClearBuffer *clear_buffer;
+   AgsSwitchBufferFlag *switch_buffer_flag;
+   
+   AgsThread *task_thread;
+@@ -3166,9 +3171,6 @@
+     nth_ring_buffer = 1;
+   }
+ 
+-  /* clear next buffer */
+-  memset(devout->buffer[next_buffer], 0, (size_t) devout->pcm_channels * devout->buffer_size * word_size);
+-
+ #ifdef AGS_WITH_ALSA
+ 
+   /* fill ring buffer */
+@@ -3227,6 +3229,11 @@
+   tic_device = ags_tic_device_new((GObject *) devout);
+   task = g_list_append(task,
+ 		       tic_device);
++
++  /* reset - clear buffer */
++  clear_buffer = ags_clear_buffer_new((GObject *) devout);
++  task = g_list_append(task,
++		       clear_buffer);
+   
+   /* reset - switch buffer flags */
+   switch_buffer_flag = ags_switch_buffer_flag_new((GObject *) devout);
+--- a/ags/audio/jack/ags_jack_client.c
++++ b/ags/audio/jack/ags_jack_client.c
+@@ -886,8 +886,6 @@
+       }
+     
+       if(!no_event){
+-	memset(jack_devout->buffer[nth_buffer], 0, (size_t) jack_devout->pcm_channels * jack_devout->buffer_size * word_size);
+-
+ 	/* signal finish */
+ 	pthread_mutex_lock(device_mutex);
+ 
+--- a/ags/audio/jack/ags_jack_devout.c
++++ b/ags/audio/jack/ags_jack_devout.c
+@@ -40,6 +40,7 @@
+ 
+ #include <ags/audio/task/ags_notify_soundcard.h>
+ #include <ags/audio/task/ags_tic_device.h>
++#include <ags/audio/task/ags_clear_buffer.h>
+ #include <ags/audio/task/ags_switch_buffer_flag.h>
+ 
+ #include <ags/audio/thread/ags_audio_loop.h>
+@@ -1609,7 +1610,7 @@
+ {
+   AgsJackClient *jack_client;
+   AgsJackDevout *jack_devout;
+-
++  
+   AgsMutexManager *mutex_manager;
+   AgsTaskThread *task_thread;
+ 
+@@ -1728,6 +1729,7 @@
+ 
+   if(task_thread != NULL){
+     AgsTicDevice *tic_device;
++    AgsClearBuffer *clear_buffer;
+     AgsSwitchBufferFlag *switch_buffer_flag;
+       
+     GList *task;
+@@ -1738,7 +1740,12 @@
+     tic_device = ags_tic_device_new((GObject *) jack_devout);
+     task = g_list_append(task,
+ 			 tic_device);
+-  
++
++    /* reset - clear buffer */
++    clear_buffer = ags_clear_buffer_new((GObject *) jack_devout);
++    task = g_list_append(task,
++			 clear_buffer); 
++    
+     /* reset - switch buffer flags */
+     switch_buffer_flag = ags_switch_buffer_flag_new((GObject *) jack_devout);
+     task = g_list_append(task,
+@@ -1748,9 +1755,57 @@
+     ags_task_thread_append_tasks((AgsTaskThread *) task_thread,
+ 				 task);
+   }else{
++    guint nth_buffer;
++    guint word_size;
++    
+     /* tic */
+     ags_soundcard_tic(AGS_SOUNDCARD(jack_devout));
+-	  
++
++    switch(jack_devout->format){
++    case AGS_SOUNDCARD_SIGNED_8_BIT:
++      {
++	word_size = sizeof(signed char);
++      }
++      break;
++    case AGS_SOUNDCARD_SIGNED_16_BIT:
++      {
++	word_size = sizeof(signed short);
++      }
++      break;
++    case AGS_SOUNDCARD_SIGNED_24_BIT:
++      {
++	//NOTE:JK: The 24-bit linear samples use 32-bit physical space
++	word_size = sizeof(signed long);
++      }
++      break;
++    case AGS_SOUNDCARD_SIGNED_32_BIT:
++      {
++	word_size = sizeof(signed long);
++      }
++      break;
++    case AGS_SOUNDCARD_SIGNED_64_BIT:
++      {
++	word_size = sizeof(signed long long);
++      }
++      break;
++    default:
++      g_warning("ags_jack_devout_port_play(): unsupported word size\0");
++      return;
++    }
++        
++    /* reset - clear buffer */
++    if((AGS_JACK_DEVOUT_BUFFER0 & (jack_devout->flags)) != 0){
++      nth_buffer = 3;
++    }else if((AGS_JACK_DEVOUT_BUFFER1 & (jack_devout->flags)) != 0){
++      nth_buffer = 0;
++    }else if((AGS_JACK_DEVOUT_BUFFER2 & (jack_devout->flags)) != 0){
++      nth_buffer = 1;
++    }else if((AGS_JACK_DEVOUT_BUFFER3 & jack_devout->flags) != 0){
++      nth_buffer = 2;
++    }
++    
++    memset(jack_devout->buffer[nth_buffer], 0, (size_t) jack_devout->pcm_channels * jack_devout->buffer_size * word_size);
++    
+     /* reset - switch buffer flags */
+     ags_jack_devout_switch_buffer_flag(jack_devout);
+   }
diff --git a/debian/patches/series b/debian/patches/series
index 2580cd0..710fa8b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -11,12 +11,8 @@ fix-makefile-am.patch
 fix-machine-selector.patch
 fix-pad-callbacks.patch
 fix-export-soundcard-callbacks.patch
-fix-jack-devout.patch
-fix-jack-client.patch
 fix-missing-mutices.diff
-fix-clear-buffer-h.patch
-fix-clear-buffer-c.patch
-fix-devout.patch
+fix-soundcard-data-race.diff
 fix-thread-posix.patch
 fix-duplicated-flag-definition.diff
 fix-null-pointer-dereference.diff

-- 
gsequencer packaging



More information about the pkg-multimedia-commits mailing list