[SCM] gmtk/upstream: Imported Upstream version 1.0.7

sramacher-guest at users.alioth.debian.org sramacher-guest at users.alioth.debian.org
Mon Nov 5 21:56:31 UTC 2012


The following commit has been merged in the upstream branch:
commit c92f0f31d1e437f1385f71ef3c708d203cf252b6
Author: Sebastian Ramacher <sebastian at ramacher.at>
Date:   Mon Nov 5 21:45:18 2012 +0100

    Imported Upstream version 1.0.7

diff --git a/ChangeLog b/ChangeLog
index fb6887c..4ab78c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,14 +1,69 @@
 Development
-	Assign NULL to freed strings
-	Updated Japanese translation
-	Remove debug message
-	Kill GTK widget oversize warning
+    Rerun autoreconf -fiv
+1.0.7b
+	Make 'o' toggle the OSD in gmtk_media_player
+    Update makefile so that libgmtk is dependent on libgmlib so that parallel builds work
+    Updated Polish translation
+    Add anamorphic aspect ratio (2.39:1)
+    Fix problem with audio only file restarts in gmtk_media_player gnome-mplayer Issue #634
+    Clean up double setting of media_device in gmtk_media_player
+	Add subtitle step forward and backward commands
+    Basic scrolling wheel patch from Gnome Mplayer Issue #621
+	Don't flush events when querying devices
+    Cleanup GTK depreciated warnings in gmtk_media_tracker
+    Cleanup gtk_widget_get_pointer depreciated warning on GTK 3.4
+    Version the libraries that are built
+    Change error message dialog in thread_reader_error to event that is raised, let the front end handle it
+    add gm_bool_to_string() macro (use like a function returning const gchar*)
+    Clear artist, title and album on media end, prevents wrong cover art lookup
+    Change gmtk_media_player_log_state log level from DEBUG to INFO
+    Move and add gmtk_media_player_log_state status messages around
+    Prevent class cast on possible NULL pointer
+    Emit mplayer_complete_cond anytime we find an error reading from the mplayer thread
+    new function gm_log_name_this_thread(): improves thread logging
+    Fix usage of status in thread_reader_error correctly
+    Clean up the pointer math in gmtk_media_player_log_state
+    Clean up some memory allocations identified by valgrind
+    Print thread number with all debug messages if GM_DEBUG_THREADS is set
+    Change strchr to g_strrstr in gm_log
+    Uppercase constant GMPLS_LEN
+    Define the player_lock mutex
+    Fix a double free at program exit time (removes an occasional segfault)
+    Initialize a struct to 0 to remove "branch depends on uninitialized memory" error
+    Fix "pointer to object on stack passed out of function" bug.
+    Add a function attribute, so calls to gm_log() are checked for printf format string errors 
+    Hook gm_log functions into the remainder of the sources
+    Hook functions from gm_log into the main gmtk_media_player class, add log_state method
+    Make gm_log.c/,h compatible with indent
+    Fix compile error in gm_log
+    Adjust formatting in gm_log files to match up with rest of project
+    Add in gm_log from Hans Ecke
+    Return a NULL instead of a "" string for metadata
+    Apply patch from Issue #9 to fix some cppcheck warnings
+    Fix a couple of keyboard shortcuts as they were in the wrong shift state, similar to gnome-mplayer fix
+    Initialize some media metadata
+    Change some minor video initialization setup steps
+    Implement getting ATTRIBUTE_SPEED_SET
+    Fix problem with removal of read metadata and replacing it with filename info
+    Fix compiler warning detected by clang
+    Monitor sub visiblity better gnome-mplayer Issue #615
+    Protect against possible divide by zero in gmtk_media_player_size_allocate
+    Correct situation where media player window allocation is small or incorrect
+	If mplayer emits a signal at position 0 retry once
+	Fix logic error in ERROR_RETRY
+    Replace g_strncasecmp with g_ascii_strncasecmp
+1.0.6
+    Set black background color for all GTK States on media widget
+    Assign NULL to freed strings
+    Updated Japanese translation
+    Remove debug message
+    Kill GTK widget oversize warning
     Apply recommendation from Issue #6
     Apply patch from Issue #7, codecs not reset to NULL
-	Only do the restart on decoding error if the position is 0 (window size issue)
-	Allow one decoding error restart
-	Fix error when shifting protocol from mms to mmsh
-	Updated Turkish translation
+    Only do the restart on decoding error if the position is 0 (window size issue)
+    Allow one decoding error restart
+    Fix error when shifting protocol from mms to mmsh
+    Updated Turkish translation
 1.0.6b1
     Track gtk2 and gtk3 in gmtk.pc file
     Enhance subtitle visibility tracking
diff --git a/INSTALL b/INSTALL
index 7d1c323..a1e89e1 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,8 +1,8 @@
 Installation Instructions
 *************************
 
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
+Inc.
 
    Copying and distribution of this file, with or without modification,
 are permitted in any medium without royalty provided the copyright
@@ -226,6 +226,11 @@ order to use an ANSI C compiler:
 
 and if that doesn't work, install pre-built binaries of GCC for HP-UX.
 
+   HP-UX `make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as `configure' are involved.  Use GNU `make'
+instead.
+
    On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
 parse its `<wchar.h>' header file.  The option `-nodtk' can be used as
 a workaround.  If GNU CC is not installed, it is therefore recommended
diff --git a/Makefile.in b/Makefile.in
index 9e1684f..b1d48c0 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -16,6 +16,23 @@
 @SET_MAKE@
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -53,11 +70,11 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES = gmtk.spec
 CONFIG_CLEAN_VPATH_FILES =
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
 SOURCES =
 DIST_SOURCES =
@@ -68,6 +85,11 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	install-pdf-recursive install-ps-recursive install-recursive \
 	installcheck-recursive installdirs-recursive pdf-recursive \
 	ps-recursive uninstall-recursive
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -89,6 +111,12 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(gmtkdocdir)"
 DATA = $(gmtkdoc_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
@@ -103,9 +131,11 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
 am__remove_distdir = \
-  { test ! -d "$(distdir)" \
-    || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
-         && rm -fr "$(distdir)"; }; }
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
 am__relativize = \
   dir0=`pwd`; \
   sed_first='s,^\([^/]*\)/.*$$,\1,'; \
@@ -134,6 +164,8 @@ am__relativize = \
 DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
 distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
 ALL_LINGUAS = @ALL_LINGUAS@
@@ -233,12 +265,15 @@ LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIB_VERSION = @LIB_VERSION@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
+MAJOR_VERSION = @MAJOR_VERSION@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
+MINOR_VERSION = @MINOR_VERSION@
 MKDIR_P = @MKDIR_P@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
@@ -269,6 +304,7 @@ PULSE_CFLAGS = @PULSE_CFLAGS@
 PULSE_DEFINES = @PULSE_DEFINES@
 PULSE_LIBS = @PULSE_LIBS@
 RANLIB = @RANLIB@
+RELEASE_VERSION = @RELEASE_VERSION@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -361,7 +397,7 @@ all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
-am--refresh:
+am--refresh: Makefile
 	@:
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
 	@for dep in $?; do \
@@ -397,10 +433,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-	@if test ! -f $@; then \
-	  rm -f stamp-h1; \
-	  $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
-	else :; fi
+	@if test ! -f $@; then rm -f stamp-h1; else :; fi
+	@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
 	@rm -f stamp-h1
@@ -425,8 +459,11 @@ distclean-libtool:
 	-rm -f libtool config.lt
 install-gmtkdocDATA: $(gmtkdoc_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(gmtkdocdir)" || $(MKDIR_P) "$(DESTDIR)$(gmtkdocdir)"
 	@list='$(gmtkdoc_DATA)'; test -n "$(gmtkdocdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(gmtkdocdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(gmtkdocdir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -440,9 +477,7 @@ uninstall-gmtkdocDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(gmtkdoc_DATA)'; test -n "$(gmtkdocdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(gmtkdocdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(gmtkdocdir)" && rm -f $$files
+	dir='$(DESTDIR)$(gmtkdocdir)'; $(am__uninstall_files_from_dir)
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -613,13 +648,10 @@ distdir: $(DISTFILES)
 	done
 	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -d "$(distdir)/$$subdir" \
-	    || $(MKDIR_P) "$(distdir)/$$subdir" \
-	    || exit 1; \
-	  fi; \
-	done
-	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
+	    $(am__make_dryrun) \
+	      || test -d "$(distdir)/$$subdir" \
+	      || $(MKDIR_P) "$(distdir)/$$subdir" \
+	      || exit 1; \
 	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
 	    $(am__relativize); \
 	    new_distdir=$$reldir; \
@@ -654,7 +686,11 @@ dist-gzip: distdir
 	$(am__remove_distdir)
 
 dist-bzip2: distdir
-	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-lzip: distdir
+	tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
 	$(am__remove_distdir)
 
 dist-lzma: distdir
@@ -662,7 +698,7 @@ dist-lzma: distdir
 	$(am__remove_distdir)
 
 dist-xz: distdir
-	tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz
+	tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
 	$(am__remove_distdir)
 
 dist-tarZ: distdir
@@ -693,6 +729,8 @@ distcheck: dist
 	  bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
 	*.tar.lzma*) \
 	  lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
+	*.tar.lz*) \
+	  lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
 	*.tar.xz*) \
 	  xz -dc $(distdir).tar.xz | $(am__untar) ;;\
 	*.tar.Z*) \
@@ -702,7 +740,7 @@ distcheck: dist
 	*.zip*) \
 	  unzip $(distdir).zip ;;\
 	esac
-	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	chmod -R a-w $(distdir); chmod u+w $(distdir)
 	mkdir $(distdir)/_build
 	mkdir $(distdir)/_inst
 	chmod a-w $(distdir)
@@ -712,6 +750,7 @@ distcheck: dist
 	  && am__cwd=`pwd` \
 	  && $(am__cd) $(distdir)/_build \
 	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(AM_DISTCHECK_CONFIGURE_FLAGS) \
 	    $(DISTCHECK_CONFIGURE_FLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) \
 	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -740,8 +779,16 @@ distcheck: dist
 	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
 	  sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
 distuninstallcheck:
-	@$(am__cd) '$(distuninstallcheck_dir)' \
-	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	@test -n '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: trying to run $@ with an empty' \
+	       '$$(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	$(am__cd) '$(distuninstallcheck_dir)' || { \
+	  echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+	  exit 1; \
+	}; \
+	test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
 	   || { echo "ERROR: files left after uninstall:" ; \
 	        if test -n "$(DESTDIR)"; then \
 	          echo "  (check DESTDIR support)"; \
@@ -775,10 +822,15 @@ install-am: all-am
 
 installcheck: installcheck-recursive
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
@@ -867,12 +919,12 @@ uninstall-am: uninstall-gmtkdocDATA uninstall-local
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
 	all all-am am--refresh check check-am clean clean-generic \
 	clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
-	dist-gzip dist-hook dist-lzma dist-shar dist-tarZ dist-xz \
-	dist-zip distcheck distclean distclean-generic distclean-hdr \
-	distclean-libtool distclean-tags distcleancheck distdir \
-	distuninstallcheck dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am \
+	dist-gzip dist-hook dist-lzip dist-lzma dist-shar dist-tarZ \
+	dist-xz dist-zip distcheck distclean distclean-generic \
+	distclean-hdr distclean-libtool distclean-tags distcleancheck \
+	distdir distuninstallcheck dvi dvi-am html html-am info \
+	info-am install install-am install-data install-data-am \
+	install-dvi install-dvi-am install-exec install-exec-am \
 	install-gmtkdocDATA install-html install-html-am install-info \
 	install-info-am install-man install-pdf install-pdf-am \
 	install-ps install-ps-am install-strip installcheck \
diff --git a/aclocal.m4 b/aclocal.m4
index 4cd4668..471a157 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,8 @@
-# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009  Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
+# Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -776,12 +777,15 @@ else
 fi[]dnl
 ])# PKG_CHECK_MODULES
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
+# Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_AUTOMAKE_VERSION(VERSION)
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
@@ -791,7 +795,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
 [am__api_version='1.11'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.11.1], [],
+m4_if([$1], [1.11.6], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -807,19 +811,21 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.1])dnl
+[AM_AUTOMAKE_VERSION([1.11.6])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
 # $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
 # `$srcdir', `$srcdir/..', or `$srcdir/../..'.
@@ -901,14 +907,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
-# Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
+# 2010, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 10
+# serial 12
 
 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
@@ -948,6 +954,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
   # instance it was reported that on HP-UX the gcc test will end up
   # making a dummy file named `D' -- because `-MD' means `put the output
   # in D'.
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -1012,7 +1019,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
       # This compiler won't grok `-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
@@ -1077,10 +1084,13 @@ AC_DEFUN([AM_DEP_TRACK],
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
 AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
 AC_SUBST([AMDEPBACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
 ])
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
@@ -1302,12 +1312,15 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
+# Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_PROG_INSTALL_SH
 # ------------------
 # Define $install_sh.
@@ -1347,8 +1360,8 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
+# 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1368,7 +1381,7 @@ AC_DEFUN([AM_MAINTAINER_MODE],
        [disable], [m4_define([am_maintainer_other], [enable])],
        [m4_define([am_maintainer_other], [enable])
         m4_warn([syntax], [unexpected argument to AM@&t at _MAINTAINER_MODE: $1])])
-AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
   dnl maintainer-mode's default is 'disable' unless 'enable' is passed
   AC_ARG_ENABLE([maintainer-mode],
 [  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
@@ -1479,12 +1492,15 @@ else
 fi
 ])
 
-# Copyright (C) 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
+# Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_PROG_MKDIR_P
 # ---------------
 # Check for `mkdir -p'.
@@ -1507,13 +1523,14 @@ esac
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
+# Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
+# serial 5
 
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
@@ -1521,13 +1538,13 @@ AC_DEFUN([_AM_MANGLE_OPTION],
 [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
 
 # _AM_SET_OPTION(NAME)
-# ------------------------------
+# --------------------
 # Set option NAME.  Presently that only means defining a flag for this option.
 AC_DEFUN([_AM_SET_OPTION],
 [m4_define(_AM_MANGLE_OPTION([$1]), 1)])
 
 # _AM_SET_OPTIONS(OPTIONS)
-# ----------------------------------
+# ------------------------
 # OPTIONS is a space-separated list of Automake options.
 AC_DEFUN([_AM_SET_OPTIONS],
 [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
@@ -1603,13 +1620,13 @@ Check your system clock])
 fi
 AC_MSG_RESULT(yes)])
 
-# Copyright (C) 2009  Free Software Foundation, Inc.
+# Copyright (C) 2009, 2011  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
+# serial 2
 
 # AM_SILENT_RULES([DEFAULT])
 # --------------------------
@@ -1624,18 +1641,50 @@ yes) AM_DEFAULT_VERBOSITY=0;;
 no)  AM_DEFAULT_VERBOSITY=1;;
 *)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
 esac
+dnl
+dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using `$V' instead of `$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
 AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
 AM_BACKSLASH='\'
 AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
+# serial 1
+
 # AM_PROG_INSTALL_STRIP
 # ---------------------
 # One issue with vendor `install' (even GNU) is that you can't
@@ -1658,13 +1707,13 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006, 2008  Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
+# serial 3
 
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
@@ -1673,13 +1722,13 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
 AC_DEFUN([_AM_SUBST_NOTMAKE])
 
 # AM_SUBST_NOTMAKE(VARIABLE)
-# ---------------------------
+# --------------------------
 # Public sister of _AM_SUBST_NOTMAKE.
 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1701,10 +1750,11 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
 AC_DEFUN([_AM_PROG_TAR],
-[# Always define AMTAR for backward compatibility.
-AM_MISSING_PROG([AMTAR], [tar])
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
 m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
      [m4_case([$1], [ustar],, [pax],,
               [m4_fatal([Unknown tar format])])
 AC_MSG_CHECKING([how to create a $1 tar archive])
diff --git a/config.guess b/config.guess
index dc84c68..d622a44 100755
--- a/config.guess
+++ b/config.guess
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-#   Free Software Foundation, Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2009-11-20'
+timestamp='2012-02-10'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -17,9 +17,7 @@ timestamp='2009-11-20'
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -56,8 +54,9 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -144,7 +143,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:NetBSD:*:*)
 	# NetBSD (nbsd) targets should (where applicable) match one or
-	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
 	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
 	# switched to ELF, *-*-netbsd* would select the old
 	# object file format.  This provides both forward
@@ -180,7 +179,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		fi
 		;;
 	    *)
-	        os=netbsd
+		os=netbsd
 		;;
 	esac
 	# The OS release
@@ -223,7 +222,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
 		;;
 	*5.*)
-	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
 		;;
 	esac
 	# According to Compaq, /usr/sbin/psrinfo has been available on
@@ -269,7 +268,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
 	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit ;;
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	exitcode=$?
+	trap '' 0
+	exit $exitcode ;;
     Alpha\ *:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
 	# Should we change UNAME_MACHINE based on the output of uname instead
@@ -295,7 +297,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	echo s390-ibm-zvmoe
 	exit ;;
     *:OS400:*:*)
-        echo powerpc-ibm-os400
+	echo powerpc-ibm-os400
 	exit ;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
 	echo arm-acorn-riscix${UNAME_RELEASE}
@@ -394,23 +396,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+	echo m68k-atari-mint${UNAME_RELEASE}
 	exit ;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
 	echo m68k-atari-mint${UNAME_RELEASE}
-        exit ;;
+	exit ;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-        echo m68k-atari-mint${UNAME_RELEASE}
+	echo m68k-atari-mint${UNAME_RELEASE}
 	exit ;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-        echo m68k-milan-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-milan-mint${UNAME_RELEASE}
+	exit ;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-        echo m68k-hades-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-hades-mint${UNAME_RELEASE}
+	exit ;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-        echo m68k-unknown-mint${UNAME_RELEASE}
-        exit ;;
+	echo m68k-unknown-mint${UNAME_RELEASE}
+	exit ;;
     m68k:machten:*:*)
 	echo m68k-apple-machten${UNAME_RELEASE}
 	exit ;;
@@ -480,8 +482,8 @@ EOF
 	echo m88k-motorola-sysv3
 	exit ;;
     AViiON:dgux:*:*)
-        # DG/UX returns AViiON for all architectures
-        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	# DG/UX returns AViiON for all architectures
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
 	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
 	then
 	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
@@ -494,7 +496,7 @@ EOF
 	else
 	    echo i586-dg-dgux${UNAME_RELEASE}
 	fi
- 	exit ;;
+	exit ;;
     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
 	echo m88k-dolphin-sysv3
 	exit ;;
@@ -551,7 +553,7 @@ EOF
 		echo rs6000-ibm-aix3.2
 	fi
 	exit ;;
-    *:AIX:*:[456])
+    *:AIX:*:[4567])
 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
 	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
 		IBM_ARCH=rs6000
@@ -594,52 +596,52 @@ EOF
 	    9000/[678][0-9][0-9])
 		if [ -x /usr/bin/getconf ]; then
 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
-                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-                    case "${sc_cpu_version}" in
-                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
-                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
-                      532)                      # CPU_PA_RISC2_0
-                        case "${sc_kernel_bits}" in
-                          32) HP_ARCH="hppa2.0n" ;;
-                          64) HP_ARCH="hppa2.0w" ;;
+		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+		    case "${sc_cpu_version}" in
+		      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+		      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+		      532)                      # CPU_PA_RISC2_0
+			case "${sc_kernel_bits}" in
+			  32) HP_ARCH="hppa2.0n" ;;
+			  64) HP_ARCH="hppa2.0w" ;;
 			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
-                        esac ;;
-                    esac
+			esac ;;
+		    esac
 		fi
 		if [ "${HP_ARCH}" = "" ]; then
 		    eval $set_cc_for_build
-		    sed 's/^              //' << EOF >$dummy.c
+		    sed 's/^		//' << EOF >$dummy.c
 
-              #define _HPUX_SOURCE
-              #include <stdlib.h>
-              #include <unistd.h>
+		#define _HPUX_SOURCE
+		#include <stdlib.h>
+		#include <unistd.h>
 
-              int main ()
-              {
-              #if defined(_SC_KERNEL_BITS)
-                  long bits = sysconf(_SC_KERNEL_BITS);
-              #endif
-                  long cpu  = sysconf (_SC_CPU_VERSION);
+		int main ()
+		{
+		#if defined(_SC_KERNEL_BITS)
+		    long bits = sysconf(_SC_KERNEL_BITS);
+		#endif
+		    long cpu  = sysconf (_SC_CPU_VERSION);
 
-                  switch (cpu)
-              	{
-              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
-              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
-              	case CPU_PA_RISC2_0:
-              #if defined(_SC_KERNEL_BITS)
-              	    switch (bits)
-              		{
-              		case 64: puts ("hppa2.0w"); break;
-              		case 32: puts ("hppa2.0n"); break;
-              		default: puts ("hppa2.0"); break;
-              		} break;
-              #else  /* !defined(_SC_KERNEL_BITS) */
-              	    puts ("hppa2.0"); break;
-              #endif
-              	default: puts ("hppa1.0"); break;
-              	}
-                  exit (0);
-              }
+		    switch (cpu)
+			{
+			case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+			case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+			case CPU_PA_RISC2_0:
+		#if defined(_SC_KERNEL_BITS)
+			    switch (bits)
+				{
+				case 64: puts ("hppa2.0w"); break;
+				case 32: puts ("hppa2.0n"); break;
+				default: puts ("hppa2.0"); break;
+				} break;
+		#else  /* !defined(_SC_KERNEL_BITS) */
+			    puts ("hppa2.0"); break;
+		#endif
+			default: puts ("hppa1.0"); break;
+			}
+		    exit (0);
+		}
 EOF
 		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -730,22 +732,22 @@ EOF
 	exit ;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
 	echo c1-convex-bsd
-        exit ;;
+	exit ;;
     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
 	if getsysinfo -f scalar_acc
 	then echo c32-convex-bsd
 	else echo c2-convex-bsd
 	fi
-        exit ;;
+	exit ;;
     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
 	echo c34-convex-bsd
-        exit ;;
+	exit ;;
     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
 	echo c38-convex-bsd
-        exit ;;
+	exit ;;
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
 	echo c4-convex-bsd
-        exit ;;
+	exit ;;
     CRAY*Y-MP:*:*:*)
 	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
 	exit ;;
@@ -769,14 +771,14 @@ EOF
 	exit ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
-        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-        exit ;;
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
     5000:UNIX_System_V:4.*:*)
-        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
-        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
-        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+	FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
 	exit ;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
@@ -788,13 +790,12 @@ EOF
 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
 	exit ;;
     *:FreeBSD:*:*)
-	case ${UNAME_MACHINE} in
-	    pc98)
-		echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+	UNAME_PROCESSOR=`/usr/bin/uname -p`
+	case ${UNAME_PROCESSOR} in
 	    amd64)
 		echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
 	    *)
-		echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+		echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
 	esac
 	exit ;;
     i*:CYGWIN*:*)
@@ -803,15 +804,18 @@ EOF
     *:MINGW*:*)
 	echo ${UNAME_MACHINE}-pc-mingw32
 	exit ;;
+    i*:MSYS*:*)
+	echo ${UNAME_MACHINE}-pc-msys
+	exit ;;
     i*:windows32*:*)
-    	# uname -m includes "-pc" on this system.
-    	echo ${UNAME_MACHINE}-mingw32
+	# uname -m includes "-pc" on this system.
+	echo ${UNAME_MACHINE}-mingw32
 	exit ;;
     i*:PW*:*)
 	echo ${UNAME_MACHINE}-pc-pw32
 	exit ;;
     *:Interix*:*)
-    	case ${UNAME_MACHINE} in
+	case ${UNAME_MACHINE} in
 	    x86)
 		echo i586-pc-interix${UNAME_RELEASE}
 		exit ;;
@@ -857,6 +861,13 @@ EOF
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
 	exit ;;
+    aarch64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    aarch64_be:Linux:*:*)
+	UNAME_MACHINE=aarch64_be
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
     alpha:Linux:*:*)
 	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
 	  EV5)   UNAME_MACHINE=alphaev5 ;;
@@ -866,7 +877,7 @@ EOF
 	  EV6)   UNAME_MACHINE=alphaev6 ;;
 	  EV67)  UNAME_MACHINE=alphaev67 ;;
 	  EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
+	esac
 	objdump --private-headers /bin/sh | grep -q ld.so.1
 	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
 	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
@@ -878,20 +889,29 @@ EOF
 	then
 	    echo ${UNAME_MACHINE}-unknown-linux-gnu
 	else
-	    echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+		| grep -q __ARM_PCS_VFP
+	    then
+		echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+	    else
+		echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+	    fi
 	fi
 	exit ;;
     avr32*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     cris:Linux:*:*)
-	echo cris-axis-linux-gnu
+	echo ${UNAME_MACHINE}-axis-linux-gnu
 	exit ;;
     crisv32:Linux:*:*)
-	echo crisv32-axis-linux-gnu
+	echo ${UNAME_MACHINE}-axis-linux-gnu
 	exit ;;
     frv:Linux:*:*)
-    	echo frv-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    hexagon:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     i*86:Linux:*:*)
 	LIBC=gnu
@@ -933,7 +953,7 @@ EOF
 	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
 	;;
     or32:Linux:*:*)
-	echo or32-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     padre:Linux:*:*)
 	echo sparc-unknown-linux-gnu
@@ -959,7 +979,7 @@ EOF
 	echo ${UNAME_MACHINE}-ibm-linux
 	exit ;;
     sh64*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     sh*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -967,14 +987,17 @@ EOF
     sparc:Linux:*:* | sparc64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
+    tile*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
     vax:Linux:*:*)
 	echo ${UNAME_MACHINE}-dec-linux-gnu
 	exit ;;
     x86_64:Linux:*:*)
-	echo x86_64-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     xtensa*:Linux:*:*)
-    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -983,11 +1006,11 @@ EOF
 	echo i386-sequent-sysv4
 	exit ;;
     i*86:UNIX_SV:4.2MP:2.*)
-        # Unixware is an offshoot of SVR4, but it has its own version
-        # number series starting with 2...
-        # I am not positive that other SVR4 systems won't match this,
+	# Unixware is an offshoot of SVR4, but it has its own version
+	# number series starting with 2...
+	# I am not positive that other SVR4 systems won't match this,
 	# I just have to hope.  -- rms.
-        # Use sysv4.2uw... so that sysv4* matches it.
+	# Use sysv4.2uw... so that sysv4* matches it.
 	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
 	exit ;;
     i*86:OS/2:*:*)
@@ -1019,7 +1042,7 @@ EOF
 	fi
 	exit ;;
     i*86:*:5:[678]*)
-    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	# UnixWare 7.x, OpenUNIX and OpenServer 6.
 	case `/bin/uname -X | grep "^Machine"` in
 	    *486*)	     UNAME_MACHINE=i486 ;;
 	    *Pentium)	     UNAME_MACHINE=i586 ;;
@@ -1047,13 +1070,13 @@ EOF
 	exit ;;
     pc:*:*:*)
 	# Left here for compatibility:
-        # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i586.
+	# uname -m prints for DJGPP always 'pc', but it prints nothing about
+	# the processor, so we play safe by assuming i586.
 	# Note: whatever this is, it MUST be the same as what config.sub
 	# prints for the "djgpp" host, or else GDB configury will decide that
 	# this is a cross-build.
 	echo i586-pc-msdosdjgpp
