[SCM] gsequencer/upstream: fixed volume indicator and playback of AgsDrumInputPad

jkraehemann-guest at users.alioth.debian.org jkraehemann-guest at users.alioth.debian.org
Sun Jun 14 16:07:04 UTC 2015


The following commit has been merged in the upstream branch:
commit 21f4ecce484eff687282a99eaae44296506793b2
Author: Joël Krähemann <weedlight at gmail.com>
Date:   Thu Apr 23 20:41:53 2015 +0000

    fixed volume indicator and playback of AgsDrumInputPad

diff --git a/.deps/ags-ags_drum_input_pad.Po b/.deps/ags-ags_drum_input_pad.Po
index ab88b0c..5da5a24 100644
--- a/.deps/ags-ags_drum_input_pad.Po
+++ b/.deps/ags-ags_drum_input_pad.Po
@@ -564,11 +564,12 @@ ags-ags_drum_input_pad.o: src/ags/X/machine/ags_drum_input_pad.c \
  src/ags/widget/ags_hindicator.h src/ags/widget/ags_waveform.h \
  src/ags/widget/ags_dial.h src/ags/widget/ags_cartesian.h \
  src/ags/file/ags_file_id_ref.h src/ags/file/ags_file_lookup.h \
- src/ags/X/ags_window.h src/ags/audio/ags_devout.h \
- /usr/include/alsa/asoundlib.h /usr/include/string.h /usr/include/fcntl.h \
- /usr/include/bits/fcntl.h /usr/include/bits/fcntl-linux.h \
- /usr/include/bits/stat.h /usr/include/assert.h /usr/include/sys/poll.h \
- /usr/include/bits/poll.h /usr/include/errno.h /usr/include/bits/errno.h \
+ src/ags/file/ags_file_launch.h src/ags/X/ags_window.h \
+ src/ags/audio/ags_devout.h /usr/include/alsa/asoundlib.h \
+ /usr/include/string.h /usr/include/fcntl.h /usr/include/bits/fcntl.h \
+ /usr/include/bits/fcntl-linux.h /usr/include/bits/stat.h \
+ /usr/include/assert.h /usr/include/sys/poll.h /usr/include/bits/poll.h \
+ /usr/include/errno.h /usr/include/bits/errno.h \
  /usr/include/linux/errno.h /usr/include/asm/errno.h \
  /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
  /usr/include/alsa/asoundef.h /usr/include/alsa/version.h \
@@ -1932,6 +1933,8 @@ src/ags/file/ags_file_id_ref.h:
 
 src/ags/file/ags_file_lookup.h:
 
+src/ags/file/ags_file_launch.h:
+
 src/ags/X/ags_window.h:
 
 src/ags/audio/ags_devout.h:
diff --git a/.deps/ags-ags_drum_input_pad_callbacks.Po b/.deps/ags-ags_drum_input_pad_callbacks.Po
index 2779086..1027a73 100644
--- a/.deps/ags-ags_drum_input_pad_callbacks.Po
+++ b/.deps/ags-ags_drum_input_pad_callbacks.Po
@@ -604,10 +604,11 @@ ags-ags_drum_input_pad_callbacks.o: \
  src/ags/X/ags_preferences.h src/ags/X/ags_generic_preferences.h \
  src/ags/X/ags_audio_preferences.h \
  src/ags/X/ags_performance_preferences.h \
- src/ags/X/ags_server_preferences.h src/ags/audio/ags_input.h \
- /usr/include/glib-2.0/glib/gstdio.h /usr/include/glib-2.0/glib/gprintf.h \
- /usr/include/sys/stat.h src/ags/audio/ags_output.h \
- src/ags/audio/ags_pattern.h src/ags/audio/task/ags_start_devout.h \
+ src/ags/X/ags_server_preferences.h src/ags/thread/ags_mutex_manager.h \
+ src/ags/audio/ags_input.h /usr/include/glib-2.0/glib/gstdio.h \
+ /usr/include/glib-2.0/glib/gprintf.h /usr/include/sys/stat.h \
+ src/ags/audio/ags_output.h src/ags/audio/ags_pattern.h \
+ src/ags/audio/task/ags_start_devout.h \
  src/ags/audio/task/ags_init_channel.h \
  src/ags/audio/task/ags_append_channel.h \
  src/ags/audio/task/ags_append_recall.h \
@@ -2113,6 +2114,8 @@ src/ags/X/ags_performance_preferences.h:
 
 src/ags/X/ags_server_preferences.h:
 
+src/ags/thread/ags_mutex_manager.h:
+
 src/ags/audio/ags_input.h:
 
 /usr/include/glib-2.0/glib/gstdio.h:
diff --git a/.deps/ags-ags_file_gui.Po b/.deps/ags-ags_file_gui.Po
index 223b1eb..c71daa4 100644
--- a/.deps/ags-ags_file_gui.Po
+++ b/.deps/ags-ags_file_gui.Po
@@ -701,7 +701,12 @@ ags-ags_file_gui.o: src/ags/file/ags_file_gui.c \
  src/ags/widget/ags_cartesian.h src/ags/file/ags_file_id_ref.h \
  src/ags/file/ags_file_launch.h src/ags/audio/ags_input.h \
  /usr/include/glib-2.0/glib/gstdio.h /usr/include/glib-2.0/glib/gprintf.h \
- /usr/include/sys/stat.h \
+ /usr/include/sys/stat.h src/ags/audio/recall/ags_peak_channel.h \
+ src/ags/audio/ags_recall_channel.h \
+ src/ags/audio/recall/ags_peak_channel_run.h \
+ src/ags/audio/ags_recall_channel_run.h \
+ src/ags/audio/ags_recall_audio_run.h src/ags/audio/ags_recall_audio.h \
+ src/ags/X/ags_line_callbacks.h \
  src/ags/X/machine/ags_drum_input_line_callbacks.h \
  src/ags/X/machine/ags_drum_input_line.h
 
@@ -2429,6 +2434,20 @@ src/ags/audio/ags_input.h:
 
 /usr/include/sys/stat.h:
 
+src/ags/audio/recall/ags_peak_channel.h:
+
+src/ags/audio/ags_recall_channel.h:
+
+src/ags/audio/recall/ags_peak_channel_run.h:
+
+src/ags/audio/ags_recall_channel_run.h:
+
+src/ags/audio/ags_recall_audio_run.h:
+
+src/ags/audio/ags_recall_audio.h:
+
+src/ags/X/ags_line_callbacks.h:
+
 src/ags/X/machine/ags_drum_input_line_callbacks.h:
 
 src/ags/X/machine/ags_drum_input_line.h:
diff --git a/autom4te.cache/requests b/autom4te.cache/requests
index 2f94ca4..df5eb39 100644
--- a/autom4te.cache/requests
+++ b/autom4te.cache/requests
@@ -63,106 +63,106 @@
                         'configure.ac'
                       ],
                       {
-                        'AM_GNU_GETTEXT_NEED' => 1,
-                        'AC_DEFUN_ONCE' => 1,
-                        'AM_ICONV_LINKFLAGS_BODY' => 1,
-                        'AM_ICONV_LINK' => 1,
-                        'AC_DEFUN' => 1,
-                        'AM_PATH_PROG_WITH_TEST' => 1,
-                        'AM_INTL_SUBDIR' => 1,
-                        'AM_NLS' => 1,
-                        'AM_GNU_GETTEXT_VERSION' => 1,
-                        'gl_THREADLIB_EARLY_BODY' => 1,
-                        '_AM_IF_OPTION' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AM_ICONV' => 1,
-                        'AC_LIB_PROG_LD' => 1,
-                        'gl_SIZE_MAX' => 1,
-                        'AM_SUBST_NOTMAKE' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'm4_pattern_allow' => 1,
+                        '_AM_MANGLE_OPTION' => 1,
+                        'AM_MISSING_PROG' => 1,
+                        'AC_LIB_HAVE_LINKFLAGS' => 1,
+                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'PKG_PROG_PKG_CONFIG' => 1,
+                        'AM_XGETTEXT_OPTION' => 1,
+                        '_AM_SET_OPTION' => 1,
+                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+                        'AM_PROG_INSTALL_STRIP' => 1,
+                        'AM_MAKE_INCLUDE' => 1,
+                        'AM_GNU_GETTEXT' => 1,
                         'AC_' => 1,
+                        'gl_THREADLIB_EARLY' => 1,
                         'AM_CONDITIONAL' => 1,
-                        'gl_VISIBILITY' => 1,
-                        'gl_GLIBC21' => 1,
-                        'AM_PROG_INSTALL_STRIP' => 1,
-                        '_m4_warn' => 1,
+                        'AM_AUX_DIR_EXPAND' => 1,
+                        'AM_XGETTEXT_OPTION_INIT' => 1,
+                        'AC_LIB_RPATH' => 1,
+                        'AU_DEFUN' => 1,
+                        'AM_SANITY_CHECK' => 1,
                         'AC_LIB_LINKFLAGS_BODY' => 1,
-                        'gl_LOCK' => 1,
-                        'AC_LIB_WITH_FINAL_PREFIX' => 1,
-                        'AC_COMPUTE_INT' => 1,
                         '_PKG_SHORT_ERRORS_SUPPORTED' => 1,
-                        'AU_DEFUN' => 1,
-                        'AM_PROG_INSTALL_SH' => 1,
-                        'm4_pattern_allow' => 1,
-                        'PKG_PROG_PKG_CONFIG' => 1,
-                        'gt_TYPE_INTMAX_T' => 1,
-                        'gt_INTL_SUBDIR_CORE' => 1,
-                        'AC_LIB_HAVE_LINKFLAGS' => 1,
-                        'gl_XSIZE' => 1,
-                        'AM_POSTPROCESS_PO_MAKEFILE' => 1,
-                        'AM_RUN_LOG' => 1,
-                        'AC_LIB_PREPARE_PREFIX' => 1,
-                        'AC_LIB_LINKFLAGS_FROM_LIBS' => 1,
-                        'AC_LIB_PROG_LD_GNU' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        '_AM_SET_OPTIONS' => 1,
-                        'AC_LIB_PREPARE_MULTILIB' => 1,
-                        'AM_MISSING_HAS_RUN' => 1,
-                        'AM_LANGINFO_CODESET' => 1,
-                        'AC_TYPE_UNSIGNED_LONG_LONG_INT' => 1,
+                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+                        'AC_LIB_PROG_LD' => 1,
+                        'AC_DEFUN_ONCE' => 1,
+                        'PKG_CHECK_EXISTS' => 1,
+                        'AM_ICONV_LINKFLAGS_BODY' => 1,
+                        'AC_LIB_FROMPACKAGE' => 1,
                         '_AM_PROG_TAR' => 1,
-                        'AC_LIB_LINKFLAGS' => 1,
-                        '_AC_TYPE_LONG_LONG_SNIPPET' => 1,
+                        'm4_include' => 1,
+                        'gt_GLIBC2' => 1,
+                        'AC_LIB_WITH_FINAL_PREFIX' => 1,
+                        '_m4_warn' => 1,
+                        'gt_TYPE_INTMAX_T' => 1,
                         'include' => 1,
-                        'gt_PRINTF_POSIX' => 1,
-                        '_AM_SET_OPTION' => 1,
-                        '_AM_MANGLE_OPTION' => 1,
-                        'gt_INTDIV0' => 1,
-                        'gt_TYPE_WCHAR_T' => 1,
-                        'AM_DEP_TRACK' => 1,
-                        'AM_AUX_DIR_EXPAND' => 1,
+                        'gl_DISABLE_THREADS' => 1,
+                        'AM_INTL_SUBDIR' => 1,
+                        'AC_TYPE_UNSIGNED_LONG_LONG_INT' => 1,
+                        'AM_PROG_INSTALL_SH' => 1,
                         'AC_LIB_APPENDTOVAR' => 1,
-                        'AM_SET_DEPDIR' => 1,
-                        'AC_LIB_FROMPACKAGE' => 1,
-                        'gt_CHECK_DECL' => 1,
-                        'gt_TYPE_WINT_T' => 1,
-                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'AM_RUN_LOG' => 1,
+                        'gt_INTL_MACOSX' => 1,
+                        'AM_MISSING_HAS_RUN' => 1,
                         'AM_SET_LEADING_DOT' => 1,
-                        'AM_XGETTEXT_OPTION' => 1,
-                        'gl_THREADLIB' => 1,
+                        'AC_COMPUTE_INT' => 1,
+                        '_AM_DEPENDENCIES' => 1,
+                        'gl_FCNTL_O_FLAGS' => 1,
                         'AM_INIT_AUTOMAKE' => 1,
-                        'gt_INTL_MACOSX' => 1,
-                        'm4_include' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'gl_PREREQ_LOCK' => 1,
-                        'AC_LIB_ARG_WITH' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
                         'AM_PROG_MKDIR_P' => 1,
-                        'gl_AC_TYPE_UINTMAX_T' => 1,
+                        'gl_LOCK' => 1,
                         'gl_AC_HEADER_STDINT_H' => 1,
-                        'AM_XGETTEXT_OPTION_INIT' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'gt_TYPE_WCHAR_T' => 1,
+                        'AM_DEP_TRACK' => 1,
+                        'gt_CHECK_DECL' => 1,
+                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
                         'AM_PO_SUBDIRS' => 1,
-                        '_AM_AUTOCONF_VERSION' => 1,
-                        'AM_SANITY_CHECK' => 1,
-                        'AM_MISSING_PROG' => 1,
-                        'gt_LC_MESSAGES' => 1,
-                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
-                        'PKG_CHECK_MODULES' => 1,
-                        'gl_AC_HEADER_INTTYPES_H' => 1,
+                        'AM_ICONV' => 1,
+                        'AC_LIB_ARG_WITH' => 1,
+                        'gl_AC_TYPE_UINTMAX_T' => 1,
+                        'gl_THREADLIB' => 1,
+                        'AM_SUBST_NOTMAKE' => 1,
+                        'AM_SET_DEPDIR' => 1,
+                        'gt_TYPE_WINT_T' => 1,
+                        'AM_NLS' => 1,
+                        'AC_LIB_PREFIX' => 1,
                         'gt_INTTYPES_PRI' => 1,
-                        'gl_THREADLIB_EARLY' => 1,
-                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AC_LIB_RPATH' => 1,
-                        'AM_MAKE_INCLUDE' => 1,
                         'AM_SILENT_RULES' => 1,
-                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
-                        'AC_LIB_PREFIX' => 1,
-                        'gl_FCNTL_O_FLAGS' => 1,
+                        'PKG_CHECK_MODULES' => 1,
+                        'AC_LIB_PREPARE_PREFIX' => 1,
+                        '_AM_SET_OPTIONS' => 1,
+                        '_AM_AUTOCONF_VERSION' => 1,
+                        'gt_INTL_SUBDIR_CORE' => 1,
                         'AC_TYPE_LONG_LONG_INT' => 1,
+                        '_AC_TYPE_LONG_LONG_SNIPPET' => 1,
+                        'AC_DEFUN' => 1,
+                        'gt_PRINTF_POSIX' => 1,
+                        'AM_GNU_GETTEXT_VERSION' => 1,
+                        'AM_GNU_GETTEXT_NEED' => 1,
+                        'AC_LIB_PROG_LD_GNU' => 1,
+                        'gl_SIZE_MAX' => 1,
+                        'AM_PATH_PROG_WITH_TEST' => 1,
+                        'AM_ICONV_LINK' => 1,
+                        'AC_LIB_LINKFLAGS_FROM_LIBS' => 1,
+                        'gl_VISIBILITY' => 1,
+                        'AC_LIB_PREPARE_MULTILIB' => 1,
                         'gl_THREADLIB_BODY' => 1,
-                        '_AM_DEPENDENCIES' => 1,
-                        'gt_GLIBC2' => 1,
-                        'gl_DISABLE_THREADS' => 1,
-                        'PKG_CHECK_EXISTS' => 1
+                        'AC_LIB_LINKFLAGS' => 1,
+                        'gl_PREREQ_LOCK' => 1,
+                        '_AM_IF_OPTION' => 1,
+                        'gt_INTDIV0' => 1,
+                        'AM_LANGINFO_CODESET' => 1,
+                        'gt_LC_MESSAGES' => 1,
+                        'gl_GLIBC21' => 1,
+                        'gl_THREADLIB_EARLY_BODY' => 1,
+                        'AM_POSTPROCESS_PO_MAKEFILE' => 1,
+                        'gl_AC_HEADER_INTTYPES_H' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'gl_XSIZE' => 1
                       }
                     ], 'Autom4te::Request' ),
              bless( [
@@ -177,65 +177,65 @@
                         'configure.ac'
                       ],
                       {
-                        'LT_SUPPORTED_TAG' => 1,
-                        'AC_CONFIG_AUX_DIR' => 1,
-                        'LT_INIT' => 1,
                         '_m4_warn' => 1,
-                        'm4_pattern_forbid' => 1,
+                        'include' => 1,
                         'm4_include' => 1,
-                        'AM_PROG_MKDIR_P' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'AC_SUBST' => 1,
-                        'AM_POT_TOOLS' => 1,
-                        'AC_CONFIG_HEADERS' => 1,
+                        'AC_CONFIG_FILES' => 1,
+                        'm4_sinclude' => 1,
                         'sinclude' => 1,
+                        'AM_PROG_AR' => 1,
+                        'AM_POT_TOOLS' => 1,
+                        'AC_CANONICAL_BUILD' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'LT_INIT' => 1,
+                        'AM_PROG_F77_C_O' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
                         'AC_LIBSOURCE' => 1,
+                        'AC_CONFIG_HEADERS' => 1,
                         'AC_PROG_LIBTOOL' => 1,
-                        'm4_pattern_allow' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        '_AM_COND_ENDIF' => 1,
-                        'AC_FC_FREEFORM' => 1,
-                        '_AM_COND_IF' => 1,
-                        'AC_REQUIRE_AUX_FILE' => 1,
-                        'AC_SUBST_TRACE' => 1,
-                        'AC_CONFIG_FILES' => 1,
-                        'AC_CONFIG_LIBOBJ_DIR' => 1,
+                        'AC_CONFIG_SUBDIRS' => 1,
+                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
                         '_LT_AC_TAGCONFIG' => 1,
-                        'AM_MAINTAINER_MODE' => 1,
-                        'AM_PROG_CXX_C_O' => 1,
-                        'AC_CANONICAL_TARGET' => 1,
+                        'AM_PROG_MKDIR_P' => 1,
+                        '_AM_MAKEFILE_INCLUDE' => 1,
+                        'AC_INIT' => 1,
+                        'AC_SUBST' => 1,
+                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
+                        'AC_SUBST_TRACE' => 1,
                         'AC_FC_PP_SRCEXT' => 1,
                         'AM_SILENT_RULES' => 1,
-                        'm4_sinclude' => 1,
-                        'AC_DEFINE_TRACE_LITERAL' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        'AH_OUTPUT' => 1,
-                        'include' => 1,
-                        'AM_ENABLE_MULTILIB' => 1,
-                        'AC_INIT' => 1,
-                        'AC_CANONICAL_SYSTEM' => 1,
-                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
-                        '_AM_COND_ELSE' => 1,
-                        'AC_CANONICAL_BUILD' => 1,
-                        'AC_FC_SRCEXT' => 1,
-                        '_AM_MAKEFILE_INCLUDE' => 1,
-                        'AM_PROG_MOC' => 1,
+                        '_AM_COND_IF' => 1,
+                        'AC_CANONICAL_HOST' => 1,
                         'AM_NLS' => 1,
-                        'LT_CONFIG_LTDL_DIR' => 1,
-                        'AC_FC_PP_DEFINE' => 1,
                         'AM_MAKEFILE_INCLUDE' => 1,
-                        'AM_EXTRA_RECURSIVE_TARGETS' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        '_AM_COND_ENDIF' => 1,
+                        'AH_OUTPUT' => 1,
+                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AC_FC_FREEFORM' => 1,
                         'AM_PATH_GUILE' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'AM_PROG_AR' => 1,
-                        'AM_PROG_F77_C_O' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        '_AM_COND_ELSE' => 1,
+                        'm4_pattern_allow' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'AC_CONFIG_LINKS' => 1,
+                        'AM_PROG_CXX_C_O' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AC_FC_SRCEXT' => 1,
+                        'AC_CANONICAL_TARGET' => 1,
                         'AM_PROG_FC_C_O' => 1,
+                        'AC_FC_PP_DEFINE' => 1,
+                        'AC_REQUIRE_AUX_FILE' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
+                        'AM_PROG_MOC' => 1,
+                        'AC_CONFIG_LIBOBJ_DIR' => 1,
+                        'AM_ENABLE_MULTILIB' => 1,
                         'AM_XGETTEXT_OPTION' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        'AC_CONFIG_SUBDIRS' => 1,
-                        'AC_CANONICAL_HOST' => 1,
-                        'AC_CONFIG_LINKS' => 1,
-                        'AM_CONDITIONAL' => 1
+                        'AC_CONFIG_AUX_DIR' => 1
                       }
                     ], 'Autom4te::Request' ),
              bless( [
@@ -301,114 +301,114 @@
                         'configure.ac'
                       ],
                       {
-                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'AM_PROG_CC_C_O' => 1,
-                        'gt_INTTYPES_PRI' => 1,
-                        'gl_THREADLIB_EARLY' => 1,
-                        'PKG_CHECK_MODULES' => 1,
-                        'gl_AC_HEADER_INTTYPES_H' => 1,
-                        'AM_MAKE_INCLUDE' => 1,
-                        'PKG_INSTALLDIR' => 1,
-                        'AC_LIB_RPATH' => 1,
-                        'gl_FCNTL_O_FLAGS' => 1,
-                        'AC_LIB_PREFIX' => 1,
-                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
-                        'AM_SILENT_RULES' => 1,
+                        '_PKG_SHORT_ERRORS_SUPPORTED' => 1,
+                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+                        'AC_LIB_PROG_LD' => 1,
                         'PKG_CHECK_EXISTS' => 1,
+                        'AC_DEFUN_ONCE' => 1,
+                        '_AM_PROG_TAR' => 1,
+                        'm4_include' => 1,
+                        'AM_ICONV_LINKFLAGS_BODY' => 1,
+                        'AC_LIB_FROMPACKAGE' => 1,
                         'gl_DISABLE_THREADS' => 1,
+                        'include' => 1,
                         'gt_GLIBC2' => 1,
-                        'AC_TYPE_LONG_LONG_INT' => 1,
-                        'gl_THREADLIB_BODY' => 1,
-                        '_AM_DEPENDENCIES' => 1,
-                        'PKG_NOARCH_INSTALLDIR' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'm4_include' => 1,
-                        '_AM_SUBST_NOTMAKE' => 1,
-                        'gl_AC_TYPE_UINTMAX_T' => 1,
-                        'AC_LIB_ARG_WITH' => 1,
-                        'gl_PREREQ_LOCK' => 1,
-                        'AM_XGETTEXT_OPTION_INIT' => 1,
-                        'AM_PO_SUBDIRS' => 1,
-                        'gl_AC_HEADER_STDINT_H' => 1,
-                        '_AC_AM_CONFIG_HEADER_HOOK' => 1,
-                        'gt_LC_MESSAGES' => 1,
-                        'AM_MISSING_PROG' => 1,
-                        'AM_SANITY_CHECK' => 1,
-                        '_AM_AUTOCONF_VERSION' => 1,
-                        'AM_AUX_DIR_EXPAND' => 1,
-                        'AM_DEP_TRACK' => 1,
+                        'AC_LIB_WITH_FINAL_PREFIX' => 1,
+                        '_m4_warn' => 1,
+                        'gt_TYPE_INTMAX_T' => 1,
+                        'AM_PROG_INSTALL_SH' => 1,
+                        'AC_TYPE_UNSIGNED_LONG_LONG_INT' => 1,
+                        'AM_INTL_SUBDIR' => 1,
+                        'AC_CONFIG_MACRO_DIR' => 1,
                         'AC_LIB_APPENDTOVAR' => 1,
-                        'AM_SET_DEPDIR' => 1,
-                        'AC_LIB_FROMPACKAGE' => 1,
-                        'AM_XGETTEXT_OPTION' => 1,
                         'AM_SET_LEADING_DOT' => 1,
-                        'gl_THREADLIB' => 1,
-                        'AM_INIT_AUTOMAKE' => 1,
-                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
-                        'gt_TYPE_WINT_T' => 1,
-                        'gt_INTL_MACOSX' => 1,
-                        'AC_TYPE_UNSIGNED_LONG_LONG_INT' => 1,
-                        '_AM_SET_OPTION' => 1,
-                        'gt_PRINTF_POSIX' => 1,
-                        '_AC_TYPE_LONG_LONG_SNIPPET' => 1,
-                        'include' => 1,
-                        'AC_LIB_LINKFLAGS' => 1,
-                        '_AM_PROG_TAR' => 1,
-                        'gt_INTDIV0' => 1,
-                        '_AM_MANGLE_OPTION' => 1,
-                        'gt_TYPE_WCHAR_T' => 1,
-                        'AC_LIB_PREPARE_PREFIX' => 1,
-                        'AM_POSTPROCESS_PO_MAKEFILE' => 1,
                         'AM_RUN_LOG' => 1,
-                        'gl_XSIZE' => 1,
-                        '_AM_CONFIG_MACRO_DIRS' => 1,
-                        'AC_LIB_HAVE_LINKFLAGS' => 1,
-                        'AC_LIB_PROG_LD_GNU' => 1,
-                        'AC_LIB_LINKFLAGS_FROM_LIBS' => 1,
+                        'gt_INTL_MACOSX' => 1,
                         'AM_MISSING_HAS_RUN' => 1,
-                        'AM_LANGINFO_CODESET' => 1,
-                        'AC_LIB_PREPARE_MULTILIB' => 1,
-                        '_AM_SET_OPTIONS' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        '_m4_warn' => 1,
-                        'AM_PROG_INSTALL_STRIP' => 1,
-                        'AC_LIB_WITH_FINAL_PREFIX' => 1,
-                        'gl_LOCK' => 1,
-                        'AC_LIB_LINKFLAGS_BODY' => 1,
+                        '_AM_DEPENDENCIES' => 1,
                         'PKG_CHECK_VAR' => 1,
-                        'AM_PROG_INSTALL_SH' => 1,
-                        'gl_EXTERN_INLINE' => 1,
-                        'AU_DEFUN' => 1,
-                        '_PKG_SHORT_ERRORS_SUPPORTED' => 1,
                         'AC_COMPUTE_INT' => 1,
-                        'gt_INTL_SUBDIR_CORE' => 1,
-                        'PKG_PROG_PKG_CONFIG' => 1,
-                        'm4_pattern_allow' => 1,
-                        'gt_TYPE_INTMAX_T' => 1,
-                        'AM_AUTOMAKE_VERSION' => 1,
-                        'gl_SIZE_MAX' => 1,
-                        'AM_SUBST_NOTMAKE' => 1,
+                        'gl_FCNTL_O_FLAGS' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'gl_LOCK' => 1,
+                        'gl_AC_HEADER_STDINT_H' => 1,
+                        'gt_TYPE_WCHAR_T' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
                         '_AM_PROG_CC_C_O' => 1,
-                        'AC_LIB_PROG_LD' => 1,
-                        'AM_ICONV' => 1,
+                        'AM_DEP_TRACK' => 1,
+                        'm4_pattern_allow' => 1,
+                        'gl_EXTERN_INLINE' => 1,
+                        'm4_pattern_forbid' => 1,
+                        '_AM_MANGLE_OPTION' => 1,
+                        'PKG_NOARCH_INSTALLDIR' => 1,
+                        'AM_MISSING_PROG' => 1,
+                        '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'AC_LIB_HAVE_LINKFLAGS' => 1,
+                        'PKG_PROG_PKG_CONFIG' => 1,
+                        'AM_XGETTEXT_OPTION' => 1,
+                        'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+                        '_AM_SET_OPTION' => 1,
+                        'AM_MAKE_INCLUDE' => 1,
+                        'AM_PROG_INSTALL_STRIP' => 1,
                         'AC_' => 1,
-                        'gl_GLIBC21' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        'gl_THREADLIB_EARLY' => 1,
+                        'AC_LIB_RPATH' => 1,
+                        'AM_XGETTEXT_OPTION_INIT' => 1,
+                        'AM_AUX_DIR_EXPAND' => 1,
                         'AM_CONDITIONAL' => 1,
-                        'gl_VISIBILITY' => 1,
-                        'AM_ICONV_LINK' => 1,
-                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
-                        'AM_ICONV_LINKFLAGS_BODY' => 1,
-                        'AC_CONFIG_MACRO_DIR' => 1,
+                        'AM_SANITY_CHECK' => 1,
+                        'AC_LIB_LINKFLAGS_BODY' => 1,
+                        'AU_DEFUN' => 1,
                         'AM_GNU_GETTEXT_NEED' => 1,
-                        'AC_DEFUN_ONCE' => 1,
-                        'AM_INTL_SUBDIR' => 1,
+                        'AM_GNU_GETTEXT_VERSION' => 1,
+                        'gt_PRINTF_POSIX' => 1,
+                        'AC_LIB_PROG_LD_GNU' => 1,
                         'AM_PATH_PROG_WITH_TEST' => 1,
-                        'AC_DEFUN' => 1,
+                        'AM_ICONV_LINK' => 1,
+                        'gl_SIZE_MAX' => 1,
+                        'AC_LIB_LINKFLAGS_FROM_LIBS' => 1,
+                        'gl_THREADLIB_BODY' => 1,
+                        'AC_LIB_LINKFLAGS' => 1,
+                        'PKG_INSTALLDIR' => 1,
+                        'gl_VISIBILITY' => 1,
+                        'AC_LIB_PREPARE_MULTILIB' => 1,
                         '_AM_IF_OPTION' => 1,
-                        'gt_GL_ATTRIBUTE' => 1,
+                        'gl_PREREQ_LOCK' => 1,
+                        'gt_INTDIV0' => 1,
+                        'AM_LANGINFO_CODESET' => 1,
+                        'gt_LC_MESSAGES' => 1,
                         'gl_THREADLIB_EARLY_BODY' => 1,
+                        'AM_POSTPROCESS_PO_MAKEFILE' => 1,
+                        'gl_GLIBC21' => 1,
+                        'gl_AC_HEADER_INTTYPES_H' => 1,
+                        'gt_GL_ATTRIBUTE' => 1,
+                        'gl_XSIZE' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+                        'AM_ICONV' => 1,
+                        'AM_PO_SUBDIRS' => 1,
+                        'AC_LIB_ARG_WITH' => 1,
+                        'gl_THREADLIB' => 1,
+                        'AC_CONFIG_MACRO_DIR_TRACE' => 1,
+                        'AM_SUBST_NOTMAKE' => 1,
+                        'gl_AC_TYPE_UINTMAX_T' => 1,
+                        'AM_SET_DEPDIR' => 1,
                         'AM_NLS' => 1,
-                        'AM_GNU_GETTEXT_VERSION' => 1
+                        'gt_TYPE_WINT_T' => 1,
+                        'gt_INTTYPES_PRI' => 1,
+                        'AC_LIB_PREFIX' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'PKG_CHECK_MODULES' => 1,
+                        'AC_LIB_PREPARE_PREFIX' => 1,
+                        '_AM_SET_OPTIONS' => 1,
+                        '_AM_CONFIG_MACRO_DIRS' => 1,
+                        'gt_INTL_SUBDIR_CORE' => 1,
+                        '_AM_AUTOCONF_VERSION' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        '_AC_TYPE_LONG_LONG_SNIPPET' => 1,
+                        'AC_DEFUN' => 1,
+                        'AC_TYPE_LONG_LONG_INT' => 1
                       }
                     ], 'Autom4te::Request' )
            );
