Hello community,

here is the log from the commit of package gsequencer for openSUSE:Factory 
checked in at 2018-06-22 13:35:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gsequencer (Old)
 and      /work/SRC/openSUSE:Factory/.gsequencer.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gsequencer"

Fri Jun 22 13:35:48 2018 rev:14 rq:618308 version:1.4.32

Changes:
--------
--- /work/SRC/openSUSE:Factory/gsequencer/gsequencer.changes    2018-05-13 
16:06:50.566440645 +0200
+++ /work/SRC/openSUSE:Factory/.gsequencer.new/gsequencer.changes       
2018-06-22 13:35:53.017540650 +0200
@@ -1,0 +2,6 @@
+Thu Jun 21 10:38:57 UTC 2018 - [email protected]
+
+- new upstream v1.4.32 fixed seeking position and improved object
+  references.
+
+-------------------------------------------------------------------

Old:
----
  gsequencer-1.4.31.tar.gz

New:
----
  gsequencer-1.4.32.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gsequencer.spec ++++++
--- /var/tmp/diff_new_pack.awvENo/_old  2018-06-22 13:35:54.649480321 +0200
+++ /var/tmp/diff_new_pack.awvENo/_new  2018-06-22 13:35:54.653480173 +0200
@@ -18,7 +18,7 @@
 %define libagssonumber 1
 %define libgsequencersonumber 0
 Name:           gsequencer
-Version:        1.4.31
+Version:        1.4.32
 Release:        0
 Summary:        Audio processing engine
 License:        GPL-3.0+ AND AGPL-3.0+ AND GFDL-1.3

++++++ gsequencer-1.4.31.tar.gz -> gsequencer-1.4.32.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ChangeLog 
new/gsequencer-1.4.32/ChangeLog
--- old/gsequencer-1.4.31/ChangeLog     2018-05-10 23:35:34.000000000 +0200
+++ new/gsequencer-1.4.32/ChangeLog     2018-06-21 07:37:21.000000000 +0200
@@ -1,3 +1,16 @@
+ags (1.4.32)
+
+       [ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ]
+       * reworked CoreAudio output
+       * improved mutex locks in ags_navigation_callbacks.c
+       * improved midi2xml.1.xml to do file attribution
+       * improved midi2xml to output usage as no parameter was given
+       * fixed wrong loop condition in ags_apply_presets.c
+       * fixed unsafe reference count in ags_audio.c and ags_channel.c
+       * fixed wrong reference count in ags_recycling_context.c
+       * fixed AgsSeekSoundcard to use recall context
+       * fixed AgsSeekSoundcard to use correct mutex variable
+
 ags (1.4.31)
 
        [ Joël Krähemann (Maintainer of Advanced Gtk+ Sequencer) ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/X/ags_menu_action_callbacks.c 
new/gsequencer-1.4.32/ags/X/ags_menu_action_callbacks.c
--- old/gsequencer-1.4.31/ags/X/ags_menu_action_callbacks.c     2018-03-04 
20:27:35.000000000 +0100
+++ new/gsequencer-1.4.32/ags/X/ags_menu_action_callbacks.c     2018-06-17 
20:55:40.000000000 +0200
@@ -53,7 +53,9 @@
 #include <stdio.h>
 #include <sys/stat.h>
 
+#ifndef AGS_WITH_QUARTZ
 #include <X11/Xlib.h>
+#endif
 
 void ags_menu_action_open_response_callback(GtkFileChooserDialog 
*file_chooser, gint response, gpointer data);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/X/ags_navigation_callbacks.c 
new/gsequencer-1.4.32/ags/X/ags_navigation_callbacks.c
--- old/gsequencer-1.4.31/ags/X/ags_navigation_callbacks.c      2018-03-04 
20:27:35.000000000 +0100
+++ new/gsequencer-1.4.32/ags/X/ags_navigation_callbacks.c      2018-06-21 
07:04:52.000000000 +0200
@@ -114,11 +114,36 @@
                               AgsNavigation *navigation)
 {
   AgsWindow *window;
+
+  AgsMutexManager *mutex_manager;
+
+  gdouble note_offset;
   gdouble tact;
 
+  pthread_mutex_t *application_mutex;
+  pthread_mutex_t *soundcard_mutex;
+
+  mutex_manager = ags_mutex_manager_get_instance();
+  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
+
   window = AGS_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(navigation)));
 
-  tact = ags_soundcard_get_note_offset(AGS_SOUNDCARD(window->soundcard)) / 
16.0;
+  /* get soundcard mutex */
+  pthread_mutex_lock(application_mutex);
+
+  soundcard_mutex = ags_mutex_manager_lookup(mutex_manager,
+                                            window->soundcard);
+                                            
+  pthread_mutex_unlock(application_mutex);
+
+  /* move */
+  pthread_mutex_lock(soundcard_mutex);
+
+  note_offset = 
ags_soundcard_get_note_offset(AGS_SOUNDCARD(window->soundcard));
+
+  pthread_mutex_unlock(soundcard_mutex);
+  
+  tact = note_offset / 16.0;
   
   gtk_spin_button_set_value(navigation->position_tact,
                            tact +
@@ -130,11 +155,36 @@
                             AgsNavigation *navigation)
 {
   AgsWindow *window;
+
+  AgsMutexManager *mutex_manager;
+
+  gdouble note_offset;
   gdouble tact;
 
+  pthread_mutex_t *application_mutex;
+  pthread_mutex_t *soundcard_mutex;
+
+  mutex_manager = ags_mutex_manager_get_instance();
+  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
+
   window = AGS_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(navigation)));
 
-  tact = ags_soundcard_get_note_offset(AGS_SOUNDCARD(window->soundcard)) / 
16.0;
+  /* get soundcard mutex */
+  pthread_mutex_lock(application_mutex);
+
+  soundcard_mutex = ags_mutex_manager_lookup(mutex_manager,
+                                            window->soundcard);
+                                            
+  pthread_mutex_unlock(application_mutex);
+
+  /* move */
+  pthread_mutex_lock(soundcard_mutex);
+
+  note_offset = 
ags_soundcard_get_note_offset(AGS_SOUNDCARD(window->soundcard));
+
+  pthread_mutex_unlock(soundcard_mutex);
+  
+  tact = note_offset / 16.0;
   
   gtk_spin_button_set_value(navigation->position_tact,
                            tact +
@@ -243,11 +293,36 @@
                             AgsNavigation *navigation)
 {
   AgsWindow *window;
+
+  AgsMutexManager *mutex_manager;
+
+  gdouble note_offset;
   gdouble tact;
 
+  pthread_mutex_t *application_mutex;
+  pthread_mutex_t *soundcard_mutex;
+
+  mutex_manager = ags_mutex_manager_get_instance();
+  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
+
   window = AGS_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(navigation)));
 
-  tact = ags_soundcard_get_note_offset(AGS_SOUNDCARD(window->soundcard)) / 
16.0;
+  /* get soundcard mutex */
+  pthread_mutex_lock(application_mutex);
+
+  soundcard_mutex = ags_mutex_manager_lookup(mutex_manager,
+                                            window->soundcard);
+                                            
+  pthread_mutex_unlock(application_mutex);
+
+  /* move */
+  pthread_mutex_lock(soundcard_mutex);
+
+  note_offset = 
ags_soundcard_get_note_offset(AGS_SOUNDCARD(window->soundcard));
+
+  pthread_mutex_unlock(soundcard_mutex);
+
+  tact = note_offset / 16.0;
 
   gtk_spin_button_set_value(navigation->position_tact,
                            tact +
@@ -259,11 +334,37 @@
                                AgsNavigation *navigation)
 {
   AgsWindow *window;
+
+  AgsMutexManager *mutex_manager;
+
+  gdouble note_offset;
   gdouble tact;
 
+  pthread_mutex_t *application_mutex;
+  pthread_mutex_t *soundcard_mutex;
+
+  mutex_manager = ags_mutex_manager_get_instance();
+  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
+
   window = AGS_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(navigation)));
 
