Hello community, here is the log from the commit of package dleyna-renderer for openSUSE:Factory checked in at 2013-09-16 09:34:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dleyna-renderer (Old) and /work/SRC/openSUSE:Factory/.dleyna-renderer.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dleyna-renderer" Changes: -------- --- /work/SRC/openSUSE:Factory/dleyna-renderer/dleyna-renderer.changes 2013-08-27 20:41:04.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.dleyna-renderer.new/dleyna-renderer.changes 2013-09-16 09:34:58.000000000 +0200 @@ -1,0 +2,19 @@ +Sat Sep 14 15:39:37 UTC 2013 - [email protected] + +- Update to version 0.1.3: + + GetRenderers() should return an array of object paths "ao" + instead of an array of strings "as". + + dLeyna renderer can crash if renderer dissapears (7.2.8.4,6). + + Fixed a build issue: [Build] Ship the internal library in a + private directory. +- Drop libdleyna-rendere subpackage: this was not meant to be + provided as a system lirary by upstream, but rather a private + library. Thus, the lib has been moved to a private space + (%{libdir}/%{name}/). +- As a consequence, no longer require libdleyna-renderer-1_0-1 from + the -devel package. +- Require the main package from the -devel package (the private + library still has a .so file which could result in a dangling + symlink otherwise). + +------------------------------------------------------------------- Old: ---- dleyna-renderer-0.1.1.tar.gz New: ---- dleyna-renderer-0.1.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dleyna-renderer.spec ++++++ --- /var/tmp/diff_new_pack.YI9NaM/_old 2013-09-16 09:34:59.000000000 +0200 +++ /var/tmp/diff_new_pack.YI9NaM/_new 2013-09-16 09:34:59.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package +# spec file for package dleyna-renderer # # Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. # @@ -15,14 +15,15 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + Name: dleyna-renderer -Version: 0.1.1 +Version: 0.1.3 Release: 0 -License: LGPL-2.1 Summary: Discover and manipulate Digital Media Renderers -Url: http://01.org/dleyna +License: LGPL-2.1 Group: System/Libraries -Source: https://01.org/dleyna/sites/default/files/downloads/dleyna-renderer-0.1.1.tar.gz +Url: http://01.org/dleyna +Source: https://01.org/dleyna/sites/default/files/downloads/%{name}-%{version}.tar.gz BuildRequires: pkgconfig(dleyna-core-1.0) >= 0.0.1 BuildRequires: pkgconfig(gio-2.0) >= 2.28 BuildRequires: pkgconfig(glib-2.0) >= 2.28 @@ -39,19 +40,10 @@ dleyna-renderer is a library for implementing services that allow clients to discover and manipulate Digital Media Renderers. An implementation of such a service for linux is also included -%package -n libdleyna-renderer-1_0-1 -Summary: Discover and manipulate Digital Media Renderers -Group: System/Libraries -Requires: dbus(dleyna-renderer-service) >= %{version} - -%description -n libdleyna-renderer-1_0-1 -dleyna-renderer is a library for implementing services that allow clients to discover and manipulate -Digital Media Renderers. An implementation of such a service for linux is also included - %package devel Summary: Discover and manipulate Digital Media Renderers -- Development files Group: Development/Languages/C and C++ -Requires: libdleyna-renderer-1_0-1 = %{version} +Requires: %{name} = %{version} %description devel dleyna-renderer is a library for implementing services that allow clients to discover and manipulate @@ -68,29 +60,21 @@ %make_install find %{buildroot}%{_libdir} -type f -name '*.la' -delete -print -%post -n libdleyna-renderer-1_0-1 -p /sbin/ldconfig - -%postun -n libdleyna-renderer-1_0-1 -p /sbin/ldconfig - %files %defattr(-,root,root) %doc ChangeLog README %dir %{_datadir}/dbus-1 %dir %{_datadir}/dbus-1/services %{_datadir}/dbus-1/services/com.intel.dleyna-renderer.service +%dir %{_libdir}/%{name} +%{_libdir}/%{name}/libdleyna-renderer-1.0.so.* %{_libexecdir}/dleyna-renderer-service %config %{_sysconfdir}/dleyna-renderer-service.conf -%files -n libdleyna-renderer-1_0-1 -%defattr(-,root,root) -%doc COPYING -%{_libdir}/libdleyna-renderer-1.0.so.* - - %files devel %defattr(-,root,root) %{_includedir}/dleyna-1.0/ -%{_libdir}/libdleyna-renderer-1.0.so +%{_libdir}/%{name}/libdleyna-renderer-1.0.so %{_libdir}/pkgconfig/dleyna-renderer-1.0.pc %{_libdir}/pkgconfig/dleyna-renderer-service-1.0.pc ++++++ dleyna-renderer-0.1.1.tar.gz -> dleyna-renderer-0.1.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/ChangeLog new/dleyna-renderer-0.1.3/ChangeLog --- old/dleyna-renderer-0.1.1/ChangeLog 2013-06-03 16:07:04.000000000 +0200 +++ new/dleyna-renderer-0.1.3/ChangeLog 2013-08-29 16:04:56.000000000 +0200 @@ -1,3 +1,15 @@ +version 0.1.3 + - Fixed bug dLeyna renderer can crash if renderer dissapears + https://github.com/01org/dleyna-renderer/issues/97 + - Ship the internal library in a private directory + +version 0.1.2 + - Return object paths in GetRenderers() instead of strings + - Same update for FoundRenderer & LostRenderer signals + +version 0.1.1 + - Do not require dbus and dleyna-connector-dbus at build time + version 0.1.0 - Prepare for first stable branch diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/build-aux/ltmain.sh new/dleyna-renderer-0.1.3/build-aux/ltmain.sh --- old/dleyna-renderer-0.1.1/build-aux/ltmain.sh 2013-06-06 11:09:09.000000000 +0200 +++ new/dleyna-renderer-0.1.3/build-aux/ltmain.sh 2013-08-29 16:08:55.000000000 +0200 @@ -70,7 +70,7 @@ # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu2 +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.2ubuntu1 # automake: $automake_version # autoconf: $autoconf_version # @@ -80,7 +80,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.2 Debian-2.4.2-1ubuntu2" +VERSION="2.4.2 Debian-2.4.2-1.2ubuntu1" TIMESTAMP="" package_revision=1.3337 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/configure new/dleyna-renderer-0.1.3/configure --- old/dleyna-renderer-0.1.1/configure 2013-06-06 11:09:11.000000000 +0200 +++ new/dleyna-renderer-0.1.3/configure 2013-08-29 16:08:57.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for dleyna-renderer 0.1.1. +# Generated by GNU Autoconf 2.69 for dleyna-renderer 0.1.3. # # Report bugs to <https://github.com/01org/dleyna-renderer/issues/new>. # @@ -591,8 +591,8 @@ # Identity of this package. PACKAGE_NAME='dleyna-renderer' PACKAGE_TARNAME='dleyna-renderer' -PACKAGE_VERSION='0.1.1' -PACKAGE_STRING='dleyna-renderer 0.1.1' +PACKAGE_VERSION='0.1.3' +PACKAGE_STRING='dleyna-renderer 0.1.3' PACKAGE_BUGREPORT='https://github.com/01org/dleyna-renderer/issues/new' PACKAGE_URL='https://01.org/dleyna/' @@ -1376,7 +1376,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures dleyna-renderer 0.1.1 to adapt to many kinds of systems. +\`configure' configures dleyna-renderer 0.1.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1446,7 +1446,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of dleyna-renderer 0.1.1:";; + short | recursive ) echo "Configuration of dleyna-renderer 0.1.3:";; esac cat <<\_ACEOF @@ -1596,7 +1596,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -dleyna-renderer configure 0.1.1 +dleyna-renderer configure 0.1.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2073,7 +2073,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by dleyna-renderer $as_me 0.1.1, which was +It was created by dleyna-renderer $as_me 0.1.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2896,7 +2896,7 @@ # Define the identity of the package. PACKAGE='dleyna-renderer' - VERSION='0.1.1' + VERSION='0.1.3' cat >>confdefs.h <<_ACEOF @@ -5039,7 +5039,8 @@ ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else @@ -5440,10 +5441,6 @@ fi ;; -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -5482,7 +5479,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; @@ -6580,7 +6577,14 @@ LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - LD="${LD-ld} -m elf_i386" + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" @@ -8407,7 +8411,7 @@ lt_prog_compiler_static='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -10577,17 +10581,6 @@ esac ;; -gnu*) - 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no @@ -10704,7 +10697,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no @@ -13759,7 +13752,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by dleyna-renderer $as_me 0.1.1, which was +This file was extended by dleyna-renderer $as_me 0.1.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13826,7 +13819,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -dleyna-renderer config.status 0.1.1 +dleyna-renderer config.status 0.1.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/configure.ac new/dleyna-renderer-0.1.3/configure.ac --- old/dleyna-renderer-0.1.1/configure.ac 2013-06-06 10:57:58.000000000 +0200 +++ new/dleyna-renderer-0.1.3/configure.ac 2013-08-29 16:08:41.000000000 +0200 @@ -1,7 +1,7 @@ AC_PREREQ([2.66]) AC_INIT([dleyna-renderer], - [0.1.1], + [0.1.3], [https://github.com/01org/dleyna-renderer/issues/new], , [https://01.org/dleyna/]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/libdleyna/renderer/Makefile.am new/dleyna-renderer-0.1.3/libdleyna/renderer/Makefile.am --- old/dleyna-renderer-0.1.1/libdleyna/renderer/Makefile.am 2013-06-03 15:16:30.000000000 +0200 +++ new/dleyna-renderer-0.1.3/libdleyna/renderer/Makefile.am 2013-08-29 09:44:29.000000000 +0200 @@ -14,7 +14,7 @@ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} -lib_LTLIBRARIES = libdleyna-renderer-1.0.la +pkglib_LTLIBRARIES = libdleyna-renderer-1.0.la libdleyna_rendererinc_HEADERS = control-point-renderer.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/libdleyna/renderer/Makefile.in new/dleyna-renderer-0.1.3/libdleyna/renderer/Makefile.in --- old/dleyna-renderer-0.1.1/libdleyna/renderer/Makefile.in 2013-06-06 11:09:12.000000000 +0200 +++ new/dleyna-renderer-0.1.3/libdleyna/renderer/Makefile.in 2013-08-29 16:08:58.000000000 +0200 @@ -97,10 +97,10 @@ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } -am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \ +am__installdirs = "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(pkgconfigdir)" \ "$(DESTDIR)$(sysconfdir)" \ "$(DESTDIR)$(libdleyna_rendererincdir)" -LTLIBRARIES = $(lib_LTLIBRARIES) +LTLIBRARIES = $(pkglib_LTLIBRARIES) am__DEPENDENCIES_1 = libdleyna_renderer_1_0_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ @@ -313,7 +313,7 @@ -include config.h ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} -lib_LTLIBRARIES = libdleyna-renderer-1.0.la +pkglib_LTLIBRARIES = libdleyna-renderer-1.0.la libdleyna_rendererinc_HEADERS = control-point-renderer.h libdleyna_renderer_1_0_la_LDFLAGS = -version-info $(DLEYNA_RENDERER_VERSION) \ -no-undefined @@ -397,40 +397,40 @@ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ dleyna-renderer-service.conf: $(top_builddir)/config.status $(srcdir)/dleyna-renderer-service.conf.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ -install-libLTLIBRARIES: $(lib_LTLIBRARIES) +install-pkglibLTLIBRARIES: $(pkglib_LTLIBRARIES) @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ 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)"; \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkglibdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkglibdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkglibdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkglibdir)"; \ } -uninstall-libLTLIBRARIES: +uninstall-pkglibLTLIBRARIES: @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + @list='$(pkglib_LTLIBRARIES)'; test -n "$(pkglibdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkglibdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkglibdir)/$$f"; \ done -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ +clean-pkglibLTLIBRARIES: + -test -z "$(pkglib_LTLIBRARIES)" || rm -f $(pkglib_LTLIBRARIES) + @list='$(pkglib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libdleyna-renderer-1.0.la: $(libdleyna_renderer_1_0_la_OBJECTS) $(libdleyna_renderer_1_0_la_DEPENDENCIES) $(EXTRA_libdleyna_renderer_1_0_la_DEPENDENCIES) - $(AM_V_CCLD)$(libdleyna_renderer_1_0_la_LINK) -rpath $(libdir) $(libdleyna_renderer_1_0_la_OBJECTS) $(libdleyna_renderer_1_0_la_LIBADD) $(LIBS) + $(AM_V_CCLD)$(libdleyna_renderer_1_0_la_LINK) -rpath $(pkglibdir) $(libdleyna_renderer_1_0_la_OBJECTS) $(libdleyna_renderer_1_0_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -624,7 +624,7 @@ check: check-am all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(sysconfdir)" "$(DESTDIR)$(libdleyna_rendererincdir)"; do \ + for dir in "$(DESTDIR)$(pkglibdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(sysconfdir)" "$(DESTDIR)$(libdleyna_rendererincdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am @@ -662,7 +662,7 @@ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ +clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \ mostlyclean-am distclean: distclean-am @@ -690,7 +690,7 @@ install-dvi-am: -install-exec-am: install-libLTLIBRARIES install-sysconfDATA +install-exec-am: install-pkglibLTLIBRARIES install-sysconfDATA install-html: install-html-am @@ -731,29 +731,28 @@ ps-am: -uninstall-am: uninstall-libLTLIBRARIES \ - uninstall-libdleyna_rendererincHEADERS uninstall-pkgconfigDATA \ +uninstall-am: uninstall-libdleyna_rendererincHEADERS \ + uninstall-pkgconfigDATA uninstall-pkglibLTLIBRARIES \ uninstall-sysconfDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool ctags distclean \ + clean-libtool clean-pkglibLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir 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-html \ install-html-am install-info install-info-am \ - install-libLTLIBRARIES install-libdleyna_rendererincHEADERS \ - install-man install-pdf install-pdf-am install-pkgconfigDATA \ + install-libdleyna_rendererincHEADERS install-man install-pdf \ + install-pdf-am install-pkgconfigDATA install-pkglibLTLIBRARIES \ install-ps install-ps-am install-strip install-sysconfDATA \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic maintainer-clean-local mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags uninstall uninstall-am \ - uninstall-libLTLIBRARIES \ uninstall-libdleyna_rendererincHEADERS uninstall-pkgconfigDATA \ - uninstall-sysconfDATA + uninstall-pkglibLTLIBRARIES uninstall-sysconfDATA maintainer-clean-local: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/libdleyna/renderer/device.c new/dleyna-renderer-0.1.3/libdleyna/renderer/device.c --- old/dleyna-renderer-0.1.1/libdleyna/renderer/device.c 2013-05-31 14:16:22.000000000 +0200 +++ new/dleyna-renderer-0.1.3/libdleyna/renderer/device.c 2013-08-29 13:59:48.000000000 +0200 @@ -44,6 +44,14 @@ dlr_device_local_cb_t local_cb; }; +typedef struct dlr_rc_event_t_ dlr_rc_event_t; +struct dlr_rc_event_t_ { + dlr_device_t *device; + guint dev_volume; + guint mute; + guint source_id; +}; + /* Private structure used in chain task */ typedef struct prv_new_device_ct_t_ prv_new_device_ct_t; struct prv_new_device_ct_t_ { @@ -73,7 +81,7 @@ GValue *value, gpointer user_data); -static void prv_props_update(dlr_device_t *device, dlr_task_t *task); +static gboolean prv_props_update(dlr_device_t *device, dlr_task_t *task); static void prv_get_rates_values(GList *allowed_tp_speeds, GVariant **mpris_tp_speeds, @@ -393,6 +401,7 @@ g_ptr_array_free(dev->dlna_transport_play_speeds, TRUE); if (dev->mpris_transport_play_speeds) g_variant_unref(dev->mpris_transport_play_speeds); + g_hash_table_unref(dev->rc_event_handlers); g_free(dev->rate); g_free(dev->icon.mime_type); @@ -761,6 +770,15 @@ return NULL; } +static void prv_free_rc_event(gpointer user_data) +{ + dlr_rc_event_t *event = user_data; + + if (event->source_id) + g_source_remove(event->source_id); + g_free(event); +} + void dlr_device_construct( dlr_device_t *dev, dlr_device_context_t *context, @@ -821,6 +839,9 @@ dev->contexts = g_ptr_array_new_with_free_func(prv_dlr_context_delete); dev->path = new_path; dev->rate = g_strdup("1"); + dev->rc_event_handlers = g_hash_table_new_full(g_int_hash, g_int_equal, + g_free, + prv_free_rc_event); prv_props_init(&dev->props); @@ -1516,50 +1537,37 @@ g_object_unref(parser); } -static void prv_rc_last_change_cb(GUPnPServiceProxy *proxy, - const char *variable, - GValue *value, - gpointer user_data) +static gboolean prv_process_rc_last_change(gpointer user_data) { - GUPnPLastChangeParser *parser; - dlr_device_t *device = user_data; + dlr_rc_event_t *event = user_data; GVariantBuilder *changed_props_vb; GVariant *changed_props; GVariant *val; - guint dev_volume = G_MAXUINT; double mpris_volume; - guint mute = G_MAXUINT; + dlr_device_t *device = event->device; + gint source_id; - parser = gupnp_last_change_parser_new(); - - if (!gupnp_last_change_parser_parse_last_change( - parser, 0, - g_value_get_string(value), - NULL, - "Volume", G_TYPE_UINT, &dev_volume, - "Mute", G_TYPE_UINT, &mute, - NULL)) - goto on_error; - - if (device->props.synced == FALSE) - prv_props_update(device, NULL); + if (!device->props.synced && !prv_props_update(device, NULL)) + goto on_lost_device; if (device->max_volume == 0) goto on_error; changed_props_vb = g_variant_builder_new(G_VARIANT_TYPE("a{sv}")); - if (dev_volume != G_MAXUINT) { - mpris_volume = (double)dev_volume / (double)device->max_volume; + if (event->dev_volume != G_MAXUINT) { + mpris_volume = (double) event->dev_volume / + (double) device->max_volume; val = g_variant_ref_sink(g_variant_new_double(mpris_volume)); prv_change_props(device->props.player_props, DLR_INTERFACE_PROP_VOLUME, val, changed_props_vb); } - if (mute != G_MAXUINT) { + if (event->mute != G_MAXUINT) { val = g_variant_ref_sink( - g_variant_new_boolean(mute ? TRUE : FALSE)); + g_variant_new_boolean(event->mute ? TRUE + : FALSE)); prv_change_props(device->props.player_props, DLR_INTERFACE_PROP_MUTE, val, changed_props_vb); @@ -1574,6 +1582,54 @@ g_variant_builder_unref(changed_props_vb); on_error: + source_id = (gint) event->source_id; + event->source_id = 0; + g_hash_table_remove(device->rc_event_handlers, &source_id); + +on_lost_device: + + return FALSE; +} + +static void prv_rc_last_change_cb(GUPnPServiceProxy *proxy, + const char *variable, + GValue *value, + gpointer user_data) +{ + GUPnPLastChangeParser *parser; + dlr_rc_event_t *event; + guint dev_volume = G_MAXUINT; + guint mute = G_MAXUINT; + gint *key; + + parser = gupnp_last_change_parser_new(); + + if (!gupnp_last_change_parser_parse_last_change( + parser, 0, + g_value_get_string(value), + NULL, + "Volume", G_TYPE_UINT, &dev_volume, + "Mute", G_TYPE_UINT, &mute, + NULL)) + goto on_error; + + event = g_new0(dlr_rc_event_t, 1); + event->dev_volume = dev_volume; + event->mute = mute; + event->device = user_data; + + /* We cannot execute the code in prv_process_rc_last_change directly + in this function as it can cause the main loop to be iterated, which + may cause a crash when we return back to GUPnP. This code will be + re-written once we can cancel calls to retrieve the service + introspection data. */ + + event->source_id = g_idle_add(prv_process_rc_last_change, event); + key = g_new(gint, 1); + *key = (gint) event->source_id; + g_hash_table_insert(event->device->rc_event_handlers, key, event); + +on_error: g_object_unref(parser); } @@ -1778,21 +1834,42 @@ return; } -static void prv_get_av_service_states_values(GUPnPServiceProxy *av_proxy, - GVariant **mpris_tp_speeds, - GPtrArray **upnp_tp_speeds, - double *min_rate, - double *max_rate) +static gboolean prv_get_av_service_states_values(GUPnPServiceProxy *av_proxy, + GVariant **mpris_tp_speeds, + GPtrArray **upnp_tp_speeds, + double *min_rate, + double *max_rate) { const GUPnPServiceStateVariableInfo *svi; GUPnPServiceIntrospection *introspection; GError *error = NULL; GVariant *speeds = NULL; GList *allowed_values; + gpointer weak_ref = NULL; + gboolean device_alive = TRUE; + + /* TODO: this weak_ref hack is needed as + gupnp_service_info_get_introspection iterates the main loop. + This can result in our device getting deleted before this + function returns. Ultimately, this code needs to be re-written + to use gupnp_service_info_get_introspection_async but this cannot + really be done until GUPnP provides a way to cancel this function. */ + + weak_ref = av_proxy; + g_object_add_weak_pointer(G_OBJECT(av_proxy), &weak_ref); + + introspection = gupnp_service_info_get_introspection( + GUPNP_SERVICE_INFO(av_proxy), + &error); + + if (!weak_ref) { + DLEYNA_LOG_WARNING("Lost device during introspection call"); + device_alive = FALSE; + goto exit; + } + + g_object_remove_weak_pointer(G_OBJECT(av_proxy), &weak_ref); - introspection = gupnp_service_info_get_introspection( - GUPNP_SERVICE_INFO(av_proxy), - &error); if (error != NULL) { DLEYNA_LOG_DEBUG( "failed to fetch AV service introspection file"); @@ -1821,19 +1898,40 @@ exit: - return; + return device_alive; } -static void prv_get_rc_service_states_values(GUPnPServiceProxy *rc_proxy, - guint *max_volume) +static gboolean prv_get_rc_service_states_values(GUPnPServiceProxy *rc_proxy, + guint *max_volume) { const GUPnPServiceStateVariableInfo *svi; GUPnPServiceIntrospection *introspection; GError *error = NULL; + gpointer weak_ref = NULL; + gboolean device_alive = TRUE; + + /* TODO: this weak_ref hack is needed as + gupnp_service_info_get_introspection iterates the main loop. + This can result in our device getting deleted before this + function returns. Ultimately, this code needs to be re-written + to use gupnp_service_info_get_introspection_async but this cannot + really be done until GUPnP provides a way to cancel this function. */ + + weak_ref = rc_proxy; + g_object_add_weak_pointer(G_OBJECT(rc_proxy), &weak_ref); + + introspection = gupnp_service_info_get_introspection( + GUPNP_SERVICE_INFO(rc_proxy), + &error); + + if (!weak_ref) { + DLEYNA_LOG_WARNING("Lost device during introspection call"); + device_alive = FALSE; + goto exit; + } + + g_object_remove_weak_pointer(G_OBJECT(rc_proxy), &weak_ref); - introspection = gupnp_service_info_get_introspection( - GUPNP_SERVICE_INFO(rc_proxy), - &error); if (error != NULL) { DLEYNA_LOG_DEBUG( "failed to fetch RC service introspection file"); @@ -1852,9 +1950,10 @@ exit: - return; + return device_alive; } + static void prv_update_device_props(GUPnPDeviceInfo *proxy, GHashTable *props) { GVariant *val; @@ -1945,7 +2044,7 @@ } } -static void prv_props_update(dlr_device_t *device, dlr_task_t *task) +static gboolean prv_props_update(dlr_device_t *device, dlr_task_t *task) { GVariant *val; GUPnPDeviceInfo *info; @@ -1954,6 +2053,7 @@ dlr_props_t *props = &device->props; GVariantBuilder *changed_props_vb; GVariant *changed_props; + gboolean device_alive = TRUE; context = dlr_device_get_context(device); @@ -1981,21 +2081,36 @@ g_hash_table_insert(props->root_props, DLR_INTERFACE_PROP_IDENTITY, g_variant_ref(val)); - changed_props_vb = g_variant_builder_new(G_VARIANT_TYPE("a{sv}")); - service_proxies = &context->service_proxies; + /* TODO: We should not retrieve these values here. They should be + retrieved during device construction. */ + if (service_proxies->av_proxy) - prv_get_av_service_states_values( - service_proxies->av_proxy, - &device->mpris_transport_play_speeds, - &device->transport_play_speeds, - &device->min_rate, - &device->max_rate); + if (!prv_get_av_service_states_values( + service_proxies->av_proxy, + &device->mpris_transport_play_speeds, + &device->transport_play_speeds, + &device->min_rate, + &device->max_rate)) { + DLEYNA_LOG_DEBUG("Lost Device AV"); + + device_alive = FALSE; + goto on_lost_device; + } + + /* TODO: We should not retrieve these values here. They should be + retrieved during device construction. */ if (service_proxies->rc_proxy) - prv_get_rc_service_states_values(service_proxies->rc_proxy, - &device->max_volume); + if (!prv_get_rc_service_states_values(service_proxies->rc_proxy, + &device->max_volume)) { + DLEYNA_LOG_DEBUG("Lost Device RC"); + device_alive = FALSE; + goto on_lost_device; + } + + changed_props_vb = g_variant_builder_new(G_VARIANT_TYPE("a{sv}")); prv_add_player_speed_props(device->props.player_props, device->min_rate, device->max_rate, @@ -2012,6 +2127,10 @@ changed_props); g_variant_unref(changed_props); g_variant_builder_unref(changed_props_vb); + +on_lost_device: + + return device_alive; } static void prv_complete_get_prop(dlr_async_task_t *cb_data) @@ -2284,10 +2403,15 @@ cb_data->cb = cb; cb_data->device = device; - if (!device->props.synced) - prv_props_update(device, task); + if (!device->props.synced && !prv_props_update(device, task)) { + cb_data->error = g_error_new( + DLEYNA_SERVER_ERROR, + DLEYNA_ERROR_OPERATION_FAILED, + "Lost Device"); + } else { + prv_get_prop(cb_data); + } - prv_get_prop(cb_data); (void) g_idle_add(dlr_async_task_complete, cb_data); } } @@ -2299,28 +2423,28 @@ dlr_task_get_props_t *get_props = &task->ut.get_props; dlr_device_data_t *device_cb_data; - if (!device->props.synced) - prv_props_update(device, task); + cb_data->cb = cb; + cb_data->device = device; - if ((!strcmp(get_props->interface_name, DLR_INTERFACE_PLAYER) || + if (!device->props.synced && !prv_props_update(device, task)) { + cb_data->error = g_error_new( + DLEYNA_SERVER_ERROR, + DLEYNA_ERROR_OPERATION_FAILED, + "Lost Device"); + (void) g_idle_add(dlr_async_task_complete, cb_data); + } else if ((!strcmp(get_props->interface_name, DLR_INTERFACE_PLAYER) || !strcmp(get_props->interface_name, ""))) { - /* Need to read the current position. This property is not evented */ device_cb_data = g_new(dlr_device_data_t, 1); device_cb_data->local_cb = prv_complete_get_props; - cb_data->cb = cb; cb_data->private = device_cb_data; - cb_data->device = device; cb_data->free_private = g_free; prv_get_position_info(cb_data); } else { - cb_data->cb = cb; - cb_data->device = device; - prv_get_props(cb_data); (void) g_idle_add(dlr_async_task_complete, cb_data); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/libdleyna/renderer/device.h new/dleyna-renderer-0.1.3/libdleyna/renderer/device.h --- old/dleyna-renderer-0.1.1/libdleyna/renderer/device.h 2013-05-29 11:36:23.000000000 +0200 +++ new/dleyna-renderer-0.1.3/libdleyna/renderer/device.h 2013-08-29 09:44:12.000000000 +0200 @@ -87,6 +87,7 @@ double max_rate; guint construct_step; dlr_device_icon_t icon; + GHashTable *rc_event_handlers; }; void dlr_device_construct( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/libdleyna/renderer/dleyna-renderer-1.0.pc.in new/dleyna-renderer-0.1.3/libdleyna/renderer/dleyna-renderer-1.0.pc.in --- old/dleyna-renderer-0.1.1/libdleyna/renderer/dleyna-renderer-1.0.pc.in 2013-05-24 09:54:52.000000000 +0200 +++ new/dleyna-renderer-0.1.3/libdleyna/renderer/dleyna-renderer-1.0.pc.in 2013-08-29 09:44:29.000000000 +0200 @@ -2,7 +2,7 @@ exec_prefix=@exec_prefix@ libexecdir=@libexecdir@ includedir=${prefix}/include -libdir=@libdir@ +libdir=@libdir@/@PACKAGE@ Name: @PACKAGE@ Description: UPnP & DLNA renderer library diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/libdleyna/renderer/dleyna-renderer-service.conf new/dleyna-renderer-0.1.3/libdleyna/renderer/dleyna-renderer-service.conf --- old/dleyna-renderer-0.1.1/libdleyna/renderer/dleyna-renderer-service.conf 2013-06-06 11:09:17.000000000 +0200 +++ new/dleyna-renderer-0.1.3/libdleyna/renderer/dleyna-renderer-service.conf 2013-08-29 16:09:04.000000000 +0200 @@ -34,4 +34,4 @@ # IMPORTANT: This log level is a subset of the log level defined at compile time # You can't enable levels disabled at compile time # level=8 means all level flags defined at compile time. -log-level=7 +log-level=8 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/libdleyna/renderer/server.c new/dleyna-renderer-0.1.3/libdleyna/renderer/server.c --- old/dleyna-renderer-0.1.1/libdleyna/renderer/server.c 2013-05-31 14:16:22.000000000 +0200 +++ new/dleyna-renderer-0.1.3/libdleyna/renderer/server.c 2013-08-28 17:41:31.000000000 +0200 @@ -126,16 +126,16 @@ " <method name='"DLR_INTERFACE_RELEASE"'>" " </method>" " <method name='"DLR_INTERFACE_GET_RENDERERS"'>" - " <arg type='as' name='"DLR_INTERFACE_RENDERERS"'" + " <arg type='ao' name='"DLR_INTERFACE_RENDERERS"'" " direction='out'/>" " </method>" " <method name='"DLR_INTERFACE_RESCAN"'>" " </method>" " <signal name='"DLR_INTERFACE_FOUND_RENDERER"'>" - " <arg type='s' name='"DLR_INTERFACE_PATH"'/>" + " <arg type='o' name='"DLR_INTERFACE_PATH"'/>" " </signal>" " <signal name='"DLR_INTERFACE_LOST_RENDERER"'>" - " <arg type='s' name='"DLR_INTERFACE_PATH"'/>" + " <arg type='o' name='"DLR_INTERFACE_PATH"'/>" " </signal>" " </interface>" "</node>"; @@ -884,7 +884,7 @@ DLEYNA_SERVER_OBJECT, DLEYNA_SERVER_INTERFACE_MANAGER, DLR_INTERFACE_FOUND_RENDERER, - g_variant_new("(s)", path), + g_variant_new("(o)", path), NULL); } @@ -896,7 +896,7 @@ DLEYNA_SERVER_OBJECT, DLEYNA_SERVER_INTERFACE_MANAGER, DLR_INTERFACE_LOST_RENDERER, - g_variant_new("(s)", path), + g_variant_new("(o)", path), NULL); dleyna_task_processor_remove_queues_for_sink(g_context.processor, path); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/libdleyna/renderer/task.c new/dleyna-renderer-0.1.3/libdleyna/renderer/task.c --- old/dleyna-renderer-0.1.1/libdleyna/renderer/task.c 2013-05-31 14:16:22.000000000 +0200 +++ new/dleyna-renderer-0.1.3/libdleyna/renderer/task.c 2013-08-28 17:41:31.000000000 +0200 @@ -56,7 +56,7 @@ task->type = DLR_TASK_GET_SERVERS; task->invocation = invocation; - task->result_format = "(@as)"; + task->result_format = "(@ao)"; task->synchronous = TRUE; return task; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/libdleyna/renderer/upnp.c new/dleyna-renderer-0.1.3/libdleyna/renderer/upnp.c --- old/dleyna-renderer-0.1.1/libdleyna/renderer/upnp.c 2013-05-29 11:37:39.000000000 +0200 +++ new/dleyna-renderer-0.1.3/libdleyna/renderer/upnp.c 2013-08-28 17:41:31.000000000 +0200 @@ -411,12 +411,12 @@ DLEYNA_LOG_DEBUG("Enter"); - g_variant_builder_init(&vb, G_VARIANT_TYPE("as")); + g_variant_builder_init(&vb, G_VARIANT_TYPE("ao")); g_hash_table_iter_init(&iter, upnp->server_udn_map); while (g_hash_table_iter_next(&iter, NULL, &value)) { device = value; - g_variant_builder_add(&vb, "s", device->path); + g_variant_builder_add(&vb, "o", device->path); } DLEYNA_LOG_DEBUG("Exit"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dleyna-renderer-0.1.1/m4/libtool.m4 new/dleyna-renderer-0.1.3/m4/libtool.m4 --- old/dleyna-renderer-0.1.1/m4/libtool.m4 2013-06-06 11:09:09.000000000 +0200 +++ new/dleyna-renderer-0.1.3/m4/libtool.m4 2013-08-29 16:08:55.000000000 +0200 @@ -1324,7 +1324,14 @@ LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) - LD="${LD-ld} -m elf_i386" + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" @@ -1688,7 +1695,8 @@ ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else @@ -2512,17 +2520,6 @@ esac ;; -gnu*) - 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 # correct to gnu/linux during the next big refactor need_lib_prefix=no @@ -2639,7 +2636,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no @@ -3255,10 +3252,6 @@ fi ;; -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - haiku*) lt_cv_deplibs_check_method=pass_all ;; @@ -3297,7 +3290,7 @@ ;; # This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; @@ -4049,7 +4042,7 @@ ;; esac ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler @@ -4348,7 +4341,7 @@ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) @@ -6241,9 +6234,6 @@ _LT_TAGVAR(ld_shlibs, $1)=yes ;; - gnu*) - ;; - haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes @@ -6405,7 +6395,7 @@ _LT_TAGVAR(inherit_rpath, $1)=yes ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