diff --git a/config.log b/config.log
index 524297c..ea6cdb1 100644
--- a/config.log
+++ b/config.log
@@ -10,7 +10,7 @@ generated by GNU Autoconf 2.69.  Invocation command line was
 ## Platform. ##
 ## --------- ##
 
-hostname = Device-13CD59
+hostname = localhost
 uname -m = x86_64
 uname -r = 3.18.11-rt7
 uname -s = Linux
@@ -1205,7 +1205,7 @@ configure:8169: result: yes
 configure:8169: checking for pthread.h
 configure:8169: result: yes
 configure:8207: gcc -o conftest -g -O2   conftest.c -lrt -lm -ldl   >&5
-/usr/bin/ld: /tmp/cc0pvST0.o: undefined reference to symbol 'pthread_mutexattr_init@@GLIBC_2.2.5'
+/usr/bin/ld: /tmp/ccleTYWh.o: undefined reference to symbol 'pthread_mutexattr_init@@GLIBC_2.2.5'
 /lib64/libpthread.so.0: error adding symbols: DSO missing from command line
 collect2: error: ld returned 1 exit status
 configure:8207: $? = 1
@@ -2928,7 +2928,7 @@ generated by GNU Autoconf 2.69.  Invocation command line was
   CONFIG_COMMANDS = 
   $ ./config.status 
 