-  tact = ags_soundcard_get_note_offset(AGS_SOUNDCARD(window->soundcard)) / 
16.0;
+  /* get soundcard mutex */
+  pthread_mutex_lock(application_mutex);
+
+  soundcard_mutex = ags_mutex_manager_lookup(mutex_manager,
+                                            window->soundcard);
+                                            
+  pthread_mutex_unlock(application_mutex);
+
+
+  /* move */
+  pthread_mutex_lock(soundcard_mutex);
+
+  note_offset = 
ags_soundcard_get_note_offset(AGS_SOUNDCARD(window->soundcard));
+
+  pthread_mutex_unlock(soundcard_mutex);
+
+  tact = note_offset / 16.0;
 
   gtk_spin_button_set_value(navigation->position_tact,
                            tact +
@@ -288,20 +389,36 @@
   guint loop_left, loop_right;
 
   pthread_mutex_t *application_mutex;
+  pthread_mutex_t *soundcard_mutex;
   pthread_mutex_t *audio_mutex;
   
   GValue do_loop_value = {0,};
   
+  mutex_manager = ags_mutex_manager_get_instance();
+  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
+
   window = AGS_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(navigation)));
   machines_start = 
     machines = gtk_container_get_children(GTK_CONTAINER(window->machines));
 
+  /* get soundcard mutex */
+  pthread_mutex_lock(application_mutex);
+
+  soundcard_mutex = ags_mutex_manager_lookup(mutex_manager,
+                                            window->soundcard);
+                                            
+  pthread_mutex_unlock(application_mutex);
+
   loop_left = 16 * navigation->loop_left_tact->adjustment->value;
   loop_right = 16 * navigation->loop_right_tact->adjustment->value;
   
+  pthread_mutex_lock(soundcard_mutex);
+
   ags_soundcard_set_loop(AGS_SOUNDCARD(window->soundcard),
                         loop_left, loop_right,
                         
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)));
+
+  pthread_mutex_unlock(soundcard_mutex);
                         
   g_value_init(&do_loop_value, G_TYPE_BOOLEAN);
   g_value_set_boolean(&do_loop_value,
@@ -318,10 +435,6 @@
       
       audio = machine->audio;
 
-      /* get mutex manager and application mutex */
-      mutex_manager = ags_mutex_manager_get_instance();
-      application_mutex = 
ags_mutex_manager_get_application_mutex(mutex_manager);
-
       /* get audio mutex */
       pthread_mutex_lock(application_mutex);
 
@@ -389,21 +502,37 @@
   guint loop_left, loop_right;
 
   pthread_mutex_t *application_mutex;
+  pthread_mutex_t *soundcard_mutex;
   pthread_mutex_t *audio_mutex;
 
   GValue value = {0,};
 
+  mutex_manager = ags_mutex_manager_get_instance();
+  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
+
   window = AGS_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(navigation)));
   machines_start = 
     machines = gtk_container_get_children(GTK_CONTAINER(window->machines));
 
+  /* get soundcard mutex */
+  pthread_mutex_lock(application_mutex);
+
+  soundcard_mutex = ags_mutex_manager_lookup(mutex_manager,
+                                            window->soundcard);
+                                            
+  pthread_mutex_unlock(application_mutex);
+
   loop_left = 16 * navigation->loop_left_tact->adjustment->value;
   loop_right = 16 * navigation->loop_right_tact->adjustment->value;
   
+  pthread_mutex_lock(soundcard_mutex);
+
   ags_soundcard_set_loop(AGS_SOUNDCARD(window->soundcard),
                         loop_left, loop_right,
                         
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(navigation->loop)));
 
+  pthread_mutex_unlock(soundcard_mutex);
+
   g_value_init(&value, G_TYPE_DOUBLE);
   g_value_set_double(&value,
                     loop_left);
@@ -418,10 +547,6 @@
 #endif
       
       audio = machine->audio;
-      
-      /* get mutex manager and application mutex */
-      mutex_manager = ags_mutex_manager_get_instance();
-      application_mutex = 
ags_mutex_manager_get_application_mutex(mutex_manager);
 
       /* get audio mutex */
       pthread_mutex_lock(application_mutex);
@@ -472,21 +597,37 @@
   guint loop_left, loop_right;
 
   pthread_mutex_t *application_mutex;
+  pthread_mutex_t *soundcard_mutex;
   pthread_mutex_t *audio_mutex;
 
   GValue value = {0,};
 
+  mutex_manager = ags_mutex_manager_get_instance();
+  application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
+
   window = AGS_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(navigation)));
   machines_start = 
     machines = gtk_container_get_children(GTK_CONTAINER(window->machines));
 
+  /* get soundcard mutex */
+  pthread_mutex_lock(application_mutex);
+
+  soundcard_mutex = ags_mutex_manager_lookup(mutex_manager,
+                                            window->soundcard);
+                                            
+  pthread_mutex_unlock(application_mutex);
+
   loop_left = 16 * navigation->loop_left_tact->adjustment->value;
   loop_right = 16 * navigation->loop_right_tact->adjustment->value;
   
+  pthread_mutex_lock(soundcard_mutex);
+
   ags_soundcard_set_loop(AGS_SOUNDCARD(window->soundcard),
                         loop_left, loop_right,
                         
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(navigation->loop)));
 
+  pthread_mutex_unlock(soundcard_mutex);
+
   g_value_init(&value, G_TYPE_DOUBLE);
   g_value_set_double(&value,
                     loop_right);
@@ -501,10 +642,6 @@
 #endif
       
       audio = machine->audio;
-      
-      /* get mutex manager and application mutex */
-      mutex_manager = ags_mutex_manager_get_instance();
-      application_mutex = 
ags_mutex_manager_get_application_mutex(mutex_manager);
 
       /* get audio mutex */
       pthread_mutex_lock(application_mutex);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/X/ags_window.c 
new/gsequencer-1.4.32/ags/X/ags_window.c
--- old/gsequencer-1.4.31/ags/X/ags_window.c    2018-05-10 13:08:51.000000000 
+0200
+++ new/gsequencer-1.4.32/ags/X/ags_window.c    2018-06-17 20:55:40.000000000 
+0200
@@ -43,7 +43,7 @@
 #include <ags/X/thread/ags_gui_thread.h>
 
 #ifdef AGS_WITH_QUARTZ
-#include <gtkmacintegration-gtk2/gtkosxapplication.h>
+#include <gtkmacintegration/gtkosxapplication.h>
 #endif
 
 #include <stdlib.h>
@@ -838,10 +838,14 @@
                       "soundcard", soundcard,
                       NULL);
     
+         pthread_mutex_lock(application_mutex);
+
          g_object_set(application_context,
                       "window", window,
                       NULL);
 