-        exit ;;
+	exit ;;
     Intel:Mach:3*:*)
 	echo i386-pc-mach3
 	exit ;;
@@ -1088,8 +1111,8 @@ EOF
 	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
 	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
-        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-          && { echo i486-ncr-sysv4; exit; } ;;
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4; exit; } ;;
     NCR*:*:4.2:* | MPRAS*:*:4.2:*)
 	OS_REL='.3'
 	test -r /etc/.relid \
@@ -1132,10 +1155,10 @@ EOF
 		echo ns32k-sni-sysv
 	fi
 	exit ;;
-    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
-                      # says <Richard.M.Bartel at ccMail.Census.GOV>
-        echo i586-unisys-sysv4
-        exit ;;
+    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+			# says <Richard.M.Bartel at ccMail.Census.GOV>
+	echo i586-unisys-sysv4
+	exit ;;
     *:UNIX_System_V:4*:FTX*)
 	# From Gerald Hewes <hewes at openmarket.com>.
 	# How about differentiating between stratus architectures? -djm
@@ -1161,11 +1184,11 @@ EOF
 	exit ;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
 	if [ -d /usr/nec ]; then
-	        echo mips-nec-sysv${UNAME_RELEASE}
+		echo mips-nec-sysv${UNAME_RELEASE}
 	else
-	        echo mips-unknown-sysv${UNAME_RELEASE}
+		echo mips-unknown-sysv${UNAME_RELEASE}
 	fi
-        exit ;;
+	exit ;;
     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
 	echo powerpc-be-beos
 	exit ;;
@@ -1230,6 +1253,9 @@ EOF
     *:QNX:*:4*)
 	echo i386-pc-qnx
 	exit ;;
+    NEO-?:NONSTOP_KERNEL:*:*)
+	echo neo-tandem-nsk${UNAME_RELEASE}
+	exit ;;
     NSE-?:NONSTOP_KERNEL:*:*)
 	echo nse-tandem-nsk${UNAME_RELEASE}
 	exit ;;
@@ -1275,13 +1301,13 @@ EOF
 	echo pdp10-unknown-its
 	exit ;;
     SEI:*:*:SEIUX)
-        echo mips-sei-seiux${UNAME_RELEASE}
+	echo mips-sei-seiux${UNAME_RELEASE}
 	exit ;;
     *:DragonFly:*:*)
 	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
 	exit ;;
     *:*VMS:*:*)
-    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	UNAME_MACHINE=`(uname -p) 2>/dev/null`
 	case "${UNAME_MACHINE}" in
 	    A*) echo alpha-dec-vms ; exit ;;
 	    I*) echo ia64-dec-vms ; exit ;;
@@ -1299,6 +1325,9 @@ EOF
     i*86:AROS:*:*)
 	echo ${UNAME_MACHINE}-pc-aros
 	exit ;;
+    x86_64:VMkernel:*:*)
+	echo ${UNAME_MACHINE}-unknown-esx
+	exit ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1321,11 +1350,11 @@ main ()
 #include <sys/param.h>
   printf ("m68k-sony-newsos%s\n",
 #ifdef NEWSOS4
-          "4"
+	"4"
 #else
-	  ""
+	""
 #endif
-         ); exit (0);
+	); exit (0);
 #endif
 #endif
 
diff --git a/config.sub b/config.sub
index 2a55a50..c894da4 100755
--- a/config.sub
+++ b/config.sub
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-#   Free Software Foundation, Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+#   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2009-11-20'
+timestamp='2012-02-10'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -21,9 +21,7 @@ timestamp='2009-11-20'
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
 #
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -75,8 +73,9 @@ Report bugs and patches to <config-patches at gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
+Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -123,13 +122,18 @@ esac
 # Here we must recognize all the valid KERNEL-OS combinations.
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
-  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
-  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
     ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
   *)
     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
     if [ $basic_machine != $1 ]
@@ -156,8 +160,8 @@ case $os in
 		os=
 		basic_machine=$1
 		;;
-        -bluegene*)
-	        os=-cnk
+	-bluegene*)
+		os=-cnk
 		;;
 	-sim | -cisco | -oki | -wec | -winbond)
 		os=
@@ -173,10 +177,10 @@ case $os in
 		os=-chorusos
 		basic_machine=$1
 		;;
- 	-chorusrdb)
- 		os=-chorusrdb
+	-chorusrdb)
+		os=-chorusrdb
 		basic_machine=$1
- 		;;
+		;;
 	-hiux*)
 		os=-hiuxwe2
 		;;
@@ -245,17 +249,22 @@ case $basic_machine in
 	# Some are omitted here because they have special meanings below.
 	1750a | 580 \
 	| a29k \
+	| aarch64 | aarch64_be \
 	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
 	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
 	| am33_2.0 \
 	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+        | be32 | be64 \
 	| bfin \
 	| c4x | clipper \
 	| d10v | d30v | dlx | dsp16xx \
+	| epiphany \
 	| fido | fr30 | frv \
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| hexagon \
 	| i370 | i860 | i960 | ia64 \
 	| ip2k | iq2000 \
+	| le32 | le64 \
 	| lm32 \
 	| m32c | m32r | m32rle | m68000 | m68k | m88k \
 	| maxq | mb | microblaze | mcore | mep | metag \
@@ -281,29 +290,39 @@ case $basic_machine in
 	| moxie \
 	| mt \
 	| msp430 \
+	| nds32 | nds32le | nds32be \
 	| nios | nios2 \
 	| ns16k | ns32k \
+	| open8 \
 	| or32 \
 	| pdp10 | pdp11 | pj | pjl \
-	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| powerpc | powerpc64 | powerpc64le | powerpcle \
 	| pyramid \
-	| rx \
+	| rl78 | rx \
 	| score \
 	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
-	| spu | strongarm \
-	| tahoe | thumb | tic4x | tic80 | tron \
+	| spu \
+	| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
 	| ubicom32 \
-	| v850 | v850e \
+	| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
 	| we32k \
-	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| x86 | xc16x | xstormy16 | xtensa \
 	| z8k | z80)
 		basic_machine=$basic_machine-unknown
 		;;
-	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
-		# Motorola 68HC11/12.
+	c54x)
+		basic_machine=tic54x-unknown
+		;;
+	c55x)
+		basic_machine=tic55x-unknown
+		;;
+	c6x)
+		basic_machine=tic6x-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
 		basic_machine=$basic_machine-unknown
 		os=-none
 		;;
@@ -313,6 +332,21 @@ case $basic_machine in
 		basic_machine=mt-unknown
 		;;
 
+	strongarm | thumb | xscale)
+		basic_machine=arm-unknown
+		;;
+	xgate)
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	xscaleeb)
+		basic_machine=armeb-unknown
+		;;
+
+	xscaleel)
+		basic_machine=armel-unknown
+		;;
+
 	# We use `pc' rather than `unknown'
 	# because (1) that's what they normally are, and
 	# (2) the word "unknown" tends to confuse beginning users.
@@ -327,21 +361,25 @@ case $basic_machine in
 	# Recognize the basic CPU types with company name.
 	580-* \
 	| a29k-* \
+	| aarch64-* | aarch64_be-* \
 	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
 	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* | avr32-* \
+	| be32-* | be64-* \
 	| bfin-* | bs2000-* \
-	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* \
 	| clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
 	| h8300-* | h8500-* \
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| hexagon-* \
 	| i*86-* | i860-* | i960-* | ia64-* \
 	| ip2k-* | iq2000-* \
+	| le32-* | le64-* \
 	| lm32-* \
 	| m32c-* | m32r-* | m32rle-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
@@ -367,25 +405,29 @@ case $basic_machine in
 	| mmix-* \
 	| mt-* \
 	| msp430-* \
+	| nds32-* | nds32le-* | nds32be-* \
 	| nios-* | nios2-* \
 	| none-* | np1-* | ns16k-* | ns32k-* \
+	| open8-* \
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
-	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
 	| pyramid-* \
-	| romp-* | rs6000-* | rx-* \
+	| rl78-* | romp-* | rs6000-* | rx-* \
 	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
-	| tahoe-* | thumb-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+	| tahoe-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile*-* \
 	| tron-* \
 	| ubicom32-* \
-	| v850-* | v850e-* | vax-* \
+	| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+	| vax-* \
 	| we32k-* \
-	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| x86-* | x86_64-* | xc16x-* | xps100-* \
 	| xstormy16-* | xtensa*-* \
 	| ymp-* \
 	| z8k-* | z80-*)
@@ -410,7 +452,7 @@ case $basic_machine in
 		basic_machine=a29k-amd
 		os=-udi
 		;;
-    	abacus)
+	abacus)
 		basic_machine=abacus-unknown
 		;;
 	adobe68k)
@@ -480,11 +522,20 @@ case $basic_machine in
 		basic_machine=powerpc-ibm
 		os=-cnk
 		;;
+	c54x-*)
+		basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c55x-*)
+		basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	c6x-*)
+		basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	c90)
 		basic_machine=c90-cray
 		os=-unicos
 		;;
-        cegcc)
+	cegcc)
 		basic_machine=arm-unknown
 		os=-cegcc
 		;;
@@ -516,7 +567,7 @@ case $basic_machine in
 		basic_machine=craynv-cray
 		os=-unicosmp
 		;;
-	cr16)
+	cr16 | cr16-*)
 		basic_machine=cr16-unknown
 		os=-elf
 		;;
@@ -674,7 +725,6 @@ case $basic_machine in
 	i370-ibm* | ibm*)
 		basic_machine=i370-ibm
 		;;
-# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
 	i*86v32)
 		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
 		os=-sysv32
@@ -732,7 +782,7 @@ case $basic_machine in
 		basic_machine=ns32k-utek
 		os=-sysv
 		;;
-        microblaze)
+	microblaze)
 		basic_machine=microblaze-xilinx
 		;;
 	mingw32)
@@ -771,10 +821,18 @@ case $basic_machine in
 	ms1-*)
 		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
 		;;
+	msys)
+		basic_machine=i386-pc
+		os=-msys
+		;;
 	mvs)
 		basic_machine=i370-ibm
 		os=-mvs
 		;;
+	nacl)
+		basic_machine=le32-unknown
+		os=-nacl
+		;;
 	ncr3000)
 		basic_machine=i486-ncr
 		os=-sysv4
@@ -839,6 +897,12 @@ case $basic_machine in
 	np1)
 		basic_machine=np1-gould
 		;;
+	neo-tandem)
+		basic_machine=neo-tandem
+		;;
+	nse-tandem)
+		basic_machine=nse-tandem
+		;;
 	nsr-tandem)
 		basic_machine=nsr-tandem
 		;;
@@ -921,9 +985,10 @@ case $basic_machine in
 		;;
 	power)	basic_machine=power-ibm
 		;;
-	ppc)	basic_machine=powerpc-unknown
+	ppc | ppcbe)	basic_machine=powerpc-unknown
 		;;
-	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+	ppc-* | ppcbe-*)
+		basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
 		;;
 	ppcle | powerpclittle | ppc-le | powerpc-little)
 		basic_machine=powerpcle-unknown
@@ -1017,6 +1082,9 @@ case $basic_machine in
 		basic_machine=i860-stratus
 		os=-sysv4
 		;;
+	strongarm-* | thumb-*)
+		basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	sun2)
 		basic_machine=m68000-sun
 		;;
@@ -1073,20 +1141,8 @@ case $basic_machine in
 		basic_machine=t90-cray
 		os=-unicos
 		;;
-	tic54x | c54x*)
-		basic_machine=tic54x-unknown
-		os=-coff
-		;;
-	tic55x | c55x*)
-		basic_machine=tic55x-unknown
-		os=-coff
-		;;
-	tic6x | c6x*)
-		basic_machine=tic6x-unknown
-		os=-coff
-		;;
 	tile*)
-		basic_machine=tile-unknown
+		basic_machine=$basic_machine-unknown
 		os=-linux-gnu
 		;;
 	tx39)
@@ -1156,6 +1212,9 @@ case $basic_machine in
 	xps | xps100)
 		basic_machine=xps100-honeywell
 		;;
+	xscale-* | xscalee[bl]-*)
+		basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+		;;
 	ymp)
 		basic_machine=ymp-cray
 		os=-unicos
@@ -1253,11 +1312,11 @@ esac
 if [ x"$os" != x"" ]
 then
 case $os in
-        # First match some system type aliases
-        # that might get confused with valid system types.
+	# First match some system type aliases
+	# that might get confused with valid system types.
 	# -solaris* is a basic system type, with this one exception.
-        -auroraux)
-	        os=-auroraux
+	-auroraux)
+		os=-auroraux
 		;;
 	-solaris1 | -solaris1.*)
 		os=`echo $os | sed -e 's|solaris1|sunos4|'`
@@ -1293,8 +1352,9 @@ case $os in
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
 	      | -chorusos* | -chorusrdb* | -cegcc* \
-	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-android* \
+	      | -linux-newlib* | -linux-uclibc* \
 	      | -uxpv* | -beos* | -mpeix* | -udk* \
 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1341,7 +1401,7 @@ case $os in
 	-opened*)
 		os=-openedition
 		;;
-        -os400*)
+	-os400*)
 		os=-os400
 		;;
 	-wince*)
@@ -1390,7 +1450,7 @@ case $os in
 	-sinix*)
 		os=-sysv4
 		;;
-        -tpf*)
+	-tpf*)
 		os=-tpf
 		;;
 	-triton*)
@@ -1435,6 +1495,8 @@ case $os in
 	-dicos*)
 		os=-dicos
 		;;
+	-nacl*)
+		;;
 	-none)
 		;;
 	*)
@@ -1457,10 +1519,10 @@ else
 # system, and we'll never get to this point.
 
 case $basic_machine in
-        score-*)
+	score-*)
 		os=-elf
 		;;
-        spu-*)
+	spu-*)
 		os=-elf
 		;;
 	*-acorn)
@@ -1472,8 +1534,17 @@ case $basic_machine in
 	arm*-semi)
 		os=-aout
 		;;
-        c4x-* | tic4x-*)
-        	os=-coff
+	c4x-* | tic4x-*)
+		os=-coff
+		;;
+	tic54x-*)
+		os=-coff
+		;;
+	tic55x-*)
+		os=-coff
+		;;
+	tic6x-*)
+		os=-coff
 		;;
 	# This must come before the *-dec entry.
 	pdp10-*)
@@ -1493,14 +1564,11 @@ case $basic_machine in
 		;;
 	m68000-sun)
 		os=-sunos3
-		# This also exists in the configure program, but was not the
-		# default.
-		# os=-sunos4
 		;;
 	m68*-cisco)
 		os=-aout
 		;;
-        mep-*)
+	mep-*)
 		os=-elf
 		;;
 	mips*-cisco)
@@ -1527,7 +1595,7 @@ case $basic_machine in
 	*-ibm)
 		os=-aix
 		;;
-    	*-knuth)
+	*-knuth)
 		os=-mmixware
 		;;
 	*-wec)
diff --git a/configure b/configure
index 38c7952..1bb6553 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for gmtk 1.0.6.
+# Generated by GNU Autoconf 2.68 for gmtk 1.0.7.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -567,8 +567,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='gmtk'
 PACKAGE_TARNAME='gmtk'
-PACKAGE_VERSION='1.0.6'
-PACKAGE_STRING='gmtk 1.0.6'
+PACKAGE_VERSION='1.0.7'
+PACKAGE_STRING='gmtk 1.0.7'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -749,9 +749,14 @@ GREP
 CPP
 ALL_LINGUAS
 GETTEXT_PACKAGE
+LIB_VERSION
+RELEASE_VERSION
+MINOR_VERSION
+MAJOR_VERSION
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
 CCDEPMODE
+am__nodep
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
@@ -793,6 +798,8 @@ INSTALL_SCRIPT
 INSTALL_PROGRAM
 AM_BACKSLASH
 AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
 target_alias
 host_alias
 build_alias
@@ -1445,7 +1452,7 @@ if test "$ac_init_help" = "long"; then
   # 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 gmtk 1.0.6 to adapt to many kinds of systems.
+\`configure' configures gmtk 1.0.7 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1515,7 +1522,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gmtk 1.0.6:";;
+     short | recursive ) echo "Configuration of gmtk 1.0.7:";;
    esac
   cat <<\_ACEOF
 
@@ -1547,7 +1554,7 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic              try to use only PIC/non-PIC objects [default=use
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                           both]
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
   --with-sysroot=DIR Search for dependent libraries within DIR
@@ -1697,7 +1704,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gmtk configure 1.0.6
+gmtk configure 1.0.7
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2062,7 +2069,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gmtk $as_me 1.0.6, which was
+It was created by gmtk $as_me 1.0.7, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -2420,6 +2427,33 @@ yes) AM_DEFAULT_VERBOSITY=0;;
 no)  AM_DEFAULT_VERBOSITY=1;;
 *)   AM_DEFAULT_VERBOSITY=0;;
 esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+	@$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
 AM_BACKSLASH='\'
 
 
@@ -2890,7 +2924,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE=gmtk
- VERSION=1.0.6
+ VERSION=1.0.7
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2920,11 +2954,11 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
-# Always define AMTAR for backward compatibility.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
 
-AMTAR=${AMTAR-"${am_missing_run}tar"}
-
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
@@ -2933,8 +2967,8 @@ am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
 ac_config_headers="$ac_config_headers config.h"
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable maintainer-specific portions of Makefiles" >&5
-$as_echo_n "checking whether to disable maintainer-specific portions of Makefiles... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
     # Check whether --enable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
@@ -3797,6 +3831,7 @@ fi
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
  if test "x$enable_dependency_tracking" != xno; then
   AMDEP_TRUE=
@@ -3821,6 +3856,7 @@ else
   # instance it was reported that on HP-UX the gcc test will end up
   # making a dummy file named `D' -- because `-MD' means `put the output
   # in D'.
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -3880,7 +3916,7 @@ else
 	break
       fi
       ;;
-    msvisualcpp | msvcmsys)
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
       # This compiler won't grok `-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
@@ -3938,6 +3974,15 @@ fi
 
 
 
+MAJOR_VERSION=1
+MINOR_VERSION=0
+RELEASE_VERSION=7
+
+
+
+
+LIB_VERSION=$MAJOR_VERSION:$MINOR_VERSION:$RELEASE_VERSION
+
 
 GETTEXT_PACKAGE=gmtk
 
@@ -5670,8 +5715,8 @@ esac
 
 
 
-macro_version='2.4'
-macro_revision='1.3293'
+macro_version='2.4.2'
+macro_revision='1.3337'
 
 
 
@@ -6386,6 +6431,11 @@ else
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -6425,7 +6475,7 @@ else
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
 	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i != 17 # 1/2 MB should be enough
       do
@@ -6854,7 +6904,7 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -7494,13 +7544,13 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
 case $host_os in
@@ -7647,6 +7697,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK '"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -8035,7 +8086,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
@@ -8046,7 +8097,20 @@ sparc*-*solaris*)
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
       *)
 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
 	  LD="${LD-ld} -64"
@@ -8686,7 +8750,13 @@ else
 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&5
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
 	  lt_cv_apple_cc_single_mod=yes
 	else
 	  cat conftest.err >&5
@@ -8697,6 +8767,7 @@ else
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
 $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
 if ${lt_cv_ld_exported_symbols_list+:} false; then :
@@ -8729,6 +8800,7 @@ rm -f core conftest.err conftest.$ac_objext \
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
 $as_echo_n "checking for -force_load linker flag... " >&6; }
 if ${lt_cv_ld_force_load+:} false; then :
@@ -8750,7 +8822,9 @@ _LT_EOF
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&5
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
 	lt_cv_ld_force_load=yes
       else
 	cat conftest.err >&5
@@ -8888,7 +8962,22 @@ fi
 
 # Check whether --with-pic was given.
 if test "${with_pic+set}" = set; then :
-  withval=$with_pic; pic_mode="$withval"
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+	IFS="$lt_save_ifs"
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
 else
   pic_mode=default
 fi
@@ -8966,6 +9055,10 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
+
+
+
+
 test -z "$LN_S" && LN_S="ln -s"
 
 
@@ -9425,7 +9518,9 @@ lt_prog_compiler_static=
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       lt_prog_compiler_wl='-Xlinker '
-      lt_prog_compiler_pic='-Xcompiler -fPIC'
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
       ;;
     esac
   else
@@ -9516,18 +9611,33 @@ lt_prog_compiler_static=
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  lt_prog_compiler_pic='-KPIC'
 	  lt_prog_compiler_static='-Bstatic'
 	  lt_prog_compiler_wl=''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  lt_prog_compiler_pic='-KPIC'
 	  lt_prog_compiler_static='-Bstatic'
 	  lt_prog_compiler_wl='-Wl,'
 	  ;;
+        *Intel*\ [CF]*Compiler*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fPIC'
+	  lt_prog_compiler_static='-static'
+	  ;;
+	*Portland\ Group*)
+	  lt_prog_compiler_wl='-Wl,'
+	  lt_prog_compiler_pic='-fpic'
+	  lt_prog_compiler_static='-Bstatic'
+	  ;;
 	esac
 	;;
       esac
@@ -9889,7 +9999,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   hardcode_direct=no
   hardcode_direct_absolute=no
   hardcode_libdir_flag_spec=
-  hardcode_libdir_flag_spec_ld=
   hardcode_libdir_separator=
   hardcode_minus_L=no
   hardcode_shlibpath_var=unsupported
@@ -10139,8 +10248,7 @@ _LT_EOF
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
-	  hardcode_libdir_flag_spec=
-	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
+	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
 	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
 	  if test "x$supports_anon_versioning" = xyes; then
 	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
@@ -10519,6 +10627,7 @@ fi
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
 	enable_shared_with_static_runtimes=yes
+	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
 	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
 	# Don't use ranlib
 	old_postinstall_cmds='chmod 644 $oldlib'
@@ -10564,6 +10673,7 @@ fi
   hardcode_shlibpath_var=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+
   else
     whole_archive_flag_spec=''
   fi
@@ -10592,10 +10702,6 @@ fi
       hardcode_shlibpath_var=no
       ;;
 
-    freebsd1*)
-      ld_shlibs=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -10608,7 +10714,7 @@ fi
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct=yes
       hardcode_minus_L=yes
@@ -10647,7 +10753,6 @@ fi
       fi
       if test "$with_gnu_ld" = no; then
 	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	hardcode_libdir_flag_spec_ld='+b $libdir'
 	hardcode_libdir_separator=:
 	hardcode_direct=yes
 	hardcode_direct_absolute=yes
@@ -11271,11 +11376,6 @@ esac
 
 
 
-
-
-
-
-
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
 $as_echo_n "checking dynamic linker characteristics... " >&6; }
 
@@ -11365,7 +11465,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -11374,7 +11474,7 @@ aix3*)
   ;;
 
 aix[4-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -11439,7 +11539,7 @@ beos*)
   ;;
 
 bsdi[45]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -11578,7 +11678,7 @@ darwin* | rhapsody*)
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -11586,10 +11686,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -11597,7 +11693,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[123]*) objformat=aout ;;
+    freebsd[23].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -11615,7 +11711,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[01]* | freebsdelf3.[01]*)
@@ -11635,17 +11731,18 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -11706,7 +11803,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[3-9]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -11722,7 +11819,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -11759,9 +11856,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -11847,7 +11944,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -11916,7 +12013,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -11941,7 +12038,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -11965,7 +12062,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -11996,7 +12093,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -12006,7 +12103,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -12788,6 +12885,8 @@ CC="$lt_save_CC"
 
 
 
+
+
         ac_config_commands="$ac_config_commands libtool"
 
 
@@ -15823,7 +15922,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gmtk $as_me 1.0.6, which was
+This file was extended by gmtk $as_me 1.0.7, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15889,7 +15988,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gmtk config.status 1.0.6
+gmtk config.status 1.0.7
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
@@ -16027,6 +16126,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
 SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
 ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
 host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
 host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
 host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
@@ -16109,7 +16209,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
 allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
 no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
 hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
 hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
 hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
@@ -16165,6 +16264,7 @@ _LTECHO_EOF'
 # Quote evaled strings.
 for var in SHELL \
 ECHO \
+PATH_SEPARATOR \
 SED \
 GREP \
 EGREP \
@@ -16215,7 +16315,6 @@ with_gnu_ld \
 allow_undefined_flag \
 no_undefined_flag \
 hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
 hardcode_libdir_separator \
 exclude_expsyms \
 include_expsyms \
@@ -17021,8 +17120,8 @@ $as_echo X"$file" |
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -17076,6 +17175,9 @@ SHELL=$lt_SHELL
 # An echo program that protects backslashes.
 ECHO=$lt_ECHO
 
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
 # The host system.
 host_alias=$host_alias
 host=$host
@@ -17377,10 +17479,6 @@ no_undefined_flag=$lt_no_undefined_flag
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
diff --git a/configure.ac b/configure.ac
index a3acf8f..0304641 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,8 @@
 dnl Process this file with autoconf to produce a configure script.
 dnl Created by Anjuta application wizard.
 
-AC_INIT(gmtk, 1.0.6)
+
+AC_INIT(gmtk, 1.0.7)
 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
 
 AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
@@ -12,6 +13,15 @@ AC_PROG_CC
 AC_CONFIG_MACRO_DIR([m4])
 
 
+MAJOR_VERSION=1
+MINOR_VERSION=0
+RELEASE_VERSION=7
+AC_SUBST(MAJOR_VERSION)
+AC_SUBST(MINOR_VERSION)
+AC_SUBST(RELEASE_VERSION)
+
+LIB_VERSION=$MAJOR_VERSION:$MINOR_VERSION:$RELEASE_VERSION
+AC_SUBST(LIB_VERSION)
 
 dnl ***************************************************************************
 dnl Internatinalization
diff --git a/depcomp b/depcomp
index df8eea7..25a39e6 100755
--- a/depcomp
+++ b/depcomp
@@ -1,10 +1,10 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-03-27.16; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
+# 2011, 2012 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,7 +28,7 @@ scriptversion=2009-04-28.21; # UTC
 
 case $1 in
   '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
      exit 1;
      ;;
   -h | --h*)
@@ -40,11 +40,11 @@ as side-effects.
 
 Environment variables:
   depmode     Dependency tracking mode.
-  source      Source file read by `PROGRAMS ARGS'.
-  object      Object file output by `PROGRAMS ARGS'.
+  source      Source file read by 'PROGRAMS ARGS'.
+  object      Object file output by 'PROGRAMS ARGS'.
   DEPDIR      directory where to store dependencies.
   depfile     Dependency file to output.
-  tmpdepfile  Temporary file to use when outputing dependencies.
+  tmpdepfile  Temporary file to use when outputting dependencies.
   libtool     Whether libtool is used (yes/no).
 
 Report bugs to <bug-automake at gnu.org>.
@@ -57,6 +57,12 @@ EOF
     ;;
 esac
 
+# A tabulation character.
+tab='	'
+# A newline character.
+nl='
+'
+
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
   exit 1
@@ -90,10 +96,24 @@ if test "$depmode" = msvcmsys; then
    # This is just like msvisualcpp but w/o cygpath translation.
    # Just convert the backslash-escaped backslashes to single forward
    # slashes to satisfy depend.m4
-   cygpath_u="sed s,\\\\\\\\,/,g"
+   cygpath_u='sed s,\\\\,/,g'
    depmode=msvisualcpp
 fi
 