-on Device-13CD59
+on localhost
 
 config.status:1089: creating Makefile
 config.status:1089: creating config.h
@@ -2949,43 +2949,7 @@ generated by GNU Autoconf 2.69.  Invocation command line was
   CONFIG_COMMANDS = 
   $ ./config.status config.h
 
-on Device-13CD59
+on localhost
 
 config.status:1089: creating config.h
 config.status:1270: config.h is unchanged
-
-## ---------------------- ##
-## Running config.status. ##
-## ---------------------- ##
-
-This file was extended by ags config.status 0.4.2, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = 
-  CONFIG_HEADERS  = 
-  CONFIG_LINKS    = 
-  CONFIG_COMMANDS = 
-  $ ./config.status Makefile depfiles
-
-on Device-13CD59
-
-config.status:1089: creating Makefile
-config.status:1318: executing depfiles commands
-
-## ---------------------- ##
-## Running config.status. ##
-## ---------------------- ##
-
-This file was extended by ags config.status 0.4.2, which was
-generated by GNU Autoconf 2.69.  Invocation command line was
-
-  CONFIG_FILES    = 
-  CONFIG_HEADERS  = 
-  CONFIG_LINKS    = 
-  CONFIG_COMMANDS = 
-  $ ./config.status Makefile depfiles
-
-on Device-13CD59
-
-config.status:1089: creating Makefile
-config.status:1318: executing depfiles commands
diff --git a/src/ags/X/ags_line.c b/src/ags/X/ags_line.c
index f880a24..57c5435 100644
--- a/src/ags/X/ags_line.c
+++ b/src/ags/X/ags_line.c
@@ -413,8 +413,6 @@ ags_line_connect(AgsConnectable *connectable)
 			 0);
     }
   }else{
-    //    line->flags &= (~AGS_LINE_PREMAPPED_RECALL);
-
     ags_line_find_port(line);
   }
 