+         pthread_mutex_unlock(application_mutex);
+
          /* context menu */
          window->context_menu = ags_context_menu_new();
          gtk_widget_set_events(GTK_WIDGET(window), 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gsequencer-1.4.31/ags/X/ags_xorg_application_context.c 
new/gsequencer-1.4.32/ags/X/ags_xorg_application_context.c
--- old/gsequencer-1.4.31/ags/X/ags_xorg_application_context.c  2018-05-10 
13:08:51.000000000 +0200
+++ new/gsequencer-1.4.32/ags/X/ags_xorg_application_context.c  2018-06-04 
22:48:04.000000000 +0200
@@ -62,7 +62,7 @@
 #endif
 
 #ifdef AGS_WITH_QUARTZ
-#include <gtkmacintegration-gtk2/gtkosxapplication.h>
+#include <gtkmacintegration/gtkosxapplication.h>
 #endif
 
 #include <sys/types.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/X/thread/ags_gui_thread.c 
new/gsequencer-1.4.32/ags/X/thread/ags_gui_thread.c
--- old/gsequencer-1.4.31/ags/X/thread/ags_gui_thread.c 2018-05-10 
13:08:51.000000000 +0200
+++ new/gsequencer-1.4.32/ags/X/thread/ags_gui_thread.c 2018-06-04 
22:48:04.000000000 +0200
@@ -40,7 +40,7 @@
 #endif
 
 #ifdef AGS_WITH_QUARTZ
-#include <gtkmacintegration-gtk2/gtkosxapplication.h>
+#include <gtkmacintegration/gtkosxapplication.h>
 #endif
 
 #include <libxml/parser.h>
@@ -63,7 +63,10 @@
 
 #include <gdk/gdk.h>
 
+#ifndef AGS_WITH_QUARTZ
 #include <fontconfig/fontconfig.h>
+#endif
+
 #include <math.h>
 
 void ags_gui_thread_signal_handler(int signr);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/audio/ags_audio.c 
new/gsequencer-1.4.32/ags/audio/ags_audio.c
--- old/gsequencer-1.4.31/ags/audio/ags_audio.c 2018-05-10 18:10:02.000000000 
+0200
+++ new/gsequencer-1.4.32/ags/audio/ags_audio.c 2018-06-17 20:56:31.000000000 
+0200
@@ -4227,8 +4227,10 @@
   /* remove audio connection */
   pthread_mutex_lock(mutex);
 
-  audio->audio_connection = g_list_remove(audio->audio_connection, 
audio_connection);
-  g_object_unref(audio_connection);
+  if(g_list_find(audio->audio_connection, audio_connection) != NULL){
+    audio->audio_connection = g_list_remove(audio->audio_connection, 
audio_connection);
+    g_object_unref(audio_connection);
+  }
   
   pthread_mutex_unlock(mutex);
 }
@@ -4303,8 +4305,10 @@
   /* remove preset */
   pthread_mutex_lock(mutex);
 
-  audio->preset = g_list_remove(audio->preset, preset);
-  g_object_unref(preset);
+  if(g_list_find(audio->preset, preset) != NULL){
+    audio->preset = g_list_remove(audio->preset, preset);
+    g_object_unref(preset);
+  }
   
   pthread_mutex_unlock(mutex);
 }
@@ -4377,13 +4381,15 @@
   /* remove recall id */
   pthread_mutex_lock(mutex);
 
-  audio->notation = g_list_remove(audio->notation,
-                                 notation);
-  g_object_set(notation,
-              "audio", NULL,
-              NULL);
-  
-  g_object_unref(notation);
+  if(g_list_find(audio->notation, notation) != NULL){
+    audio->notation = g_list_remove(audio->notation,
+                                   notation);
+    g_object_set(notation,
+                "audio", NULL,
+                NULL);
+    
+    g_object_unref(notation);
+  }
   
   pthread_mutex_unlock(mutex);
 }
@@ -4457,8 +4463,10 @@
   /* remove recall id */
   pthread_mutex_lock(mutex);
 
-  audio->automation = g_list_remove(audio->automation, automation);
-  g_object_unref(automation);
+  if(g_list_find(audio->automation, automation) != NULL){
+    audio->automation = g_list_remove(audio->automation, automation);
+    g_object_unref(automation);
+  }
   
   pthread_mutex_unlock(mutex);
 }
@@ -4531,8 +4539,10 @@
   /* remove recall id */
   pthread_mutex_lock(mutex);
 
-  audio->wave = g_list_remove(audio->wave, wave);
-  g_object_unref(wave);
+  if(g_list_find(audio->wave, wave) != NULL){
+    audio->wave = g_list_remove(audio->wave, wave);
+    g_object_unref(wave);
+  }
   
   pthread_mutex_unlock(mutex);
 }
@@ -4771,8 +4781,10 @@
   /* remove recall container */
   pthread_mutex_lock(mutex);
 
-  audio->container = g_list_remove(audio->container, recall_container);
-  g_object_unref(recall_container);
+  if(g_list_find(audio->container, recall_container) != NULL){
+    audio->container = g_list_remove(audio->container, recall_container);
+    g_object_unref(recall_container);
+  }
   
   pthread_mutex_unlock(mutex);
 }
@@ -4835,18 +4847,22 @@
   if(play){
     pthread_mutex_lock(audio->play_mutex);
 
-    audio->play = g_list_remove(audio->play, recall);
-
+    if(g_list_find(audio->play, recall) != NULL){
+      audio->play = g_list_remove(audio->play, recall);
+      g_object_unref(G_OBJECT(recall));
+    }
+    
     pthread_mutex_unlock(audio->play_mutex);
   }else{
     pthread_mutex_lock(audio->recall_mutex);
 
-    audio->recall = g_list_remove(audio->recall, recall);
-
+    if(g_list_find(audio->recall, recall) != NULL){
+      audio->recall = g_list_remove(audio->recall, recall);
+      g_object_unref(G_OBJECT(recall));
+    }
+    
     pthread_mutex_unlock(audio->recall_mutex);
   }
-
-  g_object_unref(G_OBJECT(recall));
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/audio/ags_channel.c 
new/gsequencer-1.4.32/ags/audio/ags_channel.c
--- old/gsequencer-1.4.31/ags/audio/ags_channel.c       2018-05-10 
18:11:41.000000000 +0200
+++ new/gsequencer-1.4.32/ags/audio/ags_channel.c       2018-06-17 
20:56:35.000000000 +0200
@@ -2742,10 +2742,12 @@
   /* remove recall id */    
   pthread_mutex_lock(mutex);
 
-  channel->remote_channel = g_list_remove(channel->remote_channel,
-                                    remote_channel);
-  g_object_unref(G_OBJECT(remote_channel));
-
+  if(g_list_find(channel->remote_channel, remote_channel) != NULL){
+    channel->remote_channel = g_list_remove(channel->remote_channel,
+                                           remote_channel);
+    g_object_unref(G_OBJECT(remote_channel));
+  }
+    
   pthread_mutex_unlock(mutex);
 }
 
@@ -2914,8 +2916,10 @@
   /* remove recall container */    
   pthread_mutex_lock(mutex);
 
-  channel->container = g_list_remove(channel->container, recall_container);
-  g_object_unref(G_OBJECT(recall_container));
+  if(g_list_find(channel->container, recall_container) != NULL){
+    channel->container = g_list_remove(channel->container, recall_container);
+    g_object_unref(G_OBJECT(recall_container));
+  }
   
   pthread_mutex_unlock(mutex);
 }