+if test "$depmode" = msvc7msys; then
+   # This is just like msvc7 but w/o cygpath translation.
+   # Just convert the backslash-escaped backslashes to single forward
+   # slashes to satisfy depend.m4
+   cygpath_u='sed s,\\\\,/,g'
+   depmode=msvc7
+fi
+
+if test "$depmode" = xlc; then
+   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
+   gccflag=-qmakedep=gcc,-MF
+   depmode=gcc
+fi
+
 case "$depmode" in
 gcc3)
 ## gcc 3 implements dependency tracking that does exactly what
@@ -148,20 +168,21 @@ gcc)
 ## The second -e expression handles DOS-style file names with drive letters.
   sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
-## This next piece of magic avoids the `deleted header file' problem.
+## This next piece of magic avoids the "deleted header file" problem.
 ## The problem is that when a header file which appears in a .P file
 ## is deleted, the dependency causes make to die (because there is
 ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.
-  tr ' ' '
-' < "$tmpdepfile" |
-## Some versions of gcc put a space before the `:'.  On the theory
+  tr ' ' "$nl" < "$tmpdepfile" |
+## Some versions of gcc put a space before the ':'.  On the theory
 ## that the space means something, we add a space to the output as
-## well.
+## well.  hp depmode also adds that space, but also prefixes the VPATH
+## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+      | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -193,18 +214,15 @@ sgi)
     # clever and replace this with sed code, as IRIX sed won't handle
     # lines with more than a fixed number of characters (4096 in
     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like `#:fec' to the end of the
+    # the IRIX cc adds comments like '#:fec' to the end of the
     # dependency line.
-    tr ' ' '
-' < "$tmpdepfile" \
+    tr ' ' "$nl" < "$tmpdepfile" \
     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr '
-' ' ' >> "$depfile"
+    tr "$nl" ' ' >> "$depfile"
     echo >> "$depfile"
 
     # The second pass generates a dummy entry for each header file.
-    tr ' ' '
-' < "$tmpdepfile" \
+    tr ' ' "$nl" < "$tmpdepfile" \
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
    >> "$depfile"
   else
@@ -216,10 +234,17 @@ sgi)
   rm -f "$tmpdepfile"
   ;;
 
+xlc)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 aix)
   # The C for AIX Compiler uses -M and outputs the dependencies
   # in a .u file.  In older versions, this file always lives in the
-  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # current directory.  Also, the AIX compiler puts '$object:' at the
   # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.
   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
@@ -249,12 +274,11 @@ aix)
     test -f "$tmpdepfile" && break
   done
   if test -f "$tmpdepfile"; then
-    # Each line is of the form `foo.o: dependent.h'.
+    # Each line is of the form 'foo.o: dependent.h'.
     # Do two passes, one to just change these to
-    # `$object: dependent.h' and one to simply `dependent.h:'.
+    # '$object: dependent.h' and one to simply 'dependent.h:'.
     sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    # That's a tab and a space in the [].
-    sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
   else
     # The sourcefile does not contain any dependencies, so just
     # store a dummy comment line, to avoid errors with the Makefile
@@ -265,23 +289,26 @@ aix)
   ;;
 
 icc)
-  # Intel's C compiler understands `-MD -MF file'.  However on
-  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
+  # However on
+  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
   # ICC 7.0 will fill foo.d with something like
   #    foo.o: sub/foo.c
   #    foo.o: sub/foo.h
-  # which is wrong.  We want:
+  # which is wrong.  We want
   #    sub/foo.o: sub/foo.c
   #    sub/foo.o: sub/foo.h
   #    sub/foo.c:
   #    sub/foo.h:
   # ICC 7.1 will output
   #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using \ :
+  # and will wrap long lines using '\':
   #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \
   #     ...
-
+  # tcc 0.9.26 (FIXME still under development at the moment of writing)
+  # will emit a similar output, but also prepend the continuation lines
+  # with horizontal tabulation characters.
   "$@" -MD -MF "$tmpdepfile"
   stat=$?
   if test $stat -eq 0; then :
@@ -290,15 +317,21 @@ icc)
     exit $stat
   fi
   rm -f "$depfile"
-  # Each line is of the form `foo.o: dependent.h',
-  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Each line is of the form 'foo.o: dependent.h',
+  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
   # Do two passes, one to just change these to
-  # `$object: dependent.h' and one to simply `dependent.h:'.
-  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-  # Some versions of the HPUX 10.20 sed can't process this invocation
-  # correctly.  Breaking it into two sed invocations is a workaround.
-  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-    sed -e 's/$/ :/' >> "$depfile"
+  # '$object: dependent.h' and one to simply 'dependent.h:'.
+  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
+    < "$tmpdepfile" > "$depfile"
+  sed '
+    s/[ '"$tab"'][ '"$tab"']*/ /g
+    s/^ *//
+    s/ *\\*$//
+    s/^[^:]*: *//
+    /^$/d
+    /:$/d
+    s/$/ :/
+  ' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -334,7 +367,7 @@ hp2)
   done
   if test -f "$tmpdepfile"; then
     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
-    # Add `dependent.h:' lines.
+    # Add 'dependent.h:' lines.
     sed -ne '2,${
 	       s/^ *//
 	       s/ \\*$//
@@ -349,9 +382,9 @@ hp2)
 
 tru64)
    # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
    # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in `foo.d' instead, so we check for that too.
+   # dependencies in 'foo.d' instead, so we check for that too.
    # Subdirectories are respected.
    dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
    test "x$dir" = "x$object" && dir=
@@ -397,14 +430,59 @@ tru64)
    done
    if test -f "$tmpdepfile"; then
       sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      # That's a tab and a space in the [].
-      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
    else
       echo "#dummy" > "$depfile"
    fi
    rm -f "$tmpdepfile"
    ;;
 
+msvc7)
+  if test "$libtool" = yes; then
+    showIncludes=-Wc,-showIncludes
+  else
+    showIncludes=-showIncludes
+  fi
+  "$@" $showIncludes > "$tmpdepfile"
+  stat=$?
+  grep -v '^Note: including file: ' "$tmpdepfile"
+  if test "$stat" = 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  # The first sed program below extracts the file names and escapes
+  # backslashes for cygpath.  The second sed program outputs the file
+  # name when reading, but also accumulates all include files in the
+  # hold buffer in order to output them again at the end.  This only
+  # works with sed implementations that can handle large buffers.
+  sed < "$tmpdepfile" -n '
+/^Note: including file:  *\(.*\)/ {
+  s//\1/
+  s/\\/\\\\/g
+  p
+}' | $cygpath_u | sort -u | sed -n '
+s/ /\\ /g
+s/\(.*\)/'"$tab"'\1 \\/p
+s/.\(.*\) \\/\1:/
+H
+$ {
+  s/.*/'"$tab"'/
+  G
+  p
+}' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvc7msys)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
 #nosideeffect)
   # This comment above is used by automake to tell side-effect
   # dependency tracking mechanisms from slower ones.
@@ -422,7 +500,7 @@ dashmstdout)
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -442,15 +520,14 @@ dashmstdout)
   done
 
   test -z "$dashmflag" && dashmflag=-M
-  # Require at least two characters before searching for `:'
+  # Require at least two characters before searching for ':'
   # in the target name.  This is to cope with DOS-style filenames:
-  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
   "$@" $dashmflag |
-    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
   rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"
-  tr ' ' '
-' < "$tmpdepfile" | \
+  tr ' ' "$nl" < "$tmpdepfile" | \
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -503,9 +580,10 @@ makedepend)
   touch "$tmpdepfile"
   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
   rm -f "$depfile"
-  cat < "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' '
-' | \
+  # makedepend may prepend the VPATH from the source file name to the object.
+  # No need to regex-escape $object, excess matching of '.' is harmless.
+  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
     sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
@@ -525,7 +603,7 @@ cpp)
     shift
   fi
 
-  # Remove `-o $object'.
+  # Remove '-o $object'.
   IFS=" "
   for arg
   do
@@ -594,8 +672,8 @@ msvisualcpp)
   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
-  echo "	" >> "$depfile"
+  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
+  echo "$tab" >> "$depfile"
   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
diff --git a/gmtk.spec b/gmtk.spec
index 5d5c4a4..b39f93f 100644
--- a/gmtk.spec
+++ b/gmtk.spec
@@ -1,5 +1,5 @@
 Name:           gmtk           
-Version:        1.0.6
+Version:        1.0.7
 Release:        1%{?dist}
 Summary:        Library of common functions and widgets for gnome-mplayer and gecko-mediaplayer 
 
diff --git a/install-sh b/install-sh
index 6781b98..a9244eb 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2011-01-19.21; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -156,6 +156,10 @@ while test $# -ne 0; do
     -s) stripcmd=$stripprog;;
 
     -t) dst_arg=$2
+	# Protect names problematic for `test' and other utilities.
+	case $dst_arg in
+	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
+	esac
 	shift;;
 
     -T) no_target_directory=true;;
@@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
     fi
     shift # arg
     dst_arg=$arg
+    # Protect names problematic for `test' and other utilities.
+    case $dst_arg in
+      -* | [=\(\)!]) dst_arg=./$dst_arg;;
+    esac
   done
 fi
 
@@ -200,7 +208,11 @@ if test $# -eq 0; then
 fi
 
 if test -z "$dir_arg"; then
-  trap '(exit $?); exit' 1 2 13 15
+  do_exit='(exit $ret); exit $ret'
+  trap "ret=129; $do_exit" 1
+  trap "ret=130; $do_exit" 2
+  trap "ret=141; $do_exit" 13
+  trap "ret=143; $do_exit" 15
 
   # Set umask so as not to create temps with too-generous modes.
   # However, 'strip' requires both read and write access to temps.
@@ -228,9 +240,9 @@ fi
 
 for src
 do
-  # Protect names starting with `-'.
+  # Protect names problematic for `test' and other utilities.
   case $src in
-    -*) src=./$src;;
+    -* | [=\(\)!]) src=./$src;;
   esac
 
   if test -n "$dir_arg"; then
@@ -252,12 +264,7 @@ do
       echo "$0: no destination specified." >&2
       exit 1
     fi
-
     dst=$dst_arg