diff --git a/src/ags/X/ags_line_callbacks.c b/src/ags/X/ags_line_callbacks.c
index 6fe4033..58d79f6 100644
--- a/src/ags/X/ags_line_callbacks.c
+++ b/src/ags/X/ags_line_callbacks.c
@@ -209,7 +209,8 @@ ags_line_peak_run_post_callback(AgsRecall *peak_channel,
 }
 
 void
-ags_line_channel_done_callback(AgsChannel *source, AgsLine *line)
+ags_line_channel_done_callback(AgsChannel *source, AgsRecallID *recall_id,
+			       AgsLine *line)
 {
   AgsChannel *channel;
   AgsDevoutPlay *devout_play;
@@ -217,8 +218,6 @@ ags_line_channel_done_callback(AgsChannel *source, AgsLine *line)
   GList *current_recall;
   gboolean all_done;
 
-  g_message("ags_line_channel_done\0");
-
   channel = AGS_PAD(AGS_LINE(line)->pad)->channel;
   next_pad = channel->next_pad;
 
diff --git a/src/ags/X/ags_line_callbacks.h b/src/ags/X/ags_line_callbacks.h
index 27d3ce2..e98becb 100644
--- a/src/ags/X/ags_line_callbacks.h
+++ b/src/ags/X/ags_line_callbacks.h
@@ -49,7 +49,7 @@ void ags_line_recall_volume_cancel(AgsRecall *recall,
 				   AgsLine *line);
 
 /* AgsRecall - play */
-void ags_line_channel_done_callback(AgsChannel *channel,
+void ags_line_channel_done_callback(AgsChannel *channel, AgsRecallID *recall_id,
 				    AgsLine *line);
 void ags_line_play_channel_run_cancel(AgsRecall *recall,
 				      AgsLine *line);
diff --git a/src/ags/X/ags_machine.c b/src/ags/X/ags_machine.c
index 6387680..dd79c37 100644
--- a/src/ags/X/ags_machine.c
+++ b/src/ags/X/ags_machine.c
@@ -369,6 +369,8 @@ ags_machine_set_property(GObject *gobject,
 			   "channel\0", output,
 			   NULL);
 
+	      g_list_free(line);
+	      
 	      output = output->next_pad;
 	      pad = pad->next;
 	      i++;
@@ -417,6 +419,8 @@ ags_machine_set_property(GObject *gobject,
 			   "channel\0", input,
 			   NULL);
 
+	      g_list_free(line);
+
 	      input = input->next_pad;
 	      pad = pad->next;
 	      i++;
diff --git a/src/ags/X/machine/ags_drum.c b/src/ags/X/machine/ags_drum.c
index 8bf2120..8725743 100644
--- a/src/ags/X/machine/ags_drum.c
+++ b/src/ags/X/machine/ags_drum.c
@@ -732,8 +732,7 @@ ags_drum_launch_task(AgsFileLaunch *file_launch, AgsDrum *drum)
   if(!g_strcmp0(xmlGetProp(node,
 			   "loop\0"),
 		AGS_FILE_TRUE)){
-    gtk_toggle_button_set_active((GtkToggleButton *) drum->loop_button,
-				 TRUE);
+    gtk_button_clicked(drum->loop_button);
   }
 
   /* index */
@@ -743,11 +742,7 @@ ags_drum_launch_task(AgsFileLaunch *file_launch, AgsDrum *drum)
 			   10);
 
   if(index != 0){
-    gtk_toggle_button_set_active(drum->index0[0],
-				 FALSE);
-    gtk_toggle_button_set_active(drum->index0[index],
-				 TRUE);
-    drum->selected0 = drum->index0[index];
+    gtk_button_clicked(drum->index0[index]);
   }
 
   index = g_ascii_strtoull(xmlGetProp(node,
@@ -756,11 +751,7 @@ ags_drum_launch_task(AgsFileLaunch *file_launch, AgsDrum *drum)
 			   10);
 
   if(index != 0){
-    gtk_toggle_button_set_active(drum->index1[0],
-				 FALSE);
-    gtk_toggle_button_set_active(drum->index1[index],
-				 TRUE);
-    drum->selected1 = drum->index1[index];
+    gtk_button_clicked(drum->index1[index]);
   }
 }
 
diff --git a/src/ags/X/machine/ags_drum_input_line.c b/src/ags/X/machine/ags_drum_input_line.c
index 0f053c3..9421e31 100644
--- a/src/ags/X/machine/ags_drum_input_line.c
+++ b/src/ags/X/machine/ags_drum_input_line.c
@@ -342,7 +342,8 @@ ags_drum_input_line_set_channel(AgsLine *line, AgsChannel *channel)
 
   if(channel != NULL){
     if(channel->audio != NULL &&
-       AGS_AUDIO(channel->audio)->devout != NULL){
+       AGS_AUDIO(channel->audio)->devout != NULL &&
+       ags_audio_signal_get_template(channel->first_recycling->audio_signal) == NULL){
       AgsAudioSignal *audio_signal;
 
       audio_signal = ags_audio_signal_new(AGS_AUDIO(channel->audio)->devout,
diff --git a/src/ags/X/machine/ags_drum_input_pad.c b/src/ags/X/machine/ags_drum_input_pad.c
index 980d06a..f42ff46 100644
--- a/src/ags/X/machine/ags_drum_input_pad.c
+++ b/src/ags/X/machine/ags_drum_input_pad.c
@@ -29,6 +29,7 @@
 #include <ags/file/ags_file_stock.h>
 #include <ags/file/ags_file_id_ref.h>
 #include <ags/file/ags_file_lookup.h>
+#include <ags/file/ags_file_launch.h>
 
 #include <ags/X/ags_window.h>
 
@@ -48,8 +49,7 @@ void ags_drum_input_pad_set_name(AgsPlugin *plugin, gchar *name);
 gchar* ags_drum_input_pad_get_xml_type(AgsPlugin *plugin);
 void ags_drum_input_pad_set_xml_type(AgsPlugin *plugin, gchar *xml_type);
 void ags_drum_input_pad_read(AgsFile *file, xmlNode *node, AgsPlugin *plugin);
-void ags_drum_input_pad_resolve_drum(AgsFileLookup *file_lookup,
-				     AgsDrumInputPad *drum_input_pad);
+void ags_drum_input_pad_launch_task(AgsFileLaunch *file_launch, AgsDrumInputPad *drum_input_pad);
 xmlNode* ags_drum_input_pad_write(AgsFile *file, xmlNode *parent, AgsPlugin *plugin);
 
 void ags_drum_input_pad_set_channel(AgsPad *pad, AgsChannel *channel);
@@ -269,7 +269,7 @@ void
 ags_drum_input_pad_read(AgsFile *file, xmlNode *node, AgsPlugin *plugin)
 {
   AgsDrumInputPad *gobject;
-  AgsFileLookup *file_lookup;
+  AgsFileLaunch *file_launch;
 
   gobject = AGS_DRUM_INPUT_PAD(plugin);
 
@@ -281,38 +281,31 @@ ags_drum_input_pad_read(AgsFile *file, xmlNode *node, AgsPlugin *plugin)
 				   "xpath\0", g_strdup_printf("xpath=//*[@id='%s']\0", xmlGetProp(node, AGS_FILE_ID_PROP)),
 				   "reference\0", gobject,
 				   NULL));
-
-  if(!xmlStrncmp(xmlGetProp(node,
-			    "edit\0"),
-		 AGS_FILE_TRUE,
-		 5)){
-    gtk_toggle_button_set_active(gobject->edit,
-				 TRUE);
-  }else{
-    gtk_toggle_button_set_active(gobject->edit,
-				 FALSE);
-  }
-
-  file_lookup = (AgsFileLookup *) g_object_new(AGS_TYPE_FILE_LOOKUP,
-					       "file\0", file,
+  
+  /*  */
+  file_launch = (AgsFileLaunch *) g_object_new(AGS_TYPE_FILE_LAUNCH,
 					       "node\0", node,
-					       "reference\0", gobject,
+					       "file\0", file,
 					       NULL);
-  ags_file_add_lookup(file, (GObject *) file_lookup);
-  g_signal_connect(G_OBJECT(file_lookup), "resolve\0",
-		   G_CALLBACK(ags_drum_input_pad_resolve_drum), gobject);
+  g_signal_connect(G_OBJECT(file_launch), "start\0",
+		   G_CALLBACK(ags_drum_input_pad_launch_task), gobject);
+  ags_file_add_launch(file,
+		      (GObject *) file_launch);
 }
 
 void
-ags_drum_input_pad_resolve_drum(AgsFileLookup *file_lookup,
-				AgsDrumInputPad *drum_input_pad)
+ags_drum_input_pad_launch_task(AgsFileLaunch *file_launch, AgsDrumInputPad *drum_input_pad)
 {
-  AgsDrum *drum;
+  xmlNode *node;
 
-  drum = (AgsDrum *) gtk_widget_get_ancestor((GtkWidget *) drum_input_pad, AGS_TYPE_DRUM);
+  node = file_launch->node;
 
-  drum->selected_edit_button = (GtkToggleButton *) drum_input_pad->edit;
-  drum->selected_pad = drum_input_pad;
+  if(!xmlStrncmp(xmlGetProp(node,
+			    "edit\0"),
+		 AGS_FILE_TRUE,
+		 5)){
+    gtk_button_clicked(drum_input_pad->edit);
+  }
 }
 
 xmlNode*
diff --git a/src/ags/X/machine/ags_drum_input_pad_callbacks.c b/src/ags/X/machine/ags_drum_input_pad_callbacks.c
index 0f12ece..40b2583 100644
--- a/src/ags/X/machine/ags_drum_input_pad_callbacks.c
+++ b/src/ags/X/machine/ags_drum_input_pad_callbacks.c
@@ -22,6 +22,7 @@
 
 #include <ags/main.h>
 
+#include <ags/thread/ags_mutex_manager.h>
 #include <ags/thread/ags_audio_loop.h>
 #include <ags/thread/ags_task_thread.h>
 
@@ -60,6 +61,8 @@ void ags_drum_input_pad_init_channel_launch_callback(AgsTask *task, AgsDrumInput
 #define AGS_DRUM_INPUT_PAD_OPEN_AUDIO_FILE_NAME "AgsDrumInputPadOpenAudioFileName\0"
 #define AGS_DRUM_INPUT_PAD_OPEN_SPIN_BUTTON "AgsDrumInputPadOpenSpinButton\0"
 
+extern pthread_mutex_t ags_application_mutex;
+
 void
 ags_drum_input_pad_open_callback(GtkWidget *widget, AgsDrumInputPad *drum_input_pad)
 {
@@ -347,15 +350,33 @@ void
 ags_drum_input_pad_play_callback(GtkToggleButton *toggle_button, AgsDrumInputPad *drum_input_pad)
 {
   AgsDrum *drum;
+
   AgsDevout *devout;
+  AgsChannel *channel;
+
   AgsAudioLoop *audio_loop;
   AgsTaskThread *task_thread;
   AgsDevoutThread *devout_thread;
-  AgsChannel *channel;
+
+  AgsMutexManager *mutex_manager;
+
   GList *tasks;
 
+  pthread_mutex_t *audio_mutex;
+  
   drum = (AgsDrum *) gtk_widget_get_ancestor((GtkWidget *) drum_input_pad, AGS_TYPE_DRUM);
 
+  pthread_mutex_lock(&(ags_application_mutex));
+  
+  mutex_manager = ags_mutex_manager_get_instance();
+
+  audio_mutex = ags_mutex_manager_lookup(mutex_manager,
+					 (GObject *) AGS_MACHINE(drum)->audio);
+  
+  pthread_mutex_unlock(&(ags_application_mutex));
+
+  pthread_mutex_lock(audio_mutex);
+  
   devout = AGS_DEVOUT(AGS_MACHINE(drum)->audio->devout);
 
   audio_loop = AGS_AUDIO_LOOP(AGS_MAIN(devout->ags_main)->main_loop);
@@ -429,6 +450,7 @@ ags_drum_input_pad_play_callback(GtkToggleButton *toggle_button, AgsDrumInputPad
 
     if(AGS_DEVOUT_PLAY(channel->devout_play)->recall_id[0] == NULL ||
        (AGS_DEVOUT_PLAY_DONE & (AGS_DEVOUT_PLAY(channel->devout_play)->recall_id[0]->flags)) != 0){
+      pthread_mutex_unlock(audio_mutex);
       return;
     }
 
@@ -481,6 +503,8 @@ ags_drum_input_pad_play_callback(GtkToggleButton *toggle_button, AgsDrumInputPad
       }
     }
   }
+  
+  pthread_mutex_unlock(audio_mutex);
 }
 
 void
@@ -518,11 +542,11 @@ ags_drum_input_pad_init_channel_launch_callback(AgsTask *task,
 				  AGS_TYPE_PLAY_CHANNEL_RUN);
     //TODO:JK: fix me
     //    g_list_free(tmp);
-    
+
     if(recall != NULL){
       g_signal_connect_after(channel, "done\0",
-			     G_CALLBACK(ags_line_channel_done_callback), list->data);
-
+			     G_CALLBACK(ags_line_channel_done_callback), AGS_LINE(list->data));
+      
       /* add audio signal */
       recycling = channel->first_recycling;
 
diff --git a/src/ags/audio/ags_channel.c b/src/ags/audio/ags_channel.c
index eea8e77..5393c19 100644
--- a/src/ags/audio/ags_channel.c
+++ b/src/ags/audio/ags_channel.c
@@ -219,7 +219,7 @@ ags_channel_class_init(AgsChannelClass *channel)
 		 G_STRUCT_OFFSET (AgsChannelClass, done),
 		 NULL, NULL,
 		 g_cclosure_marshal_VOID__OBJECT,
-		 G_TYPE_NONE, 0,
+		 G_TYPE_NONE, 1,
 		 G_TYPE_OBJECT);
 }
 
diff --git a/src/ags/audio/task/ags_cancel_channel.c b/src/ags/audio/task/ags_cancel_channel.c
index 1d29b0a..74dae14 100644
--- a/src/ags/audio/task/ags_cancel_channel.c
+++ b/src/ags/audio/task/ags_cancel_channel.c
@@ -145,6 +145,7 @@ ags_cancel_channel_launch(AgsTask *task)
 {
   AgsCancelChannel *cancel_channel;
   AgsChannel *channel;
+  AgsRecallID *recall_id;
 
   cancel_channel = AGS_CANCEL_CHANNEL(task);
 
@@ -155,13 +156,19 @@ ags_cancel_channel_launch(AgsTask *task)
     return;
   }
 
-  g_object_ref(AGS_DEVOUT_PLAY(channel->devout_play)->recall_id[0]);
+  recall_id = AGS_DEVOUT_PLAY(channel->devout_play)->recall_id[0];
+  
+  g_object_ref(recall_id);
   ags_channel_tillrecycling_cancel(channel,
-				   AGS_DEVOUT_PLAY(channel->devout_play)->recall_id[0]);
+				   recall_id);
 
   /* set remove flag */
   AGS_DEVOUT_PLAY(channel->devout_play)->flags |= (AGS_DEVOUT_PLAY_DONE | AGS_DEVOUT_PLAY_REMOVE);
   AGS_DEVOUT_PLAY(channel->devout_play)->recall_id[0] = NULL;
+  
+  /* emit done */
+  ags_channel_done(channel,
+		   recall_id);
 }
 
 /**
diff --git a/src/ags/audio/task/ags_start_devout.c b/src/ags/audio/task/ags_start_devout.c
index 7ff7315..d4b98ba 100644
--- a/src/ags/audio/task/ags_start_devout.c
+++ b/src/ags/audio/task/ags_start_devout.c
@@ -156,11 +156,15 @@ ags_start_devout_launch(AgsTask *task)
 
   devout = start_devout->devout;
 
+  audio_loop = AGS_AUDIO_LOOP(AGS_MAIN(devout->ags_main)->main_loop);
+
   if((AGS_DEVOUT_PLAY & (devout->flags)) != 0){
+    audio_loop->flags |= (AGS_AUDIO_LOOP_PLAY_AUDIO |
+			  AGS_AUDIO_LOOP_PLAY_CHANNEL |
+			  AGS_AUDIO_LOOP_PLAY_RECALL);
     return;
   }
 
-  audio_loop = AGS_AUDIO_LOOP(AGS_MAIN(devout->ags_main)->main_loop);
   devout_thread = AGS_DEVOUT_THREAD(audio_loop->devout_thread);
 
   /* append to AgsDevout */