@@ -2977,18 +2981,22 @@
   if(play){
     pthread_mutex_lock(channel->play_mutex);
 
-    channel->play = g_list_remove(channel->play, recall);
-
+    if(g_list_find(channel->play, recall) != NULL){
+      channel->play = g_list_remove(channel->play, recall);
+      g_object_unref(G_OBJECT(recall));
+    }
+    
     pthread_mutex_unlock(channel->play_mutex);
   }else{
     pthread_mutex_lock(channel->recall_mutex);
 
-    channel->recall = g_list_remove(channel->recall, recall);
+    if(g_list_find(channel->recall, recall) != NULL){
+      channel->recall = g_list_remove(channel->recall, recall);
+      g_object_unref(G_OBJECT(recall));
+    }
 
     pthread_mutex_unlock(channel->recall_mutex);
   }
-
-  g_object_unref(G_OBJECT(recall));
 }
 
 /**
@@ -3068,9 +3076,11 @@
   /* remove pattern */
   pthread_mutex_lock(mutex);
 
-  channel->pattern = g_list_remove(channel->pattern, pattern);
-  g_object_unref(G_OBJECT(pattern));
-
+  if(g_list_find(channel->pattern, pattern) != NULL){
+    channel->pattern = g_list_remove(channel->pattern, pattern);
+    g_object_unref(G_OBJECT(pattern));
+  }
+  
   pthread_mutex_unlock(mutex);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/audio/ags_recall_dssi.c 
new/gsequencer-1.4.32/ags/audio/ags_recall_dssi.c
--- old/gsequencer-1.4.31/ags/audio/ags_recall_dssi.c   2018-05-10 
13:08:51.000000000 +0200
+++ new/gsequencer-1.4.32/ags/audio/ags_recall_dssi.c   2018-06-04 
22:48:04.000000000 +0200
@@ -26,7 +26,11 @@
 
 #include <ags/audio/ags_port.h>
 
+#ifdef __APPLE__
+#include <machine/endian.h>
+#else
 #include <endian.h>
+#endif
 
 #include <dlfcn.h>
 #include <stdio.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/audio/ags_recycling_context.c 
new/gsequencer-1.4.32/ags/audio/ags_recycling_context.c
--- old/gsequencer-1.4.31/ags/audio/ags_recycling_context.c     2018-05-10 
17:53:06.000000000 +0200
+++ new/gsequencer-1.4.32/ags/audio/ags_recycling_context.c     2018-06-17 
20:56:40.000000000 +0200
@@ -410,7 +410,15 @@
     return;
   }
 
+  if(recycling_context->recycling[position] != NULL){
+    g_object_unref(recycling_context->recycling[position]);
+  }
+  
   recycling_context->recycling[position] = recycling;
+
+  if(recycling != NULL){
+    g_object_ref(recycling);
+  }
   
   pthread_mutex_unlock(recycling_context->mutex);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gsequencer-1.4.31/ags/audio/core-audio/ags_core_audio_port.c 
new/gsequencer-1.4.32/ags/audio/core-audio/ags_core_audio_port.c
--- old/gsequencer-1.4.31/ags/audio/core-audio/ags_core_audio_port.c    
2018-05-10 13:08:51.000000000 +0200
+++ new/gsequencer-1.4.32/ags/audio/core-audio/ags_core_audio_port.c    
2018-06-04 22:48:04.000000000 +0200
@@ -50,6 +50,7 @@
 
 #ifdef AGS_WITH_CORE_AUDIO
 #include <CoreFoundation/CoreFoundation.h>
+#include <AudioToolbox/AudioToolbox.h>
 #endif
 
 #include <time.h>
@@ -72,15 +73,10 @@
 void ags_core_audio_port_finalize(GObject *gobject);
 
 #ifdef AGS_WITH_CORE_AUDIO
-OSStatus SetCurrentIOBufferFrameSize(AudioObjectID inDeviceID,
-                                    UInt32 inIOBufferFrameSize);
+void* ags_core_audio_port_output_thread(void *data);
 
-void* ags_core_audio_port_output_thread(void **data);
-OSStatus ags_core_audio_port_output_callback(void *in_user_data, 
AudioUnitRenderActionFlags* ioActionFlags,
-                                            const AudioTimeStamp* 
in_time_stamp,
-                                            UInt32 in_bus_number,
-                                            UInt32 in_number_frames,
-                                            AudioBufferList* io_data);
+void ags_core_audio_port_handle_output_buffer(AgsCoreAudioPort 
*core_audio_port,
+                                             AudioQueueRef in_audio_queue, 
AudioQueueBufferRef in_buffer);
 
 void ags_core_audio_port_midi_notify_callback(const MIDINotification  *message,
                                              void *ref_con);
@@ -236,7 +232,8 @@
   guint pcm_channels;
   guint buffer_size;
   guint format;
-
+  guint i;
+  
   pthread_mutex_t *application_mutex;
   pthread_mutex_t *mutex;
   pthread_mutexattr_t *attr;
@@ -361,26 +358,27 @@
 
 #ifdef AGS_WITH_CORE_AUDIO
   /* Audio */
-  core_audio_port->comp = NULL;
-  
-  memset(&(core_audio_port->desc), 0, sizeof(AudioComponentDescription));
+  //core_audio_port->aq_ref = (AudioQueueRef *) malloc(sizeof(AudioQueueRef));
+  memset(&(core_audio_port->aq_ref), 0, sizeof(AudioQueueRef));
 
+  //core_audio_port->data_format = (AudioStreamBasicDescription *) 
malloc(sizeof(AudioStreamBasicDescription));
   memset(&(core_audio_port->data_format), 0, 
sizeof(AudioStreamBasicDescription));
 
-  size_t bytesPerSample = sizeof (AudioUnitSampleType);
-  
+  size_t bytesPerSample = sizeof(gint16);
+
   core_audio_port->data_format.mBitsPerChannel = 8 * bytesPerSample;
-  core_audio_port->data_format.mBytesPerPacket = bytesPerSample;
-  core_audio_port->data_format.mBytesPerFrame = bytesPerSample;
+
+  core_audio_port->data_format.mBytesPerPacket = pcm_channels * bytesPerSample;
+  core_audio_port->data_format.mBytesPerFrame = pcm_channels * bytesPerSample;
   
   core_audio_port->data_format.mFramesPerPacket = 1;
   core_audio_port->data_format.mChannelsPerFrame = pcm_channels;
 
   core_audio_port->data_format.mFormatID = kAudioFormatLinearPCM;
-  core_audio_port->data_format.mFormatFlags = 
kAudioFormatFlagsAudioUnitCanonical;
+  core_audio_port->data_format.mFormatFlags = kAudioFormatFlagIsSignedInteger 
| kAudioFormatFlagIsPacked;
   
   core_audio_port->data_format.mSampleRate = (float) samplerate;
-
+  
   /* MIDI */
   core_audio_port->midi_client = (MIDIClientRef *) 
malloc(sizeof(MIDIClientRef));
   memset(core_audio_port->midi_client, 0, sizeof(MIDIClientRef));
@@ -388,12 +386,9 @@
   core_audio_port->midi_port = (MIDIPortRef *) malloc(sizeof(MIDIPortRef));
   memset(core_audio_port->midi_port, 0, sizeof(MIDIPortRef));
 #else
-  core_audio_port->comp = NULL;
-  core_audio_port->desc = NULL;
+  core_audio_port->aq_ref = NULL;
 
   core_audio_port->data_format = NULL;
-
-  core_audio_port->input = NULL;
   
   core_audio_port->midi_client = NULL;
   core_audio_port->midi_port = NULL;
@@ -684,6 +679,8 @@
 
   gchar *name, *uuid;
 