-    # Protect names starting with `-'.
-    case $dst in
-      -*) dst=./$dst;;
-    esac
 
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
@@ -385,7 +392,7 @@ do
 
       case $dstdir in
 	/*) prefix='/';;
-	-*) prefix='./';;
+	[-=\(\)!]*) prefix='./';;
 	*)  prefix='';;
       esac
 
@@ -403,7 +410,7 @@ do
 
       for d
       do
-	test -z "$d" && continue
+	test X"$d" = X && continue
 
 	prefix=$prefix$d
 	if test -d "$prefix"; then
diff --git a/ltmain.sh b/ltmain.sh
old mode 100755
new mode 100644
index aa5624c..63ae69d
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,9 +1,9 @@
 
-# libtool (GNU libtool) 2.4
+# libtool (GNU libtool) 2.4.2
 # Written by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
-# 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
@@ -41,6 +41,7 @@
 #       --quiet, --silent    don't print informational messages
 #       --no-quiet, --no-silent
 #                            print informational messages (default)
+#       --no-warn            don't display warning messages
 #       --tag=TAG            use configuration variables from tag TAG
 #   -v, --verbose            print more informational messages than default
 #       --no-verbose         don't print the extra informational messages
@@ -69,7 +70,7 @@
 #         compiler:		$LTCC
 #         compiler flags:		$LTCFLAGS
 #         linker:		$LD (gnu? $with_gnu_ld)
-#         $progname:	(GNU libtool) 2.4
+#         $progname:	(GNU libtool) 2.4.2
 #         automake:	$automake_version
 #         autoconf:	$autoconf_version
 #
@@ -79,9 +80,9 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION=2.4
+VERSION=2.4.2
 TIMESTAMP=""
-package_revision=1.3293
+package_revision=1.3337
 
 # Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -136,15 +137,10 @@ progpath="$0"
 
 : ${CP="cp -f"}
 test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
-: ${EGREP="/bin/grep -E"}
-: ${FGREP="/bin/grep -F"}
-: ${GREP="/bin/grep"}
-: ${LN_S="ln -s"}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
-: ${SED="/bin/sed"}
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
 : ${Xsed="$SED -e 1s/^X//"}
 
@@ -387,7 +383,7 @@ case $progpath in
      ;;
   *)
      save_IFS="$IFS"
-     IFS=:
+     IFS=${PATH_SEPARATOR-:}
      for progdir in $PATH; do
        IFS="$save_IFS"
        test -x "$progdir/$progname" && break
@@ -771,8 +767,8 @@ func_help ()
 	s*\$LTCFLAGS*'"$LTCFLAGS"'*
 	s*\$LD*'"$LD"'*
 	s/\$with_gnu_ld/'"$with_gnu_ld"'/
-	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
 	p
 	d
      }
@@ -1052,6 +1048,7 @@ opt_finish=false
 opt_help=false
 opt_help_all=false
 opt_silent=:
+opt_warning=:
 opt_verbose=:
 opt_silent=false
 opt_verbose=false
@@ -1120,6 +1117,10 @@ esac
 			opt_silent=false
 func_append preserve_args " $opt"
 			;;
+      --no-warning|--no-warn)
+			opt_warning=false
+func_append preserve_args " $opt"
+			;;
       --no-verbose)
 			opt_verbose=false
 func_append preserve_args " $opt"
@@ -2059,7 +2060,7 @@ func_mode_compile ()
     *.[cCFSifmso] | \
     *.ada | *.adb | *.ads | *.asm | \
     *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
-    *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup)
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
       func_xform "$libobj"
       libobj=$func_xform_result
       ;;
@@ -3201,11 +3202,13 @@ func_mode_install ()
 
       # Set up the ranlib parameters.
       oldlib="$destdir/$name"
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
 
       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
 
       if test -n "$stripme" && test -n "$old_striplib"; then
-	func_show_eval "$old_striplib $oldlib" 'exit $?'
+	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
       fi
 
       # Do each command in the postinstall commands.
@@ -3470,7 +3473,7 @@ static const void *lt_preloaded_setup() {
 	  # linked before any other PIC object.  But we must not use
 	  # pic_flag when linking with -static.  The problem exists in
 	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
 	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
 	  *-*-hpux*)
 	    pic_flag_for_symtable=" $pic_flag"  ;;
@@ -3982,14 +3985,17 @@ func_exec_program_core ()
 # launches target application with the remaining arguments.
 func_exec_program ()
 {
-  for lt_wr_arg
-  do
-    case \$lt_wr_arg in
-    --lt-*) ;;
-    *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
-    esac
-    shift
-  done
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
   func_exec_program_core \${1+\"\$@\"}
 }
 
@@ -5057,9 +5063,15 @@ void lt_dump_script (FILE* f)
 {
 EOF
 	    func_emit_wrapper yes |
-              $SED -e 's/\([\\"]\)/\\\1/g' \
-	           -e 's/^/  fputs ("/' -e 's/$/\\n", f);/'
-
+	      $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
             cat <<"EOF"
 }
 EOF
@@ -5643,7 +5655,8 @@ func_mode_link ()
 	continue
 	;;
 
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
 	func_append compiler_flags " $arg"
 	func_append compile_command " $arg"
 	func_append finalize_command " $arg"
@@ -6147,7 +6160,8 @@ func_mode_link ()
 	lib=
 	found=no
 	case $deplib in
-	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
 	  if test "$linkmode,$pass" = "prog,link"; then
 	    compile_deplibs="$deplib $compile_deplibs"
 	    finalize_deplibs="$deplib $finalize_deplibs"
@@ -6831,7 +6845,7 @@ func_mode_link ()
 	         test "$hardcode_direct_absolute" = no; then
 		add="$dir/$linklib"
 	      elif test "$hardcode_minus_L" = yes; then
-		add_dir="-L$dir"
+		add_dir="-L$absdir"
 		# Try looking first in the location we're being installed to.
 		if test -n "$inst_prefix_dir"; then
 		  case $libdir in
@@ -7316,6 +7330,7 @@ func_mode_link ()
 	  # which has an extra 1 added just for fun
 	  #
 	  case $version_type in
+	  # correct linux to gnu/linux during the next big refactor
 	  darwin|linux|osf|windows|none)
 	    func_arith $number_major + $number_minor
 	    current=$func_arith_result
@@ -7432,7 +7447,7 @@ func_mode_link ()
 	  versuffix="$major.$revision"
 	  ;;
 
-	linux)
+	linux) # correct to gnu/linux during the next big refactor
 	  func_arith $current - $age
 	  major=.$func_arith_result
 	  versuffix="$major.$age.$revision"
@@ -8020,6 +8035,11 @@ EOF
 
       # Test again, we may have decided not to build it any more
       if test "$build_libtool_libs" = yes; then
+	# Remove ${wl} instances when linking with ld.
+	# FIXME: should test the right _cmds variable.
+	case $archive_cmds in
+	  *\$LD\ *) wl= ;;
+        esac
 	if test "$hardcode_into_libs" = yes; then
 	  # Hardcode the library paths
 	  hardcode_libdirs=
@@ -8050,7 +8070,7 @@ EOF
 	    elif test -n "$runpath_var"; then
 	      case "$perm_rpath " in
 	      *" $libdir "*) ;;
-	      *) func_apped perm_rpath " $libdir" ;;
+	      *) func_append perm_rpath " $libdir" ;;
 	      esac
 	    fi
 	  done
@@ -8058,11 +8078,7 @@ EOF
 	  if test -n "$hardcode_libdir_separator" &&
 	     test -n "$hardcode_libdirs"; then
 	    libdir="$hardcode_libdirs"
-	    if test -n "$hardcode_libdir_flag_spec_ld"; then
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-	    else
-	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-	    fi
+	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
 	  fi
 	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
 	    # We should set the runpath_var.
@@ -9152,6 +9168,8 @@ EOF
 	    esac
 	  done
 	fi
+	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+	tool_oldlib=$func_to_tool_file_result
 	eval cmds=\"$old_archive_cmds\"
 
 	func_len " $cmds"
@@ -9261,7 +9279,8 @@ EOF
 	      *.la)
 		func_basename "$deplib"
 		name="$func_basename_result"
-		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		func_resolve_sysroot "$deplib"
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
 		test -z "$libdir" && \
 		  func_fatal_error "\`$deplib' is not a valid libtool archive"
 		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 88de383..56666f0 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1,8 +1,8 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -11,8 +11,8 @@
 
 m4_define([_LT_COPYING], [dnl
 #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
-#                 Inc.
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 #   This file is part of GNU Libtool.
@@ -146,6 +146,8 @@ AC_REQUIRE([AC_CANONICAL_BUILD])dnl
 AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
 AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
 
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
 _LT_DECL([], [host_alias], [0], [The host system])dnl
 _LT_DECL([], [host], [0])dnl
 _LT_DECL([], [host_os], [0])dnl
@@ -637,7 +639,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
 m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
 configured by $[0], generated by m4_PACKAGE_STRING.
 
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
@@ -801,6 +803,7 @@ AC_DEFUN([LT_LANG],
 m4_case([$1],
   [C],			[_LT_LANG(C)],
   [C++],		[_LT_LANG(CXX)],
+  [Go],			[_LT_LANG(GO)],
   [Java],		[_LT_LANG(GCJ)],
   [Fortran 77],		[_LT_LANG(F77)],
   [Fortran],		[_LT_LANG(FC)],
@@ -822,6 +825,31 @@ m4_defun([_LT_LANG],
 ])# _LT_LANG
 
 
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC],     [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+  fi
+fi
+if test -z "$GOC"; then
+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
 # _LT_LANG_DEFAULT_CONFIG
 # -----------------------
 m4_defun([_LT_LANG_DEFAULT_CONFIG],
@@ -852,6 +880,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
        m4_ifdef([LT_PROG_GCJ],
 	[m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
 
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+  [LT_LANG(GO)],
+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
 AC_PROVIDE_IFELSE([LT_PROG_RC],
   [LT_LANG(RC)],
   [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
@@ -954,7 +986,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
         _lt_result=$?
-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	# If there is a non-empty error log, and "single_module"
+	# appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+	  cat conftest.err >&AS_MESSAGE_LOG_FD
+	# Otherwise, if the output was created with a 0 exit code from
+	# the compiler, it worked.
+	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
 	  lt_cv_apple_cc_single_mod=yes
 	else
 	  cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -962,6 +1000,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	rm -rf libconftest.dylib*
 	rm -f conftest.*
       fi])
+
     AC_CACHE_CHECK([for -exported_symbols_list linker flag],
       [lt_cv_ld_exported_symbols_list],
       [lt_cv_ld_exported_symbols_list=no
@@ -973,6 +1012,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
 	[lt_cv_ld_exported_symbols_list=no])
 	LDFLAGS="$save_LDFLAGS"
     ])
+
     AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
       [lt_cv_ld_force_load=no
       cat > conftest.c << _LT_EOF
@@ -990,7 +1030,9 @@ _LT_EOF
       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
       _lt_result=$?
-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+      if test -s conftest.err && $GREP force_load conftest.err; then
+	cat conftest.err >&AS_MESSAGE_LOG_FD
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
 	lt_cv_ld_force_load=yes
       else
 	cat conftest.err >&AS_MESSAGE_LOG_FD
@@ -1035,8 +1077,8 @@ _LT_EOF
 ])
 
 
-# _LT_DARWIN_LINKER_FEATURES
-# --------------------------
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
 # Checks for linker and compiler features on darwin
 m4_defun([_LT_DARWIN_LINKER_FEATURES],
 [
@@ -1047,6 +1089,8 @@ m4_defun([_LT_DARWIN_LINKER_FEATURES],
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
   if test "$lt_cv_ld_force_load" = "yes"; then
     _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
   else
     _LT_TAGVAR(whole_archive_flag_spec, $1)=''
   fi
@@ -1330,14 +1374,27 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
       *)
 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
 	  LD="${LD-ld} -64"
@@ -1414,13 +1471,13 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
 case $host_os in
@@ -1600,6 +1657,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -1639,7 +1701,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
       # If test is not a shell built-in, we'll probably end up computing a
       # maximum length that is only half of the actual maximum length, but
       # we can't tell.
-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
 	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
 	      test $i != 17 # 1/2 MB should be enough
       do
@@ -2185,7 +2247,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -2194,7 +2256,7 @@ aix3*)
   ;;
 
 aix[[4-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -2259,7 +2321,7 @@ beos*)
   ;;
 
 bsdi[[45]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -2398,7 +2460,7 @@ m4_if([$1], [],[
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -2406,10 +2468,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -2417,7 +2475,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
+    freebsd[[23]].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -2435,7 +2493,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[[01]]* | freebsdelf3.[[01]]*)
@@ -2455,17 +2513,18 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 haiku*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   dynamic_linker="$host_os runtime_loader"
@@ -2526,7 +2585,7 @@ hpux9* | hpux10* | hpux11*)
   ;;
 
 interix[[3-9]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -2542,7 +2601,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
 	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
+		version_type=linux # correct to gnu/linux during the next big refactor
 	else
 		version_type=irix
 	fi ;;
@@ -2579,9 +2638,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2648,7 +2707,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -2717,7 +2776,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2742,7 +2801,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -2766,7 +2825,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -2797,7 +2856,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2807,7 +2866,7 @@ tpf*)
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -3229,7 +3288,7 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
+# This must be glibc/ELF.
 linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -3649,6 +3708,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK ['"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -4233,7 +4293,9 @@ m4_if([$1], [CXX], [
     case $cc_basename in
     nvcc*) # Cuda Compiler Driver 2.2
       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC'
+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+      fi
       ;;
     esac
   else
@@ -4325,18 +4387,33 @@ m4_if([$1], [CXX], [
 	;;
       *)
 	case `$CC -V 2>&1 | sed 5q` in
-	*Sun\ F* | *Sun*Fortran*)
+	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
 	  ;;
+	*Sun\ F* | *Sun*Fortran*)
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	  ;;
 	*Sun\ C*)
 	  # Sun C 5.9
 	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	  ;;
+        *Intel*\ [[CF]]*Compiler*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	  ;;
+	*Portland\ Group*)
+	  _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	  _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	  _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	  ;;
 	esac
 	;;
       esac
@@ -4496,7 +4573,9 @@ m4_if([$1], [CXX], [
     ;;
   cygwin* | mingw* | cegcc*)
     case $cc_basename in
-    cl*) ;;
+    cl*)
+      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
     *)
       _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
       _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
@@ -4521,7 +4600,6 @@ m4_if([$1], [CXX], [
   _LT_TAGVAR(hardcode_direct, $1)=no
   _LT_TAGVAR(hardcode_direct_absolute, $1)=no
   _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
   _LT_TAGVAR(hardcode_libdir_separator, $1)=
   _LT_TAGVAR(hardcode_minus_L, $1)=no
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -4772,8 +4850,7 @@ _LT_EOF
 	xlf* | bgf* | bgxlf* | mpixlf*)
 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
 	  _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
-	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-	  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+	  _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
 	  _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
 	  if test "x$supports_anon_versioning" = xyes; then
 	    _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
@@ -5068,6 +5145,7 @@ _LT_EOF
 	# The linker will not automatically build a static lib if we build a DLL.
 	# _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
 	_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+	_LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
 	_LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
 	# Don't use ranlib
 	_LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
@@ -5114,10 +5192,6 @@ _LT_EOF
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
 
-    freebsd1*)
-      _LT_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
     # support.  Future versions do this automatically, but an explicit c++rt0.o
     # does not break anything, and helps significantly (at the cost of a little
@@ -5130,7 +5204,7 @@ _LT_EOF
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       _LT_TAGVAR(hardcode_direct, $1)=yes
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -5169,7 +5243,6 @@ _LT_EOF
       fi
       if test "$with_gnu_ld" = no; then
 	_LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
 	_LT_TAGVAR(hardcode_libdir_separator, $1)=:
 	_LT_TAGVAR(hardcode_direct, $1)=yes
 	_LT_TAGVAR(hardcode_direct_absolute, $1)=yes
@@ -5611,9 +5684,6 @@ _LT_TAGDECL([], [no_undefined_flag], [1],
 _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
     [Flag to hardcode $libdir into a binary during linking.
     This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1],
-    [[If ld is used when linking, flag to hardcode $libdir into a binary
-    during linking.  This must work even if $libdir does not exist]])
 _LT_TAGDECL([], [hardcode_libdir_separator], [1],
     [Whether we need a single "-rpath" flag with a separated argument])
 _LT_TAGDECL([], [hardcode_direct], [0],
@@ -5771,7 +5841,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -6141,7 +6210,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         esac
         ;;
 
-      freebsd[[12]]*)
+      freebsd2.*)
         # C++ shared libraries reported to be fairly broken before
 	# switch to ELF
         _LT_TAGVAR(ld_shlibs, $1)=no
@@ -6902,12 +6971,18 @@ public class foo {
   }
 };
 _LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
 ])
 
 _lt_libdeps_save_CFLAGS=$CFLAGS
 case "$CC $CFLAGS " in #(
 *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
 *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
 esac
 
 dnl Parse the compiler output and extract the necessary
@@ -7104,7 +7179,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7237,7 +7311,6 @@ _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
 _LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -7424,6 +7497,77 @@ CFLAGS=$lt_save_CFLAGS
 ])# _LT_LANG_GCJ_CONFIG
 
 
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
 # _LT_LANG_RC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for the Windows resource compiler
@@ -7493,6 +7637,13 @@ dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
 
 
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
 # LT_PROG_RC
 # ----------
 AC_DEFUN([LT_PROG_RC],
diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4
index 17cfd51..5d9acd8 100644
--- a/m4/ltoptions.m4
+++ b/m4/ltoptions.m4
@@ -326,9 +326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
 # MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
 m4_define([_LT_WITH_PIC],
 [AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
+    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
 	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
+    [lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+	IFS="$lt_save_ifs"
+	if test "X$lt_pkg" = "X$lt_p"; then
+	  pic_mode=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
     [pic_mode=default])
 
 test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
diff --git a/m4/ltversion.m4 b/m4/ltversion.m4
index 9c7b5d4..07a8602 100644
--- a/m4/ltversion.m4
+++ b/m4/ltversion.m4
@@ -9,15 +9,15 @@
 
 # @configure_input@
 
-# serial 3293 ltversion.m4
+# serial 3337 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.4])
-m4_define([LT_PACKAGE_REVISION], [1.3293])
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4'
-macro_revision='1.3293'
+[macro_version='2.4.2'
+macro_revision='1.3337'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff --git a/missing b/missing
index 28055d2..86a8fc3 100755
--- a/missing
+++ b/missing
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2009-04-28.21; # UTC
+scriptversion=2012-01-06.13; # UTC
 
 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009 Free Software Foundation, Inc.
+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -84,7 +84,6 @@ Supported PROGRAM values:
   help2man     touch the output file
   lex          create \`lex.yy.c', if possible, from existing .c
   makeinfo     touch the output file
-  tar          try tar, gnutar, gtar, then tar without non-portable flags
   yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
 
 Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
@@ -122,15 +121,6 @@ case $1 in
     # Not GNU programs, they don't have --version.
     ;;
 
-  tar*)
-    if test -n "$run"; then
-       echo 1>&2 "ERROR: \`tar' requires --run"
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       exit 1
-    fi
-    ;;
-
   *)
     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
        # We have it, but it failed.
@@ -226,7 +216,7 @@ WARNING: \`$1' $msg.  You should only need it if
          \`Bison' from any GNU archive site."
     rm -f y.tab.c y.tab.h
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
 	case $LASTARG in
 	*.y)
 	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
@@ -256,7 +246,7 @@ WARNING: \`$1' is $msg.  You should only need it if
          \`Flex' from any GNU archive site."
     rm -f lex.yy.c
     if test $# -ne 1; then
-        eval LASTARG="\${$#}"
+        eval LASTARG=\${$#}
 	case $LASTARG in
 	*.l)
 	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
@@ -318,41 +308,6 @@ WARNING: \`$1' is $msg.  You should only need it if
     touch $file
     ;;
 
-  tar*)
-    shift
-
-    # We have already tried tar in the generic part.
-    # Look for gnutar/gtar before invocation to avoid ugly error
-    # messages.
-    if (gnutar --version > /dev/null 2>&1); then
-       gnutar "$@" && exit 0
-    fi
-    if (gtar --version > /dev/null 2>&1); then
-       gtar "$@" && exit 0
-    fi
-    firstarg="$1"
-    if shift; then
-	case $firstarg in
-	*o*)
-	    firstarg=`echo "$firstarg" | sed s/o//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-	case $firstarg in
-	*h*)
-	    firstarg=`echo "$firstarg" | sed s/h//`
-	    tar "$firstarg" "$@" && exit 0
-	    ;;
-	esac
-    fi
-
-    echo 1>&2 "\
-WARNING: I can't seem to be able to run \`tar' with the given arguments.
-         You may want to install GNU tar or Free paxutils, or check the
-         command line arguments."
-    exit 1
-    ;;
-
   *)
     echo 1>&2 "\
 WARNING: \`$1' is needed, and is $msg.
diff --git a/po/pl.po b/po/pl.po
index 569499b..37d6a55 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -3,13 +3,13 @@
 # Copyright (C) 2007 THE gmtk'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the gmtk package.
 #
-# Julian Sikorski <belegdol at gmail.com>, 2007, 2008, 2009, 2010, 2011.
+# Julian Sikorski <belegdol at gmail.com>, 2007, 2008, 2009, 2010, 2011, 2012.
 msgid ""
 msgstr ""
 "Project-Id-Version: pl\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-08 06:47-0700\n"
-"PO-Revision-Date: 2011-11-08 20:14+0100\n"
+"POT-Creation-Date: 2012-09-22 10:56+0200\n"
+"PO-Revision-Date: 2012-09-22 10:58+0200\n"
 "Last-Translator: Julian Sikorski <belegdol at gmail.com>\n"
 "Language-Team: Polish <kde-i18n-doc at kde.org>\n"
 "Language: pl\n"
@@ -19,82 +19,78 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2;\n"
 "X-Launchpad-Export-Date: 2011-06-09 16:08+0000\n"
-"X-Generator: Lokalize 1.2\n"
+"X-Generator: Lokalize 1.4\n"
 
-#: ../src/gm_audio.c:78 ../src/gm_audio.c:252
-#: ../src/gmtk_output_combo_box.c:148
+#: ../src/gm_audio.c:80 ../src/gm_audio.c:266
+#: ../src/gmtk_output_combo_box.c:150
 msgid "Default"
 msgstr "Domyślny"
 
-#: ../src/gmtk_media_player.c:554 ../src/gmtk_media_player.c:891
+#: ../src/gmtk_media_player.c:688 ../src/gmtk_media_player.c:1062
 msgid "Frame Dropping"
 msgstr "Opuszczanie klatek"
 
-#: ../src/gmtk_media_player.c:568
+#: ../src/gmtk_media_player.c:702
 msgid "Deinterlace"
 msgstr "Usuwanie przeplotu"
 
-#: ../src/gmtk_media_player.c:791
+#: ../src/gmtk_media_player.c:952
 msgid "Loading..."
 msgstr "Wczytywanie..."
 
-#: ../src/gmtk_media_player.c:918
+#: ../src/gmtk_media_player.c:1090
 msgid "Subtitles Visible"
 msgstr "Napisy widoczne"
 
-#: ../src/gmtk_media_player.c:921
+#: ../src/gmtk_media_player.c:1093
 msgid "Subtitles Hidden"
 msgstr "Napisy ukryte"
 
-#: ../src/gmtk_media_player.c:2671
+#: ../src/gmtk_media_player.c:2981
 #, c-format
 msgid "Failed to open %s"
 msgstr "Nie udało się otworzyć „%s”"
 
-#: ../src/gmtk_media_player.c:2708
+#: ../src/gmtk_media_player.c:3023
 msgid "Compressed SWF format not supported"
 msgstr "Skompresowany format SWF nieobsługiwany"
 
-#: ../src/gmtk_media_player.c:2736
-msgid "GNOME MPlayer Error"
-msgstr "Błąd GNOME MPlayer"
-
-#: ../src/gmtk_media_player.c:2799
+#: ../src/gmtk_media_player.c:3128
 #, c-format
 msgid "Cache fill: %2.2f%%"
 msgstr "Zapełnienie bufora: %2.2f%%"
 
-#: ../src/gmtk_media_player.c:2945 ../src/gmtk_media_player.c:2946
-#: ../src/gmtk_media_player.c:2995 ../src/gmtk_media_player.c:3027
-#: ../src/gmtk_media_player.c:3028 ../src/gmtk_media_player.c:3060
-#: ../src/gmtk_media_player.c:3092
+#: ../src/gmtk_media_player.c:3294 ../src/gmtk_media_player.c:3295
+#: ../src/gmtk_media_player.c:3344 ../src/gmtk_media_player.c:3376
+#: ../src/gmtk_media_player.c:3377 ../src/gmtk_media_player.c:3409
+#: ../src/gmtk_media_player.c:3441
 msgid "Unknown"
 msgstr "Nieznany"
 
-#: ../src/gmtk_media_player.c:3006
+#: ../src/gmtk_media_player.c:3355
 #, c-format
 msgid "External Subtitle #%i"
 msgstr "Napisy zewnętrzne #%i"
 
-#: ../src/gmtk_media_player.c:3199
+#: ../src/gmtk_media_player.c:3548
 #, c-format
 msgid "Screenshot saved to '%s'"
 msgstr "Obraz ekranu zapisano do pliku „%s”"
 
-#: ../src/gmtk_media_player.c:3202 ../src/gmtk_media_player.c:3298
+#: ../src/gmtk_media_player.c:3551 ../src/gmtk_media_player.c:3652
 msgid "GNOME MPlayer Notification"
 msgstr "Powiadomienie"
 
-#: ../src/gmtk_media_player.c:3295
+#: ../src/gmtk_media_player.c:3649
 msgid "MPlayer should be Upgraded to a Newer Version"
 msgstr "MPlayer powinien zostać zaktualizowany do nowszej wersji"
 
-#: ../src/gmtk_media_player.c:3541
-msgid "You might want to consider upgrading mplayer to a newer version\n"
-msgstr "Proszę rozważyć aktualizację do nowszej wersji mplayera\n"
+#: ../src/gmtk_media_player.c:3912
+msgid "You might want to consider upgrading mplayer to a newer version"
+msgstr "Proszę rozważyć aktualizację mplayera do nowszej wersji"
 
-#: ../src/gmtk_media_tracker.c:97 ../src/gmtk_media_tracker.c:101
-#: ../src/gmtk_media_tracker.c:208
+#: ../src/gmtk_media_tracker.c:102 ../src/gmtk_media_tracker.c:106
+#: ../src/gmtk_media_tracker.c:216
 msgid "No Information"
 msgstr "Brak informacji"
 
@@ -102,3 +98,5 @@ msgstr "Brak informacji"
 msgid "No Data"
 msgstr "Brak danych"
 
+#~ msgid "GNOME MPlayer Error"
+#~ msgstr "Błąd GNOME MPlayer"
diff --git a/src/Makefile.am b/src/Makefile.am
index 7e369de..d07c679 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -24,14 +24,18 @@ libgmtk_la_SOURCES = \
 	gmtk_media_tracker.c \
 	gmtk_media_tracker.h \
 	gmtk_output_combo_box.c \
-	gmtk_output_combo_box.h
+	gmtk_output_combo_box.h \
+    libgmlib.la
 
 libgmtk_la_CFLAGS = -fPIC \
 	$(GTK_CFLAGS) \
 	$(ALSA_CFLAGS) \
 	$(PULSE_CFLAGS)	
 
-libgmtk_la_LDFLAGS = -L.libs
+libgmtk_la_LDFLAGS = -L.libs \
+	-version-number $(LIB_VERSION) \
+	-no-undefined \
+	$(AM_LDFLAGS)
 
 libgmtk_la_LIBADD = \
     -lgmlib \
@@ -48,6 +52,8 @@ libgmlib_la_SOURCES = \
 	gm_audio.h \
 	gm_file.c \
 	gm_file.h \
+	gm_log.c \
+	gm_log.h \
 	gm_parse.c \
 	gm_parse.h \
 	gm_pref_store.c \
@@ -65,7 +71,10 @@ libgmlib_la_CFLAGS = -fPIC \
 	$(ALSA_CFLAGS) \
 	$(PULSE_CFLAGS)	
 
-libgmlib_la_LDFLAGS = 
+libgmlib_la_LDFLAGS = \
+	-version-number $(LIB_VERSION) \
+	-no-undefined \
+	$(AM_LDFLAGS)
 
 libgmlib_la_LIBADD = \
     $(LIBS) \
@@ -78,10 +87,11 @@ libgmlib_la_LIBADD = \
 
 includedir = $(prefix)/include/gmtk
 include_HEADERS = \
-    gm_common.h \
+	gmlib.h \
+	gm_common.h \
 	gm_audio.h \
 	gm_file.h \
-	gmlib.h \
+	gm_log.h \
 	gm_parse.h \
 	gm_pref_store.h \
 	gm_strfuncs.h \
diff --git a/src/Makefile.in b/src/Makefile.in
index ca694da..8e6da35 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1,9 +1,9 @@
-# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# Makefile.in generated by automake 1.11.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009  Free Software Foundation,
-# Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+# Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -18,6 +18,23 @@
 
 
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -72,6 +89,12 @@ am__nobase_list = $(am__nobase_strip_setup); \
 am__base_list = \
   sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
   sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
 	"$(DESTDIR)$(includedir)"
 LTLIBRARIES = $(lib_LTLIBRARIES)
@@ -81,11 +104,11 @@ libgmlib_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am_libgmlib_la_OBJECTS = libgmlib_la-gm_common.lo \
 	libgmlib_la-gm_audio.lo libgmlib_la-gm_file.lo \
-	libgmlib_la-gm_parse.lo libgmlib_la-gm_pref_store.lo \
-	libgmlib_la-gm_strfuncs.lo
+	libgmlib_la-gm_log.lo libgmlib_la-gm_parse.lo \
+	libgmlib_la-gm_pref_store.lo libgmlib_la-gm_strfuncs.lo
 libgmlib_la_OBJECTS = $(am_libgmlib_la_OBJECTS)
-AM_V_lt = $(am__v_lt_$(V))
-am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
+AM_V_lt = $(am__v_lt_ at AM_V@)
+am__v_lt_ = $(am__v_lt_ at AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 libgmlib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libgmlib_la_CFLAGS) \
@@ -110,24 +133,29 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 	$(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_$(V))
-am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
+AM_V_CC = $(am__v_CC_ at AM_V@)
+am__v_CC_ = $(am__v_CC_ at AM_DEFAULT_V@)
 am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_$(V))
-am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
+AM_V_at = $(am__v_at_ at AM_V@)
+am__v_at_ = $(am__v_at_ at AM_DEFAULT_V@)
 am__v_at_0 = @
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_$(V))
-am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
+AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_$(V))
-am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
+AM_V_GEN = $(am__v_GEN_ at AM_V@)
+am__v_GEN_ = $(am__v_GEN_ at AM_DEFAULT_V@)
 am__v_GEN_0 = @echo "  GEN   " $@;
 SOURCES = $(libgmlib_la_SOURCES) $(libgmtk_la_SOURCES)
 DIST_SOURCES = $(libgmlib_la_SOURCES) $(libgmtk_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DATA = $(pkgconfig_DATA)
 HEADERS = $(include_HEADERS)
 ETAGS = etags
@@ -231,12 +259,15 @@ LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIB_VERSION = @LIB_VERSION@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
+MAJOR_VERSION = @MAJOR_VERSION@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
+MINOR_VERSION = @MINOR_VERSION@
 MKDIR_P = @MKDIR_P@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
@@ -267,6 +298,7 @@ PULSE_CFLAGS = @PULSE_CFLAGS@
 PULSE_DEFINES = @PULSE_DEFINES@
 PULSE_LIBS = @PULSE_LIBS@
 RANLIB = @RANLIB@
+RELEASE_VERSION = @RELEASE_VERSION@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -352,14 +384,19 @@ libgmtk_la_SOURCES = \
 	gmtk_media_tracker.c \
 	gmtk_media_tracker.h \
 	gmtk_output_combo_box.c \
-	gmtk_output_combo_box.h
+	gmtk_output_combo_box.h \
+    libgmlib.la
 
 libgmtk_la_CFLAGS = -fPIC \
 	$(GTK_CFLAGS) \
 	$(ALSA_CFLAGS) \
 	$(PULSE_CFLAGS)	
 
-libgmtk_la_LDFLAGS = -L.libs
+libgmtk_la_LDFLAGS = -L.libs \
+	-version-number $(LIB_VERSION) \
+	-no-undefined \
+	$(AM_LDFLAGS)
+
 libgmtk_la_LIBADD = \
     -lgmlib \
     $(GTK_LIBS) \
@@ -374,6 +411,8 @@ libgmlib_la_SOURCES = \
 	gm_audio.h \
 	gm_file.c \
 	gm_file.h \
+	gm_log.c \
+	gm_log.h \
 	gm_parse.c \
 	gm_parse.h \
 	gm_pref_store.c \
@@ -391,7 +430,11 @@ libgmlib_la_CFLAGS = -fPIC \
 	$(ALSA_CFLAGS) \
 	$(PULSE_CFLAGS)	
 
-libgmlib_la_LDFLAGS = 
+libgmlib_la_LDFLAGS = \
+	-version-number $(LIB_VERSION) \
+	-no-undefined \
+	$(AM_LDFLAGS)
+
 libgmlib_la_LIBADD = \
     $(LIBS) \
 	$(GLIB_LIBS) \
@@ -401,10 +444,11 @@ libgmlib_la_LIBADD = \
 	$(PULSE_LIBS)	
 
 include_HEADERS = \
-    gm_common.h \
+	gmlib.h \
+	gm_common.h \
 	gm_audio.h \
 	gm_file.h \
-	gmlib.h \
+	gm_log.h \
 	gm_parse.h \
 	gm_pref_store.h \
 	gm_strfuncs.h \
@@ -461,7 +505,6 @@ gmlib.pc: $(top_builddir)/config.status $(srcdir)/gmlib.pc.in
 	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
-	test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
 	@list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
 	list2=; for p in $$list; do \
 	  if test -f $$p; then \
@@ -469,6 +512,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
 	  else :; fi; \
 	done; \
 	test -z "$$list2" || { \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
 	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
 	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
 	}
@@ -490,9 +535,9 @@ clean-libLTLIBRARIES:
 	  echo "rm -f \"$${dir}/so_locations\""; \
 	  rm -f "$${dir}/so_locations"; \
 	done
-libgmlib.la: $(libgmlib_la_OBJECTS) $(libgmlib_la_DEPENDENCIES) 
+libgmlib.la: $(libgmlib_la_OBJECTS) $(libgmlib_la_DEPENDENCIES) $(EXTRA_libgmlib_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(libgmlib_la_LINK) -rpath $(libdir) $(libgmlib_la_OBJECTS) $(libgmlib_la_LIBADD) $(LIBS)
-libgmtk.la: $(libgmtk_la_OBJECTS) $(libgmtk_la_DEPENDENCIES) 
+libgmtk.la: $(libgmtk_la_OBJECTS) $(libgmtk_la_DEPENDENCIES) $(EXTRA_libgmtk_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(libgmtk_la_LINK) -rpath $(libdir) $(libgmtk_la_OBJECTS) $(libgmtk_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
@@ -504,6 +549,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libgmlib_la-gm_audio.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libgmlib_la-gm_common.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libgmlib_la-gm_file.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libgmlib_la-gm_log.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libgmlib_la-gm_parse.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libgmlib_la-gm_pref_store.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libgmlib_la-gm_strfuncs.Plo at am__quote@
@@ -516,114 +562,107 @@ distclean-compile:
 .c.o:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'`
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 libgmlib_la-gm_common.lo: gm_common.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -MT libgmlib_la-gm_common.lo -MD -MP -MF $(DEPDIR)/libgmlib_la-gm_common.Tpo -c -o libgmlib_la-gm_common.lo `test -f 'gm_common.c' || echo '$(srcdir)/'`gm_common.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmlib_la-gm_common.Tpo $(DEPDIR)/libgmlib_la-gm_common.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gm_common.c' object='libgmlib_la-gm_common.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gm_common.c' object='libgmlib_la-gm_common.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_common.lo `test -f 'gm_common.c' || echo '$(srcdir)/'`gm_common.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_common.lo `test -f 'gm_common.c' || echo '$(srcdir)/'`gm_common.c
 
 libgmlib_la-gm_audio.lo: gm_audio.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -MT libgmlib_la-gm_audio.lo -MD -MP -MF $(DEPDIR)/libgmlib_la-gm_audio.Tpo -c -o libgmlib_la-gm_audio.lo `test -f 'gm_audio.c' || echo '$(srcdir)/'`gm_audio.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmlib_la-gm_audio.Tpo $(DEPDIR)/libgmlib_la-gm_audio.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gm_audio.c' object='libgmlib_la-gm_audio.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gm_audio.c' object='libgmlib_la-gm_audio.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_audio.lo `test -f 'gm_audio.c' || echo '$(srcdir)/'`gm_audio.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_audio.lo `test -f 'gm_audio.c' || echo '$(srcdir)/'`gm_audio.c
 
 libgmlib_la-gm_file.lo: gm_file.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -MT libgmlib_la-gm_file.lo -MD -MP -MF $(DEPDIR)/libgmlib_la-gm_file.Tpo -c -o libgmlib_la-gm_file.lo `test -f 'gm_file.c' || echo '$(srcdir)/'`gm_file.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmlib_la-gm_file.Tpo $(DEPDIR)/libgmlib_la-gm_file.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gm_file.c' object='libgmlib_la-gm_file.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gm_file.c' object='libgmlib_la-gm_file.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_file.lo `test -f 'gm_file.c' || echo '$(srcdir)/'`gm_file.c
+
+libgmlib_la-gm_log.lo: gm_log.c
+ at am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -MT libgmlib_la-gm_log.lo -MD -MP -MF $(DEPDIR)/libgmlib_la-gm_log.Tpo -c -o libgmlib_la-gm_log.lo `test -f 'gm_log.c' || echo '$(srcdir)/'`gm_log.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmlib_la-gm_log.Tpo $(DEPDIR)/libgmlib_la-gm_log.Plo
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gm_log.c' object='libgmlib_la-gm_log.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_file.lo `test -f 'gm_file.c' || echo '$(srcdir)/'`gm_file.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_log.lo `test -f 'gm_log.c' || echo '$(srcdir)/'`gm_log.c
 
 libgmlib_la-gm_parse.lo: gm_parse.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -MT libgmlib_la-gm_parse.lo -MD -MP -MF $(DEPDIR)/libgmlib_la-gm_parse.Tpo -c -o libgmlib_la-gm_parse.lo `test -f 'gm_parse.c' || echo '$(srcdir)/'`gm_parse.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmlib_la-gm_parse.Tpo $(DEPDIR)/libgmlib_la-gm_parse.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gm_parse.c' object='libgmlib_la-gm_parse.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gm_parse.c' object='libgmlib_la-gm_parse.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_parse.lo `test -f 'gm_parse.c' || echo '$(srcdir)/'`gm_parse.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_parse.lo `test -f 'gm_parse.c' || echo '$(srcdir)/'`gm_parse.c
 
 libgmlib_la-gm_pref_store.lo: gm_pref_store.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -MT libgmlib_la-gm_pref_store.lo -MD -MP -MF $(DEPDIR)/libgmlib_la-gm_pref_store.Tpo -c -o libgmlib_la-gm_pref_store.lo `test -f 'gm_pref_store.c' || echo '$(srcdir)/'`gm_pref_store.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmlib_la-gm_pref_store.Tpo $(DEPDIR)/libgmlib_la-gm_pref_store.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gm_pref_store.c' object='libgmlib_la-gm_pref_store.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gm_pref_store.c' object='libgmlib_la-gm_pref_store.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_pref_store.lo `test -f 'gm_pref_store.c' || echo '$(srcdir)/'`gm_pref_store.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_pref_store.lo `test -f 'gm_pref_store.c' || echo '$(srcdir)/'`gm_pref_store.c
 
 libgmlib_la-gm_strfuncs.lo: gm_strfuncs.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -MT libgmlib_la-gm_strfuncs.lo -MD -MP -MF $(DEPDIR)/libgmlib_la-gm_strfuncs.Tpo -c -o libgmlib_la-gm_strfuncs.lo `test -f 'gm_strfuncs.c' || echo '$(srcdir)/'`gm_strfuncs.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmlib_la-gm_strfuncs.Tpo $(DEPDIR)/libgmlib_la-gm_strfuncs.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gm_strfuncs.c' object='libgmlib_la-gm_strfuncs.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gm_strfuncs.c' object='libgmlib_la-gm_strfuncs.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_strfuncs.lo `test -f 'gm_strfuncs.c' || echo '$(srcdir)/'`gm_strfuncs.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmlib_la_CFLAGS) $(CFLAGS) -c -o libgmlib_la-gm_strfuncs.lo `test -f 'gm_strfuncs.c' || echo '$(srcdir)/'`gm_strfuncs.c
 
 libgmtk_la-gmtk_common.lo: gmtk_common.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -MT libgmtk_la-gmtk_common.lo -MD -MP -MF $(DEPDIR)/libgmtk_la-gmtk_common.Tpo -c -o libgmtk_la-gmtk_common.lo `test -f 'gmtk_common.c' || echo '$(srcdir)/'`gmtk_common.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmtk_la-gmtk_common.Tpo $(DEPDIR)/libgmtk_la-gmtk_common.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gmtk_common.c' object='libgmtk_la-gmtk_common.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gmtk_common.c' object='libgmtk_la-gmtk_common.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -c -o libgmtk_la-gmtk_common.lo `test -f 'gmtk_common.c' || echo '$(srcdir)/'`gmtk_common.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -c -o libgmtk_la-gmtk_common.lo `test -f 'gmtk_common.c' || echo '$(srcdir)/'`gmtk_common.c
 
 libgmtk_la-gmtk_audio_meter.lo: gmtk_audio_meter.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -MT libgmtk_la-gmtk_audio_meter.lo -MD -MP -MF $(DEPDIR)/libgmtk_la-gmtk_audio_meter.Tpo -c -o libgmtk_la-gmtk_audio_meter.lo `test -f 'gmtk_audio_meter.c' || echo '$(srcdir)/'`gmtk_audio_meter.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmtk_la-gmtk_audio_meter.Tpo $(DEPDIR)/libgmtk_la-gmtk_audio_meter.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gmtk_audio_meter.c' object='libgmtk_la-gmtk_audio_meter.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gmtk_audio_meter.c' object='libgmtk_la-gmtk_audio_meter.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -c -o libgmtk_la-gmtk_audio_meter.lo `test -f 'gmtk_audio_meter.c' || echo '$(srcdir)/'`gmtk_audio_meter.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -c -o libgmtk_la-gmtk_audio_meter.lo `test -f 'gmtk_audio_meter.c' || echo '$(srcdir)/'`gmtk_audio_meter.c
 
 libgmtk_la-gmtk_media_player.lo: gmtk_media_player.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -MT libgmtk_la-gmtk_media_player.lo -MD -MP -MF $(DEPDIR)/libgmtk_la-gmtk_media_player.Tpo -c -o libgmtk_la-gmtk_media_player.lo `test -f 'gmtk_media_player.c' || echo '$(srcdir)/'`gmtk_media_player.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmtk_la-gmtk_media_player.Tpo $(DEPDIR)/libgmtk_la-gmtk_media_player.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gmtk_media_player.c' object='libgmtk_la-gmtk_media_player.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gmtk_media_player.c' object='libgmtk_la-gmtk_media_player.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -c -o libgmtk_la-gmtk_media_player.lo `test -f 'gmtk_media_player.c' || echo '$(srcdir)/'`gmtk_media_player.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -c -o libgmtk_la-gmtk_media_player.lo `test -f 'gmtk_media_player.c' || echo '$(srcdir)/'`gmtk_media_player.c
 
 libgmtk_la-gmtk_media_tracker.lo: gmtk_media_tracker.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -MT libgmtk_la-gmtk_media_tracker.lo -MD -MP -MF $(DEPDIR)/libgmtk_la-gmtk_media_tracker.Tpo -c -o libgmtk_la-gmtk_media_tracker.lo `test -f 'gmtk_media_tracker.c' || echo '$(srcdir)/'`gmtk_media_tracker.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmtk_la-gmtk_media_tracker.Tpo $(DEPDIR)/libgmtk_la-gmtk_media_tracker.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gmtk_media_tracker.c' object='libgmtk_la-gmtk_media_tracker.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gmtk_media_tracker.c' object='libgmtk_la-gmtk_media_tracker.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -c -o libgmtk_la-gmtk_media_tracker.lo `test -f 'gmtk_media_tracker.c' || echo '$(srcdir)/'`gmtk_media_tracker.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -c -o libgmtk_la-gmtk_media_tracker.lo `test -f 'gmtk_media_tracker.c' || echo '$(srcdir)/'`gmtk_media_tracker.c
 
 libgmtk_la-gmtk_output_combo_box.lo: gmtk_output_combo_box.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -MT libgmtk_la-gmtk_output_combo_box.lo -MD -MP -MF $(DEPDIR)/libgmtk_la-gmtk_output_combo_box.Tpo -c -o libgmtk_la-gmtk_output_combo_box.lo `test -f 'gmtk_output_combo_box.c' || echo '$(srcdir)/'`gmtk_output_combo_box.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libgmtk_la-gmtk_output_combo_box.Tpo $(DEPDIR)/libgmtk_la-gmtk_output_combo_box.Plo
- at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
- at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='gmtk_output_combo_box.c' object='libgmtk_la-gmtk_output_combo_box.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='gmtk_output_combo_box.c' object='libgmtk_la-gmtk_output_combo_box.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -c -o libgmtk_la-gmtk_output_combo_box.lo `test -f 'gmtk_output_combo_box.c' || echo '$(srcdir)/'`gmtk_output_combo_box.c
+ at am__fastdepCC_FALSE@	$(AM_V_CC at am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmtk_la_CFLAGS) $(CFLAGS) -c -o libgmtk_la-gmtk_output_combo_box.lo `test -f 'gmtk_output_combo_box.c' || echo '$(srcdir)/'`gmtk_output_combo_box.c
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -632,8 +671,11 @@ clean-libtool:
 	-rm -rf .libs _libs
 install-pkgconfigDATA: $(pkgconfig_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
 	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -647,13 +689,14 @@ uninstall-pkgconfigDATA:
 	@$(NORMAL_UNINSTALL)
 	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files
+	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
 install-includeHEADERS: $(include_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
+	fi; \
 	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  echo "$$d$$p"; \
@@ -667,9 +710,7 @@ uninstall-includeHEADERS:
 	@$(NORMAL_UNINSTALL)
 	@list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \
 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
-	test -n "$$files" || exit 0; \
-	echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \
-	cd "$(DESTDIR)$(includedir)" && rm -f $$files
+	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
 	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
@@ -770,10 +811,15 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
 mostlyclean-generic:
 
 clean-generic:
diff --git a/src/gm_audio.c b/src/gm_audio.c
index 1e10bb8..44b191a 100644
--- a/src/gm_audio.c
+++ b/src/gm_audio.c
@@ -33,6 +33,7 @@
 #endif
 
 #include <math.h>
+#include "gm_log.h"
 
 GList *gm_audio_devices = NULL;
 gboolean gm_audio_debug = FALSE;
@@ -158,7 +159,7 @@ gboolean gm_audio_query_devices()
     card = -1;
 
     while (snd_card_next(&card) >= 0) {
-        //printf("card = %i\n", card);
+        gm_log(FALSE, G_LOG_LEVEL_DEBUG, "card = %i", card);
         if (card < 0)
             break;
         if (name != NULL) {
@@ -167,7 +168,7 @@ gboolean gm_audio_query_devices()
         }
         name = malloc(32);
         sprintf(name, "hw:%i", card);
-        //printf("name = %s\n",name);
+        gm_log(FALSE, G_LOG_LEVEL_DEBUG, "name = %s", name);
 
         if ((err = snd_ctl_open(&handle, name, 0)) < 0) {
             continue;
@@ -203,6 +204,7 @@ gboolean gm_audio_query_devices()
             device->mplayer_ao = g_strdup(mplayer_ao);
             gm_audio_devices = g_list_append(gm_audio_devices, device);
 
+            g_free(device_name);
             g_free(desc);
             g_free(mplayer_ao);
 
@@ -226,8 +228,9 @@ gboolean gm_audio_query_devices()
         pa_context_set_state_callback(gm_audio_context, gm_audio_context_state_callback, gm_audio_devices);
     }
     // make sure the pulse events are done before we exit this function
-    while (g_main_context_pending(NULL))
-        g_main_context_iteration(NULL, FALSE);
+    //gm_log(FALSE, G_LOG_LEVEL_DEBUG, "waiting for all PA events to drain");
+    //while (g_main_context_pending(NULL))
+    //    g_main_context_iteration(NULL, FALSE);
 
 #endif
 
@@ -242,7 +245,7 @@ gboolean gm_audio_update_device(AudioDevice * device)
     if (gm_audio_devices == NULL) {
         gm_audio_query_devices();
     }
-    //printf("update device, looking for %s\n", device->description);
+    gm_log(FALSE, G_LOG_LEVEL_DEBUG, "update device, looking for %s", device->description);
 
     device->type = AUDIO_TYPE_UNKNOWN;
     if (device->alsa_device_name != NULL) {
@@ -257,7 +260,7 @@ gboolean gm_audio_update_device(AudioDevice * device)
     iter = gm_audio_devices;
     while (iter != NULL) {
         data = (AudioDevice *) iter->data;
-        //printf("Checking %s\n", data->description);
+        gm_log(FALSE, G_LOG_LEVEL_DEBUG, "Checking %s", data->description);
         if ((device->description != NULL && g_ascii_strcasecmp(device->description, data->description) == 0)
             || ((device->description == NULL || g_ascii_strcasecmp(device->description, "") == 0)
                 && g_ascii_strcasecmp(data->description, g_dgettext(GETTEXT_PACKAGE, "Default")) == 0)) {
@@ -321,7 +324,7 @@ gint gm_audio_get_default_pulse_index()
             ret = device->pulse_index;
         }
     }
-    //printf("default index is = %i\n", ret);
+    gm_log(FALSE, G_LOG_LEVEL_DEBUG, "default index is = %i", ret);
     return ret;
 }
 
@@ -347,6 +350,7 @@ gdouble gm_audio_get_volume(AudioDevice * device)
                                                   gm_audio_pa_sink_update_volume_cb, device);
             }
         }
+        gm_log(FALSE, G_LOG_LEVEL_DEBUG, "waiting for all events to drain and volume to not be -1");
         while (g_main_context_pending(NULL) || device->volume == -1)
             g_main_context_iteration(NULL, FALSE);
 
@@ -390,7 +394,8 @@ gboolean gm_audio_alsa_monitor(gpointer data)
     gdouble old_volume;
 
     old_volume = device->volume;
-    //printf("old volume = %f '%s' '%s'\n",old_volume,device->alsa_device_name, device->alsa_mixer);
+    gm_log(FALSE, G_LOG_LEVEL_DEBUG, "old volume = %f '%s' '%s'", old_volume, device->alsa_device_name,
+           device->alsa_mixer);
 
 #ifdef HAVE_ASOUNDLIB
     if (device->alsa_device_name && device->alsa_mixer)
@@ -400,7 +405,7 @@ gboolean gm_audio_alsa_monitor(gpointer data)
     if (gm_audio_server_volume_update_callback && old_volume != device->volume)
         g_idle_add(gm_audio_server_volume_update_callback, NULL);
 
-    //printf("in alsa monitor %f\n",device->volume);
+    gm_log(FALSE, G_LOG_LEVEL_DEBUG, "in alsa monitor %f", device->volume);
     return device->type == AUDIO_TYPE_ALSA;
 }
 
@@ -420,10 +425,10 @@ void gm_audio_pa_sink_update_volume_cb(pa_context * c, const pa_sink_info * i, i
 {
     AudioDevice *device = (AudioDevice *) data;
     GList *iter;
-    gdouble old_volume = 0.0;
+    // gdouble old_volume = 0.0;
     gint index;
 
-    //printf("gm_audio_pa_sink_update_volume_cb %p, %i, %p\n",i, eol,data);
+    gm_log(FALSE, G_LOG_LEVEL_DEBUG, "gm_audio_pa_sink_update_volume_cb %p, %i, %p", i, eol, data);
     if (i) {
         if (device) {
             device->pulse_channels = i->volume.channels;
@@ -439,9 +444,10 @@ void gm_audio_pa_sink_update_volume_cb(pa_context * c, const pa_sink_info * i, i
                             index = gm_audio_get_default_pulse_index();
                         }
                         if (i->index == index) {
-                            old_volume = device->volume;
+                            //old_volume = device->volume;
                             device->volume = (gdouble) pa_cvolume_avg(&(i->volume)) / (gdouble) PA_VOLUME_NORM;
-                            // printf("updated %s volume to %f\n", device->description, device->volume);
+                            gm_log(FALSE, G_LOG_LEVEL_DEBUG, "updated %s volume to %f", device->description,
+                                   device->volume);
                         }
                     }
                     iter = iter->next;
@@ -450,7 +456,9 @@ void gm_audio_pa_sink_update_volume_cb(pa_context * c, const pa_sink_info * i, i
                     g_idle_add(gm_audio_server_volume_update_callback, NULL);
             }
         }
-        //printf("device volume = %f\n", device->volume);
+        if (device) {
+            gm_log(FALSE, G_LOG_LEVEL_DEBUG, "device volume = %f", device->volume);
+        }
     } else {
         // eol == -1 when the index requested is not found
         if (eol == -1 && device)
@@ -467,7 +475,7 @@ void gm_audio_pa_sink_cb(pa_context * c, const pa_sink_info * i, int eol, gpoint
 
     if (i) {
 
-        // printf("sink %i name: '%s'\n", i->index, i->name);
+        gm_log(FALSE, G_LOG_LEVEL_DEBUG, "sink %i name: '%s'", i->index, i->name);
 
         desc = g_strdup_printf("%s (PulseAudio)", i->description);
         mplayer_ao = g_strdup_printf("pulse::%i", i->index);
@@ -481,7 +489,8 @@ void gm_audio_pa_sink_cb(pa_context * c, const pa_sink_info * i, int eol, gpoint
         device->volume = (gdouble) pa_cvolume_avg(&(i->volume)) / (gdouble) PA_VOLUME_NORM;
         device->mplayer_ao = g_strdup(mplayer_ao);
         gm_audio_devices = g_list_append(gm_audio_devices, device);
-        //printf("\n%s\n\nproperties\n%s",desc,pa_proplist_to_string(i->proplist));
+        gm_log(FALSE, G_LOG_LEVEL_DEBUG, "%s", desc);
+        gm_logsp(FALSE, G_LOG_LEVEL_DEBUG, "properties", pa_proplist_to_string(i->proplist));
 
         g_free(desc);
         g_free(mplayer_ao);
@@ -492,7 +501,7 @@ void gm_audio_pa_sink_cb(pa_context * c, const pa_sink_info * i, int eol, gpoint
 
 void gm_audio_pa_subscribe_callback(pa_context * c, pa_subscription_event_type_t t, uint32_t index, void *userdata)
 {
-    // printf("subscribe_callback\n");
+    gm_log(FALSE, G_LOG_LEVEL_DEBUG, "subscribe_callback");
     switch (t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) {
     case PA_SUBSCRIPTION_EVENT_SINK:
         pa_context_get_sink_info_by_index(c, index, gm_audio_pa_sink_update_volume_cb, NULL);
@@ -501,7 +510,7 @@ void gm_audio_pa_subscribe_callback(pa_context * c, pa_subscription_event_type_t
         pa_context_get_server_info(c, gm_audio_pa_server_info_cb, NULL);
         break;
     default:
-        //printf("index = %i\n",index);
+        gm_log(FALSE, G_LOG_LEVEL_DEBUG, "index = %i", index);
         break;
     }
 }
@@ -518,8 +527,9 @@ void gm_audio_pa_server_info_cb(pa_context * c, const pa_server_info * i, void *
         for (iter = gm_audio_devices; iter != NULL; iter = g_list_next(iter)) {
             device = (AudioDevice *) iter->data;
             if (device->pulse_sink_name != NULL) {
-                if (g_strncasecmp(i->default_sink_name, device->pulse_sink_name, strlen(i->default_sink_name)) == 0) {
-                    // printf("The default output sink name is '%s'\n", i->default_sink_name);
+                if (g_ascii_strncasecmp(i->default_sink_name, device->pulse_sink_name, strlen(i->default_sink_name)) ==
+                    0) {
+                    gm_log(FALSE, G_LOG_LEVEL_DEBUG, "The default output sink name is '%s'", i->default_sink_name);
                     device->pulse_default = 1;
                     pa_context_get_sink_info_by_index(c, device->pulse_index, gm_audio_pa_sink_update_volume_cb, NULL);
                 } else {
@@ -534,9 +544,10 @@ void gm_audio_pa_server_info_cb(pa_context * c, const pa_server_info * i, void *
 
 void gm_audio_context_state_callback(pa_context * c, gpointer data)
 {
-    //printf("context state callback\n");
     int i;
 
+    gm_log(FALSE, G_LOG_LEVEL_DEBUG, "context state callback");
+
     switch (pa_context_get_state(c)) {
     case PA_CONTEXT_READY:{
             for (i = 0; i < 255; i++) {
@@ -569,22 +580,22 @@ gdouble get_alsa_volume(gchar * device, gchar * mixer)
     gchar **local_mixer;
 
     if ((err = snd_mixer_open(&mhandle, 0)) < 0) {
-        printf("Mixer open error %s\n", snd_strerror(err));
+        gm_log(FALSE, G_LOG_LEVEL_MESSAGE, "Mixer open error %s", snd_strerror(err));
         return vol;
     }
 
     if ((err = snd_mixer_attach(mhandle, device)) < 0) {
-        printf("Mixer attach error %s\n", snd_strerror(err));
+        gm_log(FALSE, G_LOG_LEVEL_MESSAGE, "Mixer attach error %s", snd_strerror(err));
         return vol;
     }
 
     if ((err = snd_mixer_selem_register(mhandle, NULL, NULL)) < 0) {
-        printf("Mixer register error %s\n", snd_strerror(err));
+        gm_log(FALSE, G_LOG_LEVEL_MESSAGE, "Mixer register error %s", snd_strerror(err));
         return vol;
     }
 
     if ((err = snd_mixer_load(mhandle)) < 0) {
-        printf("Mixer load error %s\n", snd_strerror(err));
+        gm_log(FALSE, G_LOG_LEVEL_MESSAGE, "Mixer load error %s", snd_strerror(err));
         return vol;
     }
 
@@ -619,13 +630,11 @@ gdouble get_alsa_volume(gchar * device, gchar * mixer)
             } else {
                 vol = 0;
             }
-            if (gm_audio_debug) {
-                printf("Getting Volume \n");
-                printf("%s Playback is %i\n", mixer, playback);
-                printf("%s Range is %li to %li \n", mixer, pmin, pmax);
-                printf("%s Current Volume %li, multiplier = %f\n", mixer, get_vol, f_multi);
-                printf("Scaled Volume is %lf\n", vol);
-            }
+            gm_log(gm_audio_debug, G_LOG_LEVEL_INFO, "Getting Volume");
+            gm_log(gm_audio_debug, G_LOG_LEVEL_INFO, "%s Playback is %i", mixer, playback);
+            gm_log(gm_audio_debug, G_LOG_LEVEL_INFO, "%s Range is %li to %li", mixer, pmin, pmax);
+            gm_log(gm_audio_debug, G_LOG_LEVEL_INFO, "%s Current Volume %li, multiplier = %f", mixer, get_vol, f_multi);
+            gm_log(gm_audio_debug, G_LOG_LEVEL_INFO, "Scaled Volume is %lf", vol);
         }
         snd_mixer_selem_id_free(sid);
     }
@@ -653,22 +662,22 @@ gboolean set_alsa_volume(gchar * device, gchar * mixer, gdouble volume)
     gchar **local_mixer;
 
     if ((err = snd_mixer_open(&mhandle, 0)) < 0) {
-        printf("Mixer open error %s\n", snd_strerror(err));
+        gm_log(FALSE, G_LOG_LEVEL_MESSAGE, "Mixer open error %s", snd_strerror(err));
         return found;
     }
 
     if ((err = snd_mixer_attach(mhandle, device)) < 0) {
-        printf("Mixer attach error %s\n", snd_strerror(err));
+        gm_log(FALSE, G_LOG_LEVEL_MESSAGE, "Mixer attach error %s", snd_strerror(err));
         return found;
     }
 
     if ((err = snd_mixer_selem_register(mhandle, NULL, NULL)) < 0) {
-        printf("Mixer register error %s\n", snd_strerror(err));
+        gm_log(FALSE, G_LOG_LEVEL_MESSAGE, "Mixer register error %s", snd_strerror(err));
         return found;
     }
 
     if ((err = snd_mixer_load(mhandle)) < 0) {
-        printf("Mixer load error %s\n", snd_strerror(err));
+        gm_log(FALSE, G_LOG_LEVEL_MESSAGE, "Mixer load error %s", snd_strerror(err));
         return found;
     }
 
@@ -706,13 +715,11 @@ gboolean set_alsa_volume(gchar * device, gchar * mixer, gdouble volume)
                 set_vol = (gdouble) ((volume) * f_multi) + pmin;
                 snd_mixer_selem_set_playback_volume_all(elem, set_vol);
             }
-            if (gm_audio_debug) {
-                printf("Setting Volume\n");
-                printf("%s Playback is %i\n", mixer, playback);
-                printf("%s Range is %li to %li \n", mixer, pmin, pmax);
-                printf("%s Volume %f, multiplier = %f\n", mixer, volume, f_multi);
-                printf("Scaled Volume is %li\n", set_vol);
-            }
+            gm_log(gm_audio_debug, G_LOG_LEVEL_INFO, "Setting Volume");
+            gm_log(gm_audio_debug, G_LOG_LEVEL_INFO, "%s Playback is %i", mixer, playback);
+            gm_log(gm_audio_debug, G_LOG_LEVEL_INFO, "%s Range is %li to %li", mixer, pmin, pmax);
+            gm_log(gm_audio_debug, G_LOG_LEVEL_INFO, "%s Volume %f, multiplier = %f", mixer, volume, f_multi);
+            gm_log(gm_audio_debug, G_LOG_LEVEL_INFO, "Scaled Volume is %li", set_vol);
             found = TRUE;
         }
         snd_mixer_selem_id_free(sid);
diff --git a/src/gm_log.c b/src/gm_log.c
new file mode 100644
index 0000000..c69ee04
--- /dev/null
+++ b/src/gm_log.c
@@ -0,0 +1,234 @@
+/*
+ * gm_log.c
+ * Copyright (C) Kevin DeKorte 2012 <kdekorte at gmail.com> and Hans Ecke
+ * 
+ * gm_log.c is free software.
+ * 
+ * You may redistribute it and/or modify it under the terms of the
+ * GNU General Public License, as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ * 
+ * gm_log.c is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with playlist.c.  If not, write to:
+ * 	The Free Software Foundation, Inc.,
+ * 	51 Franklin Street, Fifth Floor
+ * 	Boston, MA  02110-1301, USA.
+ */
+
+#include "gm_log.h"
+
+/* How to control the GLib logging system: with environment variables
+
+G_MESSAGES_PREFIXED.  A list of log levels for which messages should be prefixed by the
+program name and PID of the application. The default is to prefix everything except
+G_LOG_LEVEL_MESSAGE and G_LOG_LEVEL_INFO. The possible values are error, warning, critical,
+message, info and debug. You can also use the special values all and help.
+
+G_MESSAGES_PREFIXED="" disables all prefixing
+
+G_MESSAGES_DEBUG. Since glib 2.31, but emulated below for earlier versions.
+A space-separated list of log domains for which informational and
+debug messages should be printed. By default, these messages are not printed.
+
+G_MESSAGES_DEBUG=GMLIB enables a lot of output from gmlib
+
+*/
+
+#include <string.h>
+
+#undef G_LOG_DOMAIN
+#define G_LOG_DOMAIN            ((gchar*) "GMLIB")
+
+static int fixup_loglevel(gboolean force_info_to_message, GLogLevelFlags * log_level)
+{
+
+    // by default, all messages G_LOG_LEVEL_MESSAGE or above are shown
+    // if our own debug flag is set, force G_LOG_LEVEL_INFO messages to MESSAGE
+    //
+    // GLib loglevels are bitmasks, so we need to do bitmask operations here
+    if (force_info_to_message && ((*log_level) & G_LOG_LEVEL_INFO)) {
+        (*log_level) &= ~G_LOG_LEVEL_INFO;
+        (*log_level) |= G_LOG_LEVEL_MESSAGE;
+    }
+    // emulate G_MESSAGES_DEBUG for glib < 2.31. We determine version at runtime
+    // because it might have changed from the time we compiled this
+    if (glib_major_version == 2 && glib_minor_version < 31) {
+        if ((*log_level) & G_LOG_LEVEL_DEBUG) {
+            const gchar *G_MESSAGES_DEBUG = g_getenv("G_MESSAGES_DEBUG");
+
+            // if it doesn't exists or we can't find the string "GMLIB",
+            // then don't print this message
+            if (G_MESSAGES_DEBUG == NULL) {
+                return 0;
+            }
+            if (G_MESSAGES_DEBUG[0] == '\0') {
+                return 0;
+            }
+            // this is not quite proper, but for a simple emulation whose need will go away in the future...
+            if (strstr(G_MESSAGES_DEBUG, G_LOG_DOMAIN) == NULL && strstr(G_MESSAGES_DEBUG, "all") == NULL) {
+                return 0;
+            }
+        }
+    }
+    return 1;
+}
+
+// in newer versions of GLib you can use a static (or stack-allocated)
+// GMutex directly, but for older versions you need to use a GStaticMutex
+static GStaticMutex ptr2strmutex = G_STATIC_MUTEX_INIT;
+static GHashTable *ptr2str = NULL;
+
+static gboolean key_equal_func(gconstpointer a, gconstpointer b)
+{
+    if (a == b) {
+        return TRUE;
+    } else {
+        return FALSE;
+    }
+}
+
+/*
+   This function operates on static data structures, thus it needs to be
+   locked by the above mutex.
+   
+   It returns a string representation of the current thread number.
+   Unfortunately, in GLib you can only access g_thread_self(), which is a
+   pointer. Using printf("%p", g_thread_self()) is certainly possible, but
+   difficult to understand at a glance, and hard to compare traces from
+   different runs.
+*/
+static const gchar *threadid_core(gchar const *name)
+{
+    void *key;
+    void *value;
+
+    if (ptr2str == NULL) {
+        ptr2str = g_hash_table_new(g_direct_hash, key_equal_func);
+    }
+    key = g_thread_self();
+    value = g_hash_table_lookup(ptr2str, key);
+    if (value == NULL) {
+        if (name == NULL || name[0] == '\0') {
+            name = "th";
+        }
+        value = g_strdup_printf("[%s%u] ", name, g_hash_table_size(ptr2str));
+        g_hash_table_insert(ptr2str, key, value);
+    }
+    return value;
+}
+
+/*
+ If GM_DEBUG_THREADS is set, return a string representation of
+ the current thread number. If it is not set, return the empty string.
+*/
+static const gchar *threadid()
+{
+    const gchar *str;
+    if (!g_getenv("GM_DEBUG_THREADS")) {
+        return "";
+    }
+    g_static_mutex_lock(&ptr2strmutex);
+    str = threadid_core(NULL);
+    g_static_mutex_unlock(&ptr2strmutex);
+    return str;
+}
+
+// this function will only change the thread name if it is the first gm_log* function called within that thread
+// there are pros and cons for this behavior, but consistent thread names (that don't change because somebody calls
+// this function) are certainly a "pro".
+void gm_log_name_this_thread(gchar const *const name)
+{
+    if (!g_getenv("GM_DEBUG_THREADS")) {
+        return;
+    }
+    g_static_mutex_lock(&ptr2strmutex);
+    (void) threadid_core(name);
+    g_static_mutex_unlock(&ptr2strmutex);
+}
+
+// Note that the format should not have a trailing \n - the glib logging system adds it
+void gm_logv(gboolean force_info_to_message, GLogLevelFlags log_level, const gchar * format, va_list args)
+{
+    gchar *f = NULL;
+
+    if (!fixup_loglevel(force_info_to_message, &log_level)) {
+        return;
+    }
+
+    f = g_strdup_printf("%s%s", threadid(), format);
+    g_logv(G_LOG_DOMAIN, log_level, f, args);
+    g_free(f);
+
+    return;
+}
+
+void gm_log(gboolean force_info_to_message, GLogLevelFlags log_level, const gchar * format, ...)
+{
+    va_list args;
+    va_start(args, format);
+    gm_logv(force_info_to_message, log_level, format, args);
+    va_end(args);
+}
+
+void gm_logs(gboolean force_info_to_message, GLogLevelFlags log_level, const gchar * msg)
+{
+    size_t len;
+    gchar *msg_nonl = NULL;
+
+    if (!fixup_loglevel(force_info_to_message, &log_level)) {
+        return;
+    }
+    // this function should be called if there might be a newline
+    // at the end of the string. it will only allocate a copy
+    // if necessary.
+    len = strlen(msg);
+
+    if (msg[len - 1] != '\n') {
+        g_log(G_LOG_DOMAIN, log_level, "%s%s", threadid(), msg);
+        return;
+    }
+
+    msg_nonl = g_strdup(msg);
+    msg_nonl[len - 1] = '\0';
+    g_log(G_LOG_DOMAIN, log_level, "%s%s", threadid(), msg_nonl);
+    g_free(msg_nonl);
+}
+
+void gm_logsp(gboolean force_info_to_message, GLogLevelFlags log_level, const gchar * prefix, const gchar * msg)
+{
+    gchar **lines = NULL;
+    gchar *nl_loc;
+    gint linei;
+
+    if (!fixup_loglevel(force_info_to_message, &log_level)) {
+        return;
+    }
+
+    nl_loc = g_strrstr(msg, "\n");
+
+    if (nl_loc == NULL) {
+        g_log(G_LOG_DOMAIN, log_level, "%s%s %s", threadid(), prefix, msg);
+        return;
+    }
+    // slow path
+    // there is a \n somewhere, so we have to do an allocation either way
+    lines = g_strsplit(msg, "\n", 0);
+    linei = 0;
+    while (lines[linei] != NULL) {
+        g_strchomp(lines[linei]);
+        if (lines[linei][0] != '\0') {
+            g_log(G_LOG_DOMAIN, log_level, "%s%s %s", threadid(), prefix, lines[linei]);
+        }
+        linei++;
+    }
+
+    g_strfreev(lines);
+    lines = NULL;
+
+}
diff --git a/src/gm_log.h b/src/gm_log.h
new file mode 100644
index 0000000..ebe75a3
--- /dev/null
+++ b/src/gm_log.h
@@ -0,0 +1,39 @@
+/*
+ * gm_log.h
+ * Copyright (C) Kevin DeKorte 2012 <kdekorte at gmail.com> and Hans Ecke
+ * 
+ * gm_log.h is free software.
+ * 
+ * You may redistribute it and/or modify it under the terms of the
+ * GNU General Public License, as published by the Free Software
+ * Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ * 
+ * gm_log.h is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with playlist.c.  If not, write to:
+ * 	The Free Software Foundation, Inc.,
+ * 	51 Franklin Street, Fifth Floor
+ * 	Boston, MA  02110-1301, USA.
+ */
+
+#include <glib.h>
+
+#ifdef __cplusplus
+extern "C" {
+
+#endif
+    void gm_logv(gboolean force_info_to_message, GLogLevelFlags log_level, const gchar * format, va_list args);
+    __attribute__ ((format(printf, 3, 4))) void gm_log(gboolean force_info_to_message, GLogLevelFlags log_level,
+                                                       const gchar * format, ...);
+    void gm_logs(gboolean force_info_to_message, GLogLevelFlags log_level, const gchar * msg);
+    void gm_logsp(gboolean force_info_to_message, GLogLevelFlags log_level, const gchar * prefix, const gchar * msg);
+    void gm_log_name_this_thread(gchar const *const name);
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/src/gm_parse.c b/src/gm_parse.c
index f7e5553..4879f05 100644
--- a/src/gm_parse.c
+++ b/src/gm_parse.c
@@ -134,7 +134,7 @@ gboolean gm_parse_asx_is_asx(const gchar * uri)
                 continue;
             }
             newline = g_strdup(line);