diff --git a/src/ags/file/ags_file_gui.c b/src/ags/file/ags_file_gui.c
index 56eb6f6..a6b3728 100644
--- a/src/ags/file/ags_file_gui.c
+++ b/src/ags/file/ags_file_gui.c
@@ -37,7 +37,15 @@
 #include <ags/file/ags_file_lookup.h>
 #include <ags/file/ags_file_launch.h>
 
+#include <ags/audio/ags_channel.h>
 #include <ags/audio/ags_input.h>
+#include <ags/audio/ags_recall.h>
+#include <ags/audio/ags_recall_container.h>
+
+#include <ags/audio/recall/ags_peak_channel.h>
+#include <ags/audio/recall/ags_peak_channel_run.h>
+
+#include <ags/X/ags_line_callbacks.h>
 
 #include <ags/X/machine/ags_drum_input_line_callbacks.h>
 
@@ -1169,7 +1177,7 @@ ags_file_read_pad_resolve_channel(AgsFileLookup *file_lookup,
     channel_node = xpath_object->nodesetval->nodeTab[i];
 
     file_id_ref = (AgsFileIdRef *) ags_file_find_id_ref_by_node(file,
-								channel_node->parent);
+								channel_node);
     g_object_set(G_OBJECT(pad),
 		 "channel\0", AGS_CHANNEL(file_id_ref->ref),
 		 NULL);
