[SCM] gsequencer/master: add patch to ignore playback as no soundcard configured
jkraehemann-guest at users.alioth.debian.org
jkraehemann-guest at users.alioth.debian.org
Mon Mar 20 18:55:30 UTC 2017
The following commit has been merged in the master branch:
commit e6637ff2e5497825a326e5287091c08018b0c117
Author: Joël Krähemann <jkraehemann-guest at users.alioth.debian.org>
Date: Mon Mar 20 19:55:12 2017 +0100
add patch to ignore playback as no soundcard configured
diff --git a/debian/patches/fix-crash-as-no-soundcard.diff b/debian/patches/fix-crash-as-no-soundcard.diff
new file mode 100644
index 0000000..7d8dad0
--- /dev/null
+++ b/debian/patches/fix-crash-as-no-soundcard.diff
@@ -0,0 +1,269 @@
+--- a/ags/X/ags_machine.c
++++ b/ags/X/ags_machine.c
+@@ -1503,6 +1503,8 @@
+ AgsTaskThread *task_thread;
+
+ AgsApplicationContext *application_context;
++
++ gboolean no_soundcard;
+
+ pthread_mutex_t *application_mutex;
+ pthread_mutex_t *audio_loop_mutex;
+@@ -1513,6 +1515,21 @@
+
+ mutex_manager = ags_mutex_manager_get_instance();
+ application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
++
++ /* check if soundcard present */
++ no_soundcard = FALSE;
++
++ pthread_mutex_lock(application_mutex);
++
++ if(ags_sound_provider_get_soundcard(AGS_SOUND_PROVIDER(application_context)) == NULL){
++ no_soundcard = TRUE;
++ }
++
++ pthread_mutex_unlock(application_mutex);
++
++ if(no_soundard){
++ return;
++ }
+
+ /* get threads */
+ pthread_mutex_lock(application_mutex);
+--- a/ags/X/ags_pad.c
++++ b/ags/X/ags_pad.c
+@@ -30,6 +30,7 @@
+ #include <ags/thread/ags_task_thread.h>
+ #include <ags/thread/ags_task_completion.h>
+
++#include <ags/audio/ags_sound_provider.h>
+ #include <ags/audio/ags_audio.h>
+ #include <ags/audio/ags_input.h>
+ #include <ags/audio/ags_output.h>
+@@ -770,6 +771,7 @@
+
+ GList *tasks;
+
++ gboolean no_soundcard;
+ gboolean play_all;
+
+ pthread_mutex_t *application_mutex;
+@@ -783,7 +785,22 @@
+
+ mutex_manager = ags_mutex_manager_get_instance();
+ application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
++
++ /* check if soundcard present */
++ no_soundcard = FALSE;
++
++ pthread_mutex_lock(application_mutex);
++
++ if(ags_sound_provider_get_soundcard(AGS_SOUND_PROVIDER(application_context)) == NULL){
++ no_soundcard = TRUE;
++ }
+
++ pthread_mutex_unlock(application_mutex);
++
++ if(no_soundard){
++ return;
++ }
++
+ /* get audio loop */
+ pthread_mutex_lock(application_mutex);
+
+--- a/ags/X/editor/ags_note_edit_callbacks.c
++++ b/ags/X/editor/ags_note_edit_callbacks.c
+@@ -27,6 +27,7 @@
+ #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_audio.h>
+ #include <ags/audio/ags_channel.h>
+ #include <ags/audio/ags_output.h>
+@@ -46,6 +47,7 @@
+ #include <ags/audio/task/ags_append_recall.h>
+ #include <ags/audio/task/ags_add_audio_signal.h>
+
++#include <ags/X/ags_window.h>
+ #include <ags/X/ags_editor.h>
+
+ #include <ags/X/machine/ags_panel.h>
+@@ -1210,6 +1212,8 @@
+ auto void ags_note_edit_drawing_area_key_release_event_play_channel(AgsChannel *channel, AgsNote *note);
+
+ void ags_note_edit_drawing_area_key_release_event_play_channel(AgsChannel *channel, AgsNote *note){
++ AgsWindow *window;
++
+ GObject *soundcard;
+ AgsAudio *audio;
+
+@@ -1226,14 +1230,35 @@
+
+ GList *tasks;
+
++ gboolean no_soundcard;
++
+ pthread_mutex_t *application_mutex;
+ pthread_mutex_t *soundcard_mutex;
+ pthread_mutex_t *audio_mutex;
+ pthread_mutex_t *channel_mutex;
+
++ window = (AgsWindow *) gtk_widget_get_toplevel((GtkWidget *) pattern_edit);
++
++ application_context = (AgsApplicationContext *) window->application_context;
++
+ mutex_manager = ags_mutex_manager_get_instance();
+ application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
+
++ /* check if soundcard present */
++ no_soundcard = FALSE;
++
++ pthread_mutex_lock(application_mutex);
++
++ if(ags_sound_provider_get_soundcard(AGS_SOUND_PROVIDER(application_context)) == NULL){
++ no_soundcard = TRUE;
++ }
++
++ pthread_mutex_unlock(application_mutex);
++
++ if(no_soundard){
++ return;
++ }
++
+ /* lookup channel mutex */
+ pthread_mutex_lock(application_mutex);
+
+@@ -1272,13 +1297,6 @@
+
+ pthread_mutex_unlock(application_mutex);
+
+- /* get application_context */
+- pthread_mutex_lock(soundcard_mutex);
+-
+- application_context = (AgsApplicationContext *) ags_soundcard_get_application_context(AGS_SOUNDCARD(soundcard));
+-
+- pthread_mutex_unlock(soundcard_mutex);
+-
+ /* get threads */
+ pthread_mutex_lock(application_mutex);
+
+--- a/ags/X/editor/ags_pattern_edit_callbacks.c
++++ b/ags/X/editor/ags_pattern_edit_callbacks.c
+@@ -27,6 +27,7 @@
+ #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_audio.h>
+ #include <ags/audio/ags_channel.h>
+ #include <ags/audio/ags_output.h>
+@@ -44,6 +45,7 @@
+ #include <ags/audio/task/ags_append_recall.h>
+ #include <ags/audio/task/ags_add_audio_signal.h>
+
++#include <ags/X/ags_window.h>
+ #include <ags/X/ags_editor.h>
+
+ #include <ags/X/machine/ags_panel.h>
+@@ -1154,6 +1156,8 @@
+ auto void ags_pattern_edit_drawing_area_key_release_event_play_channel(AgsChannel *channel);
+
+ void ags_pattern_edit_drawing_area_key_release_event_play_channel(AgsChannel *channel){
++ AgsWindow *window;
++
+ GObject *soundcard;
+ AgsAudio *audio;
+
+@@ -1171,14 +1175,35 @@
+
+ GList *tasks;
+
++ gboolean no_soundcard;
++
+ pthread_mutex_t *application_mutex;
+ pthread_mutex_t *soundcard_mutex;
+ pthread_mutex_t *audio_mutex;
+ pthread_mutex_t *channel_mutex;
+
++ window = (AgsWindow *) gtk_widget_get_toplevel((GtkWidget *) pattern_edit);
++
++ application_context = (AgsApplicationContext *) window->application_context;
++
+ mutex_manager = ags_mutex_manager_get_instance();
+ application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
+
++ /* check if soundcard present */
++ no_soundcard = FALSE;
++
++ pthread_mutex_lock(application_mutex);
++
++ if(ags_sound_provider_get_soundcard(AGS_SOUND_PROVIDER(application_context)) == NULL){
++ no_soundcard = TRUE;
++ }
++
++ pthread_mutex_unlock(application_mutex);
++
++ if(no_soundard){
++ return;
++ }
++
+ /* lookup channel mutex */
+ pthread_mutex_lock(application_mutex);
+
+@@ -1217,13 +1242,6 @@
+
+ pthread_mutex_unlock(application_mutex);
+
+- /* get application_context */
+- pthread_mutex_lock(soundcard_mutex);
+-
+- application_context = (AgsApplicationContext *) ags_soundcard_get_application_context(AGS_SOUNDCARD(soundcard));
+-
+- pthread_mutex_unlock(soundcard_mutex);
+-
+ /* get threads */
+ pthread_mutex_lock(application_mutex);
+
+--- a/ags/X/machine/ags_cell_pattern_callbacks.c
++++ b/ags/X/machine/ags_cell_pattern_callbacks.c
+@@ -26,6 +26,7 @@
+ #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_playback.h>
+
+ #include <ags/audio/thread/ags_audio_loop.h>
+@@ -208,6 +209,8 @@
+
+ GList *tasks;
+
++ gboolean no_soundcard;
++
+ pthread_mutex_t *application_mutex;
+ pthread_mutex_t *audio_mutex;
+ pthread_mutex_t *channel_mutex;
+@@ -217,6 +220,21 @@
+ mutex_manager = ags_mutex_manager_get_instance();
+ application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
+
++ /* check if soundcard present */
++ no_soundcard = FALSE;
++
++ pthread_mutex_lock(application_mutex);
++
++ if(ags_sound_provider_get_soundcard(AGS_SOUND_PROVIDER(application_context)) == NULL){
++ no_soundcard = TRUE;
++ }
++
++ pthread_mutex_unlock(application_mutex);
++
++ if(no_soundard){
++ return;
++ }
++
+ /* lookup channel mutex */
+ pthread_mutex_lock(application_mutex);
+
diff --git a/debian/patches/series b/debian/patches/series
index 4d511d0..aedefc4 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -20,3 +20,4 @@ fix-missing-midi-connection-dialog.diff
fix-leak-while-g-timeout-function.diff
fix-gparamspec-mixed.diff
fix-makefile-am-linker.diff
+fix-crash-as-no-soundcard.diff
--
gsequencer packaging
More information about the pkg-multimedia-commits
mailing list