+  guint i;
+  
 #ifdef AGS_WITH_CORE_AUDIO
   OSStatus retval;
 #endif
@@ -766,67 +763,29 @@
       }
 
 #ifdef AGS_WITH_CORE_AUDIO
-      core_audio_port->desc.componentType = kAudioUnitType_Output;
-      core_audio_port->desc.componentSubType = kAudioUnitSubType_DefaultOutput;
-      core_audio_port->desc.componentManufacturer = 
kAudioUnitManufacturer_Apple;
-
-      core_audio_port->comp = AudioComponentFindNext(NULL,
-                                                    &(core_audio_port->desc));
-
-      if(core_audio_port->comp == NULL) {
-       g_message("can't get output unit");
-       return;
-      }
-      
-      retval = AudioComponentInstanceNew(core_audio_port->comp,
-                                        &(core_audio_port->au_unit));
-
-      if(retval != noErr){
-       return;
-      }
-
-      retval = AudioUnitSetParameter(core_audio_port->au_unit,
-                                    kHALOutputParam_Volume,
-                                    kAudioUnitScope_Global,
-                                    0, 1.0f, 0);
-      
-      if(retval != noErr){
-       return;
-      }
-      
-      core_audio_port->input.inputProc = ags_core_audio_port_output_callback;
-      core_audio_port->input.inputProcRefCon = core_audio_port;
-      retval = AudioUnitSetProperty(core_audio_port->au_unit,
-                                   kAudioUnitProperty_SetRenderCallback,
-                                   kAudioUnitScope_Input,
-                                   0, &(core_audio_port->input), 
sizeof(AURenderCallbackStruct));
-      
-      if(retval != noErr){
-       return;
-      }
-
-      retval = AudioUnitSetProperty(core_audio_port->au_unit, 
kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input, 0,
-                                   &(core_audio_port->data_format), 
sizeof(AudioStreamBasicDescription));
-      retval = AudioUnitSetProperty(core_audio_port->au_unit,
-                                   kAudioUnitProperty_StreamFormat,
-                                   kAudioUnitScope_Input,
-                                   0, &(core_audio_port->data_format), 
sizeof(AudioStreamBasicDescription));
-
-      if(retval != noErr){
-       return;
-      }
-
-      SetCurrentIOBufferFrameSize(core_audio_port->au_unit,
-                                 core_audio_port->buffer_size);
-      
-      retval = AudioUnitInitialize(core_audio_port->au_unit);
-      
-      if(retval != noErr){
-       return;
+      //  pthread_create(&thread, NULL, &ags_core_audio_port_output_thread, 
core_audio_port);
+      AudioQueueNewOutput(&(core_audio_port->data_format),
+                         ags_core_audio_port_handle_output_buffer,
+                         core_audio_port,
+                         NULL, NULL,
+                         0,
+                         &(core_audio_port->aq_ref));
+
+      for(i = 0; i < 8; i++){
+       AudioQueueAllocateBuffer(core_audio_port->aq_ref,
+                                (core_audio_port->pcm_channels * 
core_audio_port->buffer_size * sizeof(gint16)),
+                                &(core_audio_port->buf_ref[i]));
+    
+       ags_core_audio_port_handle_output_buffer(core_audio_port,
+                                                core_audio_port->aq_ref, 
core_audio_port->buf_ref[i]);
       }
-      
-      g_message("start audio unit");
-      AudioOutputUnitStart(core_audio_port->au_unit);
+  
+      AudioQueueSetParameter(core_audio_port->aq_ref, 
+                            kAudioQueueParam_Volume, 1.0);
+    
+      AudioQueueStart(core_audio_port->aq_ref,
+                     NULL);
+  
 #endif
     }else{
       //NOTE:JK: not implemented
@@ -899,35 +858,10 @@
 }
 
 #ifdef AGS_WITH_CORE_AUDIO
-void*
-ags_core_audio_port_output_thread(void **data)
-{
-  AgsCoreAudioPort *core_audio_port;
-  AudioQueueRef in_aq;
-  AudioQueueBufferRef in_complete_aq_buffer;
-  
-  core_audio_port = data[0];
-  in_aq = data[1];
-  in_complete_aq_buffer = data[2];
-  
-  g_atomic_int_set(&(core_audio_port->running),
-                    TRUE);
-    
-  while(g_atomic_int_get(&(core_audio_port->running))){
-    CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.10, TRUE);
-  }
-
-  pthread_exit(NULL);
-}
-
-OSStatus
-ags_core_audio_port_output_callback(void *in_user_data, 
AudioUnitRenderActionFlags* ioActionFlags,
-                                   const AudioTimeStamp* in_time_stamp,
-                                   UInt32 in_bus_number,
-                                   UInt32 in_number_frames,
-                                   AudioBufferList* io_data)
+void
+ags_core_audio_port_handle_output_buffer(AgsCoreAudioPort *core_audio_port,
+                                        AudioQueueRef in_audio_queue, 
AudioQueueBufferRef in_buffer)
 {
-  AgsCoreAudioPort *core_audio_port;
   AgsCoreAudioDevout *core_audio_devout;
   
   AgsAudioLoop *audio_loop;
@@ -951,12 +885,6 @@
   pthread_mutex_t *callback_mutex;
   pthread_mutex_t *callback_finish_mutex;
 
-  core_audio_port = (AgsCoreAudioPort *) in_user_data;
-
-  if(core_audio_port == NULL){
-    return(noErr);
-  }
-
   mutex_manager = ags_mutex_manager_get_instance();
   application_mutex = ags_mutex_manager_get_application_mutex(mutex_manager);
 
@@ -973,7 +901,7 @@
   if(g_atomic_int_get(&(core_audio_port->queued)) > 0){
     g_warning("drop core audio output callback");
     
-    return(noErr);
+    return;
   }else{
     g_atomic_int_inc(&(core_audio_port->queued));
   }
@@ -1016,15 +944,14 @@
     pthread_mutex_unlock(task_thread->launch_mutex);
   }
 
-  for(i = 0; i < core_audio_port->pcm_channels; i++){
-    ags_audio_buffer_util_clear_float32(io_data->mBuffers[i].mData, 1,
-                                       core_audio_port->buffer_size);
-  }
-  
+  in_buffer->mAudioDataByteSize = core_audio_port->pcm_channels * 
core_audio_port->buffer_size * sizeof(gint16);
+  ags_audio_buffer_util_clear_buffer(in_buffer->mAudioData, 1,
+                                    (in_buffer->mAudioDataByteSize / 
sizeof(gint16)), AGS_AUDIO_BUFFER_UTIL_S16);
+
   if(audio_loop == NULL){
     g_atomic_int_dec_and_test(&(core_audio_port->queued));
 
-    return(noErr);
+    return;
   }
   
   /*  */
