--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
Please unblock package gsequencer
gsequencer has a number of bugs that (occording to #923951) makes
it pretty much useless when it comes to automation (an important feature of a
music sequencer). Additionally, preference reading was somewhat broken leading
to a suboptimal user experience.
Upstream has provided a set of patches to fix these problems, which are included
in this upload.
gsequencer is a leaf package, so no side-effects on the archive are expected.
Thanks for considering.
unblock gsequencer/2.1.53-2
-- System Information:
Debian Release: buster/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'stable-updates'), (500, 'unstable'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.19.0-3-amd64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_WARN, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE=C.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru gsequencer-2.1.53/debian/changelog gsequencer-2.1.53/debian/changelog
--- gsequencer-2.1.53/debian/changelog 2019-02-12 14:01:13.000000000 +0100
+++ gsequencer-2.1.53/debian/changelog 2019-03-07 17:14:05.000000000 +0100
@@ -1,3 +1,9 @@
+gsequencer (2.1.53-2) unstable; urgency=medium
+
+ * Fixes for automation and config-reading (Closes: #923951)
+
+ -- IOhannes m zmölnig (Debian/GNU) <umlaeute@debian.org> Thu, 07 Mar 2019 17:14:05 +0100
+
gsequencer (2.1.53-1) unstable; urgency=medium
* New upstream version 2.1.53
diff -Nru gsequencer-2.1.53/debian/patches/ags_automation_get_value.patch gsequencer-2.1.53/debian/patches/ags_automation_get_value.patch
--- gsequencer-2.1.53/debian/patches/ags_automation_get_value.patch 1970-01-01 01:00:00.000000000 +0100
+++ gsequencer-2.1.53/debian/patches/ags_automation_get_value.patch 2019-03-07 17:14:05.000000000 +0100
@@ -0,0 +1,50 @@
+Description: The automation doesn't work correctly
+ The automation get value solves premature abort of bisect algorithm.
+Author: Joël Krähemann <jkraehemann@gmail.com>
+Origin: upstream
+Forwarded: not-needed
+Applied-Upstream: 2.1.58
+Last-Update: 2019-03-06
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- gsequencer.orig/ags/audio/ags_automation.c
++++ gsequencer/ags/audio/ags_automation.c
+@@ -3384,7 +3384,7 @@
+ "x", ¤t_start_x,
+ NULL);
+
+- if(current_start_x < x){
++ if(current_start_x > x){
+ break;
+ }
+
+@@ -3399,7 +3399,7 @@
+ "x", ¤t_end_x,
+ NULL);
+
+- if(current_end_x > x){
++ if(current_end_x < x){
+ break;
+ }
+
+@@ -3477,15 +3477,17 @@
+ }
+ }else{
+ if(use_prev_on_failure){
+- prev = current_start;
++ guint tmp_x;
++
++ prev = current_end;
+
+ while(prev != NULL){
+ g_object_get(prev->data,
+- "x", ¤t_start_x,
++ "x", &tmp_x,
+ NULL);
+
+
+- if(current_start_x < x){
++ if(tmp_x < x){
+ matching_acceleration = prev->data;
+
+ break;
diff -Nru gsequencer-2.1.53/debian/patches/ags_simple_file_read_config.patch gsequencer-2.1.53/debian/patches/ags_simple_file_read_config.patch
--- gsequencer-2.1.53/debian/patches/ags_simple_file_read_config.patch 1970-01-01 01:00:00.000000000 +0100
+++ gsequencer-2.1.53/debian/patches/ags_simple_file_read_config.patch 2019-03-07 17:14:05.000000000 +0100
@@ -0,0 +1,119 @@
+Description: The configuration from file is broken
+ This patch does apply correct frequency to audio threads.
+Author: Joël Krähemann <jkraehemann@gmail.com>
+Origin: upstream
+Forwarded: not-needed
+Applied-Upstream: 2.1.54
+Last-Update: 2019-03-06
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- gsequencer.orig/ags/X/ags_xorg_application_context.c
++++ gsequencer/ags/X/ags_xorg_application_context.c
+@@ -1781,18 +1781,24 @@
+
+ for(j = 0; j < xpath_object->nodesetval->nodeNr; j++){
+ if(node[j]->type == XML_ELEMENT_NODE){
++ ags_config_clear(config);
++ ags_simple_file_read_config(simple_file, node[j], &config);
++#if 0
+ buffer = xmlNodeGetContent(node[j]);
+ buffer_length = strlen(buffer);
++#endif
+
+ break;
+ }
+ }
+
++#if 0
+ if(buffer != NULL){
+ // ags_config_clear(ags_config_get_instance());
+ ags_config_load_from_data(ags_config_get_instance(),
+ buffer, buffer_length);
+ }
++#endif
+
+ i++;
+
+--- gsequencer.orig/ags/X/file/ags_simple_file.c
++++ gsequencer/ags/X/file/ags_simple_file.c
+@@ -1274,12 +1274,40 @@
+ void
+ ags_simple_file_read_config(AgsSimpleFile *simple_file, xmlNode *node, AgsConfig **ags_config)
+ {
++ AgsThread *main_loop;
++
++ AgsApplicationContext *application_context;
+ AgsConfig *gobject;
+
+ gchar *id;
++ gchar *str;
+
+ char *buffer;
+ gsize buffer_length;
++ gdouble samplerate;
++ guint buffer_size;
++ gdouble frequency;
++
++ auto void ags_simple_file_read_config_change_max_precision(AgsThread *thread,
++ gdouble max_precision);
++
++ void ags_simple_file_read_config_change_max_precision(AgsThread *thread,
++ gdouble max_precision)
++ {
++ AgsThread *current;
++
++ g_object_set(thread,
++ "max-precision", max_precision,
++ NULL);
++
++ current = g_atomic_pointer_get(&(thread->children));
++
++ while(current != NULL){
++ ags_simple_file_read_config_change_max_precision(current,
++ max_precision);
++ current = g_atomic_pointer_get(&(thread->next));
++ }
++ }
+
+ gobject = *ags_config;
+ gobject->version = xmlGetProp(node,
+@@ -1288,6 +1316,8 @@
+ gobject->build_id = xmlGetProp(node,
+ AGS_FILE_BUILD_ID_PROP);
+
++ application_context = ags_application_context_get_instance();
++
+ buffer = xmlNodeGetContent(node);
+ buffer_length = xmlStrlen(buffer);
+
+@@ -1295,6 +1325,30 @@
+
+ ags_config_load_from_data(gobject,
+ buffer, buffer_length);
++
++ /* max-precision */
++ main_loop = ags_concurrency_provider_get_main_loop(AGS_CONCURRENCY_PROVIDER(application_context));
++
++ str = ags_config_get_value(gobject,
++ AGS_CONFIG_THREAD,
++ "max-precision");
++ if(str != NULL){
++ gdouble max_precision;
++
++ /* change max precision */
++ max_precision = g_ascii_strtod(str,
++ NULL);
++
++ ags_simple_file_read_config_change_max_precision(main_loop,
++ max_precision);
++ }
++
++ samplerate = ags_soundcard_helper_config_get_samplerate(gobject);
++ buffer_size = ags_soundcard_helper_config_get_buffer_size(gobject);
++
++ frequency = ceil((gdouble) samplerate / (gdouble) buffer_size) + AGS_SOUNDCARD_DEFAULT_OVERCLOCK;
++ ags_main_loop_change_frequency(AGS_MAIN_LOOP(main_loop),
++ frequency);
+ }
+
+ void
diff -Nru gsequencer-2.1.53/debian/patches/ags_thread-posix-max-precision.patch gsequencer-2.1.53/debian/patches/ags_thread-posix-max-precision.patch
--- gsequencer-2.1.53/debian/patches/ags_thread-posix-max-precision.patch 1970-01-01 01:00:00.000000000 +0100
+++ gsequencer-2.1.53/debian/patches/ags_thread-posix-max-precision.patch 2019-03-07 17:14:05.000000000 +0100
@@ -0,0 +1,21 @@
+Description: fix wrong property spec of AgsThread
+ AgsThread:max-precision has got a wrong property specification. This patch fixes
+ it.
+Author: Joël Krähemann <jkraehemann@gmail.com>
+Origin: upstream
+Forwarded: not-needed
+Applied-Upstream: 2.1.54
+Last-Update: 2019-03-06
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/ags/thread/ags_thread-posix.c
++++ b/ags/thread/ags_thread-posix.c
+@@ -215,7 +215,7 @@
+ AGS_THREAD_DEFAULT_MAX_PRECISION,
+ G_PARAM_READABLE | G_PARAM_WRITABLE);
+ g_object_class_install_property(gobject,
+- PROP_FREQUENCY,
++ PROP_MAX_PRECISION,
+ param_spec);
+
+ /* AgsThread */
diff -Nru gsequencer-2.1.53/debian/patches/series gsequencer-2.1.53/debian/patches/series
--- gsequencer-2.1.53/debian/patches/series 2019-02-12 14:01:13.000000000 +0100
+++ gsequencer-2.1.53/debian/patches/series 2019-03-07 17:14:05.000000000 +0100
@@ -1 +1,4 @@
+ags_automation_get_value.patch
+ags_simple_file_read_config.patch
+ags_thread-posix-max-precision.patch
enable-integration-tests.patch
--- End Message ---