@@ -1607,7 +1615,7 @@ ags_file_read_line_resolve_channel(AgsFileLookup *file_lookup,
     channel_node = xpath_object->nodesetval->nodeTab[i];
 
     file_id_ref = (AgsFileIdRef *) ags_file_find_id_ref_by_node(file,
-								channel_node->parent);
+								channel_node);
 
     g_object_set(G_OBJECT(line),
 		 "channel\0", AGS_CHANNEL(file_id_ref->ref),
@@ -1917,11 +1925,12 @@ ags_file_read_line_member(AgsFile *file, xmlNode *node, AgsLineMember **line_mem
       gtk_range_set_inverted(GTK_RANGE(child_widget),
 			     TRUE);
     }
-  }else if(AGS_IS_INDICATOR(child_widget)){
+  }else if(AGS_IS_VINDICATOR(child_widget)){
     adjustment = (GtkAdjustment *) gtk_adjustment_new(0.0, 0.0, 10.0, 1.0, 1.0, 10.0);
     g_object_set(child_widget,
 		 "adjustment\0", adjustment,
 		 NULL);
+    gtk_widget_queue_draw(child_widget);
   }
 
   //TODO:JK: implement more types
@@ -1981,6 +1990,7 @@ void
 ags_file_read_line_member_resolve_port(AgsFileLookup *file_lookup,
 				       AgsLineMember *line_member)
 {
+  GtkWidget *child_widget;
   AgsFileIdRef *id_ref;
   gchar *xpath;
 
@@ -2013,6 +2023,53 @@ ags_file_read_line_member_resolve_port(AgsFileLookup *file_lookup,
 		   NULL);
     }
   }