@@ -1058,27 +985,27 @@
   switch(core_audio_port->format){
   case AGS_SOUNDCARD_SIGNED_8_BIT:
     {
-      word_size = sizeof(signed char);
+      word_size = sizeof(gint8);
     }
     break;
   case AGS_SOUNDCARD_SIGNED_16_BIT:
     {
-      word_size = sizeof(signed short);
+      word_size = sizeof(gint16);
     }
     break;
   case AGS_SOUNDCARD_SIGNED_24_BIT:
     {
-      word_size = sizeof(signed long);
+      word_size = sizeof(gint32);
     }
     break;
   case AGS_SOUNDCARD_SIGNED_32_BIT:
     {
-      word_size = sizeof(signed long);
+      word_size = sizeof(gint32);
     }
     break;
   case AGS_SOUNDCARD_SIGNED_64_BIT:
     {
-      word_size = sizeof(signed long long);
+      word_size = sizeof(gint64);
     }
     break;
   default:
@@ -1148,27 +1075,27 @@
   switch(core_audio_port->format){
   case AGS_SOUNDCARD_SIGNED_8_BIT:
     {
-      word_size = sizeof(signed char);
+      word_size = sizeof(gint8);
     }
     break;
   case AGS_SOUNDCARD_SIGNED_16_BIT:
     {
-      word_size = sizeof(signed short);
+      word_size = sizeof(gint16);
     }
     break;
   case AGS_SOUNDCARD_SIGNED_24_BIT:
     {
-      word_size = sizeof(signed long);
+      word_size = sizeof(gint32);
     }
     break;
   case AGS_SOUNDCARD_SIGNED_32_BIT:
     {
-      word_size = sizeof(signed long);
+      word_size = sizeof(gint32);
     }
     break;
   case AGS_SOUNDCARD_SIGNED_64_BIT:
     {
-      word_size = sizeof(signed long long);
+      word_size = sizeof(gint64);
     }
     break;
   default:
@@ -1180,16 +1107,19 @@
     g_atomic_int_set(&(core_audio_port->is_empty),
                     FALSE);
 
-    copy_mode = 
ags_audio_buffer_util_get_copy_mode(AGS_AUDIO_BUFFER_UTIL_FLOAT32,
+    copy_mode = ags_audio_buffer_util_get_copy_mode(AGS_AUDIO_BUFFER_UTIL_S16,
                                                    
ags_audio_buffer_util_format_from_soundcard(core_audio_devout->format));
 
-    for(i = 0; i < core_audio_port->pcm_channels; i++){
-      ags_audio_buffer_util_copy_buffer_to_buffer(io_data->mBuffers[i].mData, 
1, 0,
-                                                 
core_audio_devout->buffer[nth_buffer], core_audio_port->pcm_channels, i,
-                                                 core_audio_port->buffer_size, 
copy_mode);
-    }
+    ags_audio_buffer_util_copy_buffer_to_buffer(in_buffer->mAudioData, 1, 0,
+                                               
core_audio_devout->buffer[nth_buffer], 1, 0,
+                                               core_audio_port->pcm_channels * 
core_audio_port->buffer_size, copy_mode);
   }
 
+  AudioQueueEnqueueBuffer(core_audio_port->aq_ref,
+                         in_buffer,
+                         0,
+                         NULL);
+
   /* signal finish */
   if(!no_event){        
     callback_finish_mutex = core_audio_devout->callback_finish_mutex;
@@ -1214,8 +1144,6 @@
   }
   
   g_atomic_int_dec_and_test(&(core_audio_port->queued));
-
-  return(noErr);
 }
   
 void
@@ -1515,8 +1443,7 @@
   pthread_mutex_lock(mutex);
 
 #ifdef AGS_WITH_CORE_AUDIO
-  SetCurrentIOBufferFrameSize(core_audio_port->au_unit,
-                             buffer_size);
+  //TODO:JK: implement me
 #endif
 
   core_audio_port->buffer_size = buffer_size;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gsequencer-1.4.31/ags/audio/core-audio/ags_core_audio_port.h 
new/gsequencer-1.4.32/ags/audio/core-audio/ags_core_audio_port.h
--- old/gsequencer-1.4.31/ags/audio/core-audio/ags_core_audio_port.h    
2018-03-19 17:09:49.000000000 +0100
+++ new/gsequencer-1.4.32/ags/audio/core-audio/ags_core_audio_port.h    
2018-06-04 22:48:04.000000000 +0200
@@ -87,25 +87,18 @@
   guint samplerate;
   
 #ifdef AGS_WITH_CORE_AUDIO
-  AudioComponentDescription desc;
-  AudioComponent comp;
-
+  AudioQueueRef aq_ref;
   AudioStreamBasicDescription data_format;
 
-  AURenderCallbackStruct input;
-  AudioUnit au_unit;
+  AudioQueueBufferRef buf_ref[8];
   
   MIDIClientRef *midi_client;
   MIDIPortRef *midi_port;
 #else
-  gpointer comp;
-  gpointer desc;
-
+  gpointer aq_ref;
   gpointer data_format;
-  gpointer packet_descs;
 
-  gpointer input;
-  gpointer au_unit;
+  gpointer buffer;
   
   gpointer midi_client;
   gpointer midi_port;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gsequencer-1.4.31/ags/audio/recall/ags_play_dssi_audio.c 
new/gsequencer-1.4.32/ags/audio/recall/ags_play_dssi_audio.c
--- old/gsequencer-1.4.31/ags/audio/recall/ags_play_dssi_audio.c        
2018-03-04 07:14:51.000000000 +0100
+++ new/gsequencer-1.4.32/ags/audio/recall/ags_play_dssi_audio.c        
2018-06-04 22:48:04.000000000 +0200
@@ -37,7 +37,11 @@
 
 #include <ags/audio/ags_port.h>
 
+#ifdef __APPLE__
+#include <machine/endian.h>
+#else
 #include <endian.h>
+#endif
 
 #include <dlfcn.h>
 #include <stdio.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/audio/task/ags_apply_presets.c 
new/gsequencer-1.4.32/ags/audio/task/ags_apply_presets.c
--- old/gsequencer-1.4.31/ags/audio/task/ags_apply_presets.c    2018-03-04 
20:27:35.000000000 +0100
+++ new/gsequencer-1.4.32/ags/audio/task/ags_apply_presets.c    2018-06-04 
22:48:04.000000000 +0200
@@ -19,6 +19,8 @@
 
 #include <ags/audio/task/ags_apply_presets.h>
 
+#include <ags/libags.h>
+
 #include <ags/audio/ags_audio.h>
 #include <ags/audio/ags_channel.h>
 #include <ags/audio/ags_input.h>
@@ -538,7 +540,7 @@
 
   pthread_mutex_unlock(soundcard_mutex);
 
-  while(audio != NULL){
+  while(list != NULL){
     /* get some fields */
     pthread_mutex_lock(soundcard_mutex);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gsequencer-1.4.31/ags/audio/task/ags_seek_soundcard.c 
new/gsequencer-1.4.32/ags/audio/task/ags_seek_soundcard.c
--- old/gsequencer-1.4.31/ags/audio/task/ags_seek_soundcard.c   2018-03-04 
20:27:35.000000000 +0100
+++ new/gsequencer-1.4.32/ags/audio/task/ags_seek_soundcard.c   2018-06-21 
07:04:52.000000000 +0200
@@ -19,6 +19,8 @@
 
 #include <ags/audio/task/ags_seek_soundcard.h>
 
+#include <ags/libags.h>
+
 #include <ags/audio/ags_audio.h>
 
 #include <ags/i18n.h>
@@ -349,17 +351,17 @@
   pthread_mutex_lock(application_mutex);
 
   soundcard_mutex = ags_mutex_manager_lookup(mutex_manager,
-                                            (GObject *) soundcard);
+                                            G_OBJECT(soundcard));
 
   pthread_mutex_unlock(application_mutex);
 
   /* seek audio */
-  pthread_mutex_lock(soundcard);
+  pthread_mutex_lock(soundcard_mutex);
 
   audio =
     audio_start = 
g_list_copy(ags_soundcard_get_audio(AGS_SOUNDCARD(soundcard)));
 
-  pthread_mutex_unlock(soundcard);
+  pthread_mutex_unlock(soundcard_mutex);
 
   while(audio != NULL){
     /* get audio mutex */
@@ -370,7 +372,7 @@
 
     pthread_mutex_unlock(application_mutex);
 
-    /* seek recall */
+    /* seek play */
     pthread_mutex_lock(audio_mutex);
     
     recall = AGS_AUDIO(audio->data)->play;
@@ -387,13 +389,30 @@
 
     pthread_mutex_unlock(audio_mutex);
 
+    /* seek recall */
+    pthread_mutex_lock(audio_mutex);
+    
+    recall = AGS_AUDIO(audio->data)->recall;
+
+    while(recall != NULL){
+      if(AGS_IS_SEEKABLE(recall->data)){
+       ags_seekable_seek(AGS_SEEKABLE(recall->data),
+                         seek_soundcard->steps,
+                         seek_soundcard->move_forward);
+      }
+
+      recall = recall->next;
+    }
+
+    pthread_mutex_unlock(audio_mutex);
+    
     audio = audio->next;
   }
 
   g_list_free(audio_start);
 
   /* seek soundcard */
-  pthread_mutex_lock(soundcard);
+  pthread_mutex_lock(soundcard_mutex);
 
   note_offset = 
ags_soundcard_get_note_offset(AGS_SOUNDCARD(seek_soundcard->soundcard));
   note_offset_absolute = 
ags_soundcard_get_note_offset_absolute(AGS_SOUNDCARD(seek_soundcard->soundcard));
@@ -420,7 +439,7 @@
     }
   }
 
