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", &current_start_x,
+                NULL);
+ 
+-    if(current_start_x < x){
++    if(current_start_x > x){
+       break;
+     }
+     
+@@ -3399,7 +3399,7 @@
+                "x", &current_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", &current_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

Reply via email to