[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