Package: release.debian.org Severity: normal User: release.debian....@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) <umlae...@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 <jkraehem...@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 <jkraehem...@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 <jkraehem...@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