-            if (g_strncasecmp(newline, "<asx", g_utf8_strlen("<asx", -1)) == 0) {
+            if (g_ascii_strncasecmp(newline, "<asx", g_utf8_strlen("<asx", -1)) == 0) {
                 ret = TRUE;
                 g_free(newline);
                 break;
@@ -178,14 +178,14 @@ gboolean gm_parse_asx_is_asx(const gchar * uri)
                 if (g_utf8_strlen(line, -1) == 0) {
                     // do nothing;
                 } else {
-                    //printf("line = %s\n", line);
+                    gm_log(FALSE, G_LOG_LEVEL_DEBUG, "line = %s", line);
                     newline = g_strdup(line);
-                    if (g_strncasecmp(newline, "<asx", g_utf8_strlen("<asx", -1)) == 0) {
-                        //printf("asx\n");
+                    if (g_ascii_strncasecmp(newline, "<asx", g_utf8_strlen("<asx", -1)) == 0) {
+                        gm_log(FALSE, G_LOG_LEVEL_DEBUG, "asx");
                         ret = TRUE;
                         g_free(newline);
                     } else if (g_strrstr(newline, "<asx") != NULL) {
-                        //printf("asx\n");
+                        gm_log(FALSE, G_LOG_LEVEL_DEBUG, "asx");
                         ret = TRUE;
                         g_free(newline);
                     }
@@ -197,9 +197,9 @@ gboolean gm_parse_asx_is_asx(const gchar * uri)
             g_free(line);
             line = NULL;
         }
+        fclose(fp);
     }
     g_free(file);
-    fclose(fp);
 #endif
     return ret;
 }
diff --git a/src/gm_strfuncs.h b/src/gm_strfuncs.h
index 10fbf4f..906aae8 100644
--- a/src/gm_strfuncs.h
+++ b/src/gm_strfuncs.h
@@ -24,6 +24,10 @@
 
 #include <glib.h>
 
+#ifndef gm_bool_to_string
+#define gm_bool_to_string(x) ((x) ? "true" : "false")
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/src/gmlib.h b/src/gmlib.h
index a7f7c19..5e6e913 100644
--- a/src/gmlib.h
+++ b/src/gmlib.h
@@ -24,6 +24,7 @@
 
 #include "gm_audio.h"
 #include "gm_file.h"
+#include "gm_log.h"
 #include "gm_parse.h"
 #include "gm_pref_store.h"
 #include "gm_strfuncs.h"
diff --git a/src/gmtk_common.c b/src/gmtk_common.c
index 6850e0e..129b3be 100644
--- a/src/gmtk_common.c
+++ b/src/gmtk_common.c
@@ -23,6 +23,7 @@
  */
 
 #include "gmtk_common.h"
+#include <libintl.h>
 
 void gmtk_get_allocation(GtkWidget * widget, GtkAllocation * allocation)
 {
diff --git a/src/gmtk_media_player.c b/src/gmtk_media_player.c
index e7656bc..2589455 100644
--- a/src/gmtk_media_player.c
+++ b/src/gmtk_media_player.c
@@ -2,19 +2,19 @@
 /*
  * gmtk_media_player.c
  * Copyright (C) Kevin DeKorte 2009 <kdekorte at gmail.com>
- * 
+ *
  * gmtk_media_player.c is free software.
- * 
+ *
  * You may redistribute it and/or modify it under the terms of the
  * GNU General Public License, as published by the Free Software
  * Foundation; either version 2 of the License, or (at your option)
  * any later version.
- * 
+ *
  * gmtk_media_tracker.c is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU General Public License
  * along with playlist.c.  If not, write to:
  * 	The Free Software Foundation, Inc.,
@@ -56,6 +56,11 @@ static void socket_realized(GtkWidget * widget, gpointer data)
     player->socket_id = GPOINTER_TO_INT(gtk_socket_get_id(GTK_SOCKET(widget)));
     style = gtk_widget_get_style(GTK_WIDGET(player));
     gtk_widget_modify_bg(GTK_WIDGET(player), GTK_STATE_NORMAL, &(style->black));
+    gtk_widget_modify_bg(GTK_WIDGET(player->alignment), GTK_STATE_NORMAL, &(style->black));
+    gtk_widget_modify_bg(GTK_WIDGET(player), GTK_STATE_ACTIVE, &(style->black));
+    gtk_widget_modify_bg(GTK_WIDGET(player), GTK_STATE_SELECTED, &(style->black));
+    gtk_widget_modify_bg(GTK_WIDGET(player), GTK_STATE_PRELIGHT, &(style->black));
+    gtk_widget_modify_bg(GTK_WIDGET(player), GTK_STATE_INSENSITIVE, &(style->black));
     if (player->vo != NULL) {
         if (!(g_ascii_strncasecmp(player->vo, "vdpau", strlen("vdpau")) == 0)) {
             gtk_widget_modify_bg(GTK_WIDGET(player->socket), GTK_STATE_NORMAL, &(style->black));
@@ -91,10 +96,18 @@ gboolean signal_event(gpointer data)
         case EVENT_TYPE_ALLOCATION:
             if (!(event->event_allocation->width >= 65535 || event->event_allocation->height >= 65535))
                 g_signal_emit_by_name(event->player, event->event_name, event->event_allocation);
+            g_free(event->event_allocation);
+            event->event_allocation = NULL;
+            break;
+
+        case EVENT_TYPE_STRING:
+            g_signal_emit_by_name(event->player, event->event_name, event->event_data_string);
+            g_free(event->event_data_string);
+            event->event_data_string = NULL;
             break;
 
         default:
-            printf("undefined event %s\n", event->event_name);
+            gm_log(event->player->debug, G_LOG_LEVEL_MESSAGE, "undefined event %s", event->event_name);
         }
         g_free(event->event_name);
         event->event_name = NULL;
@@ -150,7 +163,21 @@ void create_event_allocation(GmtkMediaPlayer * player, const gchar * name, GtkAl
     event->player = player;
     event->type = EVENT_TYPE_ALLOCATION;
     event->event_name = g_strdup(name);
-    event->event_allocation = allocation;
+    event->event_allocation = g_new0(GtkAllocation, 1);
+    memcpy(event->event_allocation, allocation, sizeof(GtkAllocation));
+    g_idle_add(signal_event, event);
+
+}
+
+void create_event_string(GmtkMediaPlayer * player, const gchar * name, gchar * string)
+{
+    GmtkMediaPlayerEvent *event;
+
+    event = g_new0(GmtkMediaPlayerEvent, 1);
+    event->player = player;
+    event->type = EVENT_TYPE_STRING;
+    event->event_name = g_strdup(name);
+    event->event_data_string = g_strdup(string);
     g_idle_add(signal_event, event);
 
 }
@@ -168,6 +195,67 @@ gchar *gmtk_media_player_switch_protocol(const gchar * uri, gchar * new_protocol
         return NULL;
 }
 
+const gchar *gmtk_media_state_to_string(const GmtkMediaPlayerMediaState media_state)
+{
+    switch (media_state) {
+    case MEDIA_STATE_UNKNOWN:
+        return "unknown";
+    case MEDIA_STATE_PLAY:
+        return "play";
+    case MEDIA_STATE_PAUSE:
+        return "pause";
+    case MEDIA_STATE_STOP:
+        return "stop";
+    case MEDIA_STATE_QUIT:
+        return "quit";
+    case MEDIA_STATE_BUFFERING:
+        return "buffering";
+    default:
+        return "???";
+    }
+}
+
+static void gmtk_media_player_log_state(GmtkMediaPlayer * player, char const *const context)
+{
+// Gmtk_Media_Player_Log_State  
+#define GMPLS_LEN 1024
+    gchar msg[GMPLS_LEN] = "";
+    gchar *tmp;
+
+    if (context != NULL && (*context) != '\0') {
+        g_strlcat(msg, context, GMPLS_LEN);
+        g_strlcat(msg, ": ", GMPLS_LEN);
+    }
+    tmp = g_strdup_printf("position=%.3f length=%.3f start_time=%.3f run_time=%.3f volume=%.2f", player->position,
+                          player->length, player->start_time, player->run_time, player->volume);
+    g_strlcat(msg, tmp, GMPLS_LEN);
+    g_free(tmp);
+
+    if (player->muted) {
+        g_strlcat(msg, " muted", GMPLS_LEN);
+    }
+
+    g_strlcat(msg, " player=", GMPLS_LEN);
+    switch (player->player_state) {
+    case PLAYER_STATE_DEAD:
+        g_strlcat(msg, "dead", GMPLS_LEN);
+        break;
+    case PLAYER_STATE_RUNNING:
+        g_strlcat(msg, "running", GMPLS_LEN);
+        break;
+    default:
+        g_strlcat(msg, "???", GMPLS_LEN);
+    }
+
+    g_strlcat(msg, " media=", GMPLS_LEN);
+    g_strlcat(msg, gmtk_media_state_to_string(player->media_state), GMPLS_LEN);
+    g_strlcat(msg, " uri=", GMPLS_LEN);
+    if (player->uri != NULL) {
+        g_strlcat(msg, player->uri, GMPLS_LEN);
+    }
+    gm_log(player->debug, G_LOG_LEVEL_INFO, "%s", msg);
+}
+
 static void gmtk_media_player_class_init(GmtkMediaPlayerClass * class)
 {
     GtkWidgetClass *widget_class;
@@ -238,6 +326,12 @@ static void gmtk_media_player_class_init(GmtkMediaPlayerClass * class)
                  G_STRUCT_OFFSET(GmtkMediaPlayerClass, restart_complete),
                  NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
 
+    g_signal_new("error-message",
+                 G_OBJECT_CLASS_TYPE(object_class),
+                 G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+                 G_STRUCT_OFFSET(GmtkMediaPlayerClass, error_message),
+                 NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING);
+
 }
 
 static void gmtk_media_player_init(GmtkMediaPlayer * player)
@@ -250,7 +344,7 @@ static void gmtk_media_player_init(GmtkMediaPlayer * player)
     gtk_widget_add_events(GTK_WIDGET(player),
                           GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK |
                           GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
-                          GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK);
+                          GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_ENTER_NOTIFY_MASK | GDK_SCROLL_MASK);
 
 
     g_signal_connect(player, "key_press_event", G_CALLBACK(player_key_press_event_callback), NULL);
@@ -318,7 +412,6 @@ static void gmtk_media_player_init(GmtkMediaPlayer * player)
     player->audio_codec = NULL;
     player->disable_upscaling = FALSE;
     player->mplayer_binary = NULL;
-    player->media_device = NULL;
     player->extra_opts = NULL;
     player->use_mplayer2 = FALSE;
     player->features_detected = FALSE;
@@ -338,12 +431,31 @@ static void gmtk_media_player_init(GmtkMediaPlayer * player)
     player->profile = NULL;
     player->alang = NULL;
     player->slang = NULL;
+    player->artist = NULL;
+    player->title = NULL;
+    player->album = NULL;
+    player->disposed = FALSE;
+    player->player_lock = g_mutex_new();
+    gmtk_media_player_log_state(player, "after init");
 }
 
 static void gmtk_media_player_dispose(GObject * object)
 {
 
-    GmtkMediaPlayer *player = GMTK_MEDIA_PLAYER(object);
+    GmtkMediaPlayer *player;
+
+    if (object == NULL) {
+        return;
+    }
+
+    player = GMTK_MEDIA_PLAYER(object);
+
+    if (player->disposed) {
+        return;
+    }
+    player->disposed = TRUE;
+
+    gm_log(player->debug, G_LOG_LEVEL_DEBUG, "gmtk_media_player_dispose");
 
     // cleanup the memory used
 
@@ -379,11 +491,6 @@ static void gmtk_media_player_dispose(GObject * object)
         player->message = NULL;
     }
 
-    if (player->media_device != NULL) {
-        g_free(player->media_device);
-        player->media_device = NULL;
-    }
-
     if (player->extra_opts != NULL) {
         g_free(player->extra_opts);
         player->extra_opts = NULL;
@@ -414,6 +521,31 @@ static void gmtk_media_player_dispose(GObject * object)
         player->af_export_filename = NULL;
     }
 
+    if (player->subtitle_font != NULL) {
+        g_free(player->subtitle_font);
+        player->subtitle_font = NULL;
+    }
+
+    if (player->subtitle_color != NULL) {
+        g_free(player->subtitle_color);
+        player->subtitle_color = NULL;
+    }
+
+    if (player->profile != NULL) {
+        g_free(player->profile);
+        player->profile = NULL;
+    }
+
+    if (player->slang != NULL) {
+        g_free(player->slang);
+        player->slang = NULL;
+    }
+
+    if (player->alang != NULL) {
+        g_free(player->alang);
+        player->alang = NULL;
+    }
+
     gdk_color_free(player->default_background);
 
     G_OBJECT_CLASS(parent_class)->dispose(object);
@@ -444,8 +576,7 @@ static gboolean player_key_press_event_callback(GtkWidget * widget, GdkEventKey
     if (event->is_modifier)
         return TRUE;
 
-    if ((event->state & GDK_SHIFT_MASK) == 0 && (event->state & GDK_CONTROL_MASK) == 0
-        && (event->state & GDK_MOD1_MASK) == 0) {
+    if ((event->state & GDK_CONTROL_MASK) == 0 && (event->state & GDK_MOD1_MASK) == 0) {
         switch (event->keyval) {
         case GDK_Right:
             if (player->title_is_menu) {
@@ -582,12 +713,13 @@ static gboolean player_key_press_event_callback(GtkWidget * widget, GdkEventKey
         case GDK_z:
             write_to_mplayer(player, "sub_delay -0.1\n");
             break;
+        case GDK_o:
+            write_to_mplayer(player, "osd\n");
+            break;
         default:
-            if (player->debug) {
-                printf("ignoring key %s%s%s%s \n", (event->state & GDK_CONTROL_MASK) ? "Control-" : "",
-                       (event->state & GDK_MOD1_MASK) ? "Alt-" : "",
-                       (event->state & GDK_SHIFT_MASK) ? "Shift-" : "", gdk_keyval_name(event->keyval));
-            }
+            gm_log(player->debug, G_LOG_LEVEL_INFO, "ignoring key %s%s%s%s",
+                   (event->state & GDK_CONTROL_MASK) ? "Control-" : "", (event->state & GDK_MOD1_MASK) ? "Alt-" : "",
+                   (event->state & GDK_SHIFT_MASK) ? "Shift-" : "", gdk_keyval_name(event->keyval));
         }
 
     }
@@ -616,9 +748,19 @@ static gboolean player_motion_notify_event_callback(GtkWidget * widget, GdkEvent
     GmtkMediaPlayer *player = GMTK_MEDIA_PLAYER(widget);
     gchar *cmd;
     gint x, y;
+#if GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION >= 4
+    GdkDeviceManager *device_manager;
+    GdkDevice *pointer;
+#endif
 
     if (player->title_is_menu) {
+#if GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION >= 4
+        device_manager = gdk_display_get_device_manager(gtk_widget_get_display(widget));
+        pointer = gdk_device_manager_get_client_pointer(device_manager);
+        gdk_window_get_device_position(gtk_widget_get_window(widget), pointer, &x, &y, NULL);
+#else
         gtk_widget_get_pointer(player->socket, &x, &y);
+#endif
         cmd = g_strdup_printf("set_mouse_pos %i %i\n", x, y);
         write_to_mplayer(player, cmd);
         g_free(cmd);
@@ -635,6 +777,15 @@ static void gmtk_media_player_size_allocate(GtkWidget * widget, GtkAllocation *
     gdouble widget_aspect;
     gfloat xscale, yscale;
 
+    if (allocation->width <= 0 || allocation->height <= 0) {
+        gmtk_get_allocation(widget, allocation);
+        gm_log(player->debug, G_LOG_LEVEL_DEBUG, "widget allocation %i x %i", allocation->width, allocation->height);
+    }
+    // protect against possible divide by zero
+    if (allocation->width == 0 || allocation->height == 0) {
+        return;
+    }
+
     if (player->video_width == 0 || player->video_height == 0 || !gmtk_widget_get_realized(widget)) {
         gtk_alignment_set(GTK_ALIGNMENT(player->alignment), 0.0, 0.0, 1.0, 1.0);
     } else {
@@ -651,6 +802,9 @@ static void gmtk_media_player_size_allocate(GtkWidget * widget, GtkAllocation *
         case ASPECT_WINDOW:
             video_aspect = (gdouble) allocation->width / (gdouble) allocation->height;
             break;
+        case ASPECT_ANAMORPHIC:
+            video_aspect = 2.39;
+            break;
         case ASPECT_DEFAULT:
         default:
             video_aspect = (gdouble) player->video_width / (gdouble) player->video_height;
@@ -670,8 +824,7 @@ static void gmtk_media_player_size_allocate(GtkWidget * widget, GtkAllocation *
             if (video_aspect > widget_aspect) {
                 yscale = ((gdouble) allocation->width / video_aspect) / (gdouble) allocation->height;
 
-                //if (player->debug)
-                //      printf("yscale = %lf\n",yscale);
+                gm_log(player->debug, G_LOG_LEVEL_DEBUG, "yscale = %lf", yscale);
                 if (yscale > 0.0) {
                     gtk_alignment_set(GTK_ALIGNMENT(player->alignment), 0.0, 0.5, 1.0, CLAMP(yscale, 0.1, 1.0));
                 } else {
@@ -680,8 +833,7 @@ static void gmtk_media_player_size_allocate(GtkWidget * widget, GtkAllocation *
             } else {
                 xscale = ((gdouble) allocation->height * video_aspect) / (gdouble) allocation->width;
 
-                //if (player->debug)
-                //      printf("xscale = %lf\n",xscale);
+                gm_log(player->debug, G_LOG_LEVEL_DEBUG, "xscale = %lf", xscale);
                 if (xscale > 0.0) {
                     gtk_alignment_set(GTK_ALIGNMENT(player->alignment), 0.5, 0.0, CLAMP(xscale, 0.1, 1.0), 1.0);
                 } else {
@@ -691,7 +843,10 @@ static void gmtk_media_player_size_allocate(GtkWidget * widget, GtkAllocation *
         }
     }
 
+    gm_log(player->debug, G_LOG_LEVEL_DEBUG, "gmtk allocation video:%s %ix%i", gm_bool_to_string(player->video_present),
+           allocation->width, allocation->height);
     GTK_WIDGET_CLASS(parent_class)->size_allocate(widget, allocation);
+
 }
 
 GtkWidget *gmtk_media_player_new()
@@ -705,11 +860,12 @@ static void gmtk_media_player_restart_complete_callback(GmtkMediaPlayer * player
 {
     gmtk_media_player_seek(player, player->restart_position, SEEK_ABSOLUTE);
     player->restart = FALSE;
-    //printf("restart state = %i, current state = %i\n", player->restart_state, gmtk_media_player_get_state(player));
-    if (player->restart_state != gmtk_media_player_get_state(player))
+    gm_log(player->debug, G_LOG_LEVEL_DEBUG, "restart state = %s, current state = %s",
+           gmtk_media_state_to_string(player->restart_state),
+           gmtk_media_state_to_string(gmtk_media_player_get_media_state(player)));
+    if (player->restart_state != gmtk_media_player_get_media_state(player))
         gmtk_media_player_set_state(GMTK_MEDIA_PLAYER(player), player->restart_state);
-    if (player->debug)
-        printf("restart complete\n");
+    gm_log(player->debug, G_LOG_LEVEL_INFO, "restart complete");
 }
 
 static void gmtk_media_player_restart_shutdown_complete_callback(GmtkMediaPlayer * player, gpointer data)
@@ -727,7 +883,7 @@ void gmtk_media_player_restart(GmtkMediaPlayer * player)
 {
     if (player->player_state == PLAYER_STATE_RUNNING) {
         player->restart = TRUE;
-        player->restart_state = gmtk_media_player_get_state(player);
+        player->restart_state = gmtk_media_player_get_media_state(player);
         gmtk_media_player_set_state(player, MEDIA_STATE_PAUSE);
         player->restart_position = player->position;
         gmtk_media_player_set_state(GMTK_MEDIA_PLAYER(player), MEDIA_STATE_QUIT);
@@ -768,24 +924,28 @@ const gchar *gmtk_media_player_get_uri(GmtkMediaPlayer * player)
     return player->uri;
 }
 
-void gmtk_media_player_set_state(GmtkMediaPlayer * player, const GmtkMediaPlayerMediaState new_state)
+void gmtk_media_player_set_state(GmtkMediaPlayer * player, const GmtkMediaPlayerMediaState new_media_state)
 {
+    gmtk_media_player_log_state(player, "old");
+    gm_log(player->debug, G_LOG_LEVEL_DEBUG, "setting media state to %s", gmtk_media_state_to_string(new_media_state));
+
     if (player->player_state == PLAYER_STATE_DEAD) {
 
-        if (new_state == MEDIA_STATE_QUIT) {
+        if (new_media_state == MEDIA_STATE_QUIT) {
             player->media_state = MEDIA_STATE_UNKNOWN;
         }
 
-        if (new_state == MEDIA_STATE_STOP) {
+        if (new_media_state == MEDIA_STATE_STOP) {
             player->media_state = MEDIA_STATE_UNKNOWN;
         }
 
-        if (new_state == MEDIA_STATE_PAUSE) {
+        if (new_media_state == MEDIA_STATE_PAUSE) {
             player->media_state = MEDIA_STATE_UNKNOWN;
         }
 
-        if (new_state == MEDIA_STATE_PLAY) {
+        if (new_media_state == MEDIA_STATE_PLAY) {
             // launch player
+            gm_log(player->debug, G_LOG_LEVEL_DEBUG, "launching launch_mplayer thread");
             player->mplayer_thread = g_thread_create(launch_mplayer, player, TRUE, NULL);
             if (player->mplayer_thread != NULL) {
                 if (player->message != NULL) {
@@ -798,6 +958,7 @@ void gmtk_media_player_set_state(GmtkMediaPlayer * player, const GmtkMediaPlayer
                 player->player_state = PLAYER_STATE_RUNNING;
                 if (!player->restart)
                     g_signal_emit_by_name(player, "player-state-changed", player->player_state);
+                gmtk_media_player_log_state(player, "new");
                 return;
             }
         }
@@ -805,7 +966,7 @@ void gmtk_media_player_set_state(GmtkMediaPlayer * player, const GmtkMediaPlayer
     }
 
     if (player->player_state == PLAYER_STATE_RUNNING) {
-        if (new_state == MEDIA_STATE_STOP) {
+        if (new_media_state == MEDIA_STATE_STOP) {
             if (player->type == TYPE_NETWORK) {
                 write_to_mplayer(player, "quit\n");
             } else {
@@ -820,7 +981,7 @@ void gmtk_media_player_set_state(GmtkMediaPlayer * player, const GmtkMediaPlayer
             }
         }
 
-        if (new_state == MEDIA_STATE_PLAY) {
+        if (new_media_state == MEDIA_STATE_PLAY) {
             gtk_widget_show(GTK_WIDGET(player->socket));
 
             if (player->media_state == MEDIA_STATE_PAUSE || player->media_state == MEDIA_STATE_STOP) {
@@ -836,7 +997,7 @@ void gmtk_media_player_set_state(GmtkMediaPlayer * player, const GmtkMediaPlayer
             }
         }
 
-        if (new_state == MEDIA_STATE_PAUSE) {
+        if (new_media_state == MEDIA_STATE_PAUSE) {
             if (player->media_state == MEDIA_STATE_PLAY) {
                 write_to_mplayer(player, "pause\n");
                 player->media_state = MEDIA_STATE_PAUSE;
@@ -845,14 +1006,15 @@ void gmtk_media_player_set_state(GmtkMediaPlayer * player, const GmtkMediaPlayer
             }
         }
 
-        if (new_state == MEDIA_STATE_QUIT) {
+        if (new_media_state == MEDIA_STATE_QUIT) {
             write_to_mplayer(player, "quit\n");
         }
     }
 
+    gmtk_media_player_log_state(player, "new");
 }
 
-GmtkMediaPlayerMediaState gmtk_media_player_get_state(GmtkMediaPlayer * player)
+GmtkMediaPlayerMediaState gmtk_media_player_get_media_state(GmtkMediaPlayer * player)
 {
     return player->media_state;
 }
@@ -888,6 +1050,14 @@ void gmtk_media_player_send_command(GmtkMediaPlayer * player, GmtkMediaPlayerCom
             write_to_mplayer(player, "sub_select\n");
             break;
 
+        case COMMAND_SUBTITLE_STEP_FORWARD:
+            write_to_mplayer(player, "sub_step 1\n");
+            break;
+
+        case COMMAND_SUBTITLE_STEP_BACKWARD:
+            write_to_mplayer(player, "sub_step -1\n");
+            break;
+
         case COMMAND_SWITCH_FRAME_DROP:
             write_to_mplayer(player, "frame_drop\n");
             cmd =
@@ -899,8 +1069,7 @@ void gmtk_media_player_send_command(GmtkMediaPlayer * player, GmtkMediaPlayerCom
             break;
 
         default:
-            if (player->debug)
-                printf("Unknown command\n");
+            gm_log(player->debug, G_LOG_LEVEL_INFO, "Unknown command");
         }
     }
 }
@@ -1005,8 +1174,7 @@ void gmtk_media_player_set_attribute_boolean(GmtkMediaPlayer * player,
         break;
 
     default:
-        if (player->debug)
-            printf("Unsupported Attribute\n");
+        gm_log(player->debug, G_LOG_LEVEL_INFO, "Unsupported Attribute");
     }
 
     return;
@@ -1018,9 +1186,7 @@ gboolean gmtk_media_player_get_attribute_boolean(GmtkMediaPlayer * player, GmtkM
 
     switch (attribute) {
     case ATTRIBUTE_SUB_VISIBLE:
-        if (g_list_length(player->subtitles) != 0) {
-            ret = player->sub_visible;
-        }
+        ret = player->sub_visible;
         break;
 
     case ATTRIBUTE_ENABLE_FRAME_DROP:
@@ -1108,8 +1274,7 @@ gboolean gmtk_media_player_get_attribute_boolean(GmtkMediaPlayer * player, GmtkM
         break;
 
     default:
-        if (player->debug)
-            printf("Unsupported Attribute\n");
+        gm_log(player->debug, G_LOG_LEVEL_INFO, "Unsupported Attribute");
     }
     return ret;
 }
@@ -1151,16 +1316,18 @@ void gmtk_media_player_set_attribute_double(GmtkMediaPlayer * player,
             write_to_mplayer(player, cmd);
             g_free(cmd);
             cmd = NULL;
+            write_to_mplayer(player, "get_property speed\n");
         }
         break;
 
     case ATTRIBUTE_SPEED_SET:
-        player->speed_multiplier = CLAMP(value, 0.1, 10.0);
+        player->speed = CLAMP(value, 0.1, 10.0);
         if (player->player_state == PLAYER_STATE_RUNNING) {
-            cmd = g_strdup_printf("speed_set %f\n", player->speed_multiplier);
+            cmd = g_strdup_printf("speed_set %f\n", player->speed);
             write_to_mplayer(player, cmd);
             g_free(cmd);
             cmd = NULL;
+            write_to_mplayer(player, "get_property speed\n");
         }
         break;
 
@@ -1195,8 +1362,7 @@ void gmtk_media_player_set_attribute_double(GmtkMediaPlayer * player,
         break;
 
     default:
-        if (player->debug)
-            printf("Unsupported Attribute\n");
+        gm_log(player->debug, G_LOG_LEVEL_INFO, "Unsupported Attribute");
     }
 
     return;
@@ -1251,6 +1417,10 @@ gdouble gmtk_media_player_get_attribute_double(GmtkMediaPlayer * player, GmtkMed
         ret = player->speed_multiplier;
         break;
 
+    case ATTRIBUTE_SPEED_SET:
+        ret = player->speed;
+        break;
+
     case ATTRIBUTE_SUBTITLE_SCALE:
         ret = player->subtitle_scale;
         break;
@@ -1276,8 +1446,7 @@ gdouble gmtk_media_player_get_attribute_double(GmtkMediaPlayer * player, GmtkMed
         break;
 
     default:
-        if (player->debug)
-            printf("Unsupported Attribute\n");
+        gm_log(player->debug, G_LOG_LEVEL_INFO, "Unsupported Attribute");
     }
     return ret;
 }
@@ -1448,8 +1617,7 @@ void gmtk_media_player_set_attribute_string(GmtkMediaPlayer * player,
         break;
 
     default:
-        if (player->debug)
-            printf("Unsupported Attribute\n");
+        gm_log(player->debug, G_LOG_LEVEL_INFO, "Unsupported Attribute");
     }
 }
 
@@ -1526,15 +1694,27 @@ const gchar *gmtk_media_player_get_attribute_string(GmtkMediaPlayer * player, Gm
         break;
 
     case ATTRIBUTE_ARTIST:
-        value = player->artist;
+        if (player->artist == NULL || strlen(player->artist) == 0) {
+            value = NULL;
+        } else {
+            value = player->artist;
+        }
         break;
 
     case ATTRIBUTE_TITLE:
-        value = player->title;
+        if (player->title == NULL || strlen(player->title) == 0) {
+            value = NULL;
+        } else {
+            value = player->title;
+        }
         break;
 
     case ATTRIBUTE_ALBUM:
-        value = player->album;
+        if (player->album == NULL || strlen(player->album) == 0) {
+            value = NULL;
+        } else {
+            value = player->album;
+        }
         break;
 
     case ATTRIBUTE_PROFILE:
@@ -1542,8 +1722,7 @@ const gchar *gmtk_media_player_get_attribute_string(GmtkMediaPlayer * player, Gm
         break;
 
     default:
-        if (player->debug)
-            printf("Unsupported Attribute\n");
+        gm_log(player->debug, G_LOG_LEVEL_INFO, "Unsupported Attribute");
     }
 
     return value;
@@ -1635,8 +1814,7 @@ void gmtk_media_player_set_attribute_integer(GmtkMediaPlayer * player, GmtkMedia
         break;
 
     default:
-        if (player->debug)
-            printf("Unsupported Attribute\n");
+        gm_log(player->debug, G_LOG_LEVEL_INFO, "Unsupported Attribute");
     }
 
     return;
@@ -1941,6 +2119,39 @@ void gmtk_media_player_select_audio_track_by_id(GmtkMediaPlayer * player, gint i
     }
 }
 
+static const gchar *playback_error_to_string(const GmtkMediaPlayerPlaybackError playback_error)
+{
+    switch (playback_error) {
+    case NO_ERROR:
+        return "NO_ERROR";
+    case ERROR_RETRY_WITH_PLAYLIST:
+        return "RETRY_WITH_PLAYLIST";
+    case ERROR_RETRY_WITH_HTTP:
+        return "RETRY_WITH_HTTP";
+    case ERROR_RETRY_WITH_HTTP_AND_PLAYLIST:
+        return "RETRY_WITH_HTTP_AND_PLAYLIST";
+    case ERROR_RETRY_WITH_MMSHTTP:
+        return "RETRY_WITH_MMSHTTP";
+    case ERROR_RETRY_WITHOUT_DIVX_VDPAU:
+        return "RETRY_WITHOUT_DIVX_VDPAU";
+    case ERROR_RETRY_WITHOUT_XVMC:
+        return "RETRY_WITHOUT_XVMC";
+    case ERROR_RETRY_ALSA_BUSY:
+        return "RETRY_ALSA_BUSY";
+    case ERROR_RETRY_VDPAU:
+        return "RETRY_VDPAU";
+    case ERROR_RETRY_WITHOUT_HARDWARE_CODECS:
+        return "RETRY_WITHOUT_HARDWARE_CODECS";
+    case ERROR_RETRY:
+        return "RETRY";
+    default:
+        return "???";
+    }
+
+}
+
+
+
 gpointer launch_mplayer(gpointer data)
 {
     GmtkMediaPlayer *player = GMTK_MEDIA_PLAYER(data);
@@ -1950,7 +2161,7 @@ gpointer launch_mplayer(gpointer data)
     GPid pid;
     GError *error;
     gint i;
-    gint spawn;
+    gboolean spawn;
     gchar *fontname;
     gchar *size;
     gchar *tmp;
@@ -1965,6 +2176,9 @@ gpointer launch_mplayer(gpointer data)
     GFile *file;
 #endif
 
+    gm_log_name_this_thread("lm");
+    gm_log(player->debug, G_LOG_LEVEL_DEBUG, "within launch_mplayer()");
+
     player->seekable = FALSE;
     player->has_chapters = FALSE;
     player->video_present = FALSE;
@@ -1975,12 +2189,13 @@ gpointer launch_mplayer(gpointer data)
     player->disable_xvmc = FALSE;
     player->retry_on_full_cache = FALSE;
     player->sub_visible = TRUE;
+    player->speed = 1.0;
 
+    gm_log(player->debug, G_LOG_LEVEL_DEBUG, "locking thread_running");
     g_mutex_lock(player->thread_running);
 
     do {
-        if (player->debug)
-            printf("setting up mplayer\n");
+        gm_log(player->debug, G_LOG_LEVEL_INFO, "setting up mplayer");
 
         list = player->subtitles;
         while (list) {
@@ -2001,6 +2216,19 @@ gpointer launch_mplayer(gpointer data)
             list = g_list_remove(list, track);
         }
         player->audio_tracks = NULL;
+        player->has_metadata = FALSE;
+        if (player->artist) {
+            g_free(player->artist);
+            player->artist = NULL;
+        }
+        if (player->title) {
+            g_free(player->title);
+            player->title = NULL;
+        }
+        if (player->album) {
+            g_free(player->album);
+            player->album = NULL;
+        }
 
         argn = 0;
         player->playback_error = NO_ERROR;
@@ -2177,7 +2405,6 @@ gpointer launch_mplayer(gpointer data)
                 argv[argn++] = g_strdup_printf("volume=%lf:0", player->volume_gain);
             }
 
-
             argv[argn++] = g_strdup_printf("-softvol");
         }
 
@@ -2212,10 +2439,10 @@ gpointer launch_mplayer(gpointer data)
         argv[argn++] = g_strdup_printf("-sub-fuzziness");
         argv[argn++] = g_strdup_printf("%i", player->subtitle_fuzziness);
 
-        // wait for the socket_id to be valid, but in plugin mode it may not so timeout
+        // wait upto 1 second for the socket_id to be valid, but in plugin mode it may not so timeout
         i = 0;
-        while (player->socket_id == 0 && (i++ < 10)) {
-            g_usleep(100);
+        while (player->socket_id == 0 && (i++ < 100)) {
+            g_usleep(1000);
         }
 
         argv[argn++] = g_strdup_printf("-wid");
@@ -2427,27 +2654,23 @@ gpointer launch_mplayer(gpointer data)
         }
         argv[argn] = NULL;
 
-        if (player->debug) {
-            for (i = 0; i < argn; i++) {
-                printf("%s ", argv[i]);
-            }
-            printf("\n");
-        }
+        gchar *allargs = g_strjoinv(" ", argv);
+        gm_log(player->debug, G_LOG_LEVEL_INFO, "%s", allargs);
+        g_free(allargs);
 
         error = NULL;
         player->std_in = -1;
         player->std_out = -1;
         player->std_err = -1;
-        spawn = FALSE;
         spawn =
             g_spawn_async_with_pipes(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, &pid,
                                      &(player->std_in), &(player->std_out), &(player->std_err), &error);
-        //if (player->debug)
-        //    printf("spawn = %i files in %i out %i err %i \n", spawn, player->std_in, player->std_out, player->std_err);
+
+        gm_log(player->debug, G_LOG_LEVEL_DEBUG, "spawn = %s files in %i out %i err %i", gm_bool_to_string(spawn),
+               player->std_in, player->std_out, player->std_err);
 
         if (error != NULL) {
-            if (player->debug)
-                printf("error code = %i - %s\n", error->code, error->message);
+            gm_log(player->debug, G_LOG_LEVEL_INFO, "error code = %i - %s", error->code, error->message);
             g_error_free(error);
             error = NULL;
         }
@@ -2460,8 +2683,8 @@ gpointer launch_mplayer(gpointer data)
         }
 
         if (spawn) {
-            //if (player->debug)
-            //    printf("spawn succeeded, setup up channels\n");
+            gmtk_media_player_log_state(player, "launched");
+            gm_log(player->debug, G_LOG_LEVEL_DEBUG, "spawn succeeded, setup up channels");
 
             player->player_state = PLAYER_STATE_RUNNING;
             player->media_state = MEDIA_STATE_BUFFERING;
@@ -2503,11 +2726,13 @@ gpointer launch_mplayer(gpointer data)
 #else
             g_timeout_add(1000, thread_query, player);
 #endif
-            //if (player->debug)
-            //    printf("waiting for mplayer_complete_cond\n");
+
+            // /////////////////////////////////////////////////////////////////////
+            // Now this thread waits till somebody signals player->mplayer_complete_cond
+
+            gm_log(player->debug, G_LOG_LEVEL_DEBUG, "waiting for mplayer_complete_cond");
             g_cond_wait(player->mplayer_complete_cond, player->thread_running);
-            //if (player->debug)
-            //    printf("mplayer_complete_cond was signalled\n");
+            gm_log(player->debug, G_LOG_LEVEL_DEBUG, "mplayer_complete_cond was signalled");
 
             g_source_remove(player->watch_in_id);
             g_source_remove(player->watch_err_id);
@@ -2578,10 +2803,10 @@ gpointer launch_mplayer(gpointer data)
             break;
         case ERROR_RETRY:
             if (last_error == NO_ERROR) {
-                last_error == ERROR_RETRY;
+                last_error = ERROR_RETRY;
             } else {
-                last_error == NO_ERROR;
-                player->playback_error == NO_ERROR;
+                last_error = NO_ERROR;
+                player->playback_error = NO_ERROR;
             }
             break;
 
@@ -2593,18 +2818,35 @@ gpointer launch_mplayer(gpointer data)
             break;
         }
 
-        //printf("playback error code is %i\n", player->playback_error);
+        gm_log(player->debug, G_LOG_LEVEL_DEBUG, "playback error code is %s",
+               playback_error_to_string(player->playback_error));
 
     } while (player->playback_error != NO_ERROR);
 
-    //if (player->debug)
-    //    printf("marking playback complete\n");
+    gm_log(player->debug, G_LOG_LEVEL_DEBUG, "marking playback complete");
     player->player_state = PLAYER_STATE_DEAD;
     player->media_state = MEDIA_STATE_UNKNOWN;
-    g_mutex_unlock(player->thread_running);
     player->mplayer_thread = NULL;
     player->start_time = 0.0;
     player->run_time = 0.0;
+    if (player->artist) {
+        g_free(player->artist);
+        player->artist = NULL;
+    }
+    if (player->title) {
+        g_free(player->title);
+        player->title = NULL;
+    }
+    if (player->album) {
+        g_free(player->album);
+        player->album = NULL;
+    }
+
+    gmtk_media_player_log_state(player, "finished");
+
+    gm_log(player->debug, G_LOG_LEVEL_DEBUG, "unlocking thread_running");
+    g_mutex_unlock(player->thread_running);
+
     if (player->restart) {
         g_signal_emit_by_name(player, "restart-shutdown-complete", NULL);
     } else {
@@ -2616,201 +2858,227 @@ gpointer launch_mplayer(gpointer data)
     return NULL;
 }
 
+static void finalize_mplayer(GmtkMediaPlayer * player)
+{
+    g_source_remove(player->watch_in_id);
+    g_source_remove(player->watch_in_hup_id);
+    g_source_remove(player->watch_err_id);
+    g_unlink(player->af_export_filename);
+    gmtk_media_player_log_state(player, "completed");
+    gm_log(player->debug, G_LOG_LEVEL_DEBUG, "signaling mplayer_complete_cond");
+    g_cond_signal(player->mplayer_complete_cond);
+}
+
+// this executes in the main thread
 gboolean thread_complete(GIOChannel * source, GIOCondition condition, gpointer data)
 {
     GmtkMediaPlayer *player = GMTK_MEDIA_PLAYER(data);
 
+    gm_log(player->debug, G_LOG_LEVEL_DEBUG, "thread_complete()");
     player->player_state = PLAYER_STATE_DEAD;
     player->media_state = MEDIA_STATE_UNKNOWN;
-    g_source_remove(player->watch_in_id);
-    g_source_remove(player->watch_err_id);
-    g_cond_signal(player->mplayer_complete_cond);
-    g_unlink(player->af_export_filename);
+    finalize_mplayer(player);
 
     return FALSE;
 }
 
+// this executes in the main thread
 gboolean thread_reader_error(GIOChannel * source, GIOCondition condition, gpointer data)
 {
     GmtkMediaPlayer *player = GMTK_MEDIA_PLAYER(data);
     GString *mplayer_output;
     GIOStatus status;
     gchar *error_msg = NULL;
-    GtkWidget *dialog;
+    //GtkWidget *dialog;
     gchar *buf;
 
     if (player == NULL) {
+        gm_log(player->debug, G_LOG_LEVEL_DEBUG, "player is NULL");
+        finalize_mplayer(player);
         return FALSE;
     }
 
     if (source == NULL) {
-        //if (player->debug)
-        //    printf("source is null\n");
-        g_source_remove(player->watch_in_id);
-        g_source_remove(player->watch_in_hup_id);
+        gm_log(player->debug, G_LOG_LEVEL_DEBUG, "source is null");
+        finalize_mplayer(player);
         return FALSE;
     }
 
     if (player->player_state == PLAYER_STATE_DEAD) {
-        //if (player->debug)
-        //    printf("player is dead\n");
+        gm_log(player->debug, G_LOG_LEVEL_DEBUG, "player is dead");
+        finalize_mplayer(player);
         return FALSE;
     }
 
     mplayer_output = g_string_new("");
     status = g_io_channel_read_line_string(source, mplayer_output, NULL, NULL);
+    if (status == G_IO_STATUS_ERROR) {
+        gm_logsp(player->debug, G_LOG_LEVEL_INFO, "GIO IO Error:", mplayer_output->str);
+        return TRUE;
+    } else {
+        if (g_strrstr(mplayer_output->str, "ANS") == NULL) {
+            gm_logsp(player->debug, G_LOG_LEVEL_INFO, "ERROR:", mplayer_output->str);
+        }
 
-    if (player->debug) {
-        if (g_strrstr(mplayer_output->str, "ANS") == NULL)
-            printf("ERROR: %s", mplayer_output->str);
-    }
-
-    if (strstr(mplayer_output->str, "Couldn't open DVD device") != 0) {
-        error_msg = g_strdup(mplayer_output->str);
-    }
+        if (strstr(mplayer_output->str, "Couldn't open DVD device") != 0) {
+            error_msg = g_strdup(mplayer_output->str);
+        }
 
-    if (strstr(mplayer_output->str, "X11 error") != 0) {
-        create_event_int(player, "attribute-changed", ATTRIBUTE_SIZE);
-    }
+        if (strstr(mplayer_output->str, "X11 error") != 0) {
+            create_event_int(player, "attribute-changed", ATTRIBUTE_SIZE);
+        }
 
-    if (strstr(mplayer_output->str, "signal") != NULL) {
-        if (strstr(mplayer_output->str, "decode") != NULL) {
+        if (strstr(mplayer_output->str, "signal") != NULL) {
+            if (strstr(mplayer_output->str, "decode") != NULL) {
+                create_event_int(player, "attribute-changed", ATTRIBUTE_SIZE);
+                if (player->position == 0) {
+                    player->playback_error = ERROR_RETRY;
+                }
+            } else if (strstr(mplayer_output->str, "filter video") != NULL) {
+                player->playback_error = ERROR_RETRY;
+            } else {
+                error_msg = g_strdup(mplayer_output->str);
+            }
+        }
+        if (strstr(mplayer_output->str, "Error when calling vdp_output_surface_create") != NULL) {
             create_event_int(player, "attribute-changed", ATTRIBUTE_SIZE);
             if (player->position == 0) {
                 player->playback_error = ERROR_RETRY;
             }
-        } else {
-            error_msg = g_strdup(mplayer_output->str);
         }
-    }
 
-    if (strstr(mplayer_output->str, "Failed creating VDPAU decoder") != NULL) {
-        if (player->enable_divx && (g_ascii_strncasecmp(player->vo, "vdpau", strlen("vdpau")) == 0))
-            player->playback_error = ERROR_RETRY_WITHOUT_DIVX_VDPAU;
-    }
+        if (strstr(mplayer_output->str, "Failed creating VDPAU decoder") != NULL) {
+            if (player->enable_divx && (g_ascii_strncasecmp(player->vo, "vdpau", strlen("vdpau")) == 0))
+                player->playback_error = ERROR_RETRY_WITHOUT_DIVX_VDPAU;
+        }
 
-    if (strstr(mplayer_output->str, "decoding to PIX_FMT_NONE is not supported") != NULL) {
-        if (player->enable_divx)
-            player->playback_error = ERROR_RETRY_WITHOUT_HARDWARE_CODECS;
-    }
+        if (strstr(mplayer_output->str, "decoding to PIX_FMT_NONE is not supported") != NULL) {
+            if (player->enable_divx)
+                player->playback_error = ERROR_RETRY_WITHOUT_HARDWARE_CODECS;
+        }
 
-    if (strstr(mplayer_output->str, "The selected video_out device is incompatible with this codec") != NULL) {
-        if (!player->disable_xvmc && (g_ascii_strncasecmp(player->vo, "xvmc", strlen("xvmc")) == 0))
-            player->playback_error = ERROR_RETRY_WITHOUT_XVMC;
-    }
+        if (strstr(mplayer_output->str, "The selected video_out device is incompatible with this codec") != NULL) {
+            if (!player->disable_xvmc && (g_ascii_strncasecmp(player->vo, "xvmc", strlen("xvmc")) == 0))
+                player->playback_error = ERROR_RETRY_WITHOUT_XVMC;
+        }
 
-    if (strstr(mplayer_output->str, "[AO_ALSA] Playback open error: Device or resource busy") != NULL) {
-        player->playback_error = ERROR_RETRY_ALSA_BUSY;
-    }
+        if (strstr(mplayer_output->str, "[AO_ALSA] Playback open error: Device or resource busy") != NULL) {
+            player->playback_error = ERROR_RETRY_ALSA_BUSY;
+        }
 
-    /*
-       if (strstr(mplayer_output->str, "Error when calling vdp_output_surface_create") != NULL) {
-       create_event_int(player, "attribute-changed", ATTRIBUTE_SIZE);
-       player->playback_error = ERROR_RETRY_VDPAU;
-       write_to_mplayer(player, "quit\n");
-       }
-     */
+        /*
+           if (strstr(mplayer_output->str, "Error when calling vdp_output_surface_create") != NULL) {
+           create_event_int(player, "attribute-changed", ATTRIBUTE_SIZE);
+           player->playback_error = ERROR_RETRY_VDPAU;
+           write_to_mplayer(player, "quit\n");
+           }
+         */
 
-    if (strstr(mplayer_output->str, "Failed to open") != NULL) {
-        if (strstr(mplayer_output->str, "LIRC") == NULL &&
-            strstr(mplayer_output->str, "/dev/rtc") == NULL &&
-            strstr(mplayer_output->str, "VDPAU") == NULL && strstr(mplayer_output->str, "registry file") == NULL) {
-            if (strstr(mplayer_output->str, "<") == NULL && strstr(mplayer_output->str, ">") == NULL
-                && player->type == TYPE_FILE) {
-                error_msg =
-                    g_strdup_printf(g_dgettext(GETTEXT_PACKAGE, "Failed to open %s"),
-                                    mplayer_output->str + strlen("Failed to open "));
-            }
+        if (strstr(mplayer_output->str, "Failed to open") != NULL) {
+            if (strstr(mplayer_output->str, "LIRC") == NULL &&
+                strstr(mplayer_output->str, "/dev/rtc") == NULL &&
+                strstr(mplayer_output->str, "VDPAU") == NULL && strstr(mplayer_output->str, "registry file") == NULL) {
+                if (strstr(mplayer_output->str, "<") == NULL && strstr(mplayer_output->str, ">") == NULL
+                    && player->type == TYPE_FILE) {
+                    error_msg =
+                        g_strdup_printf(g_dgettext(GETTEXT_PACKAGE, "Failed to open %s"),
+                                        mplayer_output->str + strlen("Failed to open "));
+                }
 
-            if (strstr(mplayer_output->str, "mms://") != NULL && player->type == TYPE_NETWORK) {
-                player->playback_error = ERROR_RETRY_WITH_MMSHTTP;
+                if (strstr(mplayer_output->str, "mms://") != NULL && player->type == TYPE_NETWORK) {
+                    player->playback_error = ERROR_RETRY_WITH_MMSHTTP;
+                }
             }
         }
-    }
 
-    if (strstr(mplayer_output->str, "MPlayer interrupted by signal 13 in module: open_stream") != NULL
-        && g_strrstr(player->uri, "mms://") != NULL) {
-        player->playback_error = ERROR_RETRY_WITH_MMSHTTP;
-    }
+        if (strstr(mplayer_output->str, "MPlayer interrupted by signal 13 in module: open_stream") != NULL
+            && g_strrstr(player->uri, "mms://") != NULL) {
+            player->playback_error = ERROR_RETRY_WITH_MMSHTTP;
+        }
 
-    if (strstr(mplayer_output->str, "No stream found to handle url mmshttp://") != NULL) {
-        player->playback_error = ERROR_RETRY_WITH_HTTP;
-    }
+        if (strstr(mplayer_output->str, "No stream found to handle url mmshttp://") != NULL) {
+            player->playback_error = ERROR_RETRY_WITH_HTTP;
+        }
 
-    if (strstr(mplayer_output->str, "Server returned 404:File Not Found") != NULL
-        && g_strrstr(player->uri, "mmshttp://") != NULL) {
-        player->playback_error = ERROR_RETRY_WITH_HTTP;
-    }
+        if (strstr(mplayer_output->str, "Server returned 404:File Not Found") != NULL
+            && g_strrstr(player->uri, "mmshttp://") != NULL) {
+            player->playback_error = ERROR_RETRY_WITH_HTTP;
+        }
 
-    if (strstr(mplayer_output->str, "unknown ASF streaming type") != NULL
-        && g_strrstr(player->uri, "mmshttp://") != NULL) {
-        player->playback_error = ERROR_RETRY_WITH_HTTP;
-    }
+        if (strstr(mplayer_output->str, "unknown ASF streaming type") != NULL
+            && g_strrstr(player->uri, "mmshttp://") != NULL) {
+            player->playback_error = ERROR_RETRY_WITH_HTTP;
+        }
 
-    if (strstr(mplayer_output->str, "Error while parsing chunk header") != NULL) {
-        player->playback_error = ERROR_RETRY_WITH_HTTP_AND_PLAYLIST;
-    }
+        if (strstr(mplayer_output->str, "Error while parsing chunk header") != NULL) {
+            player->playback_error = ERROR_RETRY_WITH_HTTP_AND_PLAYLIST;
+        }
 
-    if (strstr(mplayer_output->str, "Failed to initiate \"video/X-ASF-PF\" RTP subsession") != NULL) {
-        player->playback_error = ERROR_RETRY_WITH_PLAYLIST;
-    }
+        if (strstr(mplayer_output->str, "Failed to initiate \"video/X-ASF-PF\" RTP subsession") != NULL) {
+            player->playback_error = ERROR_RETRY_WITH_PLAYLIST;
+        }
 
-    if (strstr(mplayer_output->str, "playlist support will not be used") != NULL) {
-        player->playback_error = ERROR_RETRY_WITH_PLAYLIST;
-    }
+        if (strstr(mplayer_output->str, "playlist support will not be used") != NULL) {
+            player->playback_error = ERROR_RETRY_WITH_PLAYLIST;
+        }
 
-    if (strstr(mplayer_output->str, "Compressed SWF format not supported") != NULL) {
-        error_msg = g_strdup_printf(g_dgettext(GETTEXT_PACKAGE, "Compressed SWF format not supported"));
-    }
+        if (strstr(mplayer_output->str, "Compressed SWF format not supported") != NULL) {
+            error_msg = g_strdup_printf(g_dgettext(GETTEXT_PACKAGE, "Compressed SWF format not supported"));
+        }
 
-    if (strstr(mplayer_output->str, "moov atom not found") != NULL) {
-        player->retry_on_full_cache = TRUE;
-        create_event_boolean(player, "attribute-changed", ATTRIBUTE_RETRY_ON_FULL_CACHE);
-    }
+        if (strstr(mplayer_output->str, "moov atom not found") != NULL) {
+            player->retry_on_full_cache = TRUE;
+            create_event_boolean(player, "attribute-changed", ATTRIBUTE_RETRY_ON_FULL_CACHE);
+        }
 
-    if (strstr(mplayer_output->str, "MOV: missing header (moov/cmov) chunk") != NULL) {
-        player->retry_on_full_cache = TRUE;
-        create_event_boolean(player, "attribute-changed", ATTRIBUTE_RETRY_ON_FULL_CACHE);
-    }
+        if (strstr(mplayer_output->str, "MOV: missing header (moov/cmov) chunk") != NULL) {
+            player->retry_on_full_cache = TRUE;
+            create_event_boolean(player, "attribute-changed", ATTRIBUTE_RETRY_ON_FULL_CACHE);
+        }
 
-    if (strstr(mplayer_output->str, "Seek failed") != NULL) {
-        write_to_mplayer(player, "quit\n");
-        player->retry_on_full_cache = TRUE;
-        create_event_boolean(player, "attribute-changed", ATTRIBUTE_RETRY_ON_FULL_CACHE);
-    }
+        if (strstr(mplayer_output->str, "Seek failed") != NULL) {
+            write_to_mplayer(player, "quit\n");
+            player->retry_on_full_cache = TRUE;
+            create_event_boolean(player, "attribute-changed", ATTRIBUTE_RETRY_ON_FULL_CACHE);
+        }
 
-    if (strstr(mplayer_output->str, "Title: ") != 0) {
-        buf = strstr(mplayer_output->str, "Title:");
-        buf = strstr(mplayer_output->str, "Title: ") + strlen("Title: ");
-        buf = g_strchomp(buf);
-        if (player->title != NULL) {
-            g_free(player->title);
-            player->title = NULL;
+        if (strstr(mplayer_output->str, "Title: ") != 0) {
+            buf = strstr(mplayer_output->str, "Title:");
+            buf = strstr(mplayer_output->str, "Title: ") + strlen("Title: ");
+            buf = g_strchomp(buf);
+            if (player->title != NULL) {
+                g_free(player->title);
+                player->title = NULL;
+            }
+
+            player->title = g_locale_to_utf8(buf, -1, NULL, NULL, NULL);
+            if (player->title == NULL) {
+                player->title = g_strdup(buf);
+                gm_str_strip_unicode(player->title, strlen(player->title));
+            }
+            create_event_int(player, "attribute-changed", ATTRIBUTE_TITLE);
         }
 
-        player->title = g_locale_to_utf8(buf, -1, NULL, NULL, NULL);
-        if (player->title == NULL) {
-            player->title = g_strdup(buf);
-            gm_str_strip_unicode(player->title, strlen(player->title));
+        if (error_msg != NULL && player->playback_error == NO_ERROR) {
+            create_event_string(player, "error-message", error_msg);
+            /*
+               dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR,
+               GTK_BUTTONS_CLOSE, "%s", error_msg);
+               gtk_window_set_title(GTK_WINDOW(dialog), g_dgettext(GETTEXT_PACKAGE, "GNOME MPlayer Error"));
+               gtk_dialog_run(GTK_DIALOG(dialog));
+               gtk_widget_destroy(dialog);
+             */
+            g_free(error_msg);
+            error_msg = NULL;
         }
-        create_event_int(player, "attribute-changed", ATTRIBUTE_TITLE);
-    }
 
-    if (error_msg != NULL && player->playback_error == NO_ERROR) {
-        dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR,
-                                        GTK_BUTTONS_CLOSE, "%s", error_msg);
-        gtk_window_set_title(GTK_WINDOW(dialog), g_dgettext(GETTEXT_PACKAGE, "GNOME MPlayer Error"));
-        gtk_dialog_run(GTK_DIALOG(dialog));
-        gtk_widget_destroy(dialog);
-        g_free(error_msg);
-        error_msg = NULL;
     }
-
     g_string_free(mplayer_output, TRUE);
 
     return TRUE;
 }
 
+// this executes in the main thread
 gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer data)
 {
     GmtkMediaPlayer *player = GMTK_MEDIA_PLAYER(data);
@@ -2822,28 +3090,27 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
     gfloat percent, oldposition;
     gchar vm[10];
     gint id;
-    GtkAllocation allocation;
+    GtkAllocation allocation = { 0 };
     GmtkMediaPlayerSubtitle *subtitle = NULL;
     GmtkMediaPlayerAudioTrack *audio_track = NULL;
     GList *iter;
     GtkWidget *dialog;
 
     if (player == NULL) {
-        printf("player is NULL\n");
+        gm_log(player->debug, G_LOG_LEVEL_MESSAGE, "player is NULL");
+        finalize_mplayer(player);
         return FALSE;
     }
 
     if (source == NULL) {
-        if (player->debug)
-            printf("source is null\n");
-        g_source_remove(player->watch_in_id);
-        g_source_remove(player->watch_in_hup_id);
+        gm_log(player->debug, G_LOG_LEVEL_INFO, "source is null");
+        finalize_mplayer(player);
         return FALSE;
     }
 
     if (player->player_state == PLAYER_STATE_DEAD) {
-        if (player->debug)
-            printf("player is dead\n");
+        gm_log(player->debug, G_LOG_LEVEL_INFO, "player is dead");
+        finalize_mplayer(player);
         return FALSE;
     }
 
@@ -2851,13 +3118,11 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
 
     status = g_io_channel_read_line_string(source, mplayer_output, NULL, &error);
     if (status == G_IO_STATUS_ERROR) {
-        if (player->debug)
-            printf("GIO IO Error: %s\n", mplayer_output->str);
+        gm_logsp(player->debug, G_LOG_LEVEL_INFO, "GIO IO Error:", mplayer_output->str);
         return TRUE;
     } else {
-        if (player->debug) {
-            if (g_strrstr(mplayer_output->str, "ANS") == NULL)
-                printf("%s", mplayer_output->str);
+        if (g_strrstr(mplayer_output->str, "ANS") == NULL) {
+            gm_logs(player->debug, G_LOG_LEVEL_INFO, mplayer_output->str);
         }
 
         if (strstr(mplayer_output->str, "Cache fill") != 0) {
@@ -2875,6 +3140,7 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
         if (strstr(mplayer_output->str, "VO:") != NULL) {
             buf = strstr(mplayer_output->str, "VO:");
             sscanf(buf, "VO: [%[^]]] %ix%i => %ix%i", vm, &w, &h, &(player->video_width), &(player->video_height));
+            gm_log(player->debug, G_LOG_LEVEL_DEBUG, "%ix%i => %ix%i", w, h, player->video_width, player->video_height);
             gmtk_get_allocation(GTK_WIDGET(player), &allocation);
             player->media_state = MEDIA_STATE_PLAY;
             if (player->restart) {
@@ -2886,6 +3152,7 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
                 create_event_allocation(player, "size_allocate", &allocation);
                 player->video_present = TRUE;
                 write_to_mplayer(player, "get_property sub_source\n");
+                write_to_mplayer(player, "get_property sub_visibility\n");
                 create_event_int(player, "attribute-changed", ATTRIBUTE_SIZE);
                 create_event_int(player, "attribute-changed", ATTRIBUTE_VIDEO_PRESENT);
                 create_event_int(player, "subtitles-changed", g_list_length(player->subtitles));
@@ -2895,16 +3162,18 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
             create_event_int(player, "attribute-changed", ATTRIBUTE_AF_EXPORT_FILENAME);
             create_event_int(player, "attribute-changed", ATTRIBUTE_AUDIO_TRACK);
             create_event_int(player, "attribute-changed", ATTRIBUTE_SUBTITLE);
+            gmtk_media_player_log_state(player, "media_loaded");
         }
 
         if (strstr(mplayer_output->str, "Video: no video") != NULL) {
+            gm_log(player->debug, G_LOG_LEVEL_MESSAGE, "Running in audio only mode");
             player->video_width = 0;
             player->video_height = 0;
             gmtk_get_allocation(GTK_WIDGET(player), &allocation);
+            player->media_state = MEDIA_STATE_PLAY;
             if (player->restart) {
                 g_signal_emit_by_name(player, "restart-complete", NULL);
             } else {
-                player->media_state = MEDIA_STATE_PLAY;
                 create_event_int(player, "media-state-changed", player->media_state);
                 player->video_present = FALSE;
                 create_event_int(player, "attribute-changed", ATTRIBUTE_SIZE);
@@ -2916,6 +3185,7 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
             create_event_int(player, "attribute-changed", ATTRIBUTE_AF_EXPORT_FILENAME);
             create_event_int(player, "attribute-changed", ATTRIBUTE_AUDIO_TRACK);
             create_event_int(player, "attribute-changed", ATTRIBUTE_SUBTITLE);
+            gmtk_media_player_log_state(player, "media_loaded");
         }
 
         if (strstr(mplayer_output->str, "ANS_TIME_POSITION") != 0) {
@@ -2993,6 +3263,21 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
             create_event_int(player, "attribute-changed", ATTRIBUTE_SUBTITLE);
         }
 
+        if (strstr(mplayer_output->str, "ANS_sub_visibility") != 0) {
+            if (strstr(mplayer_output->str, "ANS_sub_visibility=yes") != 0) {
+                player->sub_visible = TRUE;
+            } else {
+                player->sub_visible = FALSE;
+            }
+            create_event_int(player, "attribute-changed", ATTRIBUTE_SUB_VISIBLE);
+        }
+
+        if (strstr(mplayer_output->str, "ANS_speed") != 0) {
+            buf = strstr(mplayer_output->str, "ANS_speed");
+            sscanf(buf, "ANS_speed=%lf", &player->speed);
+            gm_log(player->debug, G_LOG_LEVEL_MESSAGE, "new speed is %lf", player->speed);
+            create_event_int(player, "attribute-changed", ATTRIBUTE_SPEED_SET);
+        }
 
         if (strstr(mplayer_output->str, "DVDNAV_TITLE_IS_MENU") != 0) {
             player->title_is_menu = TRUE;
@@ -3189,8 +3474,8 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
             player->video_format = g_strdup(buf);
             create_event_int(player, "attribute-changed", ATTRIBUTE_VIDEO_FORMAT);
             if (player->video_width == 0 && player->video_height == 0) {
-                if (player->debug)
-                    printf("Setting to minimum size so that mplayer has something to draw to\n");
+                gm_log(player->debug, G_LOG_LEVEL_INFO,
+                       "Setting to minimum size so that mplayer has something to draw to");
                 allocation.width = 32;
                 allocation.height = 16;
                 create_event_allocation(player, "size_allocate", &allocation);
@@ -3287,6 +3572,7 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
                 player->title = g_strdup(buf);
                 gm_str_strip_unicode(player->title, strlen(player->title));
             }
+            player->has_metadata = TRUE;
             create_event_int(player, "attribute-changed", ATTRIBUTE_TITLE);
         }
 
@@ -3304,6 +3590,7 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
                 player->artist = g_strdup(buf);
                 gm_str_strip_unicode(player->artist, strlen(player->artist));
             }
+            player->has_metadata = TRUE;
             create_event_int(player, "attribute-changed", ATTRIBUTE_ARTIST);
         }
 
@@ -3321,6 +3608,7 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
                 player->title = g_strdup(buf);
                 gm_str_strip_unicode(player->title, strlen(player->title));
             }
+            player->has_metadata = TRUE;
             create_event_int(player, "attribute-changed", ATTRIBUTE_TITLE);
         }
 
@@ -3338,6 +3626,7 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
                 player->artist = g_strdup(buf);
                 gm_str_strip_unicode(player->artist, strlen(player->artist));
             }
+            player->has_metadata = TRUE;
             create_event_int(player, "attribute-changed", ATTRIBUTE_ARTIST);
         }
 
@@ -3355,6 +3644,7 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
                 player->album = g_strdup(buf);
                 gm_str_strip_unicode(player->album, strlen(player->album));
             }
+            player->has_metadata = TRUE;
             create_event_int(player, "attribute-changed", ATTRIBUTE_ALBUM);
         }
 
@@ -3425,7 +3715,7 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
             }
         }
 