-  pthread_mutex_unlock(soundcard);
+  pthread_mutex_unlock(soundcard_mutex);
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/gsequencer_main.c 
new/gsequencer-1.4.32/ags/gsequencer_main.c
--- old/gsequencer-1.4.31/ags/gsequencer_main.c 2018-05-10 23:33:21.000000000 
+0200
+++ new/gsequencer-1.4.32/ags/gsequencer_main.c 2018-06-04 22:48:04.000000000 
+0200
@@ -77,40 +77,6 @@
     base_dir = strndup(path,
                       rindex(path, '/') - path);
     printf("base dir %s\n", base_dir);
-
-    sprintf(path, "%s/../Frameworks",
-           base_dir);
-    gdk_pixbuf_module_file = realpath(path,
-                                     NULL);
-    str = malloc(PATH_MAX * sizeof(gchar));
-    sprintf(str,
-           "GDK_PIXBUF_MODULE_FILE=%s/gdk-pixbuf-2.0/2.10.0/loaders.cache",
-           gdk_pixbuf_module_file);
-    putenv(str);
-
-    ld_library_path = realpath(path,
-                              NULL);
-    str = malloc(PATH_MAX * sizeof(gchar));
-    sprintf(str,
-           "DT_RUNPATH=%s/gdk-pixbuf-2.0/2.10.0/loaders",
-           ld_library_path);
-    putenv(str);
-
-    frameworks_dir = realpath(path,
-                             NULL);
-    str = malloc(PATH_MAX * sizeof(gchar));
-    sprintf(str,
-           "DYLD_FALLBACK_LIBRARY_PATH=%s",
-           frameworks_dir);
-    putenv(str);
-
-    str = malloc(PATH_MAX * sizeof(gchar));
-    sprintf(str,
-           "GDK_PIXBUF_MODULEDIR=%s",
-           frameworks_dir);
-    putenv(str);
-
-    printf(".. %s", str);
     
     sprintf(path, "%s/../Resources",
            base_dir);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/midi2xml_main.c 
new/gsequencer-1.4.32/ags/midi2xml_main.c
--- old/gsequencer-1.4.31/ags/midi2xml_main.c   2018-03-04 07:14:51.000000000 
+0100
+++ new/gsequencer-1.4.32/ags/midi2xml_main.c   2018-06-21 07:36:08.000000000 
+0200
@@ -27,6 +27,20 @@
 
 #include <libxml/tree.h>
 