+
+  child_widget = (GtkWidget *) gtk_bin_get_child(GTK_BIN(line_member));
+
+  if(AGS_IS_VINDICATOR(child_widget)){
+    AgsLine *line;
+    AgsChannel *source;
+    
+    AgsPeakChannelRun *recall_peak_channel_run, *play_peak_channel_run;
+    AgsRecallHandler *recall_handler;
+    GList *list;
+
+    line = gtk_widget_get_ancestor(line_member,
+				   AGS_TYPE_LINE);
+    source = line->channel;
+    
+    /* play - connect run_post */
+    list = ags_recall_template_find_type(source->play,
+					 AGS_TYPE_PEAK_CHANNEL_RUN);
+
+    if(list != NULL){
+      play_peak_channel_run = AGS_PEAK_CHANNEL_RUN(list->data);
+
+      recall_handler = (AgsRecallHandler *) malloc(sizeof(AgsRecallHandler));
+
+      recall_handler->signal_name = "run-post\0";
+      recall_handler->callback = G_CALLBACK(ags_line_peak_run_post_callback);
+      recall_handler->data = (gpointer) line;
+
+      ags_recall_add_handler(AGS_RECALL(play_peak_channel_run), recall_handler);
+    }
+
+    /* recall - connect run_post */
+    list = ags_recall_template_find_type(source->recall,
+					 AGS_TYPE_PEAK_CHANNEL_RUN);
+
+    if(list != NULL){
+      recall_peak_channel_run = AGS_PEAK_CHANNEL_RUN(list->data);
+
+      recall_handler = (AgsRecallHandler *) malloc(sizeof(AgsRecallHandler));
+
+      recall_handler->signal_name = "run-post\0";
+      recall_handler->callback = G_CALLBACK(ags_line_peak_run_post_callback);
+      recall_handler->data = (gpointer) line;
+
+      ags_recall_add_handler(AGS_RECALL(recall_peak_channel_run), recall_handler);
+    }
+  }
 }
 
 xmlNode*
diff --git a/src/ags/thread/ags_audio_loop.c b/src/ags/thread/ags_audio_loop.c
index 4c0324a..e375f1c 100644
--- a/src/ags/thread/ags_audio_loop.c
+++ b/src/ags/thread/ags_audio_loop.c
@@ -914,6 +914,7 @@ ags_audio_loop_play_channel(AgsAudioLoop *audio_loop)
       /*  */
       if((AGS_DEVOUT_PLAY_REMOVE & (play->flags)) == 0){
 	remove_play = FALSE;
+	
 	if((AGS_DEVOUT_PLAY_SUPER_THREADED & (play->flags)) == 0){
 	  /* not super threaded */
 	  if((AGS_DEVOUT_PLAY_PLAYBACK & (play->flags)) != 0){
@@ -945,16 +946,15 @@ ags_audio_loop_play_channel(AgsAudioLoop *audio_loop)
 	    pthread_cond_signal(&(play->iterator_thread[2]->tic_cond));
 	  }
 	}
+      }else{
+	remove_play = TRUE;
       }
 
       if(remove_play){
 	audio_loop->play_channel_ref = audio_loop->play_channel_ref - 1;
 	audio_loop->play_channel = g_list_remove(audio_loop->play_channel, (gpointer) play);
 
-	ags_channel_done(play->source,
-			 play->recall_id[0]);
-
-	play->flags &= (~(AGS_DEVOUT_PLAY_REMOVE));
+	play->flags &= (~(AGS_DEVOUT_PLAY_DONE | AGS_DEVOUT_PLAY_REMOVE));
 	play->recall_id[0] = NULL;
 	//TODO:JK: verify g_object_unref() missing
       }

-- 
gsequencer packaging



More information about the pkg-multimedia-commits mailing list