-        if (strstr(mplayer_output->str, "ID_FILENAME") != NULL) {
+        if (strstr(mplayer_output->str, "ID_FILENAME") != NULL && player->has_metadata == FALSE) {
             buf = g_strrstr(mplayer_output->str, ".");
             if (buf)
                 buf[0] = '\0';
@@ -3463,26 +3753,34 @@ gboolean thread_reader(GIOChannel * source, GIOCondition condition, gpointer dat
             message = NULL;
         }
 
+        if (strstr(mplayer_output->str, "ID_SIGNAL") != 0) {
+            if (player->position == 0) {
+                player->playback_error = ERROR_RETRY;
+            }
+        }
+
     }
 
     g_string_free(mplayer_output, TRUE);
     return TRUE;
 }
 
+// this executes in the main thread
 gboolean thread_query(gpointer data)
 {
     GmtkMediaPlayer *player = GMTK_MEDIA_PLAYER(data);
     gint written;
 
-    //printf("in thread_query, data = %p\n", data);
+    // gm_log(player->debug, G_LOG_LEVEL_DEBUG, "in thread_query, data = %p", data);
     if (player == NULL) {
-        //printf("thread_query called with player == NULL\n");
+        gm_log(player->debug, G_LOG_LEVEL_DEBUG, "thread_query called with player == NULL");
+        finalize_mplayer(player);
         return FALSE;
     }
 
     if (player->player_state == PLAYER_STATE_RUNNING) {
         if (player->media_state == MEDIA_STATE_PLAY) {
-            //printf("writing\n");
+            // gm_log(player->debug, G_LOG_LEVEL_DEBUG, "writing");
             if (player->use_mplayer2) {
                 written = write(player->std_in, "get_time_pos\n", strlen("get_time_pos\n"));
             } else {
@@ -3490,11 +3788,10 @@ gboolean thread_query(gpointer data)
                     write(player->std_in, "pausing_keep_force get_time_pos\n",
                           strlen("pausing_keep_force get_time_pos\n"));
             }
-            //printf("written = %i\n", written);
+            // gm_log(player->debug, G_LOG_LEVEL_DEBUG, "written = %i", written);
             if (written == -1) {
                 //return TRUE;
-                if (player->debug)
-                    printf("thread_query, write failed\n");
+                gm_log(player->debug, G_LOG_LEVEL_INFO, "thread_query, write failed");
                 return FALSE;
             } else {
                 return TRUE;
@@ -3503,8 +3800,8 @@ gboolean thread_query(gpointer data)
             return TRUE;
         }
     } else {
-        //if (player->debug)
-        //    printf("thread_query, player is dead\n");
+        gm_log(player->debug, G_LOG_LEVEL_DEBUG, "thread_query, player is dead");
+        finalize_mplayer(player);
         return FALSE;
     }
 }
@@ -3515,13 +3812,14 @@ gboolean write_to_mplayer(GmtkMediaPlayer * player, const gchar * cmd)
     gsize bytes_written;
     gchar *pkf_cmd;
 
-    //printf("write to mplayer = %s\n", cmd);
+    /* ending \n is part of cmd */
+    gm_logsp(player->debug, G_LOG_LEVEL_DEBUG, "write to mplayer =", cmd);
 
     if (player->channel_in) {
         if (player->use_mplayer2) {
             pkf_cmd = g_strdup(cmd);
         } else {
-            if (g_strncasecmp(cmd, "pause", strlen("pause")) == 0) {
+            if (g_ascii_strncasecmp(cmd, "pause", strlen("pause")) == 0) {
                 pkf_cmd = g_strdup(cmd);
             } else {
                 pkf_cmd = g_strdup_printf("pausing_keep_force %s", cmd);
@@ -3581,7 +3879,7 @@ gboolean detect_mplayer_features(GmtkMediaPlayer * player)
     }
 
     if (error != NULL) {
-        printf("Error when running: %s\n", error->message);
+        gm_log(player->debug, G_LOG_LEVEL_MESSAGE, "Error when running: %s", error->message);
         g_error_free(error);
         error = NULL;
         if (out != NULL) {
@@ -3613,7 +3911,8 @@ gboolean detect_mplayer_features(GmtkMediaPlayer * player)
 
     player->features_detected = TRUE;
     if (!ret) {
-        printf(g_dgettext(GETTEXT_PACKAGE, "You might want to consider upgrading mplayer to a newer version\n"));
+        gm_log(player->debug, G_LOG_LEVEL_MESSAGE,
+               g_dgettext(GETTEXT_PACKAGE, "You might want to consider upgrading mplayer to a newer version"));
     }
     return ret;
 }
diff --git a/src/gmtk_media_player.h b/src/gmtk_media_player.h
index 960d4f2..5073d0b 100644
--- a/src/gmtk_media_player.h
+++ b/src/gmtk_media_player.h
@@ -93,7 +93,8 @@ typedef enum {
     ASPECT_4X3,
     ASPECT_16X9,
     ASPECT_16X10,
-    ASPECT_WINDOW
+    ASPECT_WINDOW,
+    ASPECT_ANAMORPHIC           // 2.39:1
 } GmtkMediaPlayerAspectRatio;
 
 typedef enum {
@@ -207,14 +208,17 @@ typedef enum {
     COMMAND_SWITCH_AUDIO,
     COMMAND_FRAME_STEP,
     COMMAND_SUBTITLE_SELECT,
-    COMMAND_SWITCH_FRAME_DROP
+    COMMAND_SWITCH_FRAME_DROP,
+    COMMAND_SUBTITLE_STEP_FORWARD,
+    COMMAND_SUBTITLE_STEP_BACKWARD
 } GmtkMediaPlayerCommand;
 
 typedef enum {
     EVENT_TYPE_INT,
     EVENT_TYPE_DOUBLE,
     EVENT_TYPE_BOOLEAN,
-    EVENT_TYPE_ALLOCATION
+    EVENT_TYPE_ALLOCATION,
+    EVENT_TYPE_STRING
 } GmtkMediaPlayerEventType;
 
 typedef struct _GmtkMediaPlayer GmtkMediaPlayer;
@@ -244,6 +248,7 @@ typedef struct _GmtkMediaPlayerEvent {
     gdouble event_data_double;
     gboolean event_data_boolean;
     GtkAllocation *event_allocation;
+    gchar *event_data_string;
 } GmtkMediaPlayerEvent;
 
 struct _GmtkMediaPlayer {
@@ -385,6 +390,12 @@ struct _GmtkMediaPlayer {
     GmtkMediaPlayerMediaState restart_state;
 
     GdkColor *default_background;
+
+    gboolean has_metadata;
+    gdouble speed;
+
+    gboolean disposed;
+    GMutex *player_lock;
 };
 
 struct _GmtkMediaPlayerClass {
@@ -398,6 +409,7 @@ struct _GmtkMediaPlayerClass {
     void (*audio_tracks_changed) (GmtkMediaPlayer * player);
     void (*restart_shutdown_complete) (GmtkMediaPlayer * player);
     void (*restart_complete) (GmtkMediaPlayer * player);
+    void (*error_message) (GmtkMediaPlayer * player);
 };
 
 GType gmtk_media_player_get_type(void);
@@ -407,7 +419,7 @@ void gmtk_media_player_set_uri(GmtkMediaPlayer * player, const gchar * uri);
 const gchar *gmtk_media_player_get_uri(GmtkMediaPlayer * player);
 
 void gmtk_media_player_set_state(GmtkMediaPlayer * player, const GmtkMediaPlayerMediaState new_state);
-GmtkMediaPlayerMediaState gmtk_media_player_get_state(GmtkMediaPlayer * player);
+GmtkMediaPlayerMediaState gmtk_media_player_get_media_state(GmtkMediaPlayer * player);
 
 void gmtk_media_player_set_attribute_boolean(GmtkMediaPlayer * player,
                                              GmtkMediaPlayerMediaAttributes attribute, gboolean value);
@@ -449,6 +461,7 @@ void gmtk_media_player_send_command(GmtkMediaPlayer * player, GmtkMediaPlayerCom
 
 void gmtk_media_player_set_aspect(GmtkMediaPlayer * player, GmtkMediaPlayerAspectRatio aspect);
 GmtkMediaPlayerAspectRatio gmtk_media_player_get_aspect(GmtkMediaPlayer * player);
+const gchar *gmtk_media_state_to_string(const GmtkMediaPlayerMediaState media_state);
 
 
 G_END_DECLS
diff --git a/src/gmtk_media_tracker.c b/src/gmtk_media_tracker.c
index 2950b2d..cda8783 100644
--- a/src/gmtk_media_tracker.c
+++ b/src/gmtk_media_tracker.c
@@ -24,6 +24,7 @@
 
 #include "gmtk_media_tracker.h"
 #include "gmtk_common.h"
+#include "gm_log.h"
 
 G_DEFINE_TYPE(GmtkMediaTracker, gmtk_media_tracker, GTK_TYPE_VBOX);
 static GObjectClass *parent_class = NULL;
@@ -81,7 +82,11 @@ static void gmtk_media_tracker_init(GmtkMediaTracker * tracker)
 
     gtk_widget_push_composite_child();
 
+#if GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION >= 2
+    tracker->scale = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 0, 1, 0.001);
+#else
     tracker->scale = gtk_hscale_new_with_range(0, 1, 0.001);
+#endif
     gtk_scale_set_draw_value(GTK_SCALE(tracker->scale), FALSE);
 #ifdef GTK2_20_ENABLED
     gtk_widget_set_can_focus(tracker->scale, FALSE);
@@ -107,9 +112,12 @@ static void gmtk_media_tracker_init(GmtkMediaTracker * tracker)
     g_signal_connect_swapped(G_OBJECT(tracker->scale), "motion-notify-event",
                              G_CALLBACK(gmtk_media_tracker_motion_notify), tracker);
 
-
+#if GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION >= 2
+    tracker->hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
+    gtk_box_set_homogeneous(GTK_BOX(tracker->hbox), FALSE);
+#else
     tracker->hbox = gtk_hbox_new(0, FALSE);
-
+#endif
     tracker->message = gtk_label_new("");
     gtk_label_set_markup(GTK_LABEL(tracker->message), "<small> </small>");
     gtk_misc_set_alignment(GTK_MISC(tracker->message), 0.0, 0.0);
@@ -159,7 +167,7 @@ static gboolean gmtk_media_tracker_button_press(GtkWidget * tracker, GdkEventBut
 static gboolean gmtk_media_tracker_button_release(GtkWidget * tracker, GdkEventButton * event)
 {
     gdouble position;
-    gdouble difference;
+    //gdouble difference;
     GtkAllocation alloc;
 
     gmtk_get_allocation(tracker, &alloc);
@@ -197,7 +205,7 @@ static gboolean gmtk_media_tracker_motion_notify(GtkWidget * tracker, GdkEventMo
         gtk_range_set_value(GTK_RANGE(GMTK_MEDIA_TRACKER(tracker)->scale), position);
         g_signal_emit_by_name(tracker, "value-changed", (gint) (100 * position));
         difference = (GMTK_MEDIA_TRACKER(tracker)->length * position) - GMTK_MEDIA_TRACKER(tracker)->position;
-        //printf("difference = %lf \n", difference);
+        gm_log(FALSE, G_LOG_LEVEL_MESSAGE, "difference = %lf", difference);
         //if (ABS(difference) > 15)
         //    g_signal_emit_by_name(tracker, "difference-changed", difference);
 
diff --git a/src/gmtk_output_combo_box.c b/src/gmtk_output_combo_box.c
index d508076..d425a59 100644
--- a/src/gmtk_output_combo_box.c
+++ b/src/gmtk_output_combo_box.c
@@ -24,6 +24,7 @@
 
 #include "gmtk_output_combo_box.h"
 #include "gmtk_common.h"
+#include "gm_log.h"
 
 static GObjectClass *parent_class = NULL;
 
@@ -53,7 +54,7 @@ gint sort_iter_compare_func(GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter *
         break;
 
     default:
-        printf("unimplemented sort routine\n");
+        gm_log(FALSE, G_LOG_LEVEL_MESSAGE, "unimplemented sort routine");
     }
 
     return ret;
@@ -85,9 +86,10 @@ void pa_sink_cb(pa_context * c, const pa_sink_info * i, int eol, gpointer data)
 
 void context_state_callback(pa_context * context, gpointer data)
 {
-    //printf("context state callback\n");
     int i;
 
+    gm_log(FALSE, G_LOG_LEVEL_DEBUG, "context state callback");
+
     switch (pa_context_get_state(context)) {
     case PA_CONTEXT_READY:{
             for (i = 0; i < 255; i++) {
@@ -108,11 +110,11 @@ G_DEFINE_TYPE(GmtkOutputComboBox, gmtk_output_combo_box, GTK_TYPE_COMBO_BOX);
 
 static void gmtk_output_combo_box_class_init(GmtkOutputComboBoxClass * class)
 {
-    GtkWidgetClass *widget_class;
-    GObjectClass *object_class;
+    //GtkWidgetClass *widget_class;
+    //GObjectClass *object_class;
 
-    object_class = G_OBJECT_CLASS(class);
-    widget_class = GTK_WIDGET_CLASS(class);
+    //object_class = G_OBJECT_CLASS(class);
+    //widget_class = GTK_WIDGET_CLASS(class);
 
     parent_class = g_type_class_peek_parent(class);
 }
@@ -179,7 +181,7 @@ static void gmtk_output_combo_box_init(GmtkOutputComboBox * output)
     card = -1;
 
     while (snd_card_next(&card) >= 0) {
-        //printf("card = %i\n", card);
+        gm_log(FALSE, G_LOG_LEVEL_DEBUG, "card = %i", card);
         if (card < 0)
             break;
         if (name != NULL) {
@@ -188,7 +190,7 @@ static void gmtk_output_combo_box_init(GmtkOutputComboBox * output)
         }
         name = malloc(32);
         sprintf(name, "hw:%i", card);
-        //printf("name = %s\n",name);
+        gm_log(FALSE, G_LOG_LEVEL_DEBUG, "name = %s", name);
 
         if ((err = snd_ctl_open(&handle, name, 0)) < 0) {
             continue;
@@ -248,6 +250,7 @@ static void gmtk_output_combo_box_init(GmtkOutputComboBox * output)
         pa_context_set_state_callback(context, context_state_callback, output);
     }
     // make sure the pulse events are done before we exit this function
+    gm_log(FALSE, G_LOG_LEVEL_DEBUG, "waiting for all events to drain");
     while (gtk_events_pending())
         gtk_main_iteration();
 
@@ -265,6 +268,8 @@ static void gmtk_output_combo_box_init(GmtkOutputComboBox * output)
 
 }
 
+/* unused
+
 static void gmtk_output_combo_box_dispose(GObject * object)
 {
     GmtkOutputComboBox *output = GMTK_OUTPUT_COMBO_BOX(object);
@@ -275,7 +280,7 @@ static void gmtk_output_combo_box_dispose(GObject * object)
     G_OBJECT_CLASS(parent_class)->dispose(object);
 
 }
-
+*/
 
 
 GtkWidget *gmtk_output_combo_box_new()
@@ -315,7 +320,7 @@ const gchar *gmtk_output_combo_box_get_active_description(GmtkOutputComboBox * o
 GmtkOutputType gmtk_output_combo_box_get_active_type(GmtkOutputComboBox * output)
 {
     GtkTreeIter iter;
-    GmtkOutputType type;
+    GmtkOutputType type = OUTPUT_TYPE_SOFTVOL;
 
     if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(output), &iter)) {
         gtk_tree_model_get(GTK_TREE_MODEL(output->list), &iter, OUTPUT_TYPE_COLUMN, &type, -1);
diff --git a/src/libgmlib.la b/src/libgmlib.la
new file mode 100644
index 0000000..9c9d3a0
--- /dev/null
+++ b/src/libgmlib.la
@@ -0,0 +1,41 @@
+# libgmlib.la - a libtool library file
+# Generated by libtool (GNU libtool) 2.4.2
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='libgmlib.so.1'
+
+# Names of this library.
+library_names='libgmlib.so.1.0.7 libgmlib.so.1 libgmlib.so'
+
+# The name of the static archive.
+old_library='libgmlib.a'
+
+# Linker flags that can not go in dependency_libs.
+inherited_linker_flags=' -pthread'
+
+# Libraries that this one depends upon.
+dependency_libs=' -lgconf-2 -lgio-2.0 -lgobject-2.0 -lasound -lpulse-mainloop-glib -lpulse -lglib-2.0 -lm'
+
+# Names of additional weak libraries provided by this library
+weak_library_names=''
+
+# Version information for libgmlib.
+current=1
+age=0
+revision=7
+
+# Is this an already installed library?
+installed=no
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=no
+
+# Files to dlopen/dlpreopen
+dlopen=''
+dlpreopen=''
+
+# Directory that this library needs to be installed in:
+libdir='/usr/lib64'

-- 
gmtk packaging



More information about the pkg-multimedia-commits mailing list