+void midi2xml_print_usage();
+
+void
+midi2xml_print_usage()
+{
+  printf("midi2xml converts MIDI to XML\n\n");
+
+  printf("Usage:\n\t%s\n\t%s\n\t%s\n\t%s\n\n",
+        "Report bugs to <[email protected]>\n",
+        "--help              display this help and exit",
+        "--version           output version information and exit",
+        "<file>              the file to be processed");
+}
+
 int
 main(int argc, char **argv)
 {
@@ -41,34 +55,30 @@
 
   if(argc == 2){
 
-    if(!g_ascii_strncasecmp(argv[1], "--help\0", 7)){
-      printf("midi2xml converts MIDI to XML\n\n\0");
-
-      printf("Usage:\n\t%s\n\t%s\n\t%s\n\t%s\n\n",
-            "Report bugs to <[email protected]>\n\0",
-            "--help              display this help and exit\0",
-            "--version           output version information and exit\0",
-            "<file>              the file to be processed\0");
+    if(!g_ascii_strncasecmp(argv[1], "--help", 7)){
+      midi2xml_print_usage();
       
       exit(0);
-    }else if(!g_ascii_strncasecmp(argv[1], "--version\0", 10)){
-      printf("midi2xml 1.0.0\n\n\0");
+    }else if(!g_ascii_strncasecmp(argv[1], "--version", 10)){
+      printf("midi2xml 1.0.0\n\n");
       
-      printf("%s\n%s\n%s\n\n\0",
-            "Copyright (C) 2015 Joël Krähemann\0",
-            "This is free software; see the source for copying conditions.  
There is NO\0",
-            "warranty; not even for MERCHANTABILITY or FITNESS FOR A 
PARTICULAR PURPOSE.\0");
+      printf("%s\n%s\n%s\n\n",
+            "Copyright (C) 2015 Joël Krähemann",
+            "This is free software; see the source for copying conditions.  
There is NO",
+            "warranty; not even for MERCHANTABILITY or FITNESS FOR A 
PARTICULAR PURPOSE.");
       
-      printf("Written by Joël Krähemann\n\0");
+      printf("Written by Joël Krähemann\n");
       exit(0);
     }else{
       filename = argv[1];
     }
   }else{
+    midi2xml_print_usage();
+    
     return(-1);
   }
 
-  file = fopen(filename, "r\0");
+  file = fopen(filename, "r");
   fseek(file, 0, SEEK_SET);
   midi_parser = ags_midi_parser_new(file);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/ags/object/ags_soundcard.h 
new/gsequencer-1.4.32/ags/object/ags_soundcard.h
--- old/gsequencer-1.4.31/ags/object/ags_soundcard.h    2018-05-10 
13:08:51.000000000 +0200
+++ new/gsequencer-1.4.32/ags/object/ags_soundcard.h    2018-06-04 
22:48:04.000000000 +0200
@@ -55,7 +55,11 @@
 #define AGS_SOUNDCARD_DEFAULT_LOOP_LEFT (0)
 #define AGS_SOUNDCARD_DEFAULT_LOOP_RIGHT (64)
 
+#ifdef __APPLE__
+#define AGS_SOUNDCARD_DEFAULT_OVERCLOCK (2.0)
+#else
 #define AGS_SOUNDCARD_DEFAULT_OVERCLOCK (0.0)
+#endif
 
 typedef struct _AgsSoundcard AgsSoundcard;
 typedef struct _AgsSoundcardInterface AgsSoundcardInterface;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/configure 
new/gsequencer-1.4.32/configure
--- old/gsequencer-1.4.31/configure     2018-05-10 23:37:40.000000000 +0200
+++ new/gsequencer-1.4.32/configure     2018-06-21 07:05:15.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gsequencer 1.4.31.
+# Generated by GNU Autoconf 2.69 for gsequencer 1.4.32.
 #
 # Report bugs to <[email protected]>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='gsequencer'
 PACKAGE_TARNAME='gsequencer'
-PACKAGE_VERSION='1.4.31'
-PACKAGE_STRING='gsequencer 1.4.31'
+PACKAGE_VERSION='1.4.32'
+PACKAGE_STRING='gsequencer 1.4.32'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -1473,7 +1473,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gsequencer 1.4.31 to adapt to many kinds of systems.
+\`configure' configures gsequencer 1.4.32 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1548,7 +1548,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gsequencer 1.4.31:";;
+     short | recursive ) echo "Configuration of gsequencer 1.4.32:";;
    esac
   cat <<\_ACEOF
 
@@ -1741,7 +1741,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gsequencer configure 1.4.31
+gsequencer configure 1.4.32
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2218,7 +2218,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gsequencer $as_me 1.4.31, which was
+It was created by gsequencer $as_me 1.4.32, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3085,7 +3085,7 @@
 
 # Define the identity of the package.
  PACKAGE='gsequencer'
- VERSION='1.4.31'
+ VERSION='1.4.32'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -19597,7 +19597,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gsequencer $as_me 1.4.31, which was
+This file was extended by gsequencer $as_me 1.4.32, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -19663,7 +19663,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gsequencer config.status 1.4.31
+gsequencer config.status 1.4.32
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/configure.ac 
new/gsequencer-1.4.32/configure.ac
--- old/gsequencer-1.4.31/configure.ac  2018-05-10 23:37:27.000000000 +0200
+++ new/gsequencer-1.4.32/configure.ac  2018-06-17 20:57:02.000000000 +0200
@@ -6,7 +6,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ([2.69])
-AC_INIT([gsequencer],[1.4.31],[[email protected]])
+AC_INIT([gsequencer],[1.4.32],[[email protected]])
 AM_INIT_AUTOMAKE([subdir-objects])
 AC_CONFIG_SRCDIR([ags/config.h.in])
 AC_CONFIG_HEADERS([ags/config.h])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/gsequencer.1 
new/gsequencer-1.4.32/gsequencer.1
--- old/gsequencer-1.4.31/gsequencer.1  2018-05-10 13:08:51.000000000 +0200
+++ new/gsequencer-1.4.32/gsequencer.1  2018-06-21 07:45:44.000000000 +0200
@@ -33,7 +33,7 @@
 gsequencer \- Advanced Gtk+ Sequencer is an audio sequencer and composition 
editor
 .SH "SYNOPSIS"
 .HP \w'\fB/usr/bin/gsequencer\fR\ 'u
-\fB/usr/bin/gsequencer\fR [\-\-help] [\-\-version] [\-\-single\-thread] 
[\-\-no\-builtin\-theme] [\-\-filename\ \fIfile\fR...]
+\fB/usr/bin/gsequencer\fR [\-\-help] [\-\-version] [\-\-single\-thread] 
[\-\-no\-builtin\-theme] [\-\-filename\ \fIfile\fR]
 .SH "DESCRIPTION"
 .PP
 Advanced GTK+ Sequencer is intended to use for music composition\&. It 
features a piano roll, as well a synth, matrix editor, drum machine, soundfont2 
player, mixer and an output panel\&. It\(cqs designed to be highly 
configurable\&. You may add effects to its effect chain; and add or remove 
audio channels/pads\&. You may set up a fully functional network of engines, 
thus there is a link editor for linking audio lines\&.
@@ -94,8 +94,8 @@
 None\&. So far I know\&.
 .SH "AUTHOR"
 .PP
-Joël Krähemann
+Jo\(:el Kr\(:ahemann
 .SH "COPYRIGHT"
 .br
-Copyright \(co 2017 Joël Krähemann
+Copyright \(co 2017 Jo\(:el Kr\(:ahemann
 .br
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/gsequencer.1.xml 
new/gsequencer-1.4.32/gsequencer.1.xml
--- old/gsequencer-1.4.31/gsequencer.1.xml      2018-05-10 13:08:51.000000000 
+0200
+++ new/gsequencer-1.4.32/gsequencer.1.xml      2018-06-21 07:45:39.000000000 
+0200
@@ -36,7 +36,7 @@
       <arg>--version</arg>
       <arg>--single-thread</arg>
       <arg>--no-builtin-theme</arg>
-      <arg rep='repeat'>--filename <replaceable>file</replaceable></arg>
+      <arg>--filename <replaceable>file</replaceable></arg>
     </cmdsynopsis>
   </refsynopsisdiv>
   
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/midi2xml.1 
new/gsequencer-1.4.32/midi2xml.1
--- old/gsequencer-1.4.31/midi2xml.1    2018-05-10 13:08:51.000000000 +0200
+++ new/gsequencer-1.4.32/midi2xml.1    2018-06-21 07:33:56.000000000 +0200
@@ -33,7 +33,7 @@
 midi2xml \- midi2xml converts your MIDI files to XML format
 .SH "SYNOPSIS"
 .HP \w'\fB/usr/bin/midi2xml\fR\ 'u
-\fB/usr/bin/midi2xml\fR [\-\-help] [\-\-version] [file]
+\fB/usr/bin/midi2xml\fR [\-\-help] [\-\-version] \fIfile\fR
 .SH "DESCRIPTION"
 .PP
 midi2xml takes your MIDI file from command line and outputs the resulting XML 
to stdout\&.
@@ -62,8 +62,8 @@
 None\&. So far I know\&.
 .SH "AUTHOR"
 .PP
-Joël Krähemann
+Jo\(:el Kr\(:ahemann
 .SH "COPYRIGHT"
 .br
-Copyright \(co 2015 Joël Krähemann
+Copyright \(co 2015 Jo\(:el Kr\(:ahemann
 .br
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/midi2xml.1.xml 
new/gsequencer-1.4.32/midi2xml.1.xml
--- old/gsequencer-1.4.31/midi2xml.1.xml        2018-05-10 13:08:51.000000000 
+0200
+++ new/gsequencer-1.4.32/midi2xml.1.xml        2018-06-21 07:33:52.000000000 
+0200
@@ -34,7 +34,7 @@
       <command>/usr/bin/midi2xml</command>
       <arg>--help</arg>
       <arg>--version</arg>
-      <arg>file</arg>
+      <arg choice="plain"><replaceable>file</replaceable></arg>
     </cmdsynopsis>
   </refsynopsisdiv>
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gsequencer-1.4.31/po/gsequencer.pot 
new/gsequencer-1.4.32/po/gsequencer.pot
--- old/gsequencer-1.4.31/po/gsequencer.pot     2018-05-10 23:38:09.000000000 
+0200
+++ new/gsequencer-1.4.32/po/gsequencer.pot     2018-06-21 07:05:59.000000000 
+0200
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: gsequencer 1.4.31\n"
+"Project-Id-Version: gsequencer 1.4.32\n"
 "Report-Msgid-Bugs-To: [email protected]\n"
-"POT-Creation-Date: 2018-05-10 23:38+0200\n"
+"POT-Creation-Date: 2018-06-21 07:05+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <[email protected]>\n"


Reply via email to