[SCM] wavbreaker/master: debian/patches/07-segfault_when_pressing_save_twice.patch

alessio at users.alioth.debian.org alessio at users.alioth.debian.org
Wed May 18 10:04:46 UTC 2011


The following commit has been merged in the master branch:
commit b472722714eef314897ee45628098f76002401d9
Author: Alessio Treglia <alessio at debian.org>
Date:   Wed May 18 12:04:21 2011 +0200

    debian/patches/07-segfault_when_pressing_save_twice.patch
    
    - Fix segmentation fault when pressing "Save" (or Ctrl+S) twice in a row.

diff --git a/debian/patches/07-segfault_when_pressing_save_twice.patch b/debian/patches/07-segfault_when_pressing_save_twice.patch
new file mode 100644
index 0000000..a210bc6
--- /dev/null
+++ b/debian/patches/07-segfault_when_pressing_save_twice.patch
@@ -0,0 +1,92 @@
+Description: Fix segmentation fault when pressing "Save" twice in a row.
+Origin: upstream, commit:300
+Applied-Upstream:
+ http://wavbreaker.svn.sf.net/viewvc/wavbreaker?view=revision&revision=300
+---
+ src/sample.c     |   12 ++++++++++++
+ src/sample.h     |    1 +
+ src/wavbreaker.c |    6 ++++--
+ 3 files changed, 17 insertions(+), 2 deletions(-)
+
+--- wavbreaker.orig/src/sample.c
++++ wavbreaker/src/sample.c
+@@ -42,6 +42,7 @@ SampleInfo sampleInfo;
+ static AudioFunctionPointers *audio_function_pointers;
+ static unsigned long sample_start = 0;
+ static int playing = 0;
++static int writing = 0;
+ static gboolean kill_play_thread = FALSE;
+ static int audio_type;
+ 
+@@ -196,6 +197,11 @@ int sample_is_playing()
+     return playing;
+ }
+ 
++int sample_is_writing()
++{
++    return writing;
++}
++
+ int play_sample(gulong startpos, gulong *play_marker)
+ {       
+     g_mutex_lock(mutex);
+@@ -583,6 +589,7 @@ write_thread(gpointer data)
+ 
+     fclose(write_sample_fp);
+ 
++    writing = 0;
+     return NULL;
+ }
+ 
+@@ -592,13 +599,17 @@ void sample_write_files(GList *tbl, Writ
+     wtd.write_info = write_info;
+     wtd.outputdir = outputdir;
+ 
++    writing = 1;
++
+     if (sample_file == NULL) {
+         perror("Must open file first\n");
++        writing = 0;
+         return;
+     }
+ 
+     if ((write_sample_fp = fopen(sample_file, "rb")) == NULL) {
+         printf("error opening %s\n", sample_file);
++        writing = 0;
+         return;
+     }
+ 
+@@ -606,6 +617,7 @@ void sample_write_files(GList *tbl, Writ
+     thread = g_thread_create(write_thread, &wtd, FALSE, NULL);
+     if (thread == NULL) {
+         perror("Return from g_thread_create was NULL");
++        writing = 0;
+         return;
+     }
+     /* end new thread stuff */
+--- wavbreaker.orig/src/sample.h
++++ wavbreaker/src/sample.h
+@@ -51,6 +51,7 @@ char * sample_get_audio_dev();
+ char * sample_get_sample_file();
+ 
+ int sample_is_playing();
++int sample_is_writing();
+ int play_sample(gulong, gulong *);
+ void stop_sample();
+ int sample_open_file(const char *, GraphData *, double *);
+--- wavbreaker.orig/src/wavbreaker.c
++++ wavbreaker/src/wavbreaker.c
+@@ -2588,9 +2588,11 @@ static void menu_save_as(gpointer callba
+ }
+ 
+ void wavbreaker_write_files(char *dirname) {
+-    sample_write_files(track_break_list, &write_info, dirname);
++    if (!sample_is_writing()) {
++        sample_write_files(track_break_list, &write_info, dirname);
+ 
+-    idle_func_num = g_idle_add(file_write_progress_idle_func, NULL);
++        idle_func_num = g_idle_add(file_write_progress_idle_func, NULL);
++    }
+ }
+ 
+ static void menu_export(gpointer callback_data, guint callback_action, GtkWidget *widget)
diff --git a/debian/patches/series b/debian/patches/series
index 04ecf2c..9c4f9b1 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -4,3 +4,4 @@
 04-new_context_menu_entries.patch
 05-timeoffset_controls.patch
 06-code_duplication.patch
+07-segfault_when_pressing_save_twice.patch

-- 
wavbreaker packaging



More information about the pkg-multimedia-commits mailing list