diff -Nru telepathy-glib-0.17.4/aclocal.m4 telepathy-glib-0.17.5/aclocal.m4 --- telepathy-glib-0.17.4/aclocal.m4 2011-12-19 15:18:52.000000000 +0000 +++ telepathy-glib-0.17.5/aclocal.m4 2012-02-20 17:31:07.000000000 +0000 @@ -1,7 +1,8 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- +# generated automatically by aclocal 1.11.3 -*- 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. @@ -47,7 +48,8 @@ # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) -m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) @@ -93,7 +95,8 @@ pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried @@ -141,9 +144,9 @@ AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else - $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD @@ -156,7 +159,7 @@ Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. -_PKG_TEXT]) +_PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) @@ -167,7 +170,7 @@ _PKG_TEXT -To get pkg-config, see .]) +To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS @@ -177,12 +180,15 @@ 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 @@ -192,7 +198,7 @@ [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.3], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -208,19 +214,21 @@ # 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.3])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/../..'. @@ -302,14 +310,14 @@ 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, @@ -349,6 +357,7 @@ # 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. @@ -413,7 +422,7 @@ 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. @@ -478,10 +487,13 @@ 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 -*- @@ -715,12 +727,15 @@ 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. @@ -852,12 +867,15 @@ 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'. @@ -880,13 +898,14 @@ # 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) # ----------------------- @@ -894,13 +913,13 @@ [[_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)])]) @@ -911,13 +930,15 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2009 -# Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 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 2 + # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # --------------------------------------------------------------------------- # Adds support for distributing Python modules and packages. To @@ -945,8 +966,10 @@ dnl Find a Python interpreter. Python versions prior to 2.0 are not dnl supported. (2.0 was released on October 16, 2000). m4_define_default([_AM_PYTHON_INTERPRETER_LIST], - [python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 dnl -python2.1 python2.0]) +[python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl + python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) + + AC_ARG_VAR([PYTHON], [the Python interpreter]) m4_if([$1],[],[ dnl No version check is needed. @@ -1018,9 +1041,7 @@ dnl site-packages directory, not the python standard library dnl directory like in previous automake betas. This behavior dnl is more consistent with lispdir.m4 for example. - dnl Query distutils for this directory. distutils does not exist in - dnl Python 1.5, so we fall back to the hardcoded directory if it - dnl doesn't work. + dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON script directory], [am_cv_python_pythondir], [if test "x$prefix" = xNONE @@ -1029,8 +1050,7 @@ else am_py_prefix=$prefix fi - am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null || - echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` + am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` @@ -1056,9 +1076,7 @@ dnl pyexecdir -- directory for installing python extension modules dnl (shared libraries) - dnl Query distutils for this directory. distutils does not exist in - dnl Python 1.5, so we fall back to the hardcoded directory if it - dnl doesn't work. + dnl Query distutils for this directory. AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], [am_cv_python_pyexecdir], [if test "x$exec_prefix" = xNONE @@ -1067,8 +1085,7 @@ else am_py_exec_prefix=$exec_prefix fi - am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null || - echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"` + am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` @@ -1116,12 +1133,14 @@ sys.exit(sys.hexversion < minverhex)" AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) -# 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_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. @@ -1198,13 +1217,13 @@ 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]) # -------------------------- @@ -1219,18 +1238,50 @@ 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 @@ -1253,13 +1304,13 @@ 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) # --------------------------- @@ -1268,13 +1319,13 @@ 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, @@ -1296,10 +1347,11 @@ # 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 -Nru telepathy-glib-0.17.4/ChangeLog telepathy-glib-0.17.5/ChangeLog --- telepathy-glib-0.17.4/ChangeLog 2011-12-19 15:20:48.000000000 +0000 +++ telepathy-glib-0.17.5/ChangeLog 2012-02-20 17:31:30.000000000 +0000 @@ -1,3 +1,1545 @@ +commit 5656c065f5ed1f98a6cd05df6bb0101c7ac88427 +Author: Simon McVittie +Date: 2012-02-20 17:17:36 +0000 + + Prepare 0.17.5 + +commit 453fa6317155cfdb4f741cdeed80f6a5910f5839 +Author: Simon McVittie +Date: 2012-02-20 17:30:50 +0000 + + Distribute CaptchaAuthentication + +commit 5f8bccce9893205d80e63da7e3c75c63c3041381 +Author: Simon McVittie +Date: 2012-02-20 17:28:35 +0000 + + Fix out-of-tree releases + +commit 8ae7472cfdd0b88718c73749d48d03fc2643f290 +Author: Simon McVittie +Date: 2012-02-14 13:45:45 +0000 + + Parse arrays of object path in .manager files, for completeness + + Reviewed-by: Guillaume Desmottes + +commit 05f741275590cfff37cddf71232778e0a6c30182 +Author: Simon McVittie +Date: 2012-02-14 13:45:16 +0000 + + Add the Supersedes property and test it + + Reviewed-by: Guillaume Desmottes + +commit 4e72d3e9acfad7200f513f2e3925090f3477f8c5 +Author: Simon McVittie +Date: 2012-02-20 15:45:08 +0000 + + Finish Call1 documentation + +commit c1a420af1ada2ba45b61dfb30de680ad30417dab +Author: Simon McVittie +Date: 2012-02-20 15:31:06 +0000 + + Use absolute header paths in headers + + Not doing so breaks out-of-tree builds of the telepathy-glib + examples, which have -I${top_srcdir} and -I${top_builddir} + but not -I${top_builddir}/telepathy-glib. + +commit 78977ba7a02d5df92c94cb757168177825cb4751 +Author: Simon McVittie +Date: 2012-02-20 15:29:08 +0000 + + Remove support for the Mute interface, not stable yet + +commit c99370d3e1532073f526378155bb5183a4f50a3f +Merge: 89ebc5c 50fb23a +Author: Simon McVittie +Date: 2012-02-20 16:35:23 +0000 + + Merge remote-tracking branch 'origin/call1' into call1 + + Conflicts: + docs/reference/telepathy-glib-docs.sgml + docs/reference/telepathy-glib-sections.txt + examples/future/call-cm/call-channel.c + examples/future/call-cm/call-stream.c + spec/Call_Content.xml + spec/Call_Content_Interface_Audio_Control.xml + spec/Call_Content_Interface_DTMF.xml + spec/Call_Content_Interface_Media.xml + spec/Call_Content_Interface_Video_Control.xml + spec/Call_Content_Media_Description.xml + spec/Call_Content_Media_Description_Interface_RTCP_Extended_Reports.xml + spec/Call_Content_Media_Description_Interface_RTCP_Feedback.xml + spec/Call_Content_Media_Description_Interface_RTP_Header_Extensions.xml + spec/Call_Interface_Mute.xml + spec/Call_Stream.xml + spec/Call_Stream_Endpoint.xml + spec/Call_Stream_Interface_Media.xml + spec/Channel_Interface_DTMF.xml + spec/Channel_Type_Call.xml + spec/all.xml + telepathy-glib/channel.xml + telepathy-glib/extra-gtkdoc.h + tests/dbus/call-example.c + +commit 89ebc5c794da4b2312ea299764f58de2bf037343 +Author: Simon McVittie +Date: 2012-02-20 15:09:37 +0000 + + Further update spec, to 0.25.2 + + Code changes: + + * Generate code for Chan.T.Call1, Conn.I.Addressing1, + Chan.I.CaptchaAuthentication1, and document them + * Adapt Call1 CM and test for Direction argument to AddContent + * Add CaptchaNotSupported error + +commit 50fb23a47944f2a47427010db697afe5e4a003df +Merge: 724bf9e 67ab1ed +Author: Guillaume Desmottes +Date: 2012-02-20 10:15:45 +0100 + + Merge remote-tracking branch 'tester/call1-addcontent-direction' into call1 + +commit 724bf9e4675d28b29e775c5c4ce8c964eb8ca7e6 +Author: Olivier Crête +Date: 2012-02-16 16:56:39 -0500 + + StopTone after StartTone is not a cancellation + +commit 6953bb5278425cc4e4ff0075052f3c53b59879e8 +Author: Olivier Crête +Date: 2012-02-16 16:56:22 -0500 + + MediaCallContent: Don't drop tone currently_sending before it's done playing + +commit 67ab1ed9edc0ce716557bf8db4fb68267b54bf45 +Author: Olivier Crête +Date: 2012-02-16 12:51:15 -0500 + + Add direction parameter to AddContent + +commit 24e5776b0225f4095372fc9bfe8be33d026b195a +Author: Olivier Crête +Date: 2012-02-16 12:25:20 -0500 + + Spec Call: Add direction to AddContent + +commit 790547386bc0aa39f8135dfb742230ce55f86249 +Author: Olivier Crête +Date: 2012-02-15 16:41:01 -0500 + + Test Call: Prepare streams before checking which interfaces it has + +commit 444bfafef9cb430324e53b92c38d97a17e5d0107 +Author: Olivier Crête +Date: 2012-02-15 16:08:56 -0500 + + Remove implementation of the Mute interface + +commit e4f9a420fc02e5a1b60ef5162e6bddc811c1c854 +Author: Olivier Crête +Date: 2012-02-15 16:01:53 -0500 + + Update spec to remove mute + +commit 71a38001a7e094f2a55bdc6c49665467b94c0dee +Author: Xavier Claessens +Date: 2012-02-15 11:15:23 +0100 + + Update to latest spec + +commit 586522417a3952bf9eae09943dbecf8ceefe345b +Author: Olivier Crête +Date: 2012-02-14 18:20:01 -0500 + + BaseCallStream: Put the pending states in the right order + +commit 1acc0c64548f35ca80421fd99f72ba4e047d4caf +Author: Olivier Crête +Date: 2012-02-10 11:53:22 +0100 + + BaseMediaCallContent: Only emit SendingTones when the tones are being sent + +commit faee7d8bd4282644460a6c54dd6177ea72903801 +Author: Olivier Crête +Date: 2012-02-10 11:33:31 +0100 + + BaseCallChannel: Starting to ring means you're not queued + +commit 1d222677afa04e737d08de9399c05f1e2b3fd242 +Author: Olivier Crête +Date: 2012-02-09 18:31:02 +0100 + + Put the event and state in the right order in change requested + +commit 06c7bcfc8aadb784bec2a1a5b0b6f2ca718fab8e +Author: Olivier Crête +Date: 2012-02-08 13:01:57 +0100 + + BaseMediaCallStream: Make it possible for the CM to fail FinishInitialCandidates + + The CM can now refuse FinishInitialCandidates if it doesn't haven the candidates + it needs. + +commit 8a3806fe3a1340259ff5e740a403d89beeb93f18 +Author: Olivier Crête +Date: 2012-02-08 13:00:37 +0100 + + BaseMediaCallStream: Add method to fetch the local candidates + +commit 5b70e100fcfee015f204b03381960fe49af83e30 +Author: Olivier Crête +Date: 2012-02-01 18:33:51 +0000 + + BaseMediaCallStream: Add function to remove endpoints + +commit b3cb12d0f32a4424efd708bd0bde5f3179a81a85 +Author: Olivier Crête +Date: 2012-02-01 15:07:48 +0000 + + Call.Content.MediaDescription: Verify invalid arguments + +commit 455e07e61e9a3e357c7ed29051dc22d84348516c +Author: Guillaume Desmottes +Date: 2012-02-14 11:53:38 +0100 + + start preparing 0.17.5 + + I didn't change configure.ac yet, we'll do it when actually releasing. + +commit 46963665e493ca20363a66ff65fb1ca7520b4629 +Merge: 892c022 b0f3d3b +Author: Guillaume Desmottes +Date: 2012-02-14 11:43:34 +0100 + + Merge branch 'telepathy-glib-0.16' into release + + Trivial conflicts. + + Conflicts: + NEWS + configure.ac + +commit b0f3d3b614db26db6c4d7a98d5f563d6e2dd060d +Author: Guillaume Desmottes +Date: 2012-02-13 16:15:47 +0100 + + set nano flag + +commit 65226cf0e15b5b62bcef4e13a9fb03e1093d651a +Author: Xavier Claessens +Date: 2012-02-13 13:02:37 +0100 + + Fix 2 bugs in DTMF code + + Also add DTMF unit test that covers both cases + +commit b72527bcb3147f4cb7df87a293b75e4c674cbae3 +Author: Guillaume Desmottes +Date: 2012-02-13 14:59:56 +0100 + + prepare 0.16.5 + +commit 892c022246793a07a6c087bb13a97e6440fd0322 +Merge: 12297c1 f6038c7 +Author: Guillaume Desmottes +Date: 2012-02-13 14:32:45 +0100 + + Merge branch 'telepathy-glib-0.16' + +commit f6038c7c1a4302e298fbdadc81e5e89fc844e6b2 +Author: Guillaume Desmottes +Date: 2012-02-13 11:04:17 +0100 + + make sure the result object stays alive while renaming groups + + I started tracking this in Gabble so my unit test is living there. + + https://bugs.freedesktop.org/show_bug.cgi?id=45982 + +commit 89a7c78224a47b81b6ebc12a3be33b366f787f77 +Author: Xavier Claessens +Date: 2012-02-13 13:01:27 +0100 + + Call unit test: Use Media base classes + + To make it work, example CM needs to create an Endpoint and we + have to wait for it to be connected to get to ACTIVE state. + +commit 7cdf37e9c5407e66615a15e0988f20b2223eb704 +Author: Xavier Claessens +Date: 2012-02-13 12:56:47 +0100 + + Fix racy crash in call unit test + + Keeping a ref on the stream for the timeout make it survive its TpBaseCallChannel + leading to issues later. + +commit 12297c1d9cd9db58cf8be07cf05586ebc080bf72 +Author: Simon McVittie +Date: 2012-02-09 15:25:48 +0000 + + Consistently use G_PARAM_STATIC_STRINGS for properties + + Many didn't use this shorthand, and some even didn't declare one of the + three strings as static (causing GObject to copy it). + + Signed-off-by: Simon McVittie + Reviewed-by: Vivek Dasmohapatra + +commit f654ace092c9a6c4aea6d00bd405f056766a5a50 +Merge: 8d4e753 10c3dda +Author: Simon McVittie +Date: 2012-02-09 13:30:52 +0000 + + Merge branch 'telepathy-glib-0.16' + + Conflicts: + NEWS + +commit 10c3dda166f5dbf8f28117fbe07a4c237ac81598 +Author: Simon McVittie +Date: 2012-02-09 13:30:00 +0000 + + NEWS for 0.16 + +commit d0811d73bd94f31fa9434091441951467884c92f +Author: Simon McVittie +Date: 2012-02-02 13:44:12 +0000 + + TpSimplePasswordManager: copy the string into the result + + Otherwise, if a caller kept a ref to the GAsyncResult after control had + returned to the channel, the channel could have freed the GString + already. + + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45554 + Signed-off-by: Simon McVittie + Reviewed-by: Jonny Lamb + +commit 4d43c14e47ae3b67a83ff88bc39c34e02ad15434 +Author: Simon McVittie +Date: 2012-02-09 13:24:57 +0000 + + tp_account_update_parameters_async: fix lifetime of result, and test it + + Without this change to TpAccount, the test would fail with a + use-after-free while inspecting reconnect_required. The TpAccount code + assumed that _finish would always be called directly from the callback, + but it is perfectly valid not to do so. + + In the test, also test Reconnect (which is currently unimplemented), + since UpdateParameters and Reconnect are so closely related. + + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45554 + Signed-off-by: Simon McVittie + Reviewed-by: Jonny Lamb + +commit f91744d3cfe0083338e03abc2ada88c9df7cb9d5 +Author: Simon McVittie +Date: 2012-02-01 20:27:01 +0000 + + tp_account_manager_create_account_finish: warn that the return has a limited lifetime + + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45554 + Signed-off-by: Simon McVittie + Reviewed-by: Jonny Lamb + +commit c217c8e6c43e35f4729c7a7aa5e7a6c31fbf5f75 +Author: Simon McVittie +Date: 2012-02-01 20:26:41 +0000 + + account test: deliberately keep async results after the callback + + This is valid usage, and often (as in this case!) uncovers bugs. It also + makes the flow of the code more obvious. + + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45554 + Signed-off-by: Simon McVittie + Reviewed-by: Jonny Lamb + +commit 8063df40a53ffb596b481b038716aac89f87ba00 +Author: Simon McVittie +Date: 2012-02-01 20:25:30 +0000 + + TpAccount: ensure that async-returned objects live as long as the result + + It is valid to keep a GAsyncResult for as long as you like, so it will + have to take a copy of the result data. Otherwise, a change as simple as + replacing g_simple_async_result_complete with ..._complete_in_idle + will result in the data having already been freed by the time the + caller sees it. + + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45554 + Signed-off-by: Simon McVittie + Reviewed-by: Jonny Lamb + +commit f745ccc6d2fb1fcd3f8bb0c74a1f1d649f1a0870 +Author: Simon McVittie +Date: 2012-02-01 20:22:56 +0000 + + TpTestsSimpleAccount: add Avatar interface + + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45554 + Signed-off-by: Simon McVittie + Reviewed-by: Jonny Lamb + +commit 35e4fa26fd63e17e5123a984b880ad7e9f4c1220 +Author: Xavier Claessens +Date: 2012-02-09 13:21:49 +0100 + + Remove useless empty line + +commit 8d4e7536c0720846a2d9b1789d7358a40bfac2a6 +Author: Siraj Razick +Date: 2012-01-31 13:02:06 -0500 + + Produce DLL files when compiled for windows. + + When we cross-compile telepathy-glib for windows with the current + flags we end up with a static library and it creates link issues + in libraries and applications which uses teleapthy-glib on windows. + to solve this -no-undefined LDFLAG is introduced in this commit. + This ensures all the symbols are defined when we compile for windows. + + see: http://www.gnu.org/software/libtool/manual/libtool.html for + more details about -no-undefined flag. + + Reviewed-by: Simon McVittie (smcv) + +commit 005655ae50db78c801edaef73bd19cc66eadc772 +Author: Xavier Claessens +Date: 2012-02-06 14:42:20 +0100 + + Add config.h include in all call source files + +commit b978d265c7e7fde904976f432d7b519dd58aec9d +Merge: a6ce474 6d3b611 +Author: Xavier Claessens +Date: 2012-02-06 14:36:14 +0100 + + Merge branch 'master' into call1 + + Conflicts: + examples/cm/callable/conn.c + examples/cm/callable/connection-manager.c + examples/cm/callable/media-channel.c + examples/cm/callable/media-manager.c + examples/cm/callable/media-stream.c + examples/cm/callable/protocol.c + examples/future/call-cm/call-channel.c + examples/future/call-cm/call-content.c + examples/future/call-cm/call-stream.c + extensions/call-content.c + extensions/call-stream.c + extensions/extensions-cli.c + tests/dbus/call-example.c + tests/dbus/callable-example.c + +commit 6d3b611885665f46356623ccb296fe97a8bd8b6a +Author: Xavier Claessens +Date: 2012-02-06 13:55:59 +0100 + + Add config.h include in all source files + +commit 5e2385d21d4c9b4fb268426f2a29cbd301e76e7f +Author: Xavier Claessens +Date: 2012-02-06 13:38:16 +0100 + + Disable glib deprecated warnings + + We need GValueArray for dbus-glib, and it got deprecated in GLib 2.31.x + +commit 8e1abf1f40d991ef23f4e33697784665681b2f2c +Merge: 4718016 d60343f +Author: Simon McVittie +Date: 2012-02-02 17:10:39 +0000 + + Merge branch 'telepathy-glib-0.16' + +commit d60343f25c2fa949e8c0108e89b915c228e23654 +Author: Simon McVittie +Date: 2012-02-01 17:51:41 +0000 + + channel-request test: avoid a race condition + + If we emit Succeeded or Failed quickly enough after setting up the + TpProxy, the match rules might not have reached the dbus-daemon yet. + + (The real ChannelRequest implementation avoids this bug by having the + Proceed method.) + + Reviewed-by: Jonny Lamb + +commit 7f8d540689172bfd697e6d22775a94cc73259a3f +Author: Xavier Claessens +Date: 2012-01-11 15:30:51 +0100 + + channel-contacts.c: Fix crash when preparing TpCallChannel + + If if a new contact fetch is queued from the callback of last + contact fetch, it leads to a crash. This is because when queueing + the new item it is processed right away since it is the only item + in queue, then when it returns from g_simple_async_result_complete() + it calls process_contacts_queue() again so the item is prepared twice, + and then freed twice. + + Fix this by keeping currently being processes item outside the queue. + +commit 4718016b803e7b2927c6b9fe74714f028d8aa5f4 +Author: Simon McVittie +Date: 2012-02-01 17:51:41 +0000 + + channel-request test: avoid a race condition + + If we emit Succeeded or Failed quickly enough after setting up the + TpProxy, the match rules might not have reached the dbus-daemon yet. + + (The real ChannelRequest implementation avoids this bug by having the + Proceed method.) + + Reviewed-by: Jonny Lamb + +commit cdfa979d03137d90150ac030a21c92f1f6e5e60b +Author: Simon McVittie +Date: 2012-02-01 12:21:28 +0000 + + Fix brokenness, copy-paste errors and unused variables in tests + + I thought I'd tested this... but apparently not. + + Signed-off-by: Simon McVittie + Reviewed-by: Xavier Claessens + +commit c6ed3ecc2e01a6c8a3ff9797e628195e3f56d15b +Author: Simon McVittie +Date: 2012-01-31 20:02:12 +0000 + + add tp_connection_disconnect_async to the docs + + Signed-off-by: Simon McVittie + Reviewed-by: Jonny Lamb + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45459 + +commit 258a390e67f46eb24c083e7d4ad3f5d76de33351 +Author: Simon McVittie +Date: 2012-01-31 19:46:03 +0000 + + Replace one remaining call to tp_cli_connection_run_disconnect + + This one is allowed to fail, so use tp_connection_disconnect_async() + directly. + + Signed-off-by: Simon McVittie + Reviewed-by: Jonny Lamb + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45459 + +commit a09adf6dd3b5a79e3b7206d563d97125b4f5b6e6 +Author: Simon McVittie +Date: 2012-01-31 19:45:38 +0000 + + Replace nearly all calls to tp_cli_connection_run_disconnect + + Signed-off-by: Simon McVittie + Reviewed-by: Jonny Lamb + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45459 + +commit dbfd20b0d78e5cdd1ef7ab005d3894c62748b671 +Author: Simon McVittie +Date: 2012-01-31 19:42:36 +0000 + + tp_tests_connection_assert_disconnect_succeeds: add + + This calls Disconnect(), runs the main loop and asserts that it worked. + This can be used to supersede most calls to + tp_cli_connection_run_disconnect(), which is going away in Telepathy 1.0. + + Signed-off-by: Simon McVittie + Reviewed-by: Jonny Lamb + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45459 + +commit 2615205676777cea11a6f2cd3bdf88ccc049b504 +Author: Simon McVittie +Date: 2012-01-31 19:40:58 +0000 + + tp_connection_disconnect_async: add + + Signed-off-by: Simon McVittie + Reviewed-by: Jonny Lamb + Bug: https://bugs.freedesktop.org/show_bug.cgi?id=45459 + +commit a6ce47466a1a725498ea1a54c4a2983063d15049 +Author: Nicolas Dufresne +Date: 2012-01-26 16:20:20 -0500 + + CallStream: Add traces to media stream flow state change + +commit 73270e4351d324963d7bd8fd4eaf46b511e1acb3 +Author: Nicolas Dufresne +Date: 2012-01-25 16:09:15 -0500 + + call: Add traces on CallState changes + +commit 8ad70c119f10d5c4f2603f01d488e1c65b3d144f +Author: Xavier Claessens +Date: 2012-01-20 13:19:04 +0100 + + TpCallChannel, TpCallContent: add _send_tones_async() + + tp_call_channel_send_tones_async() is helper API calling + tp_call_content_send_tones_async() on each of its contents supporting + the DTMF interfaces. + + tp_call_content_send_tones_async() does the queuing of events + +commit be92c904d473f42f6f85066bf3535125fb4f0cce +Merge: 043c11f 8e5aa8b +Author: Xavier Claessens +Date: 2012-01-26 09:31:12 +0100 + + Merge branch 'master' into call1 + +commit 8e5aa8b6485afad8658c749a3133b5a3ee5700a9 +Author: Guillaume Desmottes +Date: 2012-01-24 14:27:24 +0100 + + account-mgr: pretend that we are AVAILABLE if the best presence is UNSET + + This is what most UI would expect; they just care if we are connected, not if + SimplePresence is actually implemented by the underlying CM. + + https://bugs.freedesktop.org/show_bug.cgi?id=45120 + +commit 679ccf8528516d5a4f80cb839adec05b24867700 +Author: Guillaume Desmottes +Date: 2012-01-25 13:42:39 +0100 + + more tp_account_manager_get_most_available_presence() tests + + https://bugs.freedesktop.org/show_bug.cgi?id=45120 + +commit 8e99dde4875f02654c2738c2c9b0e8d0385f82ba +Author: Guillaume Desmottes +Date: 2012-01-25 13:36:38 +0100 + + coding style fix + + https://bugs.freedesktop.org/show_bug.cgi?id=45120 + +commit 2b331fb9769be6b64e14c9bc7ef061c370e85a2d +Author: Guillaume Desmottes +Date: 2012-01-25 13:36:16 +0100 + + simple-account: add API to change the presence + + https://bugs.freedesktop.org/show_bug.cgi?id=45120 + +commit d93a5f53f2ddaa0c97220488a4ade2014bc41cef +Author: Guillaume Desmottes +Date: 2012-01-24 17:16:25 +0100 + + start testing tp_account_manager_get_most_available_presence() + + This was supposed to be the trivial test (accounts are not even used yet) but + I already found a bug. :) + +commit 0981825d45b7c2e665b107ab7567d989b209f62d +Author: Guillaume Desmottes +Date: 2012-01-24 17:07:00 +0100 + + add tp_tests_simple_account_manager_set_valid_accounts() + + Usefull for tests wanting to run with a specific set of valid accounts. + +commit 49099ed58891b860444b37b29a213013c8d8f38b +Merge: 2c99e62 0ca5332 +Author: Guillaume Desmottes +Date: 2012-01-24 17:34:12 +0100 + + Merge branch 'telepathy-glib-0.16' + +commit 0ca5332db718340aa8546cd828b138c411a99adf +Author: Guillaume Desmottes +Date: 2012-01-24 17:14:53 +0100 + + get_most_available_presence(): match the doc if no account connected + + If no account is connected, doc says we should return + (TP_CONNECTION_PRESENCE_TYPE_OFFLINE, "offline", "") but we use to return + (TP_CONNECTION_PRESENCE_TYPE_OFFLINE, NULL, NULL) + +commit 2c99e62bcf8cf4ab0ddcf6f50641076a77634b5a +Author: Xavier Claessens +Date: 2012-01-24 14:57:09 +0000 + + Add extra cast of guchar to guint when using GUINT_TO_POINTER + + This is a workaround for glib bug #661546 + +commit 62663e9983186ad6ea63f2cdd9bd431f7c1b1630 +Author: Guillaume Desmottes +Date: 2012-01-24 15:05:35 +0100 + + test_offer_race: don't assume any ordering on tube connections + + Connection is async now so we shouldn't assume any ordering. + + https://bugs.freedesktop.org/show_bug.cgi?id=45173 + +commit 043c11f87a0a36c5b0e9189022837f2459e1e6f6 +Author: Nicolas Dufresne +Date: 2012-01-20 15:25:41 -0500 + + Fix local hold state stransition for call channel + + Call channel should go to pending hold state until all the streams are + no longer pending stop (the one that didn't failed). Also, the transition + from pending stop to started is impossible. + +commit 777052913570724fb438130eb3cd86a5ada9669e +Merge: 4988342 10f3e01 +Author: Xavier Claessens +Date: 2012-01-20 16:57:09 +0100 + + Merge branch 'master' into call1 + +commit 10f3e01c93ef23a638b934d81fee5015b44be768 +Author: Xavier Claessens +Date: 2012-01-20 16:55:57 +0100 + + TpBasePasswordChannel: Use TpBaseChannel:get_interfaces() virtual method + +commit 4988342c1ba7c174e248ba32f5a06a769cd2b9ad +Author: Xavier Claessens +Date: 2012-01-20 16:47:50 +0100 + + Use TpBaseChannel::get_interfaces() virtual method + +commit 270fbad7b136b76e31c20b7b4f0915174fb51a47 +Merge: 28f5e09 74bd945 +Author: Xavier Claessens +Date: 2012-01-20 16:38:06 +0100 + + Merge branch 'master' into call1 + +commit 74bd9452523bef1280a708eb31f08b91971bdb1e +Author: Danielle Madeley +Date: 2012-01-19 12:50:12 +1100 + + base-channel: deprecate interfaces class property for get_interfaces() method + + With the interfaces class property, programmers writing a concrete class + could not chain-up to inherit the interfaces implemented by the base + class. Using a get_interfaces() class method, the programmer can simply + add the interfaces she is implementing to those of the base class. + + Furthermore, classes that only implement an interface in specific + instances required a subclass that had to be instantiated by the + manager. This is no longer required. + + For backwards compatibility, the base get_interfaces() method returns + the value of the interfaces class property. + +commit 28f5e095c5b7424427b24c787629c4055348d450 +Merge: 4ed6467 139a0f6 +Author: Xavier Claessens +Date: 2012-01-19 16:32:26 +0100 + + Merge branch 'master' into call1 + +commit 139a0f63b6d832ddbff78fb507e1f21ff36680be +Author: Xavier Claessens +Date: 2012-01-19 15:47:44 +0100 + + TpStreamTubeChannel: Use async API to send/receive credentials + + This fixes deadlock in unit test where sending and receiving are in + the same process (fd.o#44825). + +commit 730121cd64471064cc1e76b3fd64a0a8cd612969 +Author: Xavier Claessens +Date: 2012-01-19 15:46:13 +0100 + + Add async variant for _receive_credentials_with_byte() and _send_credentials_with_byte() + +commit 4ed646760253dcc21314d66609ee1c615068d251 +Author: Olivier Crête +Date: 2012-01-16 11:56:48 +0100 + + Interfaces property of CallContent is per-object, not per-class + + The Audio has DTMF, but video doesn't. The class is the same. + +commit 9dc1689db37fd71f5232529172584d87671a7caf +Author: Xavier Claessens +Date: 2012-01-16 11:54:49 +0100 + + TpBaseCallContent/Stream: add get_interfaces virtual method + + This is more flexible for subclasses to define the interfaces they + implement. Especially in the case of sub-subclasse. + +commit acf6d62027a58460313773da6aa7bf2f8979622a +Author: Xavier Claessens +Date: 2012-01-12 12:22:20 +0100 + + TpBaseCallContent: add missing API doc + +commit b938b6b098b368fca75da92186cb97f49b1b286a +Author: Xavier Claessens +Date: 2012-01-12 12:19:55 +0100 + + TpBaseCallContent: Use TpDTMFEvent instead of guchar + + Also some coding style fixes + +commit c83721345972a33838c7c089d69d7646a804c9c6 +Author: Xavier Claessens +Date: 2012-01-12 10:35:03 +0100 + + TpBaseMediaCallContent: Fix leaked deferred_tones + +commit b6bec5ffab50b59b6441d0d362968bc2cf377485 +Merge: 688bc46 7026429 +Author: Xavier Claessens +Date: 2012-01-12 11:04:13 +0100 + + Merge branch 'master' into call1 + +commit 7026429f1c375855f32421cc217bba849850792e +Author: Xavier Claessens +Date: 2012-01-11 15:30:51 +0100 + + channel-contacts.c: Fix crash when preparing TpCallChannel + + If if a new contact fetch is queued from the callback of last + contact fetch, it leads to a crash. This is because when queueing + the new item it is processed right away since it is the only item + in queue, then when it returns from g_simple_async_result_complete() + it calls process_contacts_queue() again so the item is prepared twice, + and then freed twice. + + Fix this by keeping currently being processes item outside the queue. + +commit 688bc46c47edc9227c6fab0f22c15d206c4da49e +Author: Nicolas Dufresne +Date: 2012-01-11 17:35:43 -0500 + + Fix typo in currently-sending-tones property name + +commit 67d0f6f75bf3b42ae6a5886125df0fd8f02e6813 +Author: Olivier Crête +Date: 2012-01-11 16:08:04 -0500 + + Skip the w on deferred tones + +commit 42f024b28c211719194f2d4f6a6d4284003d475e +Author: Olivier Crête +Date: 2012-01-05 17:48:21 -0500 + + Implement DTMF interface on TpBaseMediaContent + +commit f10122e854dc4afb934fd1ca145b35c99c3b297f +Author: Olivier Crête +Date: 2011-12-31 15:48:41 -0500 + + Implement Call Content in the base class + +commit 9135915511be313c5f862c1cc209307e5ea3bdab +Author: Olivier Crête +Date: 2012-01-05 20:49:05 -0500 + + Implement requestable InitialTones as a Channel property in Call + +commit 0cea4f1259b12163981212f324671acb82676ad6 +Author: Olivier Crête +Date: 2011-12-31 14:34:51 -0500 + + Build Call.Content.I.DTMF + +commit ac6482196e00f60dc350814de6473084530044cc +Author: Olivier Crête +Date: 2011-12-31 14:32:36 -0500 + + TMP: Add Call.Content.I.DTMF from spec branch + +commit 3335e801ac7a738a7ca7c27371f7ef5fc821a6e0 +Author: Xavier Claessens +Date: 2012-01-11 13:13:07 +0100 + + Fix doc of a few lowlevel symbols being in wrong section + +commit e209c10aa33dbf6270f3a2a92482126bb94c91a4 +Author: Xavier Claessens +Date: 2012-01-11 11:24:32 +0100 + + Fix g-i warning + +commit ab5df5c62a78523ef917b26dd8d11d300c971305 +Author: Olivier Crête +Date: 2012-01-10 14:49:39 -0500 + + Call1: Fix unit tests + +commit d72eb1ebb8a697f8c459fc54ee78a580ced3958a +Author: Danielle Madeley +Date: 2012-01-11 17:04:44 +1100 + + call1: swap order of methods in docs for consistency + +commit 3cbf1f77dc8fd3297c3ae4bed913585a49b9ab3c +Author: Danielle Madeley +Date: 2012-01-11 16:55:14 +1100 + + call1: move function docs into the right class + + From TpBaseMediaCallChannel to TpBaseCallChannel. + +commit 8332541fe05e171b7ba07fa1fdc6992b379cd2ed +Author: Danielle Madeley +Date: 2012-01-11 16:46:10 +1100 + + base-media-call-channel: add classes to gtk-doc + +commit bfb84444bdc837091f2c61d3311b353a092e5066 +Author: Xavier Claessens +Date: 2012-01-10 14:47:15 +0100 + + Doc fix: TP_CALL_STATE_RINGING does not exist anymore + +commit 0f74acb518654ad19a93acf0afb22b8aa8dd2460 +Author: Xavier Claessens +Date: 2012-01-10 10:53:20 +0100 + + Partly fix call unit tests + +commit f2dc3b62db9a85264d5bcc8f23d4ed887afecf1f +Author: Danielle Madeley +Date: 2012-01-10 17:45:47 +1100 + + Mark base call types as abstract + + Use correct semicolons. + +commit 182cb712accfe8d4fe3ec964a7b0686f847cd838 +Author: Xavier Claessens +Date: 2012-01-10 00:16:12 +0100 + + Make sure to prepare TP_CALL_CHANNEL_FEATURE_CORE after TP_CHANNEL_FEATURE_CORE + + Otherwise the channel's connect could be still unprepared and so fail + to prepare channel's contacts. + +commit ea056eea030cddd077aa51ef7f6d609a9eb82260 +Author: Danielle Madeley +Date: 2012-01-07 12:22:50 +1100 + + base-media-call-content: fix parameter for tp_bmcc_offer_media_description_finish + + Takes a content, not a MediaDescription otherwise it fails the check for + the correct type. + +commit 3143dc922cc1a0a100fb1a525e20e23f134496ad +Author: Danielle Madeley +Date: 2012-01-04 17:36:27 +1100 + + base-call-content: deinit the content instead of just asserting + + If for some reason the programmer hasn't deinited the content, just do + it for her. + +commit 0e7285e77b31f7082da40f362c994a1744b4cfdb +Author: Xavier Claessens +Date: 2012-01-03 17:05:27 +0100 + + fix trivial typo + +commit 2495de343c185261402012e93e8d2ca0c69c38b2 +Author: Xavier Claessens +Date: 2012-01-03 14:21:46 +0100 + + a bit of code moving + +commit 4b41d1eae17ac3eab6a7f77b60a1d0ef80d598b3 +Author: Xavier Claessens +Date: 2012-01-03 13:40:25 +0100 + + few coding style fixes + +commit 8f1737a03cb4f311d3a494e80a998c9a8aabb6a5 +Author: Xavier Claessens +Date: 2012-01-03 12:35:50 +0100 + + More doc fixes + +commit 4f605b73f6cd3a105825cfbdb4043a52a887b00f +Author: Xavier Claessens +Date: 2012-01-03 12:34:56 +0100 + + Make tp_base_call_channel_is_connected/locall_accepted internal + +commit fd32df030ad852753161ea08df4ea63819be3d9d +Author: Xavier Claessens +Date: 2012-01-02 16:16:41 +0100 + + update documentation + +commit e2540c1bd73836f93125bac37727fe668c36da6a +Author: Xavier Claessens +Date: 2012-01-02 15:36:36 +0100 + + TpBaseMediaCallStream::set_sending: self is not a TpBaseCallStream + + This is more typesafe. + +commit 290d344c0df321650fc5aee4a6acd6f3ffed3b74 +Author: Xavier Claessens +Date: 2012-01-02 15:11:56 +0100 + + TpCallStreamEndpoint: ensure username/password is never NULL + + This is how it's done in TpBaseMediaCallStream as well. + +commit 5c2c2cbb14319e1b750d8cdfd348e90354598fa8 +Author: Xavier Claessens +Date: 2012-01-02 15:04:22 +0100 + + TpBaseMediaCallStream: move code around to be correctly grouped and fix coding style + +commit 00da5756da8f415c9437c56ec30d3369988837a7 +Author: Xavier Claessens +Date: 2012-01-02 15:01:09 +0100 + + TpBaseMediaCallStream: small simplification + +commit 43d12cd2688ae7c52a3e6a25e961775121935d31 +Author: Xavier Claessens +Date: 2012-01-02 13:56:30 +0100 + + Avoid small code duplication + +commit d9af29eab63185c48557125757c7b203af4589c5 +Author: Xavier Claessens +Date: 2012-01-02 13:56:14 +0100 + + coding style + +commit 37448a7b3258fd5b16ff0822bf0bda2a7541a047 +Author: Xavier Claessens +Date: 2012-01-02 13:40:50 +0100 + + TpBaseMediaCallStrea: Use a TpIntset instead of GArray for a set of TpHandle + +commit edbd5f82543c8b889fa5d43f592aec741a605709 +Author: Xavier Claessens +Date: 2012-01-02 13:23:10 +0100 + + small coding style + +commit 35f5357513aa4ba938859c946c48f30959b171ad +Author: Xavier Claessens +Date: 2012-01-02 12:04:09 +0100 + + Rename _borrow_remote_members to _get_remote_members + + Our coding style is that _get_ returns a borrowed pointer, and + _dup_ returns a copy/ref. + +commit 882edc1b6f6c44dda61e3ec8ffe9189e37d87ea8 +Author: Xavier Claessens +Date: 2012-01-02 12:00:01 +0100 + + some coding style + +commit 7e131bf3c66197d0eebc2d5e361514c3139d0b45 +Author: Xavier Claessens +Date: 2012-01-02 11:55:29 +0100 + + Fix some coding style + +commit f49f8ee72edff473a34605a3bfd9b44cf29eeef3 +Author: Xavier Claessens +Date: 2012-01-02 11:15:37 +0100 + + TpBaseCallChannel: move code around to group public methods + +commit 0c097231f467745dca59767adad5eba687cb8e8a +Author: Xavier Claessens +Date: 2012-01-02 11:15:05 +0100 + + TpBaseCallChannel: is_connected and remote_accept virtual methods are private + + They only need to be implemented by TpBaseMediaCallChannel so does not + have to appear in public API documentation + +commit e84162c57957b438eb82fc4305149e863bbf9b73 +Author: Xavier Claessens +Date: 2012-01-02 11:08:38 +0100 + + TpBaseCallChannel: Move state from ACCEPTED to ACTIVE depending on connectivity + +commit abe4571a999b05c86b6e0dd25b23c131a4981fe4 +Author: Xavier Claessens +Date: 2012-01-02 10:51:13 +0100 + + fix some coding style + +commit 77ea29e129258cba5176a410e03eea0eee6285fc +Author: Olivier Crête +Date: 2011-12-30 17:53:19 -0500 + + Disable sending if all members of a stream are remotely held + +commit 386570bb305f6149d9394f768deb53a6c2ccc9b7 +Author: Olivier Crête +Date: 2011-12-30 17:13:56 -0500 + + Implement Local hold for Call + +commit f3dfe4aaec613871a5b9101e2024f131d3985584 +Author: Olivier Crête +Date: 2011-12-29 22:49:26 -0500 + + Call.Stream.I.Media: Make setting the sending state mostly internal + +commit dbe9e55f752f76372190414232c3066b4411cfe7 +Author: Olivier Crête +Date: 2011-12-29 18:33:22 -0500 + + Call.Stream.I.Media: Make setting the receiving state internal + +commit d8ff77603e0e4fe8d9fdff32bcbfce387a4d39ed +Author: Olivier Crête +Date: 2011-12-29 17:21:34 -0500 + + Centralise setting the local hold state in one place + +commit e23bcddb2f69720a8163e3a21db7d8d5fddb775c +Author: Olivier Crête +Date: 2011-12-29 17:21:09 -0500 + + Only call the subclass if the requesting state was directly requested + +commit de1dc1dce8cde4e81986f537317c8da05d3fccee +Author: Olivier Crête +Date: 2011-12-29 17:20:52 -0500 + + Ignore re-settings that change nothing + +commit a5e24b25e63510ee2f5992237841b222e6b98b06 +Author: Olivier Crête +Date: 2011-12-28 01:08:21 -0500 + + Start receiving when the other sides asks us to + +commit aa850a6172460e88549bb272d5c94f02a7698ba5 +Author: Olivier Crête +Date: 2011-12-27 01:45:27 -0500 + + Reject direction changes if the protocol doesn't allow it + +commit 417433676520ac3fc38b31681af0d012d7d3c2de +Author: Olivier Crête +Date: 2011-12-27 00:52:56 -0500 + + Fix request_receiving + +commit 85cb6c819840038dad1dc11ae3ede705fd0ff91f +Author: Olivier Crête +Date: 2011-12-26 23:48:52 -0500 + + Emit Initializing before initialised and accepted before active. + + This should make it possible ot have slightly simpler clients + +commit 217d464526c6b5ea370b40249249825fdc42216f +Author: Olivier Crête +Date: 2011-12-26 23:08:48 -0500 + + Set the right Call state based on endpoint connectedness + +commit aae1ccf8c6fde76f7728aa921d0bacb138ad5440 +Author: Olivier Crête +Date: 2011-12-26 20:56:50 -0500 + + Set the sending and receiving directions correctly + +commit 8aa61104494698debae8df3c11bc9df672c6dbc9 +Author: Olivier Crête +Date: 2011-12-23 15:58:11 -0500 + + Remove another duplicated Contact + + It is already in the media description offer + +commit 33ceebb411fe0a8ac51f9c2f3f668c48feea837a +Author: Olivier Crête +Date: 2011-12-23 13:15:13 -0500 + + Update for Call spec changes + +commit 029b36a7e2597524bbf07495ffc19aa8eb90cc22 +Author: Olivier Crête +Date: 2011-12-23 12:59:41 -0500 + + TMP: Update to misc changes to Call spec + +commit f7c32e20115d655ac5fecde945de3c6df7a1d009 +Author: Olivier Crête +Date: 2011-12-23 11:35:28 -0500 + + Show the new state in the state changed cb + +commit 475de423b63e35134100caf7ce004fa2b30e933c +Author: Olivier Crête +Date: 2011-12-23 11:35:10 -0500 + + Add API to let the CM set the remote credentials + +commit 7bffb4deff8d5f15ccb5522457b07ece9b9c011f +Author: Olivier Crête +Date: 2011-12-23 11:34:46 -0500 + + Avoid trying to empty already empty GArray + +commit fb77554c3f5304ec332b6037476a9d68d8ea8656 +Author: Olivier Crête +Date: 2011-12-16 18:57:33 -0500 + + Implement the sending/receiving states in TpBaseMediaCallStream + +commit 24becc3d5895f280f666c9887da2c88a05e20045 +Author: Olivier Crête +Date: 2011-12-15 19:15:09 -0500 + + Implement the locally muted flag + +commit 43c27b7fb57113c634fd410ec53b939900801506 +Author: Olivier Crête +Date: 2011-12-15 19:02:05 -0500 + + Add TpBaseMediaCallChannel class + +commit b865b00203491fb036a07824eea950ae2ffb4f0b +Author: Xavier Claessens +Date: 2011-12-22 09:31:44 +0100 + + Set TpBaseMediaCallContent:packetization construct-only + +commit 6a24778fd49b3cde261330235d3cf66912a08dc2 +Author: Xavier Claessens +Date: 2011-12-20 11:20:02 +0100 + + Generate lowlevel API for Content.iface.AudioControl + +commit fd225e4ab7fb6229a0f4a452508c89e21bec3e73 +Author: Xavier Claessens +Date: 2011-12-20 10:09:36 +0100 + + TMP: add AudioControl iface + +commit bf876c3f66086118e238a396df22a7a2ee04458c +Author: Olivier Crête +Date: 2011-12-13 17:14:21 -0500 + + Export has-remote-information correctly + +commit 7fde176fffd95df29ea7f544a7f3faa65f91af77 +Author: Olivier Crête +Date: 2011-12-13 16:01:34 -0500 + + Emit notification when the Endpoint state changes + +commit 9e973cb579861f40037b41e4f5887726c68e637b +Author: Xavier Claessens +Date: 2011-12-14 09:33:05 +0100 + + Accept NULL dbus_reason and message + + Better be safe than sorry + +commit 204f700e0d45d6dce65f12ef4c84d3de3f50a35e +Author: Xavier Claessens +Date: 2011-12-09 15:33:51 +0100 + + Fix Initialising->Initialised transition + +commit b68d0a041345e8967f55b75e039a985c298cfb3f +Author: Xavier Claessens +Date: 2011-12-09 12:08:39 +0100 + + Replace TP_CALL_STATE_RINGING with TP_CALL_STATE_INITIALISED + +commit 8c1a487217e396ea766f6af9ffce9906b887c29b +Author: Xavier Claessens +Date: 2011-12-09 11:20:18 +0100 + + TMP: spec update + +commit feb529363bfdb3d2e0a067154fedb8f241f50023 +Author: Xavier Claessens +Date: 2011-12-08 17:33:15 +0100 + + TpBaseCallChannel: move to RINGING state when all its endpoints are CONNECTED + +commit 7b5ef139e9174f87a616e819deb4d99b6c83017a +Author: Xavier Claessens +Date: 2011-12-08 17:32:31 +0100 + + TpCallStreamEndpoint: keep a pointer to its TpBaseMediaCallStream + +commit 13551baf121d6d9eab997c20fc144e1344e1df11 +Author: Xavier Claessens +Date: 2011-12-08 17:29:18 +0100 + + TpCallStreamEndpoint: add _get_state() method + + This returns the state of a given component + +commit 6fa1239044bd7db049fa7591f386874aa3851321 +Author: Xavier Claessens +Date: 2011-12-08 17:27:43 +0100 + + TpBaseCallChannel: setting member flag RINGING does not make state move to RINGING + +commit 700321ee4ecf772377d6c1a26db9ad478b33dc8f +Author: Xavier Claessens +Date: 2011-12-08 17:25:17 +0100 + + TpBaseCallChannel::add_content, special case for INITIAL contents + + If content's disposition is INITIAL, set the corresponding + initial-audio/video and initial-audio/video-name properties. + +commit 59fd037a2ec947d654696469ad4500f0a2b619b8 +Author: Xavier Claessens +Date: 2011-12-08 12:51:22 +0100 + + Make some vmethod optional to implement, and document optionals/mandatory + +commit 804623f4e43c39853e0c204cc7b1af7f0f9e7085 +Author: Xavier Claessens +Date: 2011-12-08 10:51:23 +0100 + + TpBaseMediaCallStream: Ensure that username/password are not NULL + + This fixes a crash in gabble + +commit b5c74fb15b5783075911351c94525b3e16639d1c +Author: Xavier Claessens +Date: 2011-12-07 14:39:37 +0100 + + Add more DEBUG to help debugging Calls + +commit e5d0674b64817d690041d0263cdad5743b04e17a +Author: Xavier Claessens +Date: 2011-12-07 10:56:50 +0100 + + trivial coding style fix + +commit b1c3dcf25f0ff3e04bc53b6fcdd6c5ff5e8d4eed +Author: Xavier Claessens +Date: 2011-12-06 15:29:05 +0100 + + TpBaseMediaCallStream: Let CM set sending/receiving PENDING states + +commit 3a2807309b1e08d1f573835a742976ea49134af4 +Author: Xavier Claessens +Date: 2011-12-06 15:09:18 +0100 + + TpBaseMediaCallStream: implement remaining methods + + CompleteSendingStateChange, ReportSendingFailure, + CompleteReceivingStateChange and ReportReceivingFailure + +commit 77ba5a3f3917d4b6b1f1aa2d757fa39b6fe3d5aa +Author: Xavier Claessens +Date: 2011-12-06 15:08:05 +0100 + + TpCallStreamEndpoint: inform CM when candidate is selected/accepted/rejected + + This is done via a signal instead of a virtual method to implement because + TpCallStreamEndpoint is not a base class. + +commit 0d42cb7fd24f0d2fabdfbb0a0a1a7d5dcb3c570a +Author: Xavier Claessens +Date: 2011-12-06 11:52:22 +0100 + + TpBaseMediaCallContent: Make offer_media_description async + +commit 07f53b53462405ce7d17c93fbf83e3fe450a5f32 +Author: Xavier Claessens +Date: 2011-12-05 18:53:44 +0100 + + Correctly implement SetSelectedCandidate + +commit 900356549923fa812110b0107c38d7c8908d5492 +Author: Xavier Claessens +Date: 2011-12-04 10:36:13 +0100 + + Implement TpBaseMediaCallStream::fail + +commit 99f4b6e4b714fc28e30ab3d1761ab64881abed7d +Author: Xavier Claessens +Date: 2011-11-25 17:00:22 +0100 + + Add TpBaseMediaCallStream and TpCallStreamEndpoint + +commit c2c1608cf89393cb79d3c88b6427a8c1186931cb +Author: Xavier Claessens +Date: 2011-11-24 16:45:07 +0100 + + Add TpBaseMediaCallContent and TpCallContentMediaDescription objects + +commit 72b1b1cca4a9efb0c8b88c079d5ebd704d975f48 +Author: Xavier Claessens +Date: 2011-11-24 16:43:23 +0100 + + TpBaseCall*: export some internal apis + +commit 7dbf69920a906a5c4a378f737ec8fdde3e0da1e6 +Author: Xavier Claessens +Date: 2011-11-24 16:38:42 +0100 + + TMP: spec fix + +commit 0ebb5abeb8b6a5a27ac41620cb2ac7d274bfadef +Author: Xavier Claessens +Date: 2011-11-23 10:22:52 +0100 + + Call CM example is not future anymore + +commit f2d82e052eb2ba059e9a8ed08d5156f26f5d2dd7 +Author: Xavier Claessens +Date: 2011-11-23 10:19:12 +0100 + + Remove StreamedMedia example + +commit cdd6f92b95dc9e94b1827c45fdf08da2fff75147 +Author: Xavier Claessens +Date: 2011-11-18 10:13:01 +0100 + + Port example call CM to TpBaseCall* + +commit 7195abaa3a49bd679f8898523fc9e653e24b6a45 +Author: Xavier Claessens +Date: 2011-11-18 10:10:41 +0100 + + Add TpBaseCallChannel, TpBaseCallContent and TpBaseCallStream + +commit 2ed58c29e2dbd1b114a2f0c55019168a37bf2063 +Author: Xavier Claessens +Date: 2011-11-22 13:31:17 +0100 + + TpBaseChannel: Add tp_base_channel_get_self_handle() + +commit 945e6690b216c58af00bf3844a712a4155373aff +Author: Xavier Claessens +Date: 2011-11-14 14:50:12 +0100 + + Add tp_call_channel_has_dtmf() + +commit 09c4935a9ad87b764b6b70cb96183535ca9437e3 +Author: Xavier Claessens +Date: 2011-11-14 11:04:25 +0100 + + Rename unit test call-example.c to call-channel.c + +commit 90a78cf04777f9bca71de66ec360e5506b69be67 +Author: Xavier Claessens +Date: 2011-11-14 11:03:32 +0100 + + Port call-example unit test to TpCallChannel + +commit 1dd8f264178349681604b2286395b8c1ead46825 +Author: Xavier Claessens +Date: 2011-11-12 13:16:07 +0100 + + Port example call implementation to TpBaseChannel + +commit c5e38258c9cea6f2916c5ecbb2292336c62413bf +Author: Xavier Claessens +Date: 2011-11-14 11:02:30 +0100 + + TpCallChannel, TpCallContent and TpCallStream: add _async() operations + +commit 500436718000e3d7b097336c16ebd5f25168aed3 +Author: Xavier Claessens +Date: 2011-11-11 17:18:57 +0100 + + TpCallStream: introspect all properties and add getters + + Based on TpyCallStream + + merge stream + +commit 3252eb11bafebd0e25ea39f71059d179aafe64c5 +Author: Xavier Claessens +Date: 2011-11-11 17:18:27 +0100 + + TpCallContent: introspect all properties and add getters + + Based on TpyCallContent + +commit 23d40d437a2fa02881e24eccba88b314e4c5a3fd +Author: Xavier Claessens +Date: 2011-11-11 17:17:02 +0100 + + TpCallChannel: introspect all properties and add getters + + Based on TpyCallChannel code + +commit 1b672007bf9d08950f7eba85098b4f88d2a8dd29 +Author: Xavier Claessens +Date: 2011-11-08 11:57:57 +0100 + + Remove extensions/ + + It was used only for Call draft APIs. Now we can use the stable APIs. + + Authors: Will Thompson and David Laban + +commit 3fb5a0f0d3b5cf26257ac972ebdc853dd88de2a1 +Author: Xavier Claessens +Date: 2011-11-08 11:51:54 +0100 + + Generate lowlevel API for Call1 spec + + Add skeleton for TpCallChannel, TpCallContent and TpCallStream + +commit 45d9a2b8758edfedd15fc4203236918fdfa6fe14 +Author: Olivier Crête +Date: 2011-10-23 13:04:18 +0200 + + Add Call debug class + +commit bece0b27f6bfdf622c0c99b9364766f7e38d57da +Author: Xavier Claessens +Date: 2011-11-08 11:47:40 +0100 + + TMP: Mark call1 spec stable + +commit 9d92fa09f6d4e20f3000f6c9863eb1ef937267e0 +Author: Siraj Razick +Date: 2011-12-21 15:03:15 -0500 + + Changes required to cross compile with mingw32 + + These changes enables us to cross compile telepathy-glib + for windows + +commit 50a3f4139b2b3419aec5ee489342e5da0fcb6f7f +Author: Guillaume Desmottes +Date: 2011-12-19 16:30:36 +0100 + + set nano version + commit f8d067e29a5f5be1aaa488a1b1b224aaea993cb7 Author: Guillaume Desmottes Date: 2011-12-19 16:18:11 +0100 diff -Nru telepathy-glib-0.17.4/config.guess telepathy-glib-0.17.5/config.guess --- telepathy-glib-0.17.4/config.guess 2011-11-24 09:26:18.000000000 +0000 +++ telepathy-glib-0.17.5/config.guess 2012-02-01 12:09:12.000000000 +0000 @@ -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 Free Software Foundation, Inc. -timestamp='2009-11-20' +timestamp='2011-05-11' # 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 @@ -56,8 +56,9 @@ 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 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." @@ -180,7 +181,7 @@ fi ;; *) - os=netbsd + os=netbsd ;; esac # The OS release @@ -223,7 +224,7 @@ 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 +270,10 @@ # 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 +299,7 @@ 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 +398,23 @@ # 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 +484,8 @@ 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 +498,7 @@ else echo i586-dg-dgux${UNAME_RELEASE} fi - exit ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; @@ -551,7 +555,7 @@ 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 +598,52 @@ 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 + #include - #define _HPUX_SOURCE - #include - #include - - 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); - } + 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); + } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa @@ -730,22 +734,22 @@ 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 +773,14 @@ 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} @@ -804,14 +808,14 @@ echo ${UNAME_MACHINE}-pc-mingw32 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 ;; @@ -866,7 +870,7 @@ 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,7 +882,13 @@ 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:*:*) @@ -891,7 +901,7 @@ echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) - echo frv-unknown-linux-gnu + echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu @@ -959,7 +969,7 @@ 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,6 +977,9 @@ sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-tilera-linux-gnu + exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; @@ -974,7 +987,7 @@ echo x86_64-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 +996,11 @@ 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 +1032,7 @@ 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 +1060,13 @@ 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 +1101,8 @@ /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 +1145,10 @@ echo ns32k-sni-sysv fi exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm @@ -1161,11 +1174,11 @@ 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 +1243,9 @@ *: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 +1291,13 @@ 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 ;; @@ -1321,11 +1337,11 @@ #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 - "4" + "4" #else - "" + "" #endif - ); exit (0); + ); exit (0); #endif #endif diff -Nru telepathy-glib-0.17.4/config.h.in telepathy-glib-0.17.5/config.h.in --- telepathy-glib-0.17.4/config.h.in 2011-12-19 15:19:04.000000000 +0000 +++ telepathy-glib-0.17.5/config.h.in 2012-02-20 17:31:15.000000000 +0000 @@ -12,6 +12,9 @@ /* Make tests installable */ #undef ENABLE_INSTALLED_TESTS +/* Build with GLib deprecated */ +#undef GLIB_DISABLE_DEPRECATION_WARNINGS + /* Define to 1 if you have the `backtrace' function. */ #undef HAVE_BACKTRACE diff -Nru telepathy-glib-0.17.4/config.sub telepathy-glib-0.17.5/config.sub --- telepathy-glib-0.17.4/config.sub 2011-11-24 09:26:18.000000000 +0000 +++ telepathy-glib-0.17.5/config.sub 2012-02-01 12:09:13.000000000 +0000 @@ -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 Free Software Foundation, Inc. -timestamp='2009-11-20' +timestamp='2011-03-23' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -75,8 +75,9 @@ 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 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,8 +124,9 @@ # 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 @@ -156,8 +158,8 @@ os= basic_machine=$1 ;; - -bluegene*) - os=-cnk + -bluegene*) + os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= @@ -173,10 +175,10 @@ os=-chorusos basic_machine=$1 ;; - -chorusrdb) - os=-chorusrdb + -chorusrdb) + os=-chorusrdb basic_machine=$1 - ;; + ;; -hiux*) os=-hiuxwe2 ;; @@ -281,11 +283,13 @@ | 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 \ | score \ @@ -293,15 +297,24 @@ | 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 \ | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown @@ -313,6 +326,18 @@ basic_machine=mt-unknown ;; + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + + 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. @@ -333,7 +358,7 @@ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ @@ -367,25 +392,28 @@ | 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-* \ | 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-* | tilegx-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) @@ -410,7 +438,7 @@ basic_machine=a29k-amd os=-udi ;; - abacus) + abacus) basic_machine=abacus-unknown ;; adobe68k) @@ -480,11 +508,20 @@ 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 +553,7 @@ basic_machine=craynv-cray os=-unicosmp ;; - cr16) + cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; @@ -732,7 +769,7 @@ basic_machine=ns32k-utek os=-sysv ;; - microblaze) + microblaze) basic_machine=microblaze-xilinx ;; mingw32) @@ -839,6 +876,12 @@ 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 +964,10 @@ ;; 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 +1061,9 @@ basic_machine=i860-stratus os=-sysv4 ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; sun2) basic_machine=m68000-sun ;; @@ -1073,17 +1120,10 @@ 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 + # This must be matched before tile*. + tilegx*) + basic_machine=tilegx-unknown + os=-linux-gnu ;; tile*) basic_machine=tile-unknown @@ -1156,6 +1196,9 @@ 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 +1296,11 @@ 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|'` @@ -1294,7 +1337,8 @@ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -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 +1385,7 @@ -opened*) os=-openedition ;; - -os400*) + -os400*) os=-os400 ;; -wince*) @@ -1390,7 +1434,7 @@ -sinix*) os=-sysv4 ;; - -tpf*) + -tpf*) os=-tpf ;; -triton*) @@ -1435,6 +1479,8 @@ -dicos*) os=-dicos ;; + -nacl*) + ;; -none) ;; *) @@ -1457,10 +1503,10 @@ # system, and we'll never get to this point. case $basic_machine in - score-*) + score-*) os=-elf ;; - spu-*) + spu-*) os=-elf ;; *-acorn) @@ -1472,8 +1518,17 @@ 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-*) @@ -1500,7 +1555,7 @@ m68*-cisco) os=-aout ;; - mep-*) + mep-*) os=-elf ;; mips*-cisco) @@ -1527,7 +1582,7 @@ *-ibm) os=-aix ;; - *-knuth) + *-knuth) os=-mmixware ;; *-wec) diff -Nru telepathy-glib-0.17.4/configure telepathy-glib-0.17.5/configure --- telepathy-glib-0.17.4/configure 2011-12-19 15:18:57.000000000 +0000 +++ telepathy-glib-0.17.5/configure 2012-02-20 17:31:08.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for Telepathy-GLib 0.17.4. +# Generated by GNU Autoconf 2.68 for Telepathy-GLib 0.17.5. # # Report bugs to . # @@ -631,8 +631,8 @@ # Identity of this package. PACKAGE_NAME='Telepathy-GLib' PACKAGE_TARNAME='telepathy-glib' -PACKAGE_VERSION='0.17.4' -PACKAGE_STRING='Telepathy-GLib 0.17.4' +PACKAGE_VERSION='0.17.5' +PACKAGE_STRING='Telepathy-GLib 0.17.5' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=Telepathy&component=tp-glib' PACKAGE_URL='' @@ -793,6 +793,7 @@ am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE +am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE @@ -808,6 +809,8 @@ CC AM_BACKSLASH AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V am__untar am__tar AMTAR @@ -919,6 +922,7 @@ GIO_UNIX_LIBS DBUS_CFLAGS DBUS_LIBS +PYTHON CXX CXXFLAGS CCC @@ -1465,7 +1469,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 Telepathy-GLib 0.17.4 to adapt to many kinds of systems. +\`configure' configures Telepathy-GLib 0.17.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1535,7 +1539,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Telepathy-GLib 0.17.4:";; + short | recursive ) echo "Configuration of Telepathy-GLib 0.17.5:";; esac cat <<\_ACEOF @@ -1584,7 +1588,7 @@ 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 @@ -1617,6 +1621,7 @@ linker flags for GIO_UNIX, overriding pkg-config DBUS_CFLAGS C compiler flags for DBUS, overriding pkg-config DBUS_LIBS linker flags for DBUS, overriding pkg-config + PYTHON the Python interpreter CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor @@ -1687,7 +1692,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Telepathy-GLib configure 0.17.4 +Telepathy-GLib configure 0.17.5 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2177,7 +2182,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Telepathy-GLib $as_me 0.17.4, which was +It was created by Telepathy-GLib $as_me 0.17.5, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -2995,7 +3000,7 @@ # Define the identity of the package. PACKAGE='telepathy-glib' - VERSION='0.17.4' + VERSION='0.17.5' cat >>confdefs.h <<_ACEOF @@ -3025,11 +3030,11 @@ # We need awk for the "check" target. The system "awk" is bad on # some platforms. -# Always define AMTAR for backward compatibility. - -AMTAR=${AMTAR-"${am_missing_run}tar"} +# 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}' -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' @@ -3048,6 +3053,33 @@ no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; 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='\' @@ -3892,6 +3924,7 @@ 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= @@ -3916,6 +3949,7 @@ # 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. @@ -3975,7 +4009,7 @@ 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. @@ -4332,8 +4366,8 @@ -macro_version='2.4' -macro_revision='1.3293' +macro_version='2.4.2' +macro_revision='1.3337' @@ -5178,6 +5212,11 @@ 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 @@ -5217,7 +5256,7 @@ # 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 @@ -5646,12 +5685,12 @@ 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 ;; -netbsd*) +netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else @@ -6287,13 +6326,13 @@ 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 @@ -6440,6 +6479,7 @@ # 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};"\ @@ -6828,7 +6868,7 @@ 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 @@ -6839,7 +6879,20 @@ 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" @@ -7479,7 +7532,13 @@ $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 @@ -7490,6 +7549,7 @@ 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 : @@ -7522,6 +7582,7 @@ 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 : @@ -7543,7 +7604,9 @@ 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 @@ -7948,7 +8011,22 @@ # 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 @@ -8026,6 +8104,10 @@ + + + + test -z "$LN_S" && LN_S="ln -s" @@ -8485,7 +8567,9 @@ 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 @@ -8576,18 +8660,33 @@ ;; *) 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 @@ -8949,7 +9048,6 @@ 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 @@ -8993,6 +9091,9 @@ openbsd*) with_gnu_ld=no ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; esac ld_shlibs=yes @@ -9199,8 +9300,7 @@ 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~ @@ -9215,7 +9315,7 @@ fi ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -9392,6 +9492,7 @@ if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi + link_all_deplibs=no else # not using gcc if test "$host_cpu" = ia64; then @@ -9579,6 +9680,7 @@ # 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' @@ -9624,6 +9726,7 @@ 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 @@ -9652,10 +9755,6 @@ 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 @@ -9668,7 +9767,7 @@ ;; # 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 @@ -9707,7 +9806,6 @@ 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 @@ -9848,7 +9946,7 @@ link_all_deplibs=yes ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -10331,11 +10429,6 @@ - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } @@ -10425,7 +10518,7 @@ 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 @@ -10434,7 +10527,7 @@ ;; 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 @@ -10499,7 +10592,7 @@ ;; 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' @@ -10638,7 +10731,7 @@ ;; 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' @@ -10646,10 +10739,6 @@ 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. @@ -10657,7 +10746,7 @@ objformat=`/usr/bin/objformat` else case $host_os in - freebsd[123]*) objformat=aout ;; + freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -10675,7 +10764,7 @@ esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) @@ -10695,17 +10784,18 @@ ;; 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" @@ -10766,7 +10856,7 @@ ;; 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}' @@ -10782,7 +10872,7 @@ 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 ;; @@ -10819,9 +10909,9 @@ 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}' @@ -10869,14 +10959,10 @@ # before this can be enabled. hardcode_into_libs=yes - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -10888,6 +10974,18 @@ dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + 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 + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -10907,7 +11005,7 @@ ;; 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 @@ -10976,7 +11074,7 @@ ;; 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}' @@ -11001,7 +11099,7 @@ ;; 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 @@ -11025,7 +11123,7 @@ 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 @@ -11056,7 +11154,7 @@ 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}' @@ -11066,7 +11164,7 @@ ;; 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 @@ -11848,6 +11946,8 @@ + + ac_config_commands="$ac_config_commands libtool" @@ -11870,6 +11970,7 @@ + if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. @@ -12160,6 +12261,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -12176,6 +12278,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GTKDOC_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -12195,9 +12298,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` + GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` else - GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` + GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTKDOC_DEPS_PKG_ERRORS" >&5 @@ -12212,7 +12315,6 @@ Alternatively, you may set the environment variables GTKDOC_DEPS_CFLAGS and GTKDOC_DEPS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 - elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -12228,7 +12330,6 @@ To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } - else GTKDOC_DEPS_CFLAGS=$pkg_cv_GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS=$pkg_cv_GTKDOC_DEPS_LIBS @@ -12400,11 +12501,17 @@ -LT_CURRENT=66 -LT_REVISION=1 -LT_AGE=66 +LT_CURRENT=67 +LT_REVISION=0 +LT_AGE=67 + + +# Disable GLib deprecation warnings for now; GValueArray is deprecated but we +# need it for dbus-glib. + +$as_echo "#define GLIB_DISABLE_DEPRECATION_WARNINGS 1" >>confdefs.h # Check whether --enable-compiler-optimisations was given. @@ -12967,6 +13074,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.28.0, gobject-2.0 >= 2.28.0, gio-2.0 >= 2.28.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -12983,6 +13091,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.28.0, gobject-2.0 >= 2.28.0, gio-2.0 >= 2.28.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -13002,9 +13111,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glib-2.0 >= 2.28.0, gobject-2.0 >= 2.28.0, gio-2.0 >= 2.28.0" 2>&1` + GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.28.0, gobject-2.0 >= 2.28.0, gio-2.0 >= 2.28.0" 2>&1` else - GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors "glib-2.0 >= 2.28.0, gobject-2.0 >= 2.28.0, gio-2.0 >= 2.28.0" 2>&1` + GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.28.0, gobject-2.0 >= 2.28.0, gio-2.0 >= 2.28.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 @@ -13019,7 +13128,6 @@ Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 - elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -13035,7 +13143,6 @@ To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } - else GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS GLIB_LIBS=$pkg_cv_GLIB_LIBS @@ -13059,6 +13166,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GIO_UNIX_CFLAGS=`$PKG_CONFIG --cflags "gio-unix-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -13075,6 +13183,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GIO_UNIX_LIBS=`$PKG_CONFIG --libs "gio-unix-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -13094,9 +13203,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GIO_UNIX_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gio-unix-2.0" 2>&1` + GIO_UNIX_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gio-unix-2.0" 2>&1` else - GIO_UNIX_PKG_ERRORS=`$PKG_CONFIG --print-errors "gio-unix-2.0" 2>&1` + GIO_UNIX_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gio-unix-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GIO_UNIX_PKG_ERRORS" >&5 @@ -13147,6 +13256,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DBUS_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 0.95, dbus-glib-1 >= 0.82" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -13163,6 +13273,7 @@ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_DBUS_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 0.95, dbus-glib-1 >= 0.82" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi @@ -13182,9 +13293,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "dbus-1 >= 0.95, dbus-glib-1 >= 0.82" 2>&1` + DBUS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-1 >= 0.95, dbus-glib-1 >= 0.82" 2>&1` else - DBUS_PKG_ERRORS=`$PKG_CONFIG --print-errors "dbus-1 >= 0.95, dbus-glib-1 >= 0.82" 2>&1` + DBUS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-1 >= 0.95, dbus-glib-1 >= 0.82" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$DBUS_PKG_ERRORS" >&5 @@ -13199,7 +13310,6 @@ Alternatively, you may set the environment variables DBUS_CFLAGS and DBUS_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 - elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -13215,7 +13325,6 @@ To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } - else DBUS_CFLAGS=$pkg_cv_DBUS_CFLAGS DBUS_LIBS=$pkg_cv_DBUS_LIBS @@ -13466,6 +13575,8 @@ + + if test -n "$PYTHON"; then # If the user set $PYTHON, use it and don't search something else. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version >= 2.5" >&5 @@ -13499,7 +13610,7 @@ $as_echo_n "(cached) " >&6 else - for am_cv_pathless_PYTHON in python python2 python3 python3.0 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do + for am_cv_pathless_PYTHON in python python2 python3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do test "$am_cv_pathless_PYTHON" = none && break prog="import sys # split strings by '.' and convert to numeric. Append some zeros @@ -13608,7 +13719,7 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 $as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } if ${am_cv_python_pythondir+:} false; then : $as_echo_n "(cached) " >&6 @@ -13619,8 +13730,7 @@ else am_py_prefix=$prefix fi - am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null || - echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` + am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null` case $am_cv_python_pythondir in $am_py_prefix*) am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` @@ -13646,7 +13756,7 @@ pkgpythondir=\${pythondir}/$PACKAGE - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 $as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } if ${am_cv_python_pyexecdir+:} false; then : $as_echo_n "(cached) " >&6 @@ -13657,8 +13767,7 @@ else am_py_exec_prefix=$exec_prefix fi - am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null || - echo "$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages"` + am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null` case $am_cv_python_pyexecdir in $am_py_exec_prefix*) am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` @@ -14066,6 +14175,7 @@ # 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. @@ -14125,7 +14235,7 @@ 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. @@ -14345,7 +14455,6 @@ hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported @@ -14929,6 +15038,7 @@ hardcode_shlibpath_var_CXX=unsupported if test "$lt_cv_ld_force_load" = "yes"; then whole_archive_flag_spec_CXX='`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_CXX='' fi @@ -14973,7 +15083,7 @@ esac ;; - freebsd[12]*) + freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no @@ -15649,6 +15759,7 @@ case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 @@ -16076,7 +16187,7 @@ ;; esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -16438,13 +16549,18 @@ ;; cygwin* | mingw* | cegcc*) case $cc_basename in - cl*) ;; + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; @@ -16591,8 +16707,6 @@ - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } @@ -16618,7 +16732,7 @@ 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 @@ -16627,7 +16741,7 @@ ;; 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 @@ -16692,7 +16806,7 @@ ;; 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' @@ -16829,7 +16943,7 @@ ;; 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' @@ -16837,10 +16951,6 @@ 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. @@ -16848,7 +16958,7 @@ objformat=`/usr/bin/objformat` else case $host_os in - freebsd[123]*) objformat=aout ;; + freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi @@ -16866,7 +16976,7 @@ esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) @@ -16886,17 +16996,18 @@ ;; 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" @@ -16957,7 +17068,7 @@ ;; 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}' @@ -16973,7 +17084,7 @@ 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 ;; @@ -17010,9 +17121,9 @@ 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}' @@ -17060,14 +17171,10 @@ # before this can be enabled. hardcode_into_libs=yes - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -17079,6 +17186,18 @@ dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + 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 + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -17098,7 +17217,7 @@ ;; 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 @@ -17167,7 +17286,7 @@ ;; 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}' @@ -17192,7 +17311,7 @@ ;; 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 @@ -17216,7 +17335,7 @@ 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 @@ -17247,7 +17366,7 @@ 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}' @@ -17257,7 +17376,7 @@ ;; 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 @@ -17431,7 +17550,7 @@ fi -ac_config_files="$ac_config_files Makefile docs/Makefile docs/reference/Makefile docs/reference/version.xml examples/Makefile examples/client/Makefile examples/client/js/Makefile examples/client/python/Makefile examples/client/stream-tubes/Makefile examples/cm/Makefile examples/cm/callable/Makefile examples/cm/channelspecific/Makefile examples/cm/contactlist/Makefile examples/cm/echo-message-parts/Makefile examples/cm/extended/Makefile examples/cm/no-protocols/Makefile examples/extensions/Makefile examples/future/Makefile examples/future/call-cm/Makefile extensions/Makefile spec/Makefile telepathy-glib/Makefile telepathy-glib/telepathy-glib.pc telepathy-glib/telepathy-glib-uninstalled.pc tests/Makefile tests/lib/Makefile tests/dbus/Makefile tests/tools/Makefile tools/Makefile m4/Makefile vala/Makefile" +ac_config_files="$ac_config_files Makefile docs/Makefile docs/reference/Makefile docs/reference/version.xml examples/Makefile examples/client/Makefile examples/client/js/Makefile examples/client/python/Makefile examples/client/stream-tubes/Makefile examples/cm/Makefile examples/cm/call/Makefile examples/cm/channelspecific/Makefile examples/cm/contactlist/Makefile examples/cm/echo-message-parts/Makefile examples/cm/extended/Makefile examples/cm/no-protocols/Makefile examples/extensions/Makefile spec/Makefile telepathy-glib/Makefile telepathy-glib/telepathy-glib.pc telepathy-glib/telepathy-glib-uninstalled.pc tests/Makefile tests/lib/Makefile tests/dbus/Makefile tests/tools/Makefile tools/Makefile m4/Makefile vala/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -18027,7 +18146,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Telepathy-GLib $as_me 0.17.4, which was +This file was extended by Telepathy-GLib $as_me 0.17.5, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18093,7 +18212,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Telepathy-GLib config.status 0.17.4 +Telepathy-GLib config.status 0.17.5 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -18230,6 +18349,7 @@ 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"`' @@ -18312,7 +18432,6 @@ 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"`' @@ -18384,7 +18503,6 @@ allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' @@ -18423,6 +18541,7 @@ # Quote evaled strings. for var in SHELL \ ECHO \ +PATH_SEPARATOR \ SED \ GREP \ EGREP \ @@ -18473,7 +18592,6 @@ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ @@ -18507,7 +18625,6 @@ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ @@ -18612,16 +18729,13 @@ "examples/client/python/Makefile") CONFIG_FILES="$CONFIG_FILES examples/client/python/Makefile" ;; "examples/client/stream-tubes/Makefile") CONFIG_FILES="$CONFIG_FILES examples/client/stream-tubes/Makefile" ;; "examples/cm/Makefile") CONFIG_FILES="$CONFIG_FILES examples/cm/Makefile" ;; - "examples/cm/callable/Makefile") CONFIG_FILES="$CONFIG_FILES examples/cm/callable/Makefile" ;; + "examples/cm/call/Makefile") CONFIG_FILES="$CONFIG_FILES examples/cm/call/Makefile" ;; "examples/cm/channelspecific/Makefile") CONFIG_FILES="$CONFIG_FILES examples/cm/channelspecific/Makefile" ;; "examples/cm/contactlist/Makefile") CONFIG_FILES="$CONFIG_FILES examples/cm/contactlist/Makefile" ;; "examples/cm/echo-message-parts/Makefile") CONFIG_FILES="$CONFIG_FILES examples/cm/echo-message-parts/Makefile" ;; "examples/cm/extended/Makefile") CONFIG_FILES="$CONFIG_FILES examples/cm/extended/Makefile" ;; "examples/cm/no-protocols/Makefile") CONFIG_FILES="$CONFIG_FILES examples/cm/no-protocols/Makefile" ;; "examples/extensions/Makefile") CONFIG_FILES="$CONFIG_FILES examples/extensions/Makefile" ;; - "examples/future/Makefile") CONFIG_FILES="$CONFIG_FILES examples/future/Makefile" ;; - "examples/future/call-cm/Makefile") CONFIG_FILES="$CONFIG_FILES examples/future/call-cm/Makefile" ;; - "extensions/Makefile") CONFIG_FILES="$CONFIG_FILES extensions/Makefile" ;; "spec/Makefile") CONFIG_FILES="$CONFIG_FILES spec/Makefile" ;; "telepathy-glib/Makefile") CONFIG_FILES="$CONFIG_FILES telepathy-glib/Makefile" ;; "telepathy-glib/telepathy-glib.pc") CONFIG_FILES="$CONFIG_FILES telepathy-glib/telepathy-glib.pc" ;; @@ -19344,8 +19458,8 @@ # 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. @@ -19399,6 +19513,9 @@ # 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 @@ -19700,10 +19817,6 @@ # 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 @@ -20046,10 +20159,6 @@ # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX -# 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_CXX - # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX diff -Nru telepathy-glib-0.17.4/configure.ac telepathy-glib-0.17.5/configure.ac --- telepathy-glib-0.17.4/configure.ac 2011-12-19 15:18:17.000000000 +0000 +++ telepathy-glib-0.17.5/configure.ac 2012-02-20 17:31:02.000000000 +0000 @@ -11,7 +11,7 @@ m4_define([tp_glib_major_version], [0]) m4_define([tp_glib_minor_version], [17]) -m4_define([tp_glib_micro_version], [4]) +m4_define([tp_glib_micro_version], [5]) m4_define([tp_glib_nano_version], [0]) # If library source has changed since last release, increment revision @@ -26,9 +26,9 @@ # (we don't guarantee that we won't add ABI then remove it again, if it was # never seen in a release). -m4_define([tp_glib_lt_current], [66]) -m4_define([tp_glib_lt_revision], [1]) -m4_define([tp_glib_lt_age], [66]) +m4_define([tp_glib_lt_current], [67]) +m4_define([tp_glib_lt_revision], [0]) +m4_define([tp_glib_lt_age], [67]) # Some magic m4_define([tp_glib_base_version], @@ -68,6 +68,10 @@ AC_SUBST([LT_REVISION]) AC_SUBST([LT_AGE]) +# Disable GLib deprecation warnings for now; GValueArray is deprecated but we +# need it for dbus-glib. +AC_DEFINE(GLIB_DISABLE_DEPRECATION_WARNINGS, 1, [Build with GLib deprecated]) + dnl optimizations, etc. COMPILER_OPTIMISATIONS COMPILER_COVERAGE @@ -316,16 +320,13 @@ examples/client/python/Makefile \ examples/client/stream-tubes/Makefile \ examples/cm/Makefile \ - examples/cm/callable/Makefile \ + examples/cm/call/Makefile \ examples/cm/channelspecific/Makefile \ examples/cm/contactlist/Makefile \ examples/cm/echo-message-parts/Makefile \ examples/cm/extended/Makefile \ examples/cm/no-protocols/Makefile \ examples/extensions/Makefile \ - examples/future/Makefile \ - examples/future/call-cm/Makefile \ - extensions/Makefile \ spec/Makefile \ telepathy-glib/Makefile \ telepathy-glib/telepathy-glib.pc \ diff -Nru telepathy-glib-0.17.4/debian/changelog telepathy-glib-0.17.5/debian/changelog --- telepathy-glib-0.17.4/debian/changelog 2012-02-08 14:19:03.000000000 +0000 +++ telepathy-glib-0.17.5/debian/changelog 2012-02-22 19:29:47.000000000 +0000 @@ -1,3 +1,17 @@ +telepathy-glib (0.17.5-1ubuntu1) precise; urgency=low + + * Merge with Debian experimental. Remaining Ubuntu changes: + - ludicrous-timeout-for-lp-buildd.patch: Cope with launchpad-buildd's + slightly sad output buffering/handling. + + -- Ken VanDine Wed, 22 Feb 2012 14:29:43 -0500 + +telepathy-glib (0.17.5-1) experimental; urgency=low + + * New upstream release + + -- Simon McVittie Mon, 20 Feb 2012 18:04:30 +0000 + telepathy-glib (0.17.4-1ubuntu2) precise; urgency=low * Add 00git_async_credential_api.patch, 00git_use_async_credentials.patch: diff -Nru telepathy-glib-0.17.4/debian/libtelepathy-glib0.symbols telepathy-glib-0.17.5/debian/libtelepathy-glib0.symbols --- telepathy-glib-0.17.4/debian/libtelepathy-glib0.symbols 2012-02-08 14:18:17.000000000 +0000 +++ telepathy-glib-0.17.5/debian/libtelepathy-glib0.symbols 2012-02-22 17:57:21.000000000 +0000 @@ -1,6 +1,5 @@ libtelepathy-glib.so.0 libtelepathy-glib0 #MINVER# * Build-Depends-Package: libtelepathy-glib-dev - None@None 0.17.4-1ubuntu2~ TELEPATHY_GLIB_0.11.0@TELEPATHY_GLIB_0.11.0 0.11.0 TELEPATHY_GLIB_0.11.11@TELEPATHY_GLIB_0.11.11 0.11.11 TELEPATHY_GLIB_0.11.12@TELEPATHY_GLIB_0.11.12 0.11.12 @@ -44,8 +43,9 @@ TELEPATHY_GLIB_0.15.8@TELEPATHY_GLIB_0.15.8 0.15.8 TELEPATHY_GLIB_0.17.0@TELEPATHY_GLIB_0.17.0 0.17.0 TELEPATHY_GLIB_0.17.1@TELEPATHY_GLIB_0.17.1 0.17.1 - TELEPATHY_GLIB_0.17.2@TELEPATHY_GLIB_0.17.2 0.17.4 - TELEPATHY_GLIB_0.17.3@TELEPATHY_GLIB_0.17.3 0.17.4 + TELEPATHY_GLIB_0.17.2@TELEPATHY_GLIB_0.17.2 0.17.2 + TELEPATHY_GLIB_0.17.3@TELEPATHY_GLIB_0.17.3 0.17.3 + TELEPATHY_GLIB_0.17.5@TELEPATHY_GLIB_0.17.5 0.17.5 TELEPATHY_GLIB_0.7.0@TELEPATHY_GLIB_0.7.0 0.7.1 TELEPATHY_GLIB_0.7.10@TELEPATHY_GLIB_0.7.10 0.7.10 TELEPATHY_GLIB_0.7.12@TELEPATHY_GLIB_0.7.12 0.7.12 @@ -135,6 +135,7 @@ tp_account_get_storage_restrictions@TELEPATHY_GLIB_0.13.2 0.13.2 tp_account_get_storage_specific_information_async@TELEPATHY_GLIB_0.13.2 0.13.2 tp_account_get_storage_specific_information_finish@TELEPATHY_GLIB_0.13.2 0.13.2 + tp_account_get_supersedes@TELEPATHY_GLIB_0.17.5 0.17.5 tp_account_get_type@TELEPATHY_GLIB_0.7.32 0.7.32 tp_account_get_uri_schemes@TELEPATHY_GLIB_0.13.8 0.13.8 tp_account_init_known_interfaces@TELEPATHY_GLIB_0.7.32 0.7.32 @@ -234,11 +235,43 @@ tp_avatar_requirements_destroy@TELEPATHY_GLIB_0.11.4 0.11.4 tp_avatar_requirements_get_type@TELEPATHY_GLIB_0.11.4 0.11.4 tp_avatar_requirements_new@TELEPATHY_GLIB_0.11.4 0.11.4 + tp_base_call_channel_add_content@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_get_call_members@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_get_contents@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_get_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_has_initial_audio@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_has_initial_video@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_has_mutable_contents@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_is_accepted@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_remote_accept@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_remove_content@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_remove_member@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_set_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_channel_update_member_flags@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_content_add_stream@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_content_get_connection@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_content_get_disposition@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_content_get_media_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_content_get_name@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_content_get_object_path@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_content_get_streams@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_content_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_content_remove_stream@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_stream_get_connection@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_stream_get_local_sending_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_stream_get_object_path@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_stream_get_remote_sending_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_stream_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_stream_remove_member@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_stream_update_local_sending_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_call_stream_update_remote_sending_state@TELEPATHY_GLIB_0.17.5 0.17.5 tp_base_channel_close@TELEPATHY_GLIB_0.11.14 0.11.14 tp_base_channel_destroyed@TELEPATHY_GLIB_0.11.14 0.11.14 tp_base_channel_get_connection@TELEPATHY_GLIB_0.11.14 0.11.14 tp_base_channel_get_initiator@TELEPATHY_GLIB_0.11.14 0.11.14 tp_base_channel_get_object_path@TELEPATHY_GLIB_0.11.14 0.11.14 + tp_base_channel_get_self_handle@TELEPATHY_GLIB_0.17.5 0.17.5 tp_base_channel_get_target_handle@TELEPATHY_GLIB_0.11.14 0.11.14 tp_base_channel_get_type@TELEPATHY_GLIB_0.11.14 0.11.14 tp_base_channel_is_destroyed@TELEPATHY_GLIB_0.11.14 0.11.14 @@ -371,6 +404,25 @@ tp_base_contact_list_unpublish_finish@TELEPATHY_GLIB_0.13.0 0.13.0 tp_base_contact_list_unsubscribe_async@TELEPATHY_GLIB_0.13.0 0.13.0 tp_base_contact_list_unsubscribe_finish@TELEPATHY_GLIB_0.13.0 0.13.0 + tp_base_media_call_channel_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_content_get_local_media_description@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_content_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_content_offer_media_description_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_content_offer_media_description_finish@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_add_endpoint@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_get_endpoints@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_get_local_candidates@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_get_password@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_get_receiving_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_get_sending_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_get_username@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_remove_endpoint@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_set_local_sending@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_set_relay_info@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_set_stun_servers@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_update_receiving_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_base_media_call_stream_update_sending_state@TELEPATHY_GLIB_0.17.5 0.17.5 tp_base_password_channel_get_type@TELEPATHY_GLIB_0.13.15 0.13.15 tp_base_protocol_get_immutable_properties@TELEPATHY_GLIB_0.11.11 0.11.11 tp_base_protocol_get_name@TELEPATHY_GLIB_0.11.11 0.11.11 @@ -391,6 +443,65 @@ tp_basic_proxy_factory_get_type@TELEPATHY_GLIB_0.13.2 0.13.2 tp_basic_proxy_factory_new@TELEPATHY_GLIB_0.13.2 0.13.2 tp_blockable_contact_list_get_type@TELEPATHY_GLIB_0.13.0 0.13.0 + tp_call_channel_accept_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_accept_finish@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_add_content_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_add_content_finish@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_get_contents@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_get_feature_quark_core@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_get_members@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_get_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_hangup_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_hangup_finish@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_has_dtmf@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_has_hardware_streaming@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_has_initial_audio@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_has_initial_video@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_has_mutable_contents@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_send_tones_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_send_tones_finish@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_set_queued_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_set_queued_finish@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_set_ringing_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_channel_set_ringing_finish@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_get_disposition@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_get_feature_quark_core@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_get_media_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_get_name@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_get_streams@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_init_known_interfaces@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_media_description_add_ssrc@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_media_description_append_codec@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_media_description_get_object_path@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_media_description_get_remote_contact@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_media_description_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_media_description_init_known_interfaces@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_media_description_new@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_remove_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_remove_finish@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_send_tones_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_content_send_tones_finish@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_state_reason_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_can_request_receiving@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_endpoint_add_new_candidate@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_endpoint_add_new_candidates@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_endpoint_get_object_path@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_endpoint_get_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_endpoint_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_endpoint_init_known_interfaces@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_endpoint_new@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_endpoint_set_remote_credentials@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_get_feature_quark_core@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_get_local_sending_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_get_remote_members@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_init_known_interfaces@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_request_receiving_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_request_receiving_finish@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_set_sending_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_call_stream_set_sending_finish@TELEPATHY_GLIB_0.17.5 0.17.5 tp_capabilities_get_channel_classes@TELEPATHY_GLIB_0.11.3 0.11.3 tp_capabilities_get_type@TELEPATHY_GLIB_0.11.3 0.11.3 tp_capabilities_is_specific_to_contact@TELEPATHY_GLIB_0.11.3 0.11.3 @@ -520,6 +631,64 @@ tp_cli_account_manager_call_create_account@TELEPATHY_GLIB_0.7.32 0.7.32 tp_cli_account_manager_connect_to_account_removed@TELEPATHY_GLIB_0.7.32 0.7.32 tp_cli_account_manager_connect_to_account_validity_changed@TELEPATHY_GLIB_0.7.32 0.7.32 + tp_cli_call_content_call_remove@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_connect_to_streams_added@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_connect_to_streams_removed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_audio_control_call_report_input_volume@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_audio_control_call_report_output_volume@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_dtmf_call_multiple_tones@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_dtmf_call_start_tone@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_dtmf_call_stop_tone@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_dtmf_connect_to_sending_tones@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_dtmf_connect_to_stopped_tones@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_dtmf_connect_to_tones_deferred@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_media_call_acknowledge_dtmf_change@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_media_call_fail@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_media_call_update_local_media_description@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_media_connect_to_dtmf_change_requested@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_media_connect_to_local_media_description_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_media_connect_to_media_description_offer_done@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_media_connect_to_media_descriptions_removed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_media_connect_to_new_media_description_offer@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_media_connect_to_remote_media_descriptions_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_video_control_connect_to_bitrate_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_video_control_connect_to_framerate_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_video_control_connect_to_key_frame_requested@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_video_control_connect_to_mtu_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_interface_video_control_connect_to_video_resolution_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_media_description_call_accept@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_content_media_description_call_reject@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_call_request_receiving@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_call_set_sending@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_connect_to_local_sending_state_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_connect_to_remote_members_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_endpoint_call_accept_selected_candidate_pair@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_endpoint_call_reject_selected_candidate_pair@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_endpoint_call_set_controlling@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_endpoint_call_set_endpoint_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_endpoint_call_set_selected_candidate_pair@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_endpoint_connect_to_candidate_pair_selected@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_endpoint_connect_to_controlling_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_endpoint_connect_to_endpoint_state_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_endpoint_connect_to_remote_candidates_added@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_endpoint_connect_to_remote_credentials_set@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_call_add_candidates@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_call_complete_receiving_state_change@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_call_complete_sending_state_change@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_call_fail@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_call_finish_initial_candidates@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_call_report_receiving_failure@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_call_report_sending_failure@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_call_set_credentials@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_connect_to_endpoints_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_connect_to_ice_restart_requested@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_connect_to_local_candidates_added@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_connect_to_local_credentials_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_connect_to_receiving_state_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_connect_to_relay_info_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_connect_to_sending_state_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_connect_to_server_info_retrieved@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_call_stream_interface_media_connect_to_stun_servers_changed@TELEPATHY_GLIB_0.17.5 0.17.5 tp_cli_channel_call_close@TELEPATHY_GLIB_0.7.1 0.7.1 tp_cli_channel_call_get_channel_type@TELEPATHY_GLIB_0.7.1 0.7.1 tp_cli_channel_call_get_handle@TELEPATHY_GLIB_0.7.1 0.7.1 @@ -541,6 +710,10 @@ tp_cli_channel_interface_call_state_call_get_call_states@TELEPATHY_GLIB_0.7.6 0.7.6 tp_cli_channel_interface_call_state_connect_to_call_state_changed@TELEPATHY_GLIB_0.7.6 0.7.6 tp_cli_channel_interface_call_state_run_get_call_states@TELEPATHY_GLIB_0.7.6 0.7.6 + tp_cli_channel_interface_captcha_authentication_call_answer_captchas@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_channel_interface_captcha_authentication_call_cancel_captcha@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_channel_interface_captcha_authentication_call_get_captcha_data@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_channel_interface_captcha_authentication_call_get_captchas@TELEPATHY_GLIB_0.17.5 0.17.5 tp_cli_channel_interface_chat_state_call_set_chat_state@TELEPATHY_GLIB_0.7.1 0.7.1 tp_cli_channel_interface_chat_state_connect_to_chat_state_changed@TELEPATHY_GLIB_0.7.1 0.7.1 tp_cli_channel_interface_chat_state_run_set_chat_state@TELEPATHY_GLIB_0.7.1 0.7.1 @@ -634,6 +807,15 @@ tp_cli_channel_run_get_channel_type@TELEPATHY_GLIB_0.7.1 0.7.1 tp_cli_channel_run_get_handle@TELEPATHY_GLIB_0.7.1 0.7.1 tp_cli_channel_run_get_interfaces@TELEPATHY_GLIB_0.7.1 0.7.1 + tp_cli_channel_type_call_call_accept@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_channel_type_call_call_add_content@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_channel_type_call_call_hangup@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_channel_type_call_call_set_queued@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_channel_type_call_call_set_ringing@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_channel_type_call_connect_to_call_members_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_channel_type_call_connect_to_call_state_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_channel_type_call_connect_to_content_added@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_channel_type_call_connect_to_content_removed@TELEPATHY_GLIB_0.17.5 0.17.5 tp_cli_channel_type_contact_search_call_more@TELEPATHY_GLIB_0.11.11 0.11.11 tp_cli_channel_type_contact_search_call_search@TELEPATHY_GLIB_0.11.11 0.11.11 tp_cli_channel_type_contact_search_call_stop@TELEPATHY_GLIB_0.11.11 0.11.11 @@ -745,6 +927,8 @@ tp_cli_connection_connect_to_new_channel@TELEPATHY_GLIB_0.7.1 0.7.1 tp_cli_connection_connect_to_self_handle_changed@TELEPATHY_GLIB_0.7.15 0.7.15 tp_cli_connection_connect_to_status_changed@TELEPATHY_GLIB_0.7.1 0.7.1 + tp_cli_connection_interface_addressing_call_get_contacts_by_uri@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_cli_connection_interface_addressing_call_get_contacts_by_vcard_field@TELEPATHY_GLIB_0.17.5 0.17.5 tp_cli_connection_interface_aliasing_call_get_alias_flags@TELEPATHY_GLIB_0.7.1 0.7.1 tp_cli_connection_interface_aliasing_call_get_aliases@TELEPATHY_GLIB_0.7.14 0.7.14 tp_cli_connection_interface_aliasing_call_request_aliases@TELEPATHY_GLIB_0.7.1 0.7.1 @@ -821,6 +1005,7 @@ tp_cli_connection_interface_contact_info_run_request_contact_info@TELEPATHY_GLIB_0.11.3 0.11.3 tp_cli_connection_interface_contact_info_run_set_contact_info@TELEPATHY_GLIB_0.11.3 0.11.3 tp_cli_connection_interface_contact_list_call_authorize_publication@TELEPATHY_GLIB_0.13.0 0.13.0 + tp_cli_connection_interface_contact_list_call_download@TELEPATHY_GLIB_0.17.5 0.17.5 tp_cli_connection_interface_contact_list_call_get_contact_list_attributes@TELEPATHY_GLIB_0.13.0 0.13.0 tp_cli_connection_interface_contact_list_call_remove_contacts@TELEPATHY_GLIB_0.13.0 0.13.0 tp_cli_connection_interface_contact_list_call_request_subscription@TELEPATHY_GLIB_0.13.0 0.13.0 @@ -1011,8 +1196,8 @@ tp_cli_properties_interface_run_set_properties@TELEPATHY_GLIB_0.7.1 0.7.1 tp_cli_protocol_call_identify_account@TELEPATHY_GLIB_0.11.11 0.11.11 tp_cli_protocol_call_normalize_contact@TELEPATHY_GLIB_0.11.11 0.11.11 - tp_cli_protocol_interface_addressing_call_normalize_contact_uri@TELEPATHY_GLIB_0.17.2 0.17.4 - tp_cli_protocol_interface_addressing_call_normalize_vcard_address@TELEPATHY_GLIB_0.17.2 0.17.4 + tp_cli_protocol_interface_addressing_call_normalize_contact_uri@TELEPATHY_GLIB_0.17.2 0.17.2 + tp_cli_protocol_interface_addressing_call_normalize_vcard_address@TELEPATHY_GLIB_0.17.2 0.17.2 tp_client_channel_factory_create_channel@TELEPATHY_GLIB_0.13.2 0.13.2 tp_client_channel_factory_dup_channel_features@TELEPATHY_GLIB_0.13.3 0.13.3 tp_client_channel_factory_get_type@TELEPATHY_GLIB_0.13.2 0.13.2 @@ -1043,7 +1228,9 @@ tp_connection_block_contacts_finish@TELEPATHY_GLIB_0.17.0 0.17.0 tp_connection_call_when_ready@TELEPATHY_GLIB_0.7.7 0.7.7 tp_connection_can_report_abusive@TELEPATHY_GLIB_0.17.0 0.17.0 - tp_connection_can_set_contact_alias@TELEPATHY_GLIB_0.17.3 0.17.4 + tp_connection_can_set_contact_alias@TELEPATHY_GLIB_0.17.3 0.17.3 + tp_connection_disconnect_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_connection_disconnect_finish@TELEPATHY_GLIB_0.17.5 0.17.5 tp_connection_dup_contact_if_possible@TELEPATHY_GLIB_0.13.9 0.13.9 tp_connection_dup_contact_list@TELEPATHY_GLIB_0.15.5 0.15.5 tp_connection_get_account@TELEPATHY_GLIB_0.15.5 0.15.5 @@ -1065,7 +1252,7 @@ tp_connection_get_contacts_by_id@TELEPATHY_GLIB_0.7.18 0.7.18 tp_connection_get_detailed_error@TELEPATHY_GLIB_0.11.4 0.11.4 tp_connection_get_disjoint_groups@TELEPATHY_GLIB_0.15.5 0.15.5 - tp_connection_get_feature_quark_aliasing@TELEPATHY_GLIB_0.17.3 0.17.4 + tp_connection_get_feature_quark_aliasing@TELEPATHY_GLIB_0.17.3 0.17.3 tp_connection_get_feature_quark_avatar_requirements@TELEPATHY_GLIB_0.11.4 0.11.4 tp_connection_get_feature_quark_balance@TELEPATHY_GLIB_0.15.1 0.15.1 tp_connection_get_feature_quark_capabilities@TELEPATHY_GLIB_0.11.3 0.11.3 @@ -1433,12 +1620,25 @@ tp_iface_quark_account_interface_storage@TELEPATHY_GLIB_0.11.9 0.11.9 tp_iface_quark_account_manager@TELEPATHY_GLIB_0.7.32 0.7.32 tp_iface_quark_authentication_tls_certificate@TELEPATHY_GLIB_0.11.16 0.11.16 + tp_iface_quark_call_content@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_iface_quark_call_content_interface_audio_control@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_iface_quark_call_content_interface_dtmf@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_iface_quark_call_content_interface_media@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_iface_quark_call_content_interface_video_control@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_iface_quark_call_content_media_description@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_iface_quark_call_content_media_description_interface_rtcp_extended_reports@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_iface_quark_call_content_media_description_interface_rtcp_feedback@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_iface_quark_call_content_media_description_interface_rtp_header_extensions@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_iface_quark_call_stream@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_iface_quark_call_stream_endpoint@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_iface_quark_call_stream_interface_media@TELEPATHY_GLIB_0.17.5 0.17.5 tp_iface_quark_channel@TELEPATHY_GLIB_0.7.0 0.7.1 tp_iface_quark_channel_dispatch_operation@TELEPATHY_GLIB_0.7.32 0.7.32 tp_iface_quark_channel_dispatcher@TELEPATHY_GLIB_0.7.32 0.7.32 tp_iface_quark_channel_dispatcher_interface_operation_list@TELEPATHY_GLIB_0.7.32 0.7.32 tp_iface_quark_channel_interface_anonymity@TELEPATHY_GLIB_0.11.7 0.11.7 tp_iface_quark_channel_interface_call_state@TELEPATHY_GLIB_0.7.6 0.7.6 + tp_iface_quark_channel_interface_captcha_authentication@TELEPATHY_GLIB_0.17.5 0.17.5 tp_iface_quark_channel_interface_chat_state@TELEPATHY_GLIB_0.7.0 0.7.1 tp_iface_quark_channel_interface_conference@TELEPATHY_GLIB_0.11.16 0.11.16 tp_iface_quark_channel_interface_destroyable@TELEPATHY_GLIB_0.7.18 0.7.18 @@ -1458,6 +1658,7 @@ tp_iface_quark_channel_interface_subject@TELEPATHY_GLIB_0.15.8 0.15.8 tp_iface_quark_channel_interface_tube@TELEPATHY_GLIB_0.7.31 0.7.31 tp_iface_quark_channel_request@TELEPATHY_GLIB_0.7.32 0.7.32 + tp_iface_quark_channel_type_call@TELEPATHY_GLIB_0.17.5 0.17.5 tp_iface_quark_channel_type_contact_list@TELEPATHY_GLIB_0.7.0 0.7.1 tp_iface_quark_channel_type_contact_search@TELEPATHY_GLIB_0.11.11 0.11.11 tp_iface_quark_channel_type_dbus_tube@TELEPATHY_GLIB_0.7.31 0.7.31 @@ -1475,6 +1676,7 @@ tp_iface_quark_client_interface_requests@TELEPATHY_GLIB_0.7.32 0.7.32 tp_iface_quark_client_observer@TELEPATHY_GLIB_0.7.32 0.7.32 tp_iface_quark_connection@TELEPATHY_GLIB_0.7.0 0.7.1 + tp_iface_quark_connection_interface_addressing@TELEPATHY_GLIB_0.17.5 0.17.5 tp_iface_quark_connection_interface_aliasing@TELEPATHY_GLIB_0.7.0 0.7.1 tp_iface_quark_connection_interface_anonymity@TELEPATHY_GLIB_0.11.7 0.11.7 tp_iface_quark_connection_interface_avatars@TELEPATHY_GLIB_0.7.0 0.7.1 @@ -1505,7 +1707,7 @@ tp_iface_quark_media_stream_handler@TELEPATHY_GLIB_0.7.0 0.7.1 tp_iface_quark_properties_interface@TELEPATHY_GLIB_0.7.0 0.7.1 tp_iface_quark_protocol@TELEPATHY_GLIB_0.11.11 0.11.11 - tp_iface_quark_protocol_interface_addressing@TELEPATHY_GLIB_0.17.2 0.17.4 + tp_iface_quark_protocol_interface_addressing@TELEPATHY_GLIB_0.17.2 0.17.2 tp_iface_quark_protocol_interface_avatars@TELEPATHY_GLIB_0.13.7 0.13.7 tp_iface_quark_protocol_interface_presence@TELEPATHY_GLIB_0.13.3 0.13.3 tp_intset_add@TELEPATHY_GLIB_0.7.0 0.7.1 @@ -1635,7 +1837,7 @@ tp_properties_mixin_is_writable@TELEPATHY_GLIB_0.7.0 0.7.1 tp_properties_mixin_list_properties@TELEPATHY_GLIB_0.7.0 0.7.1 tp_properties_mixin_set_properties@TELEPATHY_GLIB_0.7.0 0.7.1 - tp_protocol_addressing_get_type@TELEPATHY_GLIB_0.17.2 0.17.4 + tp_protocol_addressing_get_type@TELEPATHY_GLIB_0.17.2 0.17.2 tp_protocol_can_register@TELEPATHY_GLIB_0.11.11 0.11.11 tp_protocol_dup_param_names@TELEPATHY_GLIB_0.11.11 0.11.11 tp_protocol_get_authentication_types@TELEPATHY_GLIB_0.13.9 0.13.9 @@ -1757,6 +1959,76 @@ tp_svc_authentication_tls_certificate_get_type@TELEPATHY_GLIB_0.11.16 0.11.16 tp_svc_authentication_tls_certificate_implement_accept@TELEPATHY_GLIB_0.11.16 0.11.16 tp_svc_authentication_tls_certificate_implement_reject@TELEPATHY_GLIB_0.11.16 0.11.16 + tp_svc_call_content_emit_streams_added@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_emit_streams_removed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_implement_remove@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_audio_control_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_audio_control_implement_report_input_volume@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_audio_control_implement_report_output_volume@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_dtmf_emit_sending_tones@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_dtmf_emit_stopped_tones@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_dtmf_emit_tones_deferred@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_dtmf_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_dtmf_implement_multiple_tones@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_dtmf_implement_start_tone@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_dtmf_implement_stop_tone@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_media_emit_dtmf_change_requested@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_media_emit_local_media_description_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_media_emit_media_description_offer_done@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_media_emit_media_descriptions_removed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_media_emit_new_media_description_offer@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_media_emit_remote_media_descriptions_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_media_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_media_implement_acknowledge_dtmf_change@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_media_implement_fail@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_media_implement_update_local_media_description@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_video_control_emit_bitrate_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_video_control_emit_framerate_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_video_control_emit_key_frame_requested@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_video_control_emit_mtu_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_video_control_emit_video_resolution_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_interface_video_control_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_media_description_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_media_description_implement_accept@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_media_description_implement_reject@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_media_description_interface_rtcp_extended_reports_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_media_description_interface_rtcp_feedback_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_content_media_description_interface_rtp_header_extensions_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_emit_local_sending_state_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_emit_remote_members_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_endpoint_emit_candidate_pair_selected@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_endpoint_emit_controlling_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_endpoint_emit_endpoint_state_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_endpoint_emit_remote_candidates_added@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_endpoint_emit_remote_credentials_set@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_endpoint_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_endpoint_implement_accept_selected_candidate_pair@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_endpoint_implement_reject_selected_candidate_pair@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_endpoint_implement_set_controlling@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_endpoint_implement_set_endpoint_state@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_endpoint_implement_set_selected_candidate_pair@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_implement_request_receiving@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_implement_set_sending@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_emit_endpoints_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_emit_ice_restart_requested@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_emit_local_candidates_added@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_emit_local_credentials_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_emit_receiving_state_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_emit_relay_info_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_emit_sending_state_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_emit_server_info_retrieved@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_emit_stun_servers_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_implement_add_candidates@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_implement_complete_receiving_state_change@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_implement_complete_sending_state_change@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_implement_fail@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_implement_finish_initial_candidates@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_implement_report_receiving_failure@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_implement_report_sending_failure@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_call_stream_interface_media_implement_set_credentials@TELEPATHY_GLIB_0.17.5 0.17.5 tp_svc_channel_dispatch_operation_emit_channel_lost@TELEPATHY_GLIB_0.7.32 0.7.32 tp_svc_channel_dispatch_operation_emit_finished@TELEPATHY_GLIB_0.7.32 0.7.32 tp_svc_channel_dispatch_operation_get_type@TELEPATHY_GLIB_0.7.32 0.7.32 @@ -1783,6 +2055,11 @@ tp_svc_channel_interface_call_state_emit_call_state_changed@TELEPATHY_GLIB_0.7.6 0.7.6 tp_svc_channel_interface_call_state_get_type@TELEPATHY_GLIB_0.7.6 0.7.6 tp_svc_channel_interface_call_state_implement_get_call_states@TELEPATHY_GLIB_0.7.6 0.7.6 + tp_svc_channel_interface_captcha_authentication_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_interface_captcha_authentication_implement_answer_captchas@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_interface_captcha_authentication_implement_cancel_captcha@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_interface_captcha_authentication_implement_get_captcha_data@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_interface_captcha_authentication_implement_get_captchas@TELEPATHY_GLIB_0.17.5 0.17.5 tp_svc_channel_interface_chat_state_emit_chat_state_changed@TELEPATHY_GLIB_0.7.0 0.7.1 tp_svc_channel_interface_chat_state_get_type@TELEPATHY_GLIB_0.7.0 0.7.1 tp_svc_channel_interface_chat_state_implement_set_chat_state@TELEPATHY_GLIB_0.7.0 0.7.1 @@ -1862,6 +2139,16 @@ tp_svc_channel_request_get_type@TELEPATHY_GLIB_0.7.32 0.7.32 tp_svc_channel_request_implement_cancel@TELEPATHY_GLIB_0.7.32 0.7.32 tp_svc_channel_request_implement_proceed@TELEPATHY_GLIB_0.7.32 0.7.32 + tp_svc_channel_type_call_emit_call_members_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_type_call_emit_call_state_changed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_type_call_emit_content_added@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_type_call_emit_content_removed@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_type_call_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_type_call_implement_accept@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_type_call_implement_add_content@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_type_call_implement_hangup@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_type_call_implement_set_queued@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_channel_type_call_implement_set_ringing@TELEPATHY_GLIB_0.17.5 0.17.5 tp_svc_channel_type_contact_list_get_type@TELEPATHY_GLIB_0.7.0 0.7.1 tp_svc_channel_type_contact_search_emit_search_result_received@TELEPATHY_GLIB_0.11.11 0.11.11 tp_svc_channel_type_contact_search_emit_search_state_changed@TELEPATHY_GLIB_0.11.11 0.11.11 @@ -1959,6 +2246,9 @@ tp_svc_connection_implement_remove_client_interest@TELEPATHY_GLIB_0.13.3 0.13.3 tp_svc_connection_implement_request_channel@TELEPATHY_GLIB_0.7.0 0.7.1 tp_svc_connection_implement_request_handles@TELEPATHY_GLIB_0.7.0 0.7.1 + tp_svc_connection_interface_addressing_get_type@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_connection_interface_addressing_implement_get_contacts_by_uri@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_svc_connection_interface_addressing_implement_get_contacts_by_vcard_field@TELEPATHY_GLIB_0.17.5 0.17.5 tp_svc_connection_interface_aliasing_emit_aliases_changed@TELEPATHY_GLIB_0.7.0 0.7.1 tp_svc_connection_interface_aliasing_get_type@TELEPATHY_GLIB_0.7.0 0.7.1 tp_svc_connection_interface_aliasing_implement_get_alias_flags@TELEPATHY_GLIB_0.7.0 0.7.1 @@ -2020,6 +2310,7 @@ tp_svc_connection_interface_contact_list_emit_contacts_changed_with_id@TELEPATHY_GLIB_0.13.10 0.13.10 tp_svc_connection_interface_contact_list_get_type@TELEPATHY_GLIB_0.13.0 0.13.0 tp_svc_connection_interface_contact_list_implement_authorize_publication@TELEPATHY_GLIB_0.13.0 0.13.0 + tp_svc_connection_interface_contact_list_implement_download@TELEPATHY_GLIB_0.17.5 0.17.5 tp_svc_connection_interface_contact_list_implement_get_contact_list_attributes@TELEPATHY_GLIB_0.13.0 0.13.0 tp_svc_connection_interface_contact_list_implement_remove_contacts@TELEPATHY_GLIB_0.13.0 0.13.0 tp_svc_connection_interface_contact_list_implement_request_subscription@TELEPATHY_GLIB_0.13.0 0.13.0 @@ -2122,9 +2413,9 @@ tp_svc_protocol_get_type@TELEPATHY_GLIB_0.11.11 0.11.11 tp_svc_protocol_implement_identify_account@TELEPATHY_GLIB_0.11.11 0.11.11 tp_svc_protocol_implement_normalize_contact@TELEPATHY_GLIB_0.11.11 0.11.11 - tp_svc_protocol_interface_addressing_get_type@TELEPATHY_GLIB_0.17.2 0.17.4 - tp_svc_protocol_interface_addressing_implement_normalize_contact_uri@TELEPATHY_GLIB_0.17.2 0.17.4 - tp_svc_protocol_interface_addressing_implement_normalize_vcard_address@TELEPATHY_GLIB_0.17.2 0.17.4 + tp_svc_protocol_interface_addressing_get_type@TELEPATHY_GLIB_0.17.2 0.17.2 + tp_svc_protocol_interface_addressing_implement_normalize_contact_uri@TELEPATHY_GLIB_0.17.2 0.17.2 + tp_svc_protocol_interface_addressing_implement_normalize_vcard_address@TELEPATHY_GLIB_0.17.2 0.17.2 tp_svc_protocol_interface_avatars_get_type@TELEPATHY_GLIB_0.13.7 0.13.7 tp_svc_protocol_interface_presence_get_type@TELEPATHY_GLIB_0.13.3 0.13.3 tp_text_channel_ack_all_pending_messages_async@TELEPATHY_GLIB_0.15.3 0.15.3 @@ -2167,6 +2458,7 @@ tp_text_mixin_set_message_types@TELEPATHY_GLIB_0.7.0 0.7.1 tp_text_mixin_set_rescued@TELEPATHY_GLIB_0.7.18 0.7.18 tp_type_dbus_array__28us_29as@TELEPATHY_GLIB_0.11.7 0.11.7 + tp_type_dbus_array__28usua_7bsv_7d_29_28usua_7bsv_7d_29@TELEPATHY_GLIB_0.17.5 0.17.5 tp_type_dbus_array_a_7bsv_7das@TELEPATHY_GLIB_0.7.15 0.7.15 tp_type_dbus_array_dsus@TELEPATHY_GLIB_0.7.36 0.7.36 tp_type_dbus_array_oa_7bsv_7d@TELEPATHY_GLIB_0.7.15 0.7.15 @@ -2174,6 +2466,7 @@ tp_type_dbus_array_of_a_7bss_7d@TELEPATHY_GLIB_0.7.28 0.7.28 tp_type_dbus_array_of_a_7bsv_7d@TELEPATHY_GLIB_0.7.26 0.7.26 tp_type_dbus_array_of_a_7bua_28a_7bsv_7das_29_7d@TELEPATHY_GLIB_0.7.37 0.7.37 + tp_type_dbus_array_of_a_7buu_7d@TELEPATHY_GLIB_0.17.5 0.17.5 tp_type_dbus_array_of_ay@TELEPATHY_GLIB_0.11.14 0.11.14 tp_type_dbus_array_of_o@TELEPATHY_GLIB_0.7.34 0.7.34 tp_type_dbus_array_of_y@TELEPATHY_GLIB_0.11.1 0.11.1 @@ -2191,7 +2484,10 @@ tp_type_dbus_array_us@TELEPATHY_GLIB_0.7.0 0.7.1 tp_type_dbus_array_usa_7bsv_7d@TELEPATHY_GLIB_0.7.0 0.7.1 tp_type_dbus_array_ussu@TELEPATHY_GLIB_0.7.0 0.7.1 + tp_type_dbus_array_ussuas@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_type_dbus_array_usua_7bsv_7d@TELEPATHY_GLIB_0.17.5 0.17.5 tp_type_dbus_array_usuu@TELEPATHY_GLIB_0.7.0 0.7.1 + tp_type_dbus_array_usuuba_7bss_7d@TELEPATHY_GLIB_0.17.5 0.17.5 tp_type_dbus_array_usuussduss@TELEPATHY_GLIB_0.7.0 0.7.1 tp_type_dbus_array_usuuua_7bss_7d@TELEPATHY_GLIB_0.7.0 0.7.1 tp_type_dbus_array_usuuuu@TELEPATHY_GLIB_0.7.0 0.7.1 @@ -2210,6 +2506,7 @@ tp_type_dbus_hash_sa_7bsv_7d@TELEPATHY_GLIB_0.7.0 0.7.1 tp_type_dbus_hash_sas@TELEPATHY_GLIB_0.17.1 0.17.1 tp_type_dbus_hash_ss@TELEPATHY_GLIB_0.7.0 0.7.1 + tp_type_dbus_hash_su@TELEPATHY_GLIB_0.17.5 0.17.5 tp_type_dbus_hash_sv@TELEPATHY_GLIB_0.7.0 0.7.1 tp_type_dbus_hash_u_28ua_28sss_29_29@TELEPATHY_GLIB_0.14.3 0.14.3 tp_type_dbus_hash_u_28ua_7bsa_7bsv_7d_7d_29@TELEPATHY_GLIB_0.7.0 0.7.1 @@ -2217,6 +2514,7 @@ tp_type_dbus_hash_u_28uus_29@TELEPATHY_GLIB_0.13.0 0.13.0 tp_type_dbus_hash_ua_28a_7bsv_7das_29@TELEPATHY_GLIB_0.7.37 0.7.37 tp_type_dbus_hash_ua_28sasas_29@TELEPATHY_GLIB_0.11.3 0.11.3 + tp_type_dbus_hash_ua_28usuuba_7bss_7d_29@TELEPATHY_GLIB_0.17.5 0.17.5 tp_type_dbus_hash_ua_7bsv_7d@TELEPATHY_GLIB_0.7.14 0.7.14 tp_type_dbus_hash_uas@TELEPATHY_GLIB_0.13.1 0.13.1 tp_type_dbus_hash_uau@TELEPATHY_GLIB_0.7.0 0.7.1 @@ -2225,6 +2523,7 @@ tp_type_dbus_hash_uu@TELEPATHY_GLIB_0.7.6 0.7.6 tp_type_dbus_hash_uv@TELEPATHY_GLIB_0.7.21 0.7.21 tp_type_dbus_struct__28us_29as@TELEPATHY_GLIB_0.11.7 0.11.7 + tp_type_dbus_struct__28usua_7bsv_7d_29_28usua_7bsv_7d_29@TELEPATHY_GLIB_0.17.5 0.17.5 tp_type_dbus_struct_a_7bsv_7das@TELEPATHY_GLIB_0.7.15 0.7.15 tp_type_dbus_struct_ays@TELEPATHY_GLIB_0.7.32 0.7.32 tp_type_dbus_struct_dsus@TELEPATHY_GLIB_0.7.36 0.7.36 @@ -2251,7 +2550,10 @@ tp_type_dbus_struct_usa_7bsv_7d@TELEPATHY_GLIB_0.7.0 0.7.1 tp_type_dbus_struct_uss@TELEPATHY_GLIB_0.7.13 0.7.13 tp_type_dbus_struct_ussu@TELEPATHY_GLIB_0.7.0 0.7.1 + tp_type_dbus_struct_ussuas@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_type_dbus_struct_usua_7bsv_7d@TELEPATHY_GLIB_0.17.5 0.17.5 tp_type_dbus_struct_usuu@TELEPATHY_GLIB_0.7.0 0.7.1 + tp_type_dbus_struct_usuuba_7bss_7d@TELEPATHY_GLIB_0.17.5 0.17.5 tp_type_dbus_struct_usuussduss@TELEPATHY_GLIB_0.7.0 0.7.1 tp_type_dbus_struct_usuuua_7bss_7d@TELEPATHY_GLIB_0.7.0 0.7.1 tp_type_dbus_struct_usuuuu@TELEPATHY_GLIB_0.7.0 0.7.1 @@ -2264,11 +2566,11 @@ tp_type_dbus_struct_uuuuuu@TELEPATHY_GLIB_0.7.0 0.7.1 tp_type_dbus_struct_uv@TELEPATHY_GLIB_0.7.0 0.7.1 tp_unix_connection_receive_credentials_with_byte@TELEPATHY_GLIB_0.13.2 0.13.2 - tp_unix_connection_receive_credentials_with_byte_async@None 0.17.4-1ubuntu2~ - tp_unix_connection_receive_credentials_with_byte_finish@None 0.17.4-1ubuntu2~ + tp_unix_connection_receive_credentials_with_byte_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_unix_connection_receive_credentials_with_byte_finish@TELEPATHY_GLIB_0.17.5 0.17.5 tp_unix_connection_send_credentials_with_byte@TELEPATHY_GLIB_0.13.2 0.13.2 - tp_unix_connection_send_credentials_with_byte_async@None 0.17.4-1ubuntu2~ - tp_unix_connection_send_credentials_with_byte_finish@None 0.17.4-1ubuntu2~ + tp_unix_connection_send_credentials_with_byte_async@TELEPATHY_GLIB_0.17.5 0.17.5 + tp_unix_connection_send_credentials_with_byte_finish@TELEPATHY_GLIB_0.17.5 0.17.5 tp_user_action_time_from_x11@TELEPATHY_GLIB_0.11.13 0.11.13 tp_user_action_time_should_present@TELEPATHY_GLIB_0.11.13 0.11.13 tp_utf8_make_valid@TELEPATHY_GLIB_0.13.15 0.13.15 diff -Nru telepathy-glib-0.17.4/debian/libtelepathy-glib-doc.install telepathy-glib-0.17.5/debian/libtelepathy-glib-doc.install --- telepathy-glib-0.17.4/debian/libtelepathy-glib-doc.install 2011-12-19 17:04:56.000000000 +0000 +++ telepathy-glib-0.17.5/debian/libtelepathy-glib-doc.install 2012-02-22 17:57:21.000000000 +0000 @@ -9,9 +9,9 @@ examples/extensions/*.h /usr/share/doc/libtelepathy-glib-doc/examples/extensions examples/extensions/*.am /usr/share/doc/libtelepathy-glib-doc/examples/extensions examples/cm/*.am /usr/share/doc/libtelepathy-glib-doc/examples/cm -examples/cm/callable/*.am /usr/share/doc/libtelepathy-glib-doc/examples/cm/callable -examples/cm/callable/*.c /usr/share/doc/libtelepathy-glib-doc/examples/cm/callable -examples/cm/callable/*.h /usr/share/doc/libtelepathy-glib-doc/examples/cm/callable +examples/cm/call/*.am /usr/share/doc/libtelepathy-glib-doc/examples/cm/call +examples/cm/call/*.c /usr/share/doc/libtelepathy-glib-doc/examples/cm/call +examples/cm/call/*.h /usr/share/doc/libtelepathy-glib-doc/examples/cm/call examples/cm/channelspecific/*.am /usr/share/doc/libtelepathy-glib-doc/examples/cm/channelspecific examples/cm/channelspecific/*.c /usr/share/doc/libtelepathy-glib-doc/examples/cm/channelspecific examples/cm/channelspecific/*.h /usr/share/doc/libtelepathy-glib-doc/examples/cm/channelspecific diff -Nru telepathy-glib-0.17.4/debian/patches/00git_async_credential_api.patch telepathy-glib-0.17.5/debian/patches/00git_async_credential_api.patch --- telepathy-glib-0.17.4/debian/patches/00git_async_credential_api.patch 2012-02-08 10:43:34.000000000 +0000 +++ telepathy-glib-0.17.5/debian/patches/00git_async_credential_api.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,278 +0,0 @@ -commit 730121cd64471064cc1e76b3fd64a0a8cd612969 -Author: Xavier Claessens -Date: Thu Jan 19 15:46:13 2012 +0100 - - Add async variant for _receive_credentials_with_byte() and _send_credentials_with_byte() - -diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt -index e06524f..850712c 100644 ---- a/docs/reference/telepathy-glib-sections.txt -+++ b/docs/reference/telepathy-glib-sections.txt -@@ -1466,7 +1466,11 @@ tp_utf8_make_valid - tp_g_socket_address_from_variant - tp_address_variant_from_g_socket_address - tp_unix_connection_receive_credentials_with_byte -+tp_unix_connection_receive_credentials_with_byte_async -+tp_unix_connection_receive_credentials_with_byte_finish - tp_unix_connection_send_credentials_with_byte -+tp_unix_connection_send_credentials_with_byte_async -+tp_unix_connection_send_credentials_with_byte_finish - - -
-diff --git a/telepathy-glib/gnio-util.c b/telepathy-glib/gnio-util.c -index d08b9f8..bd34e86 100644 ---- a/telepathy-glib/gnio-util.c -+++ b/telepathy-glib/gnio-util.c -@@ -43,6 +43,7 @@ - #include - #include - #include -+#include - - #include - -@@ -365,6 +366,85 @@ tp_unix_connection_send_credentials_with_byte (GSocketConnection *connection, - #endif - } - -+static void -+send_credentials_with_byte_async_thread (GSimpleAsyncResult *res, -+ GObject *object, -+ GCancellable *cancellable) -+{ -+ guchar byte; -+ GError *error = NULL; -+ -+ byte = GPOINTER_TO_UINT (g_simple_async_result_get_op_res_gpointer (res)); -+ -+ if (!tp_unix_connection_send_credentials_with_byte ( -+ (GSocketConnection *) object, byte, cancellable, &error)) -+ { -+ g_simple_async_result_take_error (res, error); -+ } -+} -+ -+/** -+ * tp_unix_connection_send_credentials_with_byte_async: -+ * @connection: A #GUnixConnection. -+ * @byte: the byte to send with the credentials -+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. -+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied -+ * @user_data: (closure): the data to pass to callback function -+ * -+ * Asynchronously send credentials. -+ * -+ * For more details, see tp_unix_connection_send_credentials_with_byte() which -+ * is the synchronous version of this call. -+ * -+ * When the operation is finished, @callback will be called. You can then call -+ * tp_unix_connection_send_credentials_with_byte_finish() to get the result of -+ * the operation. -+ * -+ * Since: 0.UNRELEASED -+ **/ -+void -+tp_unix_connection_send_credentials_with_byte_async ( -+ GSocketConnection *connection, -+ guchar byte, -+ GCancellable *cancellable, -+ GAsyncReadyCallback callback, -+ gpointer user_data) -+{ -+ GSimpleAsyncResult *res; -+ -+ res = g_simple_async_result_new (G_OBJECT (connection), callback, user_data, -+ tp_unix_connection_send_credentials_with_byte_async); -+ g_simple_async_result_set_op_res_gpointer (res, GUINT_TO_POINTER (byte), NULL); -+ -+ g_simple_async_result_run_in_thread (res, -+ send_credentials_with_byte_async_thread, G_PRIORITY_DEFAULT, cancellable); -+ -+ g_object_unref (res); -+} -+ -+/** -+ * tp_unix_connection_send_credentials_with_byte_finish: -+ * @connection: A #GUnixConnection. -+ * @result: a #GAsyncResult. -+ * @error: a #GError, or %NULL -+ * -+ * Finishes an asynchronous send credentials operation started with -+ * tp_unix_connection_send_credentials_with_byte_async(). -+ * -+ * Returns: %TRUE if the operation was successful, otherwise %FALSE. -+ * -+ * Since: 0.UNRELEASED -+ **/ -+gboolean -+tp_unix_connection_send_credentials_with_byte_finish ( -+ GSocketConnection *connection, -+ GAsyncResult *result, -+ GError **error) -+{ -+ _tp_implement_finish_void (connection, -+ tp_unix_connection_send_credentials_with_byte_async); -+} -+ - #ifdef HAVE_GIO_UNIX - static GCredentials * - _tp_unix_connection_receive_credentials_with_byte (GUnixConnection *connection, -@@ -575,3 +655,120 @@ tp_unix_connection_receive_credentials_with_byte (GSocketConnection *connection, - return FALSE; - #endif - } -+ -+typedef struct -+{ -+ GCredentials *creds; -+ guchar byte; -+} ReceiveCredentialsWithByteData; -+ -+static void -+receive_credentials_with_byte_data_free (ReceiveCredentialsWithByteData *data) -+{ -+ g_object_unref (data->creds); -+ g_slice_free (ReceiveCredentialsWithByteData, data); -+} -+ -+static void -+receive_credentials_with_byte_async_thread (GSimpleAsyncResult *res, -+ GObject *object, -+ GCancellable *cancellable) -+{ -+ ReceiveCredentialsWithByteData *data; -+ guchar byte; -+ GCredentials *creds; -+ GError *error = NULL; -+ -+ creds = tp_unix_connection_receive_credentials_with_byte ( -+ (GSocketConnection *) object, &byte, cancellable, &error); -+ if (creds == NULL) -+ { -+ g_simple_async_result_take_error (res, error); -+ return; -+ } -+ -+ data = g_slice_new0 (ReceiveCredentialsWithByteData); -+ data->creds = creds; -+ data->byte = byte; -+ -+ g_simple_async_result_set_op_res_gpointer (res, data, -+ (GDestroyNotify) receive_credentials_with_byte_data_free); -+} -+ -+/** -+ * tp_unix_connection_receive_credentials_with_byte_async: -+ * @connection: A #GUnixConnection. -+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. -+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied -+ * @user_data: (closure): the data to pass to callback function -+ * -+ * Asynchronously receive credentials. -+ * -+ * For more details, see tp_unix_connection_receive_credentials_with_byte() -+ * which is the synchronous version of this call. -+ * -+ * When the operation is finished, @callback will be called. You can then call -+ * tp_unix_connection_receive_credentials_with_byte_finish() to get the result -+ * of the operation. -+ * -+ * Since: 0.UNRELEASED -+ **/ -+void -+tp_unix_connection_receive_credentials_with_byte_async ( -+ GSocketConnection *connection, -+ GCancellable *cancellable, -+ GAsyncReadyCallback callback, -+ gpointer user_data) -+{ -+ GSimpleAsyncResult *res; -+ -+ res = g_simple_async_result_new (G_OBJECT (connection), callback, user_data, -+ tp_unix_connection_receive_credentials_with_byte_async); -+ -+ g_simple_async_result_run_in_thread (res, -+ receive_credentials_with_byte_async_thread, G_PRIORITY_DEFAULT, -+ cancellable); -+ -+ g_object_unref (res); -+} -+ -+/** -+ * tp_unix_connection_receive_credentials_with_byte_finish: -+ * @connection: A #GUnixConnection. -+ * @result: a #GAsyncResult. -+ * @byte: (out): if not %NULL, used to return the byte -+ * @error: a #GError, or %NULL -+ * -+ * Finishes an asynchronous receive credentials operation started with -+ * tp_unix_connection_receive_credentials_with_byte_async(). -+ * -+ * Returns: (transfer full): a #GCredentials, or %NULL on error. -+ * Free the returned object with g_object_unref(). -+ * -+ * Since: 0.UNRELEASED -+ **/ -+GCredentials * -+tp_unix_connection_receive_credentials_with_byte_finish ( -+ GSocketConnection *connection, -+ GAsyncResult *result, -+ guchar *byte, -+ GError **error) -+{ -+ GSimpleAsyncResult *simple = (GSimpleAsyncResult *) result; -+ ReceiveCredentialsWithByteData *data; -+ -+ g_return_val_if_fail (g_simple_async_result_is_valid (result, -+ G_OBJECT (connection), -+ tp_unix_connection_receive_credentials_with_byte_async), -+ NULL); -+ -+ if (g_simple_async_result_propagate_error (simple, error)) -+ return NULL; -+ -+ data = g_simple_async_result_get_op_res_gpointer (simple); -+ -+ if (byte != NULL) -+ *byte = data->byte; -+ -+ return g_object_ref (data->creds); -+} -diff --git a/telepathy-glib/gnio-util.h b/telepathy-glib/gnio-util.h -index 436012a..a6580ab 100644 ---- a/telepathy-glib/gnio-util.h -+++ b/telepathy-glib/gnio-util.h -@@ -41,12 +41,32 @@ gboolean tp_unix_connection_send_credentials_with_byte ( - guchar byte, - GCancellable *cancellable, - GError **error); -+void tp_unix_connection_send_credentials_with_byte_async ( -+ GSocketConnection *connection, -+ guchar byte, -+ GCancellable *cancellable, -+ GAsyncReadyCallback callback, -+ gpointer user_data); -+gboolean tp_unix_connection_send_credentials_with_byte_finish ( -+ GSocketConnection *connection, -+ GAsyncResult *result, -+ GError **error); - - GCredentials * tp_unix_connection_receive_credentials_with_byte ( - GSocketConnection *connection, - guchar *byte, - GCancellable *cancellable, - GError **error); -+void tp_unix_connection_receive_credentials_with_byte_async ( -+ GSocketConnection *connection, -+ GCancellable *cancellable, -+ GAsyncReadyCallback callback, -+ gpointer user_data); -+GCredentials *tp_unix_connection_receive_credentials_with_byte_finish ( -+ GSocketConnection *connection, -+ GAsyncResult *result, -+ guchar *byte, -+ GError **error); - - G_END_DECLS - diff -Nru telepathy-glib-0.17.4/debian/patches/00git_use_async_credentials.patch telepathy-glib-0.17.5/debian/patches/00git_use_async_credentials.patch --- telepathy-glib-0.17.4/debian/patches/00git_use_async_credentials.patch 2012-02-08 10:41:43.000000000 +0000 +++ telepathy-glib-0.17.5/debian/patches/00git_use_async_credentials.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,228 +0,0 @@ -commit 139a0f63b6d832ddbff78fb507e1f21ff36680be -Author: Xavier Claessens -Date: Thu Jan 19 15:47:44 2012 +0100 - - TpStreamTubeChannel: Use async API to send/receive credentials - - This fixes deadlock in unit test where sending and receiving are in - the same process (fd.o#44825). - -diff --git a/telepathy-glib/gnio-util.c b/telepathy-glib/gnio-util.c -index bd34e86..cdf2527 100644 ---- a/telepathy-glib/gnio-util.c -+++ b/telepathy-glib/gnio-util.c -@@ -662,6 +662,19 @@ typedef struct - guchar byte; - } ReceiveCredentialsWithByteData; - -+static ReceiveCredentialsWithByteData * -+receive_credentials_with_byte_data_new (GCredentials *creds, -+ guchar byte) -+{ -+ ReceiveCredentialsWithByteData *data; -+ -+ data = g_slice_new0 (ReceiveCredentialsWithByteData); -+ data->creds = g_object_ref (creds); -+ data->byte = byte; -+ -+ return data; -+} -+ - static void - receive_credentials_with_byte_data_free (ReceiveCredentialsWithByteData *data) - { -@@ -674,7 +687,6 @@ receive_credentials_with_byte_async_thread (GSimpleAsyncResult *res, - GObject *object, - GCancellable *cancellable) - { -- ReceiveCredentialsWithByteData *data; - guchar byte; - GCredentials *creds; - GError *error = NULL; -@@ -687,12 +699,11 @@ receive_credentials_with_byte_async_thread (GSimpleAsyncResult *res, - return; - } - -- data = g_slice_new0 (ReceiveCredentialsWithByteData); -- data->creds = creds; -- data->byte = byte; -- -- g_simple_async_result_set_op_res_gpointer (res, data, -+ g_simple_async_result_set_op_res_gpointer (res, -+ receive_credentials_with_byte_data_new (creds, byte), - (GDestroyNotify) receive_credentials_with_byte_data_free); -+ -+ g_object_unref (creds); - } - - /** -diff --git a/telepathy-glib/stream-tube-channel.c b/telepathy-glib/stream-tube-channel.c -index 3840cc1..45a778a 100644 ---- a/telepathy-glib/stream-tube-channel.c -+++ b/telepathy-glib/stream-tube-channel.c -@@ -616,6 +616,26 @@ new_local_connection_identified (TpStreamTubeChannel *self, - g_array_unref (features); - } - -+#ifdef HAVE_GIO_UNIX -+static void -+send_credentials_cb (GObject *source, -+ GAsyncResult *result, -+ gpointer user_data) -+{ -+ TpStreamTubeChannel *self = user_data; -+ GError *error = NULL; -+ -+ if (!tp_unix_connection_send_credentials_with_byte_finish ( -+ (GSocketConnection *) source, result, &error)) -+ { -+ DEBUG ("Failed to send credentials: %s", error->message); -+ -+ operation_failed (self, error); -+ g_clear_error (&error); -+ } -+} -+#endif -+ - static void - client_socket_connected (TpStreamTubeChannel *self) - { -@@ -631,20 +651,10 @@ client_socket_connected (TpStreamTubeChannel *self) - if (self->priv->access_control == TP_SOCKET_ACCESS_CONTROL_CREDENTIALS) - { - guchar byte; -- GError *error = NULL; - - byte = g_value_get_uchar (self->priv->access_control_param); -- -- /* FIXME: we should an async version of this API (bgo #629503) */ -- if (!tp_unix_connection_send_credentials_with_byte ( -- conn, byte, NULL, &error)) -- { -- DEBUG ("Failed to send credentials: %s", error->message); -- -- operation_failed (self, error); -- g_clear_error (&error); -- return; -- } -+ tp_unix_connection_send_credentials_with_byte_async (conn, byte, NULL, -+ send_credentials_cb, self); - } - #endif - -@@ -1263,47 +1273,12 @@ find_sig_for_conn (TpStreamTubeChannel *self, - } - - static void --service_incoming_cb (GSocketService *service, -+credentials_received (TpStreamTubeChannel *self, - GSocketConnection *conn, -- GObject *source_object, -- gpointer user_data) -+ guchar byte) - { -- TpStreamTubeChannel *self = user_data; - SigWaitingConn *sig; - ConnWaitingSig *c; -- guchar byte = 0; -- -- DEBUG ("New incoming connection"); -- --#ifdef HAVE_GIO_UNIX -- /* Check the credentials if needed */ -- if (self->priv->access_control == TP_SOCKET_ACCESS_CONTROL_CREDENTIALS) -- { -- GCredentials *creds; -- uid_t uid; -- GError *error = NULL; -- -- /* FIXME: we should an async version of this API (bgo #629503) */ -- creds = tp_unix_connection_receive_credentials_with_byte ( -- conn, &byte, NULL, &error); -- if (creds == NULL) -- { -- DEBUG ("Failed to receive credentials: %s", error->message); -- -- g_error_free (error); -- return; -- } -- -- uid = g_credentials_get_unix_user (creds, &error); -- g_object_unref (creds); -- -- if (uid != geteuid ()) -- { -- DEBUG ("Wrong credentials received (user: %u)", uid); -- return; -- } -- } --#endif - - c = conn_waiting_sig_new (conn, byte); - -@@ -1332,6 +1307,65 @@ service_incoming_cb (GSocketService *service, - conn_waiting_sig_free (c); - } - -+#ifdef HAVE_GIO_UNIX -+static void -+receive_credentials_cb (GObject *source, -+ GAsyncResult *result, -+ gpointer user_data) -+{ -+ TpStreamTubeChannel *self = user_data; -+ GSocketConnection *conn = (GSocketConnection *) source; -+ GCredentials *creds; -+ guchar byte; -+ uid_t uid; -+ GError *error = NULL; -+ -+ creds = tp_unix_connection_receive_credentials_with_byte_finish (conn, result, -+ &byte, &error); -+ -+ if (creds == NULL) -+ { -+ DEBUG ("Failed to receive credentials: %s", error->message); -+ g_error_free (error); -+ return; -+ } -+ -+ uid = g_credentials_get_unix_user (creds, &error); -+ if (uid != geteuid ()) -+ { -+ DEBUG ("Wrong credentials received (user: %u)", uid); -+ return; -+ } -+ -+ credentials_received (self, conn, byte); -+ -+ g_object_unref (creds); -+} -+#endif -+ -+static void -+service_incoming_cb (GSocketService *service, -+ GSocketConnection *conn, -+ GObject *source_object, -+ gpointer user_data) -+{ -+ TpStreamTubeChannel *self = user_data; -+ -+ DEBUG ("New incoming connection"); -+ -+#ifdef HAVE_GIO_UNIX -+ /* Check the credentials if needed */ -+ if (self->priv->access_control == TP_SOCKET_ACCESS_CONTROL_CREDENTIALS) -+ { -+ tp_unix_connection_receive_credentials_with_byte_async (conn, NULL, -+ receive_credentials_cb, self); -+ return; -+ } -+#endif -+ -+ credentials_received (self, conn, 0); -+} -+ - /** - * tp_stream_tube_channel_offer_async: - * @self: an outgoing #TpStreamTubeChannel diff -Nru telepathy-glib-0.17.4/debian/patches/disable_unversioned_symbols_abort.patch telepathy-glib-0.17.5/debian/patches/disable_unversioned_symbols_abort.patch --- telepathy-glib-0.17.4/debian/patches/disable_unversioned_symbols_abort.patch 2012-02-08 14:12:09.000000000 +0000 +++ telepathy-glib-0.17.5/debian/patches/disable_unversioned_symbols_abort.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -Index: telepathy-glib-0.17.4/tools/make-version-script.py -=================================================================== ---- telepathy-glib-0.17.4.orig/tools/make-version-script.py 2010-10-01 10:07:35.000000000 +0200 -+++ telepathy-glib-0.17.4/tools/make-version-script.py 2012-02-08 15:12:03.776637088 +0100 -@@ -179,7 +179,7 @@ - for symbol in unreleased: - e(' %s', symbol) - -- raise SystemExit(1) -+ #raise SystemExit(1) - - if gnuld: - print "%s {" % unreleased_version diff -Nru telepathy-glib-0.17.4/debian/patches/series telepathy-glib-0.17.5/debian/patches/series --- telepathy-glib-0.17.4/debian/patches/series 2012-02-08 14:11:52.000000000 +0000 +++ telepathy-glib-0.17.5/debian/patches/series 2012-02-22 18:14:48.000000000 +0000 @@ -1,4 +1 @@ -00git_async_credential_api.patch -00git_use_async_credentials.patch ludicrous-timeout-for-lp-buildd.patch -disable_unversioned_symbols_abort.patch diff -Nru telepathy-glib-0.17.4/depcomp telepathy-glib-0.17.5/depcomp --- telepathy-glib-0.17.4/depcomp 2011-11-24 09:26:21.000000000 +0000 +++ telepathy-glib-0.17.5/depcomp 2012-02-01 12:09:15.000000000 +0000 @@ -1,10 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2009-04-28.21; # UTC +scriptversion=2011-12-04.11; # 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 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 @@ -44,7 +44,7 @@ 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 . @@ -90,10 +90,18 @@ # 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 + case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what @@ -158,10 +166,12 @@ ' < "$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" ;; @@ -405,6 +415,52 @@ 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/\(.*\)/ \1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/ / + 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. @@ -503,7 +559,9 @@ touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" + # 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 ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation diff -Nru telepathy-glib-0.17.4/docs/Makefile.in telepathy-glib-0.17.5/docs/Makefile.in --- telepathy-glib-0.17.4/docs/Makefile.in 2011-12-19 15:18:53.000000000 +0000 +++ telepathy-glib-0.17.5/docs/Makefile.in 2012-02-20 17:31:08.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -50,11 +50,11 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = 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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -516,10 +516,15 @@ 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: diff -Nru telepathy-glib-0.17.4/docs/reference/html/annotation-glossary.html telepathy-glib-0.17.5/docs/reference/html/annotation-glossary.html --- telepathy-glib-0.17.4/docs/reference/html/annotation-glossary.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/annotation-glossary.html 2012-02-20 17:31:30.000000000 +0000 @@ -22,8 +22,12 @@ O  |  + S +  |  A  |  + C +  |  T  |  A @@ -44,10 +48,18 @@
out

Parameter for returning results. Default is transfer full.

+

S

+
+scope async
+

The callback is valid until first called.

A

allow-none

NULL is ok, both for passing and for returning.

+

C

+
+closure
+

This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.

T

transfer none
diff -Nru telepathy-glib-0.17.4/docs/reference/html/ch-client.html telepathy-glib-0.17.5/docs/reference/html/ch-client.html --- telepathy-glib-0.17.4/docs/reference/html/ch-client.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/ch-client.html 2012-02-20 17:31:30.000000000 +0000 @@ -85,6 +85,9 @@ Connection PowerSaving interface — client-side wrappers for the PowerSaving interface
+Connection Addressing interface — client-side wrappers for the Addressing interface +
+
TpContactSearch — object for a Telepathy contact search channel
@@ -127,6 +130,18 @@ Channel Authentication interfaces — client-side wrappers for authentication channels
+Channel Call interfaces — client-side wrappers for call channels +
+
+Channel Call content interfaces — client-side wrappers for call contents +
+
+Channel Call stream interfaces — client-side wrappers for call streams +
+
+Channel Call misc interfaces — client-side wrappers for misc call interfaces +
+
Connection and Channel Anonymity interfaces — client-side wrappers for the Anonymity interfaces
@@ -196,6 +211,18 @@
TpFileTransferChannel — proxy object for a file transfer channel
+
+TpCallChannel — proxy object for a call channel +
+
+TpCallContent — proxy object for a call content +
+
+TpCallStream — proxy object for a call stream +
+
+Misc Call APIs — Misc generated APISs for Call +

- This manual documents telepathy-glib version 0.17.4 + This manual documents telepathy-glib version 0.17.5 . The latest development version of this documentation can be found here: online copy of the telepathy-glib API Reference Manual. @@ -140,6 +140,9 @@ Connection PowerSaving interface — client-side wrappers for the PowerSaving interface

+Connection Addressing interface — client-side wrappers for the Addressing interface +
+
TpContactSearch — object for a Telepathy contact search channel
@@ -182,6 +185,18 @@ Channel Authentication interfaces — client-side wrappers for authentication channels
+Channel Call interfaces — client-side wrappers for call channels +
+
+Channel Call content interfaces — client-side wrappers for call contents +
+
+Channel Call stream interfaces — client-side wrappers for call streams +
+
+Channel Call misc interfaces — client-side wrappers for misc call interfaces +
+
Connection and Channel Anonymity interfaces — client-side wrappers for the Anonymity interfaces
@@ -251,6 +266,18 @@
TpFileTransferChannel — proxy object for a file transfer channel
+
+TpCallChannel — proxy object for a call channel +
+
+TpCallContent — proxy object for a call content +
+
+TpCallStream — proxy object for a call stream +
+
+Misc Call APIs — Misc generated APISs for Call +
Service-side D-Bus interfaces
@@ -310,6 +337,9 @@ Service-side Securable interface — GInterface to indicate channels' security level
+Service-side Channel Call interface — GInterface to implement call channels +
+
Service-side Debug base interface — GInterface for Telepathy Debug objects
@@ -443,6 +473,32 @@
DTMF dialstring interpreter — Converts a dialstring into a timed sequence of events
+
+TpBaseCallChannel — base class for TpSvcChannelTypeCall implementations +
+
+TpBaseMediaCallChannel — base class for TpSvcChannelTypeCall RTP media implementations +
+
+TpBaseCallContent — base class for TpSvcCallContent implementations +
+
+TpBaseMediaCallContent — base class for TpSvcCallContentInterfaceMedia + implementations +
+
+TpCallContentMediaDescription — implementation of TpSvcCallContentMediaDescription +
+
+TpBaseCallStream — base class for TpSvcCallStream implementations +
+
+TpBaseMediaCallStream — base class for TpSvcCallStreamInterfaceMedia + implementations +
+
+TpCallStreamEndpoint — class for TpSvcCallStreamEndpoint implementations +
Service-side handle repositories
diff -Nru telepathy-glib-0.17.4/docs/reference/html/index.sgml telepathy-glib-0.17.5/docs/reference/html/index.sgml --- telepathy-glib-0.17.4/docs/reference/html/index.sgml 2011-12-19 15:20:41.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/index.sgml 2012-02-20 17:31:29.000000000 +0000 @@ -317,6 +317,8 @@ + + @@ -359,6 +361,8 @@ + + @@ -387,6 +391,8 @@ + + @@ -445,6 +451,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -474,11 +504,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -494,6 +583,10 @@ + + + + @@ -571,6 +664,20 @@ + + + + + + + + + + + + + + @@ -636,6 +743,7 @@ + @@ -682,6 +790,8 @@ + + @@ -695,6 +805,12 @@ + + + + + + @@ -1076,6 +1192,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1139,6 +1364,7 @@ + @@ -1195,6 +1421,7 @@ + @@ -1263,6 +1490,8 @@ + + @@ -1296,6 +1525,9 @@ + + + @@ -1327,6 +1559,9 @@ + + + @@ -1337,6 +1572,23 @@ + + + + + + + + + + + + + + + + + @@ -1501,6 +1753,8 @@ + + @@ -1913,11 +2167,13 @@ + + @@ -2045,6 +2301,15 @@ + + + + + + + + + @@ -2512,6 +2777,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2721,6 +3144,7 @@ + @@ -2785,6 +3209,7 @@ + @@ -3197,6 +3622,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3471,6 +4009,7 @@ + @@ -3690,6 +4229,7 @@ + @@ -3716,6 +4256,20 @@ + + + + + + + + + + + + + + @@ -3727,6 +4281,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3764,6 +4530,7 @@ + @@ -3995,11 +4762,13 @@ + + @@ -4008,6 +4777,7 @@ + @@ -4043,6 +4813,14 @@ + + + + + + + + @@ -4765,12 +5543,14 @@ + + @@ -5247,6 +6027,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5385,7 +6397,11 @@ + + + + @@ -5543,7 +6559,9 @@ + + diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-account-channel-request.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-account-channel-request.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-account-channel-request.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-account-channel-request.html 2012-02-20 17:31:29.000000000 +0000 @@ -50,10 +50,10 @@ TpAccountChannelRequest * tp_account_channel_request_new (TpAccount *account, GHashTable *request, - gint64 user_action_time); + gint64 user_action_time); GHashTable * tp_account_channel_request_get_request (TpAccountChannelRequest *self); -gint64 tp_account_channel_request_get_user_action_time +gint64 tp_account_channel_request_get_user_action_time (TpAccountChannelRequest *self); TpAccount * tp_account_channel_request_get_account (TpAccountChannelRequest *self); @@ -152,7 +152,7 @@ "account" TpAccount* : Read / Write / Construct Only "channel-request" TpChannelRequest* : Read "request" GHashTable_gchararray+GValue_* : Read / Write / Construct Only - "user-action-time" gint64 : Read / Write / Construct Only + "user-action-time" gint64 : Read / Write / Construct Only
@@ -196,7 +196,7 @@
TpAccountChannelRequest * tp_account_channel_request_new
                                                         (TpAccount *account,
                                                          GHashTable *request,
-                                                         gint64 user_action_time);
+ gint64 user_action_time);

Convenience function to create a new TpAccountChannelRequest object.

@@ -257,7 +257,7 @@

tp_account_channel_request_get_user_action_time ()

-
gint64              tp_account_channel_request_get_user_action_time
+
gint64              tp_account_channel_request_get_user_action_time
                                                         (TpAccountChannelRequest *self);

Return the "user-action-time" construct-only property @@ -1166,7 +1166,7 @@


The "user-action-time" property

-
  "user-action-time"         gint64                : Read / Write / Construct Only
+
  "user-action-time"         gint64                : Read / Write / Construct Only

The user action time that will be passed to the channel dispatcher when requesting the channel. @@ -1207,7 +1207,7 @@

The "re-handled" signal

void                user_function                      (TpAccountChannelRequest *self,
                                                         TpChannel               *channel,
-                                                        gint64                   user_action_time,
+                                                        gint64                   user_action_time,
                                                         TpHandleChannelsContext *context,
                                                         gpointer                 user_data)             : Has Details

diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-account.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-account.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-account.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-account.html 2012-02-20 17:31:30.000000000 +0000 @@ -177,6 +177,7 @@ GAsyncResult *result, GError **error); const gchar * tp_account_get_normalized_name (TpAccount *self); +const gchar * const * tp_account_get_supersedes (TpAccount *self); void tp_account_get_avatar_async (TpAccount *account, GAsyncReadyCallback callback, gpointer user_data); @@ -185,7 +186,7 @@ GError **error); void tp_account_set_avatar_async (TpAccount *self, const guchar *avatar, - gsize len, + gsize len, const gchar *mime_type, GAsyncReadyCallback callback, gpointer user_data); @@ -369,6 +370,7 @@ "storage-identifier" GValue* : Read "storage-provider" gchar* : Read "storage-restrictions" guint : Read + "supersedes" GStrv : Read "valid" gboolean : Read

@@ -1970,6 +1972,35 @@

+

tp_account_get_supersedes ()

+
const gchar * const * tp_account_get_supersedes         (TpAccount *self);
+

+Return the same thing as the "supersedes" property, in a way +that may be more convenient for C code. +

+

+The returned pointers are not guaranteed to remain valid after the +main loop has been re-entered. +

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

self :

a TpAccount +

Returns :

the same as the "supersedes" property. [transfer none] +
+

Since 0.17.5

+
+
+

tp_account_get_avatar_async ()

void                tp_account_get_avatar_async         (TpAccount *account,
                                                          GAsyncReadyCallback callback,
@@ -2009,6 +2040,10 @@
 

Finishes an async get operation of account's avatar.

+

+Beware that the returned value is only valid until result is freed. +Copy it with g_array_ref() if you need to keep it for longer. +

@@ -2029,7 +2064,7 @@ @@ -2041,7 +2076,7 @@

tp_account_set_avatar_async ()

void                tp_account_set_avatar_async         (TpAccount *self,
                                                          const guchar *avatar,
-                                                         gsize len,
+                                                         gsize len,
                                                          const gchar *mime_type,
                                                          GAsyncReadyCallback callback,
                                                          gpointer user_data);
@@ -2666,6 +2701,10 @@ Retrieve the value of the request begun with tp_account_get_storage_specific_information_async().

+

+Beware that the returned value is only valid until result is freed. +Copy it with g_hash_table_ref() if you need to keep it for longer. +

Returns :

a GArray of guchar -containing the bytes of the account's avatar, or NULL on failure. [element-type guchar] +containing the bytes of the account's avatar, or NULL on failure. [element-type guchar][transfer none]
@@ -4011,6 +4050,22 @@
+

The "supersedes" property

+
  "supersedes"               GStrv                 : Read
+

+The object paths of previously-active accounts superseded by this one. +For instance, this can be used in a logger to read old logs for an +account that has been migrated from one connection manager to another. +

+

+This is not guaranteed to have been retrieved until the +TP_ACCOUNT_FEATURE_CORE feature has been prepared; until then, +the value is NULL. +

+

Since 0.17.5

+
+
+

The "valid" property

  "valid"                    gboolean              : Read

diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-account-manager.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-account-manager.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-account-manager.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-account-manager.html 2012-02-20 17:31:30.000000000 +0000 @@ -186,208 +186,8 @@

- - + +
1
-2
-3
-4
-5
-6
-7
-8
-9
-10
-11
-12
-13
-14
-15
-16
-17
-18
-19
-20
-21
-22
-23
-24
-25
-26
-27
-28
-29
-30
-31
-32
-33
-34
-35
-36
-37
-38
-39
-40
-41
-42
-43
-44
-45
-46
-47
-48
-49
-50
-51
-52
-53
-54
-55
-56
-57
-58
-59
-60
-61
-62
-63
-64
-65
-66
-67
-68
-69
-70
-71
-72
-73
-74
-75
-76
-77
-78
-79
-80
-81
-82
-83
-84
-85
-86
-87
-88
-89
-90
-91
-92
-93
-94
-95
-96
-97
-98
-99
-100
-101
/*
- * contact-list
- *
- * Copyright © 2011 Collabora Ltd. <http://www.collabora.co.uk/>
- *
- * Copying and distribution of this file, with or without modification,
- * are permitted in any medium without royalty provided the copyright
- * notice and this notice are preserved.
- */
-
-#include <telepathy-glib/telepathy-glib.h>
-#include <telepathy-glib/debug.h>
-
-static void
-account_manager_prepared_cb (GObject *object,
-    GAsyncResult *res,
-    gpointer user_data)
-{
-  TpAccountManager *manager = (TpAccountManager *) object;
-  GMainLoop *loop = user_data;  
-  GList *accounts;
-  GError *error = NULL;
-
-  if (!tp_proxy_prepare_finish (object, res, &error))
-    {
-      g_print ("Error preparing AM: %s\n", error->message);
-      goto OUT;
-    }
-
-  for (accounts = tp_account_manager_get_valid_accounts (manager);
-       accounts != NULL; accounts = g_list_delete_link (accounts, accounts))
-    {
-      TpAccount *account = accounts->data;
-      TpConnection *connection = tp_account_get_connection (account);
-      GPtrArray *contacts;
-      guint i;
-
-      /* Verify account is online and received its contact list. If state is not
-       * SUCCESS this means we didn't received the roster from server yet and
-       * we would have to wait for the "notify:contact-list-state" signal. */
-      if (connection == NULL ||
-          tp_connection_get_contact_list_state (connection) !=
-              TP_CONTACT_LIST_STATE_SUCCESS)
-        continue;
-
-      contacts = tp_connection_dup_contact_list (connection);
-      for (i = 0; i < contacts->len; i++)
-        {
-          TpContact *contact = g_ptr_array_index (contacts, i);
-          const gchar * const *groups;
-
-          g_print ("contact %s (%s) in groups:\n",
-              tp_contact_get_identifier (contact),
-              tp_contact_get_alias (contact));
-
-          for (groups = tp_contact_get_contact_groups (contact);
-               *groups != NULL; groups++)
-            g_print ("  %s\n", *groups);
-        }
-      g_ptr_array_unref (contacts);
-    }
-
-OUT:
-  g_main_loop_quit (loop);
-}
-
-int
-main (int argc,
-      char **argv)
-{
-  TpAccountManager *manager;
-  TpSimpleClientFactory *factory;
-  GMainLoop *loop;
-
-  g_type_init ();
-  tp_debug_set_flags (g_getenv ("EXAMPLE_DEBUG"));
-
-  loop = g_main_loop_new (NULL, FALSE);
-
-  manager = tp_account_manager_dup ();
-  factory = tp_proxy_get_factory (manager);
-  tp_simple_client_factory_add_account_features_varargs (factory,
-      TP_ACCOUNT_FEATURE_CONNECTION,
-      0);
-  tp_simple_client_factory_add_connection_features_varargs (factory,
-      TP_CONNECTION_FEATURE_CONTACT_LIST,
-      0);
-  tp_simple_client_factory_add_contact_features_varargs (factory,
-      TP_CONTACT_FEATURE_ALIAS,
-      TP_CONTACT_FEATURE_CONTACT_GROUPS,
-      TP_CONTACT_FEATURE_INVALID);
-
-  tp_proxy_prepare_async (manager, NULL, account_manager_prepared_cb, loop);
-
-  g_main_loop_run (loop);
-
-  g_object_unref (manager);
-  g_main_loop_unref (loop);
-
-  return 0;
-}
1
FIXME: MISSING XINCLUDE CONTENT
@@ -617,7 +417,7 @@

The caller must keep a ref to the returned object using g_object_ref() if -it is to be kept. +it is to be kept beyond the lifetime of result.

@@ -712,9 +512,9 @@ - +
1
 2
 3
GList *accounts;
-account = tp_account_manager_get_valid_accounts (manager);
-g_list_foreach (accounts, (GFunc) g_object_ref, NULL);
GList *accounts;
+account = tp_account_manager_get_valid_accounts (manager);
+g_list_foreach (accounts, (GFunc) g_object_ref, NULL);
@@ -769,6 +569,11 @@ (TP_CONNECTION_PRESENCE_TYPE_OFFLINE, "offline", "").

+Since 0.17.5, if the only connected accounts does not implement +TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, the output will be +(TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, "available", ""). +

+

The return value of this function is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value will be the same as if no accounts are enabled or valid. diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-asv.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-asv.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-asv.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-asv.html 2012-02-20 17:31:30.000000000 +0000 @@ -81,18 +81,18 @@ void tp_asv_set_double (GHashTable *asv, const gchar *key, gdouble value); -gint32 tp_asv_get_int32 (const GHashTable *asv, +gint32 tp_asv_get_int32 (const GHashTable *asv, const gchar *key, gboolean *valid); void tp_asv_set_int32 (GHashTable *asv, const gchar *key, - gint32 value); -gint64 tp_asv_get_int64 (const GHashTable *asv, + gint32 value); +gint64 tp_asv_get_int64 (const GHashTable *asv, const gchar *key, gboolean *valid); void tp_asv_set_int64 (GHashTable *asv, const gchar *key, - gint64 value); + gint64 value); const gchar * tp_asv_get_object_path (const GHashTable *asv, const gchar *key); void tp_asv_set_object_path (GHashTable *asv, @@ -120,18 +120,18 @@ void tp_asv_set_strv (GHashTable *asv, const gchar *key, gchar **value); -guint32 tp_asv_get_uint32 (const GHashTable *asv, +guint32 tp_asv_get_uint32 (const GHashTable *asv, const gchar *key, gboolean *valid); void tp_asv_set_uint32 (GHashTable *asv, const gchar *key, - guint32 value); -guint64 tp_asv_get_uint64 (const GHashTable *asv, + guint32 value); +guint64 tp_asv_get_uint64 (const GHashTable *asv, const gchar *key, gboolean *valid); void tp_asv_set_uint64 (GHashTable *asv, const gchar *key, - guint64 value); + guint64 value); const GValue * tp_asv_lookup (const GHashTable *asv, const gchar *key); void tp_asv_dump (GHashTable *asv); @@ -198,8 +198,8 @@

1
 2
-
GHashTable *asv = g_hash_table_new_full (g_str_hash, g_str_equal,
-   NULL, (GDestroyNotify) tp_g_value_slice_free);
+
GHashTable *asv = g_hash_table_new_full (g_str_hash, g_str_equal,
+   NULL, (GDestroyNotify) tp_g_value_slice_free);
@@ -222,8 +222,8 @@
1
 2
-
g_hash_table_insert (parameters, "account",
-   tp_g_value_slice_new_string ("bob@mcbadgers.com"));
+
g_hash_table_insert (parameters, "account",
+   tp_g_value_slice_new_string ("bob@mcbadgers.com"));
@@ -234,7 +234,7 @@

-

Example 1. Using tp_asv_new()

+

Example 1. Using tp_asv_new()

@@ -243,10 +243,10 @@ 2 3 4 - +
GHashTable *parameters = tp_asv_new (
-   "answer", G_TYPE_INT, 42,
-   "question", G_TYPE_STRING, "We just don't know",
-   NULL);
GHashTable *parameters = tp_asv_new (
+   "answer", G_TYPE_INT, 42,
+   "question", G_TYPE_STRING, "We just don't know",
+   NULL);
@@ -723,7 +723,7 @@

tp_asv_get_int32 ()

-
gint32              tp_asv_get_int32                    (const GHashTable *asv,
+
gint32              tp_asv_get_int32                    (const GHashTable *asv,
                                                          const gchar *key,
                                                          gboolean *valid);

@@ -767,7 +767,7 @@

tp_asv_set_int32 ()

void                tp_asv_set_int32                    (GHashTable *asv,
                                                          const gchar *key,
-                                                         gint32 value);
+ gint32 value);

Stores the value in the map.

@@ -800,7 +800,7 @@

tp_asv_get_int64 ()

-
gint64              tp_asv_get_int64                    (const GHashTable *asv,
+
gint64              tp_asv_get_int64                    (const GHashTable *asv,
                                                          const gchar *key,
                                                          gboolean *valid);

@@ -844,7 +844,7 @@

tp_asv_set_int64 ()

void                tp_asv_set_int64                    (GHashTable *asv,
                                                          const gchar *key,
-                                                         gint64 value);
+ gint64 value);

Stores the value in the map.

@@ -1244,7 +1244,7 @@

tp_asv_get_uint32 ()

-
guint32             tp_asv_get_uint32                   (const GHashTable *asv,
+
guint32             tp_asv_get_uint32                   (const GHashTable *asv,
                                                          const gchar *key,
                                                          gboolean *valid);

@@ -1288,7 +1288,7 @@

tp_asv_set_uint32 ()

void                tp_asv_set_uint32                   (GHashTable *asv,
                                                          const gchar *key,
-                                                         guint32 value);
+ guint32 value);

Stores the value in the map.

@@ -1321,7 +1321,7 @@

tp_asv_get_uint64 ()

-
guint64             tp_asv_get_uint64                   (const GHashTable *asv,
+
guint64             tp_asv_get_uint64                   (const GHashTable *asv,
                                                          const gchar *key,
                                                          gboolean *valid);

@@ -1364,7 +1364,7 @@

tp_asv_set_uint64 ()

void                tp_asv_set_uint64                   (GHashTable *asv,
                                                          const gchar *key,
-                                                         guint64 value);
+ guint64 value);

Stores the value in the map.

diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-automatic-client-factory.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-automatic-client-factory.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-automatic-client-factory.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-automatic-client-factory.html 2012-02-20 17:31:29.000000000 +0000 @@ -78,6 +78,8 @@ TP_IFACE_CHANNEL_INTERFACE_MESSAGES;

  • a TpFileTransferChannel, if the channel is of type TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER;

  • +
  • a TpCallChannel, if the channel is of type + TP_IFACE_CHANNEL_TYPE_CALL;

  • a plain TpChannel, otherwise

  • @@ -100,6 +102,8 @@ TP_TEXT_CHANNEL_FEATURE_SMS for TpTextChannel

  • TP_FILE_TRANSFER_CHANNEL_FEATURE_CORE for TpFileTransferChannel

  • +
  • TP_CALL_CHANNEL_FEATURE_CORE + for TpCallChannel

  • diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-base-client.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-base-client.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-base-client.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-base-client.html 2012-02-20 17:31:29.000000000 +0000 @@ -105,14 +105,14 @@ TpConnection *connection, GList *channels, GList *requests_satisfied, - gint64 user_action_time, + gint64 user_action_time, TpHandleChannelsContext *context); void tp_base_client_implement_handle_channels (TpBaseClientClass *klass, TpBaseClientClassHandleChannelsImpl impl); void tp_base_client_add_account_features (TpBaseClient *self, const GQuark *features, - gssize n); + gssize n); void tp_base_client_add_account_features_varargs (TpBaseClient *self, GQuark feature, @@ -120,14 +120,14 @@ void tp_base_client_add_connection_features (TpBaseClient *self, const GQuark *features, - gssize n); + gssize n); void tp_base_client_add_connection_features_varargs (TpBaseClient *self, GQuark feature, ...); void tp_base_client_add_channel_features (TpBaseClient *self, const GQuark *features, - gssize n); + gssize n); void tp_base_client_add_channel_features_varargs (TpBaseClient *self, GQuark feature, @@ -138,7 +138,7 @@ void tp_base_client_delegate_channels_async (TpBaseClient *self, GList *channels, - gint64 user_action_time, + gint64 user_action_time, const gchar *preferred_handler, GAsyncReadyCallback callback, gpointer user_data); @@ -159,7 +159,7 @@ void tp_channel_dispatcher_present_channel_async (TpChannelDispatcher *self, TpChannel *channel, - gint64 user_action_time, + gint64 user_action_time, GAsyncReadyCallback callback, gpointer user_data); gboolean tp_channel_dispatcher_present_channel_finish @@ -346,13 +346,13 @@ 5 6 7
    -
    tp_base_client_take_observer_filter (client,
    -   tp_asv_new (
    -       TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
    -           TP_IFACE_CHANNEL_TYPE_TEXT,
    -       TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
    -           TP_HANDLE_TYPE_CONTACT,
    -       ...));
    +
    tp_base_client_take_observer_filter (client,
    +   tp_asv_new (
    +       TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
    +           TP_IFACE_CHANNEL_TYPE_TEXT,
    +       TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
    +           TP_HANDLE_TYPE_CONTACT,
    +       ...));
    @@ -609,13 +609,13 @@ 5 6 7 -
    tp_base_client_take_approver_filter (client,
    -   tp_asv_new (
    -       TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
    -           TP_IFACE_CHANNEL_TYPE_TEXT,
    -       TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
    -           TP_HANDLE_TYPE_CONTACT,
    -       ...));
    +
    tp_base_client_take_approver_filter (client,
    +   tp_asv_new (
    +       TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
    +           TP_IFACE_CHANNEL_TYPE_TEXT,
    +       TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
    +           TP_HANDLE_TYPE_CONTACT,
    +       ...));
    @@ -894,13 +894,13 @@ 5 6 7 -
    tp_base_client_take_handler_filter (client,
    -   tp_asv_new (
    -       TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
    -           TP_IFACE_CHANNEL_TYPE_TEXT,
    -       TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
    -           TP_HANDLE_TYPE_CONTACT,
    -       ...));
    +
    tp_base_client_take_handler_filter (client,
    +   tp_asv_new (
    +       TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
    +           TP_IFACE_CHANNEL_TYPE_TEXT,
    +       TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT,
    +           TP_HANDLE_TYPE_CONTACT,
    +       ...));
    @@ -958,7 +958,7 @@ TpConnection *connection, GList *channels, GList *requests_satisfied, - gint64 user_action_time, + gint64 user_action_time, TpHandleChannelsContext *context);

    Signature of the implementation of the HandleChannels method. @@ -1055,7 +1055,7 @@

    tp_base_client_add_account_features ()

    void                tp_base_client_add_account_features (TpBaseClient *self,
                                                              const GQuark *features,
    -                                                         gssize n);
    + gssize n);

    Warning

    tp_base_client_add_account_features is deprecated and should not be used in newly-written code. New code should use @@ -1130,7 +1130,7 @@

    void                tp_base_client_add_connection_features
                                                             (TpBaseClient *self,
                                                              const GQuark *features,
    -                                                         gssize n);
    + gssize n);

    Warning

    tp_base_client_add_connection_features is deprecated and should not be used in newly-written code. New code should use @@ -1203,7 +1203,7 @@

    tp_base_client_add_channel_features ()

    void                tp_base_client_add_channel_features (TpBaseClient *self,
                                                              const GQuark *features,
    -                                                         gssize n);
    + gssize n);

    Warning

    tp_base_client_add_channel_features is deprecated and should not be used in newly-written code. New code should use @@ -1333,7 +1333,7 @@

    void                tp_base_client_delegate_channels_async
                                                             (TpBaseClient *self,
                                                              GList *channels,
    -                                                         gint64 user_action_time,
    +                                                         gint64 user_action_time,
                                                              const gchar *preferred_handler,
                                                              GAsyncReadyCallback callback,
                                                              gpointer user_data);
    @@ -1519,7 +1519,7 @@
    void                tp_channel_dispatcher_present_channel_async
                                                             (TpChannelDispatcher *self,
                                                              TpChannel *channel,
    -                                                         gint64 user_action_time,
    +                                                         gint64 user_action_time,
                                                              GAsyncReadyCallback callback,
                                                              gpointer user_data);

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-base-contact-list.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-base-contact-list.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-base-contact-list.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-base-contact-list.html 2012-02-20 17:31:29.000000000 +0000 @@ -203,22 +203,22 @@ void tp_base_contact_list_groups_changed (TpBaseContactList *self, TpHandleSet *contacts, const gchar * const *added, - gssize n_added, + gssize n_added, const gchar * const *removed, - gssize n_removed); + gssize n_removed); void tp_base_contact_list_one_contact_groups_changed (TpBaseContactList *self, TpHandle contact, const gchar * const *added, - gssize n_added, + gssize n_added, const gchar * const *removed, - gssize n_removed); + gssize n_removed); void tp_base_contact_list_groups_created (TpBaseContactList *self, const gchar * const *created, - gssize n_created); + gssize n_created); void tp_base_contact_list_groups_removed (TpBaseContactList *self, const gchar * const *removed, - gssize n_removed); + gssize n_removed); gboolean tp_base_contact_list_has_disjoint_groups (TpBaseContactList *self); @@ -228,14 +228,14 @@ (TpBaseContactList *self, TpHandle contact, const gchar * const *normalized_names, - gsize n_names, + gsize n_names, GAsyncReadyCallback callback, gpointer user_data); void tp_base_contact_list_set_contact_groups_async (TpBaseContactList *self, TpHandle contact, const gchar * const *normalized_names, - gsize n_names, + gsize n_names, GAsyncReadyCallback callback, gpointer user_data); gboolean tp_base_contact_list_set_contact_groups_finish @@ -405,13 +405,13 @@ 5 6 7 -

    G_DEFINE_TYPE_WITH_CODE (MyConnection, my_connection,
    -    TP_TYPE_BASE_CONNECTION,
    -    // ...
    -    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACT_LIST,
    -        tp_base_contact_list_mixin_list_iface_init);
    -    // ...
    -    )
    +
    G_DEFINE_TYPE_WITH_CODE (MyConnection, my_connection,
    +    TP_TYPE_BASE_CONNECTION,
    +    // ...
    +    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACT_LIST,
    +        tp_base_contact_list_mixin_list_iface_init);
    +    // ...
    +    )
    @@ -431,11 +431,11 @@ 3 4 5 -
    // ...
    -tp_contacts_mixin_class_init (object_class,
    -    G_STRUCT_OFFSET (MyConnectionClass, contacts_mixin));
    -tp_base_contact_list_mixin_class_init (base_connection_class);
    -// ...
    +
    // ...
    +tp_contacts_mixin_class_init (object_class,
    +    G_STRUCT_OFFSET (MyConnectionClass, contacts_mixin));
    +tp_base_contact_list_mixin_class_init (base_connection_class);
    +// ...
    @@ -2537,9 +2537,9 @@
    void                tp_base_contact_list_groups_changed (TpBaseContactList *self,
                                                              TpHandleSet *contacts,
                                                              const gchar * const *added,
    -                                                         gssize n_added,
    +                                                         gssize n_added,
                                                              const gchar * const *removed,
    -                                                         gssize n_removed);
    + gssize n_removed);

    Called by subclasses when groups' membership has been changed.

    @@ -2597,9 +2597,9 @@ (TpBaseContactList *self, TpHandle contact, const gchar * const *added, - gssize n_added, + gssize n_added, const gchar * const *removed, - gssize n_removed); + gssize n_removed);

    Convenience wrapper around tp_base_contact_list_groups_changed() for a single handle in the 'contacts' set. @@ -2650,7 +2650,7 @@

    tp_base_contact_list_groups_created ()

    void                tp_base_contact_list_groups_created (TpBaseContactList *self,
                                                              const gchar * const *created,
    -                                                         gssize n_created);
    + gssize n_created);

    Called by subclasses when new groups have been created. This will typically be followed by a call to tp_base_contact_list_groups_changed() to add @@ -2687,7 +2687,7 @@

    tp_base_contact_list_groups_removed ()

    void                tp_base_contact_list_groups_removed (TpBaseContactList *self,
                                                              const gchar * const *removed,
    -                                                         gssize n_removed);
    + gssize n_removed);

    Called by subclasses when groups have been removed.

    @@ -2911,7 +2911,7 @@ (TpBaseContactList *self, TpHandle contact, const gchar * const *normalized_names, - gsize n_names, + gsize n_names, GAsyncReadyCallback callback, gpointer user_data);

    @@ -2958,7 +2958,7 @@ (TpBaseContactList *self, TpHandle contact, const gchar * const *normalized_names, - gsize n_names, + gsize n_names, GAsyncReadyCallback callback, gpointer user_data);

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-call-channel.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-call-channel.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-call-channel.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-call-channel.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,1206 @@ + + + + +TpCallChannel + + + + + + + + + + + + + + + + + + + +

    +
    +
    + + +
    +

    TpCallChannel

    +

    TpCallChannel — proxy object for a call channel

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/telepathy-glib.h>
    +
    +struct              TpCallChannel;
    +struct              TpCallChannelClass;
    +#define             TP_CALL_CHANNEL_FEATURE_CORE
    +
    +struct              TpCallStateReason;
    +
    +GPtrArray *         tp_call_channel_get_contents        (TpCallChannel *self);
    +TpCallState         tp_call_channel_get_state           (TpCallChannel *self,
    +                                                         TpCallFlags *flags,
    +                                                         GHashTable **details,
    +                                                         TpCallStateReason **reason);
    +gboolean            tp_call_channel_has_hardware_streaming
    +                                                        (TpCallChannel *self);
    +gboolean            tp_call_channel_has_initial_audio   (TpCallChannel *self,
    +                                                         const gchar **initial_audio_name);
    +gboolean            tp_call_channel_has_initial_video   (TpCallChannel *self,
    +                                                         const gchar **initial_video_name);
    +gboolean            tp_call_channel_has_mutable_contents
    +                                                        (TpCallChannel *self);
    +GHashTable *        tp_call_channel_get_members         (TpCallChannel *self);
    +
    +gboolean            tp_call_channel_has_dtmf            (TpCallChannel *self);
    +void                tp_call_channel_send_tones_async    (TpCallChannel *self,
    +                                                         const gchar *tones,
    +                                                         GCancellable *cancellable,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +gboolean            tp_call_channel_send_tones_finish   (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +
    +void                tp_call_channel_set_ringing_async   (TpCallChannel *self,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +gboolean            tp_call_channel_set_ringing_finish  (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +void                tp_call_channel_set_queued_async    (TpCallChannel *self,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +gboolean            tp_call_channel_set_queued_finish   (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +void                tp_call_channel_accept_async        (TpCallChannel *self,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +gboolean            tp_call_channel_accept_finish       (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +void                tp_call_channel_hangup_async        (TpCallChannel *self,
    +                                                         TpCallStateChangeReason reason,
    +                                                         gchar *detailed_reason,
    +                                                         gchar *message,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +gboolean            tp_call_channel_hangup_finish       (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +void                tp_call_channel_add_content_async   (TpCallChannel *self,
    +                                                         gchar *name,
    +                                                         TpMediaStreamType type,
    +                                                         TpMediaStreamDirection initial_direction,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +TpCallContent *     tp_call_channel_add_content_finish  (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +
    +
    +
    +

    Object Hierarchy

    +
    +  GObject
    +   +----TpProxy
    +         +----TpChannel
    +               +----TpCallChannel
    +
    +
    +  GBoxed
    +   +----TpCallStateReason
    +
    +
    +
    +

    Implemented Interfaces

    +

    +TpCallChannel implements + TpChannelIface.

    +
    +
    +

    Properties

    +
    +  "contents"                 GPtrArray*            : Read
    +  "flags"                    guint                 : Read
    +  "hardware-streaming"       gboolean              : Read
    +  "initial-audio"            gboolean              : Read
    +  "initial-audio-name"       gchar*                : Read
    +  "initial-video"            gboolean              : Read
    +  "initial-video-name"       gchar*                : Read
    +  "mutable-contents"         gboolean              : Read
    +  "state"                    guint                 : Read
    +  "state-details"            GHashTable*           : Read
    +  "state-reason"             TpCallStateReason*    : Read
    +
    +
    + +
    +

    Description

    +

    +TpCallChannel is a sub-class of TpChannel providing convenient API +to make calls +

    +
    +
    +

    Details

    +
    +

    struct TpCallChannel

    +
    struct TpCallChannel;
    +

    +Data structure representing a TpCallChannel. +

    +

    Since 0.17.5

    +
    +
    +
    +

    struct TpCallChannelClass

    +
    struct TpCallChannelClass {
    +};
    +
    +

    +The class of a TpCallChannel. +

    +

    Since 0.17.5

    +
    +
    +
    +

    TP_CALL_CHANNEL_FEATURE_CORE

    +
    #define             TP_CALL_CHANNEL_FEATURE_CORE
    +

    +Expands to a call to a function that returns a quark for the "core" +feature on a TpCallChannel. +

    +

    +One can ask for a feature to be prepared using the tp_proxy_prepare_async() +function, and waiting for it to trigger the callback. +

    +
    +
    +
    +

    struct TpCallStateReason

    +
    struct TpCallStateReason {
    +  TpHandle actor;
    +  TpCallStateChangeReason reason;
    +  gchar *dbus_reason;
    +};
    +
    +

    +Data structure representing the reason for a call state change. +

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

    TpHandle actor;

    the contact responsible for the change, or 0 if no contact was +responsible

    TpCallStateChangeReason reason;

    the reason for the change. If +TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED then the actor member will +dictate whether it was the local user or a remote contact responsible

    gchar *dbus_reason;

    A specific reason for the change, which may be a D-Bus error in +the Telepathy namespace, a D-Bus error in any other namespace +(for implementation-specific errors), or the empty string to indicate that +the state change was not an error
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_get_contents ()

    +
    GPtrArray *         tp_call_channel_get_contents        (TpCallChannel *self);
    +

    + +

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

    self :

    a TpCallChannel +

    Returns :

    the value of "contents". [transfer none][type GLib.PtrArray][element-type TelepathyGLib.CallContent] +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_get_state ()

    +
    TpCallState         tp_call_channel_get_state           (TpCallChannel *self,
    +                                                         TpCallFlags *flags,
    +                                                         GHashTable **details,
    +                                                         TpCallStateReason **reason);
    +

    + +

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

    self :

    a TpCallChannel +

    flags :

    a place to set the value of +"flags". [out][allow-none][transfer none] +

    details :

    a place to set the value of +"state-details". [out][allow-none][transfer none] +

    reason :

    a place to set the value of +"state-reason". [out][allow-none][transfer none] +

    Returns :

    the value of "state" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_has_hardware_streaming ()

    +
    gboolean            tp_call_channel_has_hardware_streaming
    +                                                        (TpCallChannel *self);
    +

    + +

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

    self :

    a TpCallChannel +

    Returns :

    the value of "hardware-streaming" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_has_initial_audio ()

    +
    gboolean            tp_call_channel_has_initial_audio   (TpCallChannel *self,
    +                                                         const gchar **initial_audio_name);
    +

    + +

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

    self :

    a TpCallChannel +

    initial_audio_name :

    a place to set the +value of "initial-audio-name". [out][allow-none][transfer none] +

    Returns :

    the value of "initial-audio" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_has_initial_video ()

    +
    gboolean            tp_call_channel_has_initial_video   (TpCallChannel *self,
    +                                                         const gchar **initial_video_name);
    +

    + +

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

    self :

    a TpCallChannel +

    initial_video_name :

    a place to set the +value of "initial-video-name". [out][allow-none][transfer none] +

    Returns :

    the value of "initial-video" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_has_mutable_contents ()

    +
    gboolean            tp_call_channel_has_mutable_contents
    +                                                        (TpCallChannel *self);
    +

    + +

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

    self :

    a TpCallChannel +

    Returns :

    the value of "mutable-contents" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_get_members ()

    +
    GHashTable *        tp_call_channel_get_members         (TpCallChannel *self);
    +

    +Get the members of this call. +

    +

    +The TpContact objects are guaranteed to have all of the features +previously passed to tp_simple_client_factory_add_contact_features() +prepared. +

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

    self :

    a TpCallChannel +

    Returns :

    +GHashTable mapping TpContact to its new TpCallMemberFlags. [transfer none][type GLib.HashTable][element-type TelepathyGLib.Contact uint] +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_has_dtmf ()

    +
    gboolean            tp_call_channel_has_dtmf            (TpCallChannel *self);
    +

    +Whether or not self has the TP_IFACE_CHANNEL_INTERFACE_DTMF +interfaces +

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

    self :

    a TpCallChannel +

    Returns :

    whether or not self supports DTMF
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_send_tones_async ()

    +
    void                tp_call_channel_send_tones_async    (TpCallChannel *self,
    +                                                         const gchar *tones,
    +                                                         GCancellable *cancellable,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Send tones on every of self's contents which have the +TP_IFACE_CALL_CONTENT_INTERFACE_DTMF interface. +

    +

    +For more details, see tp_call_content_send_tones_async(). +

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

    self :

    a TpCallChannel +

    tones :

    a string representation of one or more DTMF events.

    cancellable :

    optional GCancellable object, NULL to ignore

    callback :

    a callback to call when the operation finishes

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_send_tones_finish ()

    +
    gboolean            tp_call_channel_send_tones_finish   (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes tp_call_channel_send_tones_async(). +

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

    self :

    a TpCallChannel +

    result :

    a GAsyncResult +

    error :

    a GError to fill

    Returns :

    +TRUE on success, FALSE otherwise.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_set_ringing_async ()

    +
    void                tp_call_channel_set_ringing_async   (TpCallChannel *self,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Indicate that the local user has been alerted about the incoming call. +

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

    self :

    a TpCallChannel +

    callback :

    a callback to call when the operation finishes

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_set_ringing_finish ()

    +
    gboolean            tp_call_channel_set_ringing_finish  (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes tp_call_channel_set_ringing_async(). +

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

    self :

    a TpCallChannel +

    result :

    a GAsyncResult +

    error :

    a GError to fill
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_set_queued_async ()

    +
    void                tp_call_channel_set_queued_async    (TpCallChannel *self,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Notifies the CM that the local user is already in a call, so this call has +been put in a call-waiting style queue. +

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

    self :

    a TpCallChannel +

    callback :

    a callback to call when the operation finishes

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_set_queued_finish ()

    +
    gboolean            tp_call_channel_set_queued_finish   (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes tp_call_channel_set_queued_async(). +

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

    self :

    a TpCallChannel +

    result :

    a GAsyncResult +

    error :

    a GError to fill
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_accept_async ()

    +
    void                tp_call_channel_accept_async        (TpCallChannel *self,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +For incoming calls with "state" set to +TP_CALL_STATE_INITIALISED, accept the incoming call. This changes +"state" to TP_CALL_STATE_ACCEPTED. +

    +

    +For outgoing calls with "state" set to +TP_CALL_STATE_PENDING_INITIATOR, actually call the remote contact; this +changes "state" to +TP_CALL_STATE_INITIALISING. +

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

    self :

    a TpCallChannel +

    callback :

    a callback to call when the operation finishes

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_accept_finish ()

    +
    gboolean            tp_call_channel_accept_finish       (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes tp_call_channel_accept_async(). +

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

    self :

    a TpCallChannel +

    result :

    a GAsyncResult +

    error :

    a GError to fill
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_hangup_async ()

    +
    void                tp_call_channel_hangup_async        (TpCallChannel *self,
    +                                                         TpCallStateChangeReason reason,
    +                                                         gchar *detailed_reason,
    +                                                         gchar *message,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Request that the call is ended. All contents will be removed from self so +that the "contents" property will be the empty list. +

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

    self :

    a TpCallChannel +

    reason :

    a TpCallStateChangeReason

    detailed_reason :

    a more specific reason for the call hangup, if one is +available, or an empty or NULL string otherwise

    message :

    a human-readable message to be sent to the remote contact(s)

    callback :

    a callback to call when the operation finishes

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_hangup_finish ()

    +
    gboolean            tp_call_channel_hangup_finish       (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes tp_call_channel_hangup_async(). +

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

    self :

    a TpCallChannel +

    result :

    a GAsyncResult +

    error :

    a GError to fill
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_add_content_async ()

    +
    void                tp_call_channel_add_content_async   (TpCallChannel *self,
    +                                                         gchar *name,
    +                                                         TpMediaStreamType type,
    +                                                         TpMediaStreamDirection initial_direction,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Request that a new Content of type type is added to self. Callers should +check the value of the "mutable-contents" property before trying +to add another content as it might not be allowed. +

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

    self :

    a TpCallChannel +

    name :

    the suggested name of the content to add

    type :

    the media stream type of the content to be added to the call, from +TpMediaStreamType +

    initial_direction :

    The initial direction of the content

    callback :

    a callback to call when the operation finishes

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_channel_add_content_finish ()

    +
    TpCallContent *     tp_call_channel_add_content_finish  (TpCallChannel *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes tp_call_channel_add_content_async(). +

    +

    +The returned TpCallContent is NOT guaranteed to have +TP_CALL_CONTENT_FEATURE_CORE prepared. +

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

    self :

    a TpCallChannel +

    result :

    a GAsyncResult +

    error :

    a GError to fill

    Returns :

    reference to the new TpCallContent. [transfer full] +
    +

    Since 0.17.5

    +
    +
    +
    +

    Property Details

    +
    +

    The "contents" property

    +
      "contents"                 GPtrArray*            : Read
    +

    +GPtrArray of TpCallContent objects. The list of content objects that are +part of this call. +

    +

    +It is NOT guaranteed that TP_CALL_CONTENT_FEATURE_CORE is prepared on +those objects. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "flags" property

    +
      "flags"                    guint                 : Read
    +

    +A TpCallFlags specifying the flags of the call state. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "hardware-streaming" property

    +
      "hardware-streaming"       gboolean              : Read
    +

    +Whether or not the streaming is done by dedicated hardware. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "initial-audio" property

    +
      "initial-audio"            gboolean              : Read
    +

    +Whether or not the Call was started with audio. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "initial-audio-name" property

    +
      "initial-audio-name"       gchar*                : Read
    +

    +If "initial-audio" is set to TRUE, then this property will +is the name of the intial audio content, NULL otherwise. +

    +

    Default value: NULL

    +

    Since 0.17.5

    +
    +
    +
    +

    The "initial-video" property

    +
      "initial-video"            gboolean              : Read
    +

    +Whether or not the Call was started with video. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "initial-video-name" property

    +
      "initial-video-name"       gchar*                : Read
    +

    +If "initial-video" is set to TRUE, then this property will +is the name of the intial video content, NULL otherwise. +

    +

    Default value: NULL

    +

    Since 0.17.5

    +
    +
    +
    +

    The "mutable-contents" property

    +
      "mutable-contents"         gboolean              : Read
    +

    +Whether or not call contents can be added or removed. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "state" property

    +
      "state"                    guint                 : Read
    +

    +A TpChannelCallState specifying the state of the call. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "state-details" property

    +
      "state-details"            GHashTable*           : Read
    +

    +Detailed information about "state". +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "state-reason" property

    +
      "state-reason"             TpCallStateReason*    : Read
    +

    +Reason why "state" last changed. +

    +

    Since 0.17.5

    +
    +
    +
    +

    Signal Details

    +
    +

    The "content-added" signal

    +
    void                user_function                      (TpCallChannel *self,
    +                                                        GObject       *content,
    +                                                        gpointer       user_data)      : Run Last
    +

    +The ::content-added signal is emitted whenever a +TpCallContent is added to self. +

    +

    +It is NOT guaranteed that TP_CALL_CONTENT_FEATURE_CORE is prepared on +content. +

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

    self :

    the TpCallChannel +

    content :

    the newly added TpCallContent +

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    +

    The "content-removed" signal

    +
    void                user_function                      (TpCallChannel     *self,
    +                                                        GObject           *content,
    +                                                        TpCallStateReason *reason,
    +                                                        gpointer           user_data)      : Run Last
    +

    +The ::content-removed signal is emitted whenever a +TpCallContent is removed from self. +

    +

    +It is NOT guaranteed that TP_CALL_CONTENT_FEATURE_CORE is prepared on +content. +

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

    self :

    the TpCallChannel +

    content :

    the newly removed TpCallContent +

    reason :

    a TpCallStateReason +

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    +

    The "members-changed" signal

    +
    void                user_function                      (TpCallChannel     *self,
    +                                                        GHashTable        *updates,
    +                                                        GPtrArray         *removed,
    +                                                        TpCallStateReason *reason,
    +                                                        gpointer           user_data)      : Run Last
    +

    +The ::members-changed signal is emitted whenever the call's members +changes. +

    +

    +The TpContact objects are guaranteed to have all of the features +previously passed to tp_simple_client_factory_add_contact_features() +prepared. +

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

    self :

    the TpCallChannel +

    updates :

    +GHashTable mapping TpContact to its new TpCallMemberFlags. [type GLib.HashTable][element-type TelepathyGLib.Contact uint] +

    removed :

    +GPtrArray of TpContact removed from the call members. [type GLib.PtrArray][element-type TelepathyGLib.Contact] +

    reason :

    the TpCallStateReason for the change

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    +

    The "state-changed" signal

    +
    void                user_function                      (TpCallChannel     *self,
    +                                                        guint              state,
    +                                                        guint              flags,
    +                                                        TpCallStateReason *reason,
    +                                                        GHashTable        *details,
    +                                                        gpointer           user_data)      : Run Last
    +

    +The ::state-changed signal is emitted whenever the +call state changes. +

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

    self :

    the TpCallChannel +

    state :

    the new TpCallState +

    flags :

    the new TpCallFlags +

    reason :

    the TpCallStateReason for the change

    details :

    additional details

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-call-content.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-call-content.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-call-content.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-call-content.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,561 @@ + + + + +TpCallContent + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    TpCallContent

    +

    TpCallContent — proxy object for a call content

    +
    + +
    +

    Object Hierarchy

    +
    +  GObject
    +   +----TpProxy
    +         +----TpCallContent
    +
    +
    +
    +

    Properties

    +
    +  "connection"               TpConnection*         : Read / Write / Construct Only
    +  "disposition"              guint                 : Read
    +  "media-type"               guint                 : Read
    +  "name"                     gchar*                : Read
    +  "streams"                  GPtrArray*            : Read
    +
    +
    + +
    +

    Description

    +

    +TpCallContent is a sub-class of TpProxy providing convenient API +to represent TpCallChannel's content. +

    +
    +
    +

    Details

    +
    +

    TpCallContent

    +
    typedef struct _TpCallContent TpCallContent;
    +

    +Data structure representing a TpCallContent. +

    +

    Since 0.17.5

    +
    +
    +
    +

    struct TpCallContentClass

    +
    struct TpCallContentClass {
    +};
    +
    +

    +The class of a TpCallContent. +

    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_init_known_interfaces ()

    +
    void                tp_call_content_init_known_interfaces
    +                                                        (void);
    +

    +Ensure that the known interfaces for TpCallContent have been set up. +This is done automatically when necessary, but for correct +overriding of library interfaces by local extensions, you should +call this function before calling +tp_proxy_or_subclass_hook_on_interface_add() with first argument +TP_TYPE_CALL_CONTENT. +

    +

    Since 0.17.5

    +
    +
    +
    +

    TP_CALL_CONTENT_FEATURE_CORE

    +
    #define             TP_CALL_CONTENT_FEATURE_CORE
    +

    +Expands to a call to a function that returns a quark for the "core" +feature on a TpCallContent. +

    +

    +One can ask for a feature to be prepared using the tp_proxy_prepare_async() +function, and waiting for it to trigger the callback. +

    +
    +
    +
    +

    tp_call_content_get_disposition ()

    +
    TpCallContentDisposition tp_call_content_get_disposition
    +                                                        (TpCallContent *self);
    +

    + +

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

    self :

    a TpCallContent +

    Returns :

    the value of "disposition" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_get_media_type ()

    +
    TpMediaStreamType   tp_call_content_get_media_type      (TpCallContent *self);
    +

    + +

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

    self :

    a TpCallContent +

    Returns :

    the value of "name" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_get_name ()

    +
    const gchar *       tp_call_content_get_name            (TpCallContent *self);
    +

    + +

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

    self :

    a TpCallContent +

    Returns :

    the value of "name" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_get_streams ()

    +
    GPtrArray *         tp_call_content_get_streams         (TpCallContent *self);
    +

    + +

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

    self :

    a TpCallContent +

    Returns :

    the value of "streams". [transfer none][type GLib.PtrArray][element-type TelepathyGLib.CallStream] +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_remove_async ()

    +
    void                tp_call_content_remove_async        (TpCallContent *self,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Remove the content from the call. This will cause "removed" +to be emitted. +

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

    self :

    a TpCallContent +

    callback :

    a callback to call when the operation finishes

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_remove_finish ()

    +
    gboolean            tp_call_content_remove_finish       (TpCallContent *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes tp_call_content_remove_async(). +

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

    self :

    a TpCallContent +

    result :

    a GAsyncResult +

    error :

    a GError to fill
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_send_tones_async ()

    +
    void                tp_call_content_send_tones_async    (TpCallContent *self,
    +                                                         const gchar *tones,
    +                                                         GCancellable *cancellable,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Send tones DTMF code on self content. self must have the +TP_IFACE_CALL_CONTENT_INTERFACE_DTMF interface. +

    +

    +If DTMF tones are already being played, this request is queued. +

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

    self :

    a TpCallContent +

    tones :

    a string representation of one or more DTMF events.

    cancellable :

    optional GCancellable object, NULL to ignore

    callback :

    a callback to call when the operation finishes

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_send_tones_finish ()

    +
    gboolean            tp_call_content_send_tones_finish   (TpCallContent *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes tp_call_content_send_tones_async(). +

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

    self :

    a TpCallContent +

    result :

    a GAsyncResult +

    error :

    a GError to fill

    Returns :

    +TRUE on success, FALSE otherwise.
    +

    Since 0.17.5

    +
    +
    +
    +

    Property Details

    +
    +

    The "connection" property

    +
      "connection"               TpConnection*         : Read / Write / Construct Only
    +

    +The TpConnection of the call. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "disposition" property

    +
      "disposition"              guint                 : Read
    +

    +The disposition of this content, from TpCallContentDisposition. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "media-type" property

    +
      "media-type"               guint                 : Read
    +

    +The media type of this content, from TpMediaStreamType. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "name" property

    +
      "name"                     gchar*                : Read
    +

    +The name of this content. +

    +

    Default value: ""

    +

    Since 0.17.5

    +
    +
    +
    +

    The "streams" property

    +
      "streams"                  GPtrArray*            : Read
    +

    +GPtrArray of TpCallStream objects. The list of stream objects that are +part of this content. +

    +

    +It is NOT guaranteed that TP_CALL_STREAM_FEATURE_CORE is prepared on +those objects. +

    +

    Since 0.17.5

    +
    +
    +
    +

    Signal Details

    +
    +

    The "removed" signal

    +
    void                user_function                      (TpCallContent *self,
    +                                                        gpointer       user_data)      : Run Last
    +

    +The ::removed signal is emitted when self is removed from +a TpCallChannel. +

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

    self :

    the TpCallContent +

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    +

    The "streams-added" signal

    +
    void                user_function                      (TpCallContent *self,
    +                                                        GPtrArray     *streams,
    +                                                        gpointer       user_data)      : Run Last
    +

    +The ::streams-added signal is emitted whenever +TpCallStream are added to self. +

    +

    +It is NOT guaranteed that TP_CALL_STREAM_FEATURE_CORE is prepared on +stream objects. +

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

    self :

    the TpCallContent +

    streams :

    a GPtrArray of newly added TpCallStream. [type GLib.PtrArray][element-type TelepathyGLib.CallStream] +

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    +

    The "streams-removed" signal

    +
    void                user_function                      (TpCallContent     *self,
    +                                                        GPtrArray         *streams,
    +                                                        TpCallStateReason *reason,
    +                                                        gpointer           user_data)      : Run Last
    +

    +The ::streams-removed signal is emitted whenever +TpCallStreams are removed from self. +

    +

    +It is NOT guaranteed that TP_CALL_STREAM_FEATURE_CORE is prepared on +stream objects. +

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

    self :

    the TpCallContent +

    streams :

    a GPtrArray of newly removed TpCallStream. [type GLib.PtrArray][element-type TelepathyGLib.CallStream] +

    reason :

    a TpCallStateReason +

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-call-misc.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-call-misc.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-call-misc.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-call-misc.html 2012-02-20 17:31:29.000000000 +0000 @@ -0,0 +1,94 @@ + + + + +Misc Call APIs + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    Misc Call APIs

    +

    Misc Call APIs — Misc generated APISs for Call

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/telepathy-glib.h>
    +
    +void                tp_call_content_media_description_init_known_interfaces
    +                                                        (void);
    +void                tp_call_stream_endpoint_init_known_interfaces
    +                                                        (void);
    +
    +
    +
    +

    Description

    +

    +This contains generated APIs to be used by TpCallChannel, TpCallStream, +TpCallContent or telepathy-farstream. Should not be needed for normal +clients. +

    +
    +
    +

    Details

    +
    +

    tp_call_content_media_description_init_known_interfaces ()

    +
    void                tp_call_content_media_description_init_known_interfaces
    +                                                        (void);
    +

    +Ensure that the known interfaces for TpProxy have been set up. +This is done automatically when necessary, but for correct +overriding of library interfaces by local extensions, you should +call this function before calling +tp_proxy_or_subclass_hook_on_interface_add() with first argument +TP_TYPE_PROXY. +

    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_endpoint_init_known_interfaces ()

    +
    void                tp_call_stream_endpoint_init_known_interfaces
    +                                                        (void);
    +

    +Ensure that the known interfaces for TpProxy have been set up. +This is done automatically when necessary, but for correct +overriding of library interfaces by local extensions, you should +call this function before calling +tp_proxy_or_subclass_hook_on_interface_add() with first argument +TP_TYPE_PROXY. +

    +

    Since 0.17.5

    +
    +
    +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-call-stream.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-call-stream.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-call-stream.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-call-stream.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,515 @@ + + + + +TpCallStream + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    TpCallStream

    +

    TpCallStream — proxy object for a call stream

    +
    + +
    +

    Object Hierarchy

    +
    +  GObject
    +   +----TpProxy
    +         +----TpCallStream
    +
    +
    +
    +

    Properties

    +
    +  "can-request-receiving"    gboolean              : Read
    +  "connection"               TpConnection*         : Read / Write / Construct Only
    +  "local-sending-state"      guint                 : Read
    +
    +
    + +
    +

    Description

    +

    +TpCallStream is a sub-class of TpProxy providing convenient API +to represent TpCallChannel's stream. +

    +
    +
    +

    Details

    +
    +

    struct TpCallStream

    +
    struct TpCallStream;
    +

    +Data structure representing a TpCallStream. +

    +

    Since 0.17.5

    +
    +
    +
    +

    struct TpCallStreamClass

    +
    struct TpCallStreamClass {
    +};
    +
    +

    +The class of a TpCallStream. +

    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_init_known_interfaces ()

    +
    void                tp_call_stream_init_known_interfaces
    +                                                        (void);
    +

    +Ensure that the known interfaces for TpCallStream have been set up. +This is done automatically when necessary, but for correct +overriding of library interfaces by local extensions, you should +call this function before calling +tp_proxy_or_subclass_hook_on_interface_add() with first argument +TP_TYPE_CALL_STREAM. +

    +

    Since 0.17.5

    +
    +
    +
    +

    TP_CALL_STREAM_FEATURE_CORE

    +
    #define             TP_CALL_STREAM_FEATURE_CORE
    +

    +Expands to a call to a function that returns a quark for the "core" +feature on a TpCallStream. +

    +

    +One can ask for a feature to be prepared using the tp_proxy_prepare_async() +function, and waiting for it to trigger the callback. +

    +
    +
    +
    +

    tp_call_stream_can_request_receiving ()

    +
    gboolean            tp_call_stream_can_request_receiving
    +                                                        (TpCallStream *self);
    +

    + +

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

    self :

    a TpCallStream +

    Returns :

    the value of "can-request-receiving" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_get_local_sending_state ()

    +
    TpSendingState      tp_call_stream_get_local_sending_state
    +                                                        (TpCallStream *self);
    +

    + +

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

    self :

    a TpCallStream +

    Returns :

    the value of "local-seding-state" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_get_remote_members ()

    +
    GHashTable *        tp_call_stream_get_remote_members   (TpCallStream *self);
    +

    +Get the remote contacts to who this stream is connected, mapped to their +sending state. +

    +

    +It is NOT guaranteed that TpContact objects have any feature prepared. +

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

    self :

    a TpCallStream +

    Returns :

    +GHashTable mapping TpContact to its new TpSendingState. [transfer none][type GLib.HashTable][element-type TelepathyGLib.Contact uint] +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_request_receiving_async ()

    +
    void                tp_call_stream_request_receiving_async
    +                                                        (TpCallStream *self,
    +                                                         TpContact *contact,
    +                                                         gboolean receive,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Request that a remote contact stops or starts sending on this stream. +

    +

    +The "can-request-receiving" property defines whether the protocol +allows the local user to request the other side start sending on this stream. +

    +

    +If receive is TRUE, request that the given contact starts to send media. +If receive is FALSE, request that the given contact stops sending media. +

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

    self :

    a TpCallStream +

    contact :

    contact from which sending is requested

    receive :

    the requested receiving state

    callback :

    a callback to call when the operation finishes

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_request_receiving_finish ()

    +
    gboolean            tp_call_stream_request_receiving_finish
    +                                                        (TpCallStream *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes tp_call_stream_request_receiving_async(). +

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

    self :

    a TpCallStream +

    result :

    a GAsyncResult +

    error :

    a GError to fill
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_set_sending_async ()

    +
    void                tp_call_stream_set_sending_async    (TpCallStream *self,
    +                                                         gboolean send,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Set the stream to start or stop sending media from the local user to other +contacts. +

    +

    +If send is TRUE, "local-sending-state" should change to +TP_SENDING_STATE_SENDING, if it isn't already. +If send is FALSE, "local-sending-state" should change to +TP_SENDING_STATE_NONE, if it isn't already. +

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

    self :

    a TpCallStream +

    send :

    the requested sending state

    callback :

    a callback to call when the operation finishes

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_set_sending_finish ()

    +
    gboolean            tp_call_stream_set_sending_finish   (TpCallStream *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes tp_call_stream_set_sending_async(). +

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

    self :

    a TpCallStream +

    result :

    a GAsyncResult +

    error :

    a GError to fill
    +

    Since 0.17.5

    +
    +
    +
    +

    Property Details

    +
    +

    The "can-request-receiving" property

    +
      "can-request-receiving"    gboolean              : Read
    +

    +If TRUE, the user can request that a remote contact starts sending on this +stream. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "connection" property

    +
      "connection"               TpConnection*         : Read / Write / Construct Only
    +

    +The TpConnection of the call. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "local-sending-state" property

    +
      "local-sending-state"      guint                 : Read
    +

    +The local user's sending state, from TpSendingState. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    Signal Details

    +
    +

    The "local-sending-state-changed" signal

    +
    void                user_function                      (TpCallStream      *self,
    +                                                        guint              state,
    +                                                        guint              reason,
    +                                                        TpCallStateReason *arg3,
    +                                                        GHashTable        *arg4,
    +                                                        gpointer           user_data)      : Run Last
    +

    +The ::local-sending-state-changed signal is emitted whenever the +stream sending state changes. +

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

    self :

    the TpCallStream +

    state :

    the new TpSendingState +

    reason :

    the TpCallStateReason for the change

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    +

    The "remote-members-changed" signal

    +
    void                user_function                      (TpCallStream      *self,
    +                                                        GHashTable        *updates,
    +                                                        GPtrArray         *removed,
    +                                                        TpCallStateReason *reason,
    +                                                        gpointer           user_data)      : Run Last
    +

    +The ::remote-members-changed signal is emitted whenever the +stream's remote members changes. +

    +

    +It is NOT guaranteed that TpContact objects have any feature prepared. +

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

    self :

    the TpCallStream +

    updates :

    +GHashTable mapping TpContact to its new TpSendingState. [type GLib.HashTable][element-type TelepathyGLib.Contact uint] +

    removed :

    +GPtrArray of TpContact removed from remote contacts. [type GLib.PtrArray][element-type TelepathyGLib.Contact] +

    reason :

    the TpCallStateReason for the change

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-capabilities.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-capabilities.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-capabilities.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-capabilities.html 2012-02-20 17:31:30.000000000 +0000 @@ -379,23 +379,23 @@ 15 16 17 -
    GHashTable *request;
    -TpAccountChannelRequest *req;
    +        
    GHashTable *request;
    +TpAccountChannelRequest *req;
     
    -request = tp_asv_new (
    -    TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
    -      TP_IFACE_CHANNEL_TYPE_ROOM_LIST,
    -    TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_NONE,
    -    NULL);
    +request = tp_asv_new (
    +    TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
    +      TP_IFACE_CHANNEL_TYPE_ROOM_LIST,
    +    TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_NONE,
    +    NULL);
     
    -req = tp_account_channel_request_new (account, request,
    -   TP_USER_ACTION_TIME_CURRENT_TIME);
    +req = tp_account_channel_request_new (account, request,
    +   TP_USER_ACTION_TIME_CURRENT_TIME);
     
    -tp_account_channel_request_create_and_handle_channel_async (req, NULL,
    -    create_channel_cb, NULL);
    +tp_account_channel_request_create_and_handle_channel_async (req, NULL,
    +    create_channel_cb, NULL);
     
    -g_object_unref (req);
    -g_hash_table_unref (request);
    +g_object_unref (req); +g_hash_table_unref (request);
    @@ -419,14 +419,14 @@ 6 7 8 -
    /\* Same code as above but with request defined using: *\/
    -request = tp_asv_new (
    -    TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
    -      TP_IFACE_CHANNEL_TYPE_ROOM_LIST,
    -    TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_NONE,
    -    TP_PROP_CHANNEL_TYPE_ROOM_LIST_SERVER, G_TYPE_STRING,
    -      "characters.shakespeare.lit",
    -    NULL);
    +
    /\* Same code as above but with request defined using: *\/
    +request = tp_asv_new (
    +    TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING,
    +      TP_IFACE_CHANNEL_TYPE_ROOM_LIST,
    +    TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_NONE,
    +    TP_PROP_CHANNEL_TYPE_ROOM_LIST_SERVER, G_TYPE_STRING,
    +      "characters.shakespeare.lit",
    +    NULL);
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-channel-auth.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-channel-auth.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-channel-auth.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-channel-auth.html 2012-02-20 17:31:30.000000000 +0000 @@ -7,7 +7,7 @@ - + @@ -18,7 +18,7 @@ Up Home telepathy-glib API Reference Manual -Next +Next Top @@ -120,13 +120,74 @@ GDestroyNotify destroy, GObject *weak_object, GError **error); + + +TpProxyPendingCall * tp_cli_channel_interface_captcha_authentication_call_answer_captchas + (TpChannel *proxy, + gint timeout_ms, + GHashTable *in_Answers, + tp_cli_channel_interface_captcha_authentication_callback_for_answer_captchas callback, + gpointer user_data, + GDestroyNotify destroy, + GObject *weak_object); +TpProxyPendingCall * tp_cli_channel_interface_captcha_authentication_call_cancel_captcha + (TpChannel *proxy, + gint timeout_ms, + guint in_Reason, + const gchar *in_Debug_Message, + tp_cli_channel_interface_captcha_authentication_callback_for_cancel_captcha callback, + gpointer user_data, + GDestroyNotify destroy, + GObject *weak_object); +TpProxyPendingCall * tp_cli_channel_interface_captcha_authentication_call_get_captcha_data + (TpChannel *proxy, + gint timeout_ms, + guint in_ID, + const gchar *in_Mime_Type, + tp_cli_channel_interface_captcha_authentication_callback_for_get_captcha_data callback, + gpointer user_data, + GDestroyNotify destroy, + GObject *weak_object); +TpProxyPendingCall * tp_cli_channel_interface_captcha_authentication_call_get_captchas + (TpChannel *proxy, + gint timeout_ms, + tp_cli_channel_interface_captcha_authentication_callback_for_get_captchas callback, + gpointer user_data, + GDestroyNotify destroy, + GObject *weak_object); +void (*tp_cli_channel_interface_captcha_authentication_callback_for_answer_captchas) + (TpChannel *proxy, + const GError *error, + gpointer user_data, + GObject *weak_object); +void (*tp_cli_channel_interface_captcha_authentication_callback_for_cancel_captcha) + (TpChannel *proxy, + const GError *error, + gpointer user_data, + GObject *weak_object); +void (*tp_cli_channel_interface_captcha_authentication_callback_for_get_captcha_data) + (TpChannel *proxy, + const GArray *out_Captcha_Data, + const GError *error, + gpointer user_data, + GObject *weak_object); +void (*tp_cli_channel_interface_captcha_authentication_callback_for_get_captchas) + (TpChannel *proxy, + const GPtrArray *out_Captcha_Info, + guint out_Number_Required, + const gchar *out_Language, + const GError *error, + gpointer user_data, + GObject *weak_object);

    Description

    The ServerAuthentication channel type represents a request for client/UI -processes to carry out authentication with a server. +processes to carry out authentication with a server, including password +authentication (prove that you are who you say you are) and captcha +authentication (prove that you are not a bot).

    @@ -785,6 +846,455 @@
    +
    +
    +

    tp_cli_channel_interface_captcha_authentication_call_answer_captchas ()

    +
    TpProxyPendingCall * tp_cli_channel_interface_captcha_authentication_call_answer_captchas
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         GHashTable *in_Answers,
    +                                                         tp_cli_channel_interface_captcha_authentication_callback_for_answer_captchas callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a AnswerCaptchas method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Answer as many captchas as desired and/or required.</p> <p>Callable in state Local_Pending only. State changes to Remote_Pending.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Answers :

    Used to pass an 'in' argument: The mapping of captcha IDs to answer strings.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_channel_interface_captcha_authentication_call_cancel_captcha ()

    +
    TpProxyPendingCall * tp_cli_channel_interface_captcha_authentication_call_cancel_captcha
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Debug_Message,
    +                                                         tp_cli_channel_interface_captcha_authentication_callback_for_cancel_captcha callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a CancelCaptcha method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Cancel. State changes to Failed with error NotAvailable or Cancelled if it isn't already Failed. All you can do now is to close the channel.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Reason :

    Used to pass an 'in' argument: Reason for cancelling. This MAY be used to choose an error response to the remote server, and SHOULD also be reflected in the <tp:member-ref>CaptchaError</tp:member-ref>. (TpCaptchaCancelReason)

    in_Debug_Message :

    Used to pass an 'in' argument: A textual description of the reason for cancelling, supplied by the Handler. This message SHOULD NOT be sent to the remote server, but SHOULD be copied into the 'debug-message' field of the <tp:member-ref>CaptchaErrorDetails</tp:member-ref> and <tp:dbus-ref namespace="ofdT.Connection">ConnectionError</tp:dbus-ref>.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_channel_interface_captcha_authentication_call_get_captcha_data ()

    +
    TpProxyPendingCall * tp_cli_channel_interface_captcha_authentication_call_get_captcha_data
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_ID,
    +                                                         const gchar *in_Mime_Type,
    +                                                         tp_cli_channel_interface_captcha_authentication_callback_for_get_captcha_data callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a GetCaptchaData method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Fetch and return the captcha data. In protocols where captchas are downloaded out-of-band (for instance via HTTP), the connection manager is expected to do so.</p> <p>Returns an empty array if the type was &quot;qa&quot;</p> <tp:rationale> <p>If audio-based and image-based captchas are both available, we don't want to waste time downloading the audio until/unless the user asks to hear it. The extra D-Bus round-trips are not a problem, since they are expected to be quick compared with the time taken for the user to solve the captcha.</p> </tp:rationale> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_ID :

    Used to pass an 'in' argument: The ID of the captcha of which to retrieve data.

    in_Mime_Type :

    Used to pass an 'in' argument: MIME type picked by the Handler, chosen from the list of MIME types received in <tp:member-ref>GetCaptchas</tp:member-ref>. <tp:rationale> XEP-0158 allows the same captcha to be made available in multiple formats, for instance the same spoken question as audio/x-wav, application/ogg and audio/speex. </tp:rationale>

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_channel_interface_captcha_authentication_call_get_captchas ()

    +
    TpProxyPendingCall * tp_cli_channel_interface_captcha_authentication_call_get_captchas
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_channel_interface_captcha_authentication_callback_for_get_captchas callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a GetCaptchas method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Gets information regarding each of the captcha methods available and which and how many need to be successfully answered</p> <p>To call this method successfully, the state must be Local_Pending or Try_Again. If it is Local_Pending, it remains Local_Pending. If called more than once while in Local_Pending state, or if the state is Try_Again, this method fetches a new set of captcha challenges, if possible, and the state returns to Local_Pending.</p> <tp:rationale> <p>For instance, you could call GetCaptchas again from Local_Pending state if the user indicates that they can't understand the initially-offered captcha.</p> <p>This is a method, not a property, so that it can be used to fetch more than one set of captcha challenges, and so that change notification is not required. Only the Handler should call this method and calling GetAll would not reduce round-trips, so the usual reasons to prefer a property do not apply here.</p> </tp:rationale> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_channel_interface_captcha_authentication_callback_for_answer_captchas ()

    +
    void                (*tp_cli_channel_interface_captcha_authentication_callback_for_answer_captchas)
    +                                                        (TpChannel *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a AnswerCaptchas method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_channel_interface_captcha_authentication_callback_for_cancel_captcha ()

    +
    void                (*tp_cli_channel_interface_captcha_authentication_callback_for_cancel_captcha)
    +                                                        (TpChannel *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a CancelCaptcha method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_channel_interface_captcha_authentication_callback_for_get_captcha_data ()

    +
    void                (*tp_cli_channel_interface_captcha_authentication_callback_for_get_captcha_data)
    +                                                        (TpChannel *proxy,
    +                                                         const GArray *out_Captcha_Data,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a GetCaptchaData method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    out_Captcha_Data :

    Used to return an 'out' argument if error is NULL: Captcha data as requested.

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_channel_interface_captcha_authentication_callback_for_get_captchas ()

    +
    void                (*tp_cli_channel_interface_captcha_authentication_callback_for_get_captchas)
    +                                                        (TpChannel *proxy,
    +                                                         const GPtrArray *out_Captcha_Info,
    +                                                         guint out_Number_Required,
    +                                                         const gchar *out_Language,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a GetCaptchas method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    out_Captcha_Info :

    Used to return an 'out' argument if error is NULL: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> Information about each of the available captcha methods.

    out_Number_Required :

    Used to return an 'out' argument if error is NULL: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> The number of captcha methods required to be answered in order to successfully complete this captcha challenge (most frequently 1, but XMPP allows servers to demand that more than one captcha is answered).

    out_Language :

    Used to return an 'out' argument if error is NULL: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> The language of each Label in Captcha_Info if available, for instance en_US, or &quot;&quot; if unknown.

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    @@ -361,7 +361,7 @@

    tp_channel_request_get_user_action_time ()

    -
    gint64              tp_channel_request_get_user_action_time
    +
    gint64              tp_channel_request_get_user_action_time
                                                             (TpChannelRequest *self);

    return the "user-action-time" construct-only property @@ -1016,7 +1016,7 @@


    The "user-action-time" property

    -
      "user-action-time"         gint64                : Read
    +
      "user-action-time"         gint64                : Read

    The time at which user action occurred, or TP_USER_ACTION_TIME_NOT_USER_ACTION if this channel request is diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-cli-anonymity.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-cli-anonymity.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-cli-anonymity.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-cli-anonymity.html 2012-02-20 17:31:30.000000000 +0000 @@ -6,7 +6,7 @@ - + @@ -14,7 +14,7 @@ - + diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-cli-call-channel.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-cli-call-channel.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-cli-call-channel.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-cli-call-channel.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,1132 @@ + + + + +Channel Call interfaces + + + + + + + + + + + + + + + + + + + +

    +
    +
    + + +
    +

    Channel Call interfaces

    +

    Channel Call interfaces — client-side wrappers for call channels

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/channel.h>
    +
    +TpProxyPendingCall * tp_cli_channel_type_call_call_accept
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_channel_type_call_callback_for_accept callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_channel_type_call_call_add_content
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         const gchar *in_Content_Name,
    +                                                         guint in_Content_Type,
    +                                                         guint in_InitialDirection,
    +                                                         tp_cli_channel_type_call_callback_for_add_content callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_channel_type_call_call_hangup
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Detailed_Hangup_Reason,
    +                                                         const gchar *in_Message,
    +                                                         tp_cli_channel_type_call_callback_for_hangup callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_channel_type_call_call_set_queued
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_channel_type_call_callback_for_set_queued callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_channel_type_call_call_set_ringing
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_channel_type_call_callback_for_set_ringing callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_channel_type_call_callback_for_accept)
    +                                                        (TpChannel *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_channel_type_call_callback_for_add_content)
    +                                                        (TpChannel *proxy,
    +                                                         const gchar *out_Content,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_channel_type_call_callback_for_hangup)
    +                                                        (TpChannel *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_channel_type_call_callback_for_set_queued)
    +                                                        (TpChannel *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_channel_type_call_callback_for_set_ringing)
    +                                                        (TpChannel *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +TpProxySignalConnection * tp_cli_channel_type_call_connect_to_call_members_changed
    +                                                        (TpChannel *proxy,
    +                                                         tp_cli_channel_type_call_signal_callback_call_members_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_channel_type_call_connect_to_call_state_changed
    +                                                        (TpChannel *proxy,
    +                                                         tp_cli_channel_type_call_signal_callback_call_state_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_channel_type_call_connect_to_content_added
    +                                                        (TpChannel *proxy,
    +                                                         tp_cli_channel_type_call_signal_callback_content_added callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_channel_type_call_connect_to_content_removed
    +                                                        (TpChannel *proxy,
    +                                                         tp_cli_channel_type_call_signal_callback_content_removed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +void                (*tp_cli_channel_type_call_signal_callback_call_members_changed)
    +                                                        (TpChannel *proxy,
    +                                                         GHashTable *arg_Flags_Changed,
    +                                                         GHashTable *arg_Identifiers,
    +                                                         const GArray *arg_Removed,
    +                                                         const GValueArray *arg_Reason,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_channel_type_call_signal_callback_call_state_changed)
    +                                                        (TpChannel *proxy,
    +                                                         guint arg_Call_State,
    +                                                         guint arg_Call_Flags,
    +                                                         const GValueArray *arg_Call_State_Reason,
    +                                                         GHashTable *arg_Call_State_Details,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_channel_type_call_signal_callback_content_added)
    +                                                        (TpChannel *proxy,
    +                                                         const gchar *arg_Content,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_channel_type_call_signal_callback_content_removed)
    +                                                        (TpChannel *proxy,
    +                                                         const gchar *arg_Content,
    +                                                         const GValueArray *arg_Reason,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +
    +
    +
    +

    Description

    +

    +Call channels represent real-time audio or video streaming, including +voice over IP, webcams, and telephony. +

    +
    +
    +

    Details

    +
    +

    tp_cli_channel_type_call_call_accept ()

    +
    TpProxyPendingCall * tp_cli_channel_type_call_call_accept
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_channel_type_call_callback_for_accept callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a Accept method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>For incoming calls in state <tp:value-ref type="Call_State">Initialised</tp:value-ref>, accept the incoming call. This changes the <tp:member-ref>CallState</tp:member-ref> to <tp:value-ref type="Call_State">Accepted</tp:value-ref>.</p> <p>For outgoing calls in state <tp:value-ref type="Call_State">Pending_Initiator</tp:value-ref>, actually call the remote contact; this changes the <tp:member-ref>CallState</tp:member-ref> to <tp:value-ref type="Call_State">Initialising</tp:value-ref>.</p> <p>Otherwise, this method SHOULD fail with the error NotAvailable.</p> <p>This method should be called exactly once per Call, by whatever client (user interface) is handling the channel.</p> <p>When this method is called, for each <tp:dbus-ref namespace="ofdT.Call1">Content</tp:dbus-ref> whose <tp:dbus-ref namespace="ofdT.Call1.Content">Disposition</tp:dbus-ref> is <tp:value-ref type="Call_Content_Disposition">Initial</tp:value-ref>, any streams where the <tp:dbus-ref namespace="ofdT.Call1.Stream">LocalSendingState</tp:dbus-ref> is <tp:value-ref type="Sending_State">Pending_Send</tp:value-ref> will be moved to <tp:value-ref type="Sending_State">Sending</tp:value-ref> as if <tp:dbus-ref namespace="ofdT.Call1.Stream">SetSending</tp:dbus-ref>(True) had been called.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_channel_type_call_call_add_content ()

    +
    TpProxyPendingCall * tp_cli_channel_type_call_call_add_content
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         const gchar *in_Content_Name,
    +                                                         guint in_Content_Type,
    +                                                         guint in_InitialDirection,
    +                                                         tp_cli_channel_type_call_callback_for_add_content callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a AddContent method call. +

    +

    +Request that a new <tp:dbus-ref namespace="ofdT.Call1">Content</tp:dbus-ref> of type Content_Type is added to the Call1. Handlers should check the value of the <tp:member-ref>MutableContents</tp:member-ref> property before trying to add another content as it might not be allowed. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Content_Name :

    Used to pass an 'in' argument: <p>The suggested name of the content to add.</p> <tp:rationale> The content name property should be meaningful, so should be given a name which is significant to the user. The name could be a localized &quot;audio&quot;, &quot;video&quot; or perhaps include some string identifying the source, such as a webcam identifier. </tp:rationale> <p>If there is already a content with the same name as this property then a sensible suffix should be added. For example, if this argument is &quot;audio&quot; but a content of the same name already exists, a sensible suffix such as &quot; (1)&quot; is appended to name the new content &quot;audio (1)&quot;. A further content with the name &quot;audio&quot; would then be named &quot;audio (2)&quot;.</p>

    in_Content_Type :

    Used to pass an 'in' argument: The media stream type of the content to be added to the call. (TpMediaStreamType)

    in_InitialDirection :

    Used to pass an 'in' argument: The requested initial direction of the new content. (TpMediaStreamDirection)

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_channel_type_call_call_hangup ()

    +
    TpProxyPendingCall * tp_cli_channel_type_call_call_hangup
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Detailed_Hangup_Reason,
    +                                                         const gchar *in_Message,
    +                                                         tp_cli_channel_type_call_callback_for_hangup callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a Hangup method call. +

    +

    +Request that the call is ended. All contents will be removed from the Call so that the <tp:member-ref>Contents</tp:member-ref> property will be the empty list. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Reason :

    Used to pass an 'in' argument: A generic hangup reason. (TpCallStateChangeReason)

    in_Detailed_Hangup_Reason :

    Used to pass an 'in' argument: A more specific reason for the call hangup, if one is available, or an empty string otherwise.

    in_Message :

    Used to pass an 'in' argument: A human-readable message to be sent to the remote contact(s). <tp:rationale> XMPP Jingle allows calls to be terminated with a human-readable message. </tp:rationale>

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_channel_type_call_call_set_queued ()

    +
    TpProxyPendingCall * tp_cli_channel_type_call_call_set_queued
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_channel_type_call_callback_for_set_queued callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a SetQueued method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Notifies the CM that the local user is already in a call, so this call has been put in a call-waiting style queue.</p> <p>This method is only useful if the channel's <tp:dbus-ref namespace="ofdT.Channel">Requested</tp:dbus-ref> property is False, and the <tp:member-ref>CallState</tp:member-ref> is <tp:value-ref type="Call_State">Initialising</tp:value-ref> or <tp:value-ref type="Call_State">Initialised</tp:value-ref>. Calling this method SHOULD set <tp:member-ref>CallFlags</tp:member-ref>' bit <tp:value-ref type="Call_Flags">Locally_Queued</tp:value-ref>, and notify the remote contact that the call is in a queue (if the protocol supports this); repeated calls to this method SHOULD succeed, but have no further effect.</p> <p>Locally_Queued is a little like Locally_Held, but applies to calls that have not been Accepted (the Locally_Queued flag should be unset by the CM when Accept is called). It should also be set in response to the state of the world, rather than in response to user action.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_channel_type_call_call_set_ringing ()

    +
    TpProxyPendingCall * tp_cli_channel_type_call_call_set_ringing
    +                                                        (TpChannel *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_channel_type_call_callback_for_set_ringing callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a SetRinging method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Indicate that the local user has been alerted about the incoming call.</p> <p>This method is only useful if the channel's <tp:dbus-ref namespace="ofdT.Channel">Requested</tp:dbus-ref> property is False, and the <tp:member-ref>CallState</tp:member-ref> is <tp:value-ref type="Call_State">Initialised</tp:value-ref> (an incoming call is ready and waiting for the user to be notified). Calling this method SHOULD set <tp:member-ref>CallFlags</tp:member-ref>' bit <tp:value-ref type="Call_Flags">Locally_Ringing</tp:value-ref>, and notify the remote contact that the local user has been alerted (if the protocol supports this); repeated calls to this method SHOULD succeed, but have no further effect.</p> <p>In all other states, this method SHOULD fail with the error NotAvailable.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_channel_type_call_callback_for_accept ()

    +
    void                (*tp_cli_channel_type_call_callback_for_accept)
    +                                                        (TpChannel *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a Accept method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_channel_type_call_callback_for_add_content ()

    +
    void                (*tp_cli_channel_type_call_callback_for_add_content)
    +                                                        (TpChannel *proxy,
    +                                                         const gchar *out_Content,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a AddContent method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    out_Content :

    Used to return an 'out' argument if error is NULL: Path to the newly-created <tp:dbus-ref namespace="org.freedesktop.Telepathy">Call1.Content</tp:dbus-ref> object.

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_channel_type_call_callback_for_hangup ()

    +
    void                (*tp_cli_channel_type_call_callback_for_hangup)
    +                                                        (TpChannel *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a Hangup method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_channel_type_call_callback_for_set_queued ()

    +
    void                (*tp_cli_channel_type_call_callback_for_set_queued)
    +                                                        (TpChannel *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a SetQueued method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_channel_type_call_callback_for_set_ringing ()

    +
    void                (*tp_cli_channel_type_call_callback_for_set_ringing)
    +                                                        (TpChannel *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a SetRinging method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_channel_type_call_connect_to_call_members_changed ()

    +
    TpProxySignalConnection * tp_cli_channel_type_call_connect_to_call_members_changed
    +                                                        (TpChannel *proxy,
    +                                                         tp_cli_channel_type_call_signal_callback_call_members_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal CallMembersChanged. +

    +

    +Emitted when the <tp:member-ref>CallMembers</tp:member-ref> property changes in any way, either because contacts have been added to the call, contacts have been removed from the call, or contacts' flags have changed. +

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

    proxy :

    A TpChannel or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_channel_type_call_connect_to_call_state_changed ()

    +
    TpProxySignalConnection * tp_cli_channel_type_call_connect_to_call_state_changed
    +                                                        (TpChannel *proxy,
    +                                                         tp_cli_channel_type_call_signal_callback_call_state_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal CallStateChanged. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when the state of the call as a whole changes.</p> <p>This signal is emitted for any change in the properties corresponding to its arguments, even if the other properties referenced remain unchanged.</p> +

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

    proxy :

    A TpChannel or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_channel_type_call_connect_to_content_added ()

    +
    TpProxySignalConnection * tp_cli_channel_type_call_connect_to_content_added
    +                                                        (TpChannel *proxy,
    +                                                         tp_cli_channel_type_call_signal_callback_content_added callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal ContentAdded. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when a new <tp:dbus-ref namespace="ofdT.Call1">Content</tp:dbus-ref> is added to the call.</p> +

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

    proxy :

    A TpChannel or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_channel_type_call_connect_to_content_removed ()

    +
    TpProxySignalConnection * tp_cli_channel_type_call_connect_to_content_removed
    +                                                        (TpChannel *proxy,
    +                                                         tp_cli_channel_type_call_signal_callback_content_removed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal ContentRemoved. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when a <tp:dbus-ref namespace="ofdT.Call1">Content</tp:dbus-ref> is removed from the call.</p> +

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

    proxy :

    A TpChannel or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_channel_type_call_signal_callback_call_members_changed ()

    +
    void                (*tp_cli_channel_type_call_signal_callback_call_members_changed)
    +                                                        (TpChannel *proxy,
    +                                                         GHashTable *arg_Flags_Changed,
    +                                                         GHashTable *arg_Identifiers,
    +                                                         const GArray *arg_Removed,
    +                                                         const GValueArray *arg_Reason,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal CallMembersChanged. +

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

    proxy :

    The proxy on which tp_cli_channel_type_call_connect_to_call_members_changed() +was called

    arg_Flags_Changed :

    A map from members of the call to their new call member flags, including at least the members who have been added to <tp:member-ref>CallMembers</tp:member-ref>, and the members whose flags have changed.

    arg_Identifiers :

    <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> The identifiers of the contacts in the <var>Flags_Changed</var> map.

    arg_Removed :

    A list of members who have left the call, i.e. keys to be removed from <tp:member-ref>CallMembers</tp:member-ref>.

    arg_Reason :

    A structured reason for the change.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_channel_type_call_signal_callback_call_state_changed ()

    +
    void                (*tp_cli_channel_type_call_signal_callback_call_state_changed)
    +                                                        (TpChannel *proxy,
    +                                                         guint arg_Call_State,
    +                                                         guint arg_Call_Flags,
    +                                                         const GValueArray *arg_Call_State_Reason,
    +                                                         GHashTable *arg_Call_State_Details,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal CallStateChanged. +

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

    proxy :

    The proxy on which tp_cli_channel_type_call_connect_to_call_state_changed() +was called

    arg_Call_State :

    The new value of the <tp:member-ref>CallState</tp:member-ref> property. (TpCallState)

    arg_Call_Flags :

    The new value of the <tp:member-ref>CallFlags</tp:member-ref> property. (TpCallFlags)

    arg_Call_State_Reason :

    The new value of the <tp:member-ref>CallStateReason</tp:member-ref> property.

    arg_Call_State_Details :

    The new value of the <tp:member-ref>CallStateDetails</tp:member-ref> property.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_channel_type_call_signal_callback_content_added ()

    +
    void                (*tp_cli_channel_type_call_signal_callback_content_added)
    +                                                        (TpChannel *proxy,
    +                                                         const gchar *arg_Content,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal ContentAdded. +

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

    proxy :

    The proxy on which tp_cli_channel_type_call_connect_to_content_added() +was called

    arg_Content :

    Path to the newly-created <tp:dbus-ref namespace="ofdT.Call1">Content</tp:dbus-ref> object.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_channel_type_call_signal_callback_content_removed ()

    +
    void                (*tp_cli_channel_type_call_signal_callback_content_removed)
    +                                                        (TpChannel *proxy,
    +                                                         const gchar *arg_Content,
    +                                                         const GValueArray *arg_Reason,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal ContentRemoved. +

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

    proxy :

    The proxy on which tp_cli_channel_type_call_connect_to_content_removed() +was called

    arg_Content :

    The <tp:dbus-ref namespace="ofdT.Call1">Content</tp:dbus-ref> which was removed.

    arg_Reason :

    Why the content was removed.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-cli-call-content.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-cli-call-content.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-cli-call-content.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-cli-call-content.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,2827 @@ + + + + +Channel Call content interfaces + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    Channel Call content interfaces

    +

    Channel Call content interfaces — client-side wrappers for call contents

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/call-content.h>
    +
    +TpProxyPendingCall * tp_cli_call_content_call_remove    (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_call_content_callback_for_remove callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_callback_for_remove)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +TpProxySignalConnection * tp_cli_call_content_connect_to_streams_added
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_signal_callback_streams_added callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_connect_to_streams_removed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_signal_callback_streams_removed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +void                (*tp_cli_call_content_signal_callback_streams_added)
    +                                                        (TpCallContent *proxy,
    +                                                         const GPtrArray *arg_Streams,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_signal_callback_streams_removed)
    +                                                        (TpCallContent *proxy,
    +                                                         const GPtrArray *arg_Streams,
    +                                                         const GValueArray *arg_Reason,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +
    +TpProxyPendingCall * tp_cli_call_content_interface_media_call_acknowledge_dtmf_change
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         guchar in_Event,
    +                                                         guint in_State,
    +                                                         tp_cli_call_content_interface_media_callback_for_acknowledge_dtmf_change callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_content_interface_media_call_fail
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Reason,
    +                                                         tp_cli_call_content_interface_media_callback_for_fail callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_content_interface_media_call_update_local_media_description
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         GHashTable *in_MediaDescription,
    +                                                         tp_cli_call_content_interface_media_callback_for_update_local_media_description callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_media_callback_for_acknowledge_dtmf_change)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_media_callback_for_fail)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_media_callback_for_update_local_media_description)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_dtmf_change_requested
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_dtmf_change_requested callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_local_media_description_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_local_media_description_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_media_description_offer_done
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_media_description_offer_done callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_media_descriptions_removed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_media_descriptions_removed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_new_media_description_offer
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_new_media_description_offer callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_remote_media_descriptions_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_remote_media_descriptions_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +void                (*tp_cli_call_content_interface_media_signal_callback_dtmf_change_requested)
    +                                                        (TpCallContent *proxy,
    +                                                         guchar arg_Event,
    +                                                         guint arg_State,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_media_signal_callback_local_media_description_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         GHashTable *arg_Updated_Media_Description,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_media_signal_callback_media_description_offer_done)
    +                                                        (TpCallContent *proxy,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_media_signal_callback_media_descriptions_removed)
    +                                                        (TpCallContent *proxy,
    +                                                         const GArray *arg_Removed_Media_Descriptions,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_media_signal_callback_new_media_description_offer)
    +                                                        (TpCallContent *proxy,
    +                                                         const gchar *arg_Media_Description,
    +                                                         GHashTable *arg_Properties,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_media_signal_callback_remote_media_descriptions_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         GHashTable *arg_Updated_Media_Descriptions,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +
    +TpProxySignalConnection * tp_cli_call_content_interface_video_control_connect_to_bitrate_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_video_control_signal_callback_bitrate_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_interface_video_control_connect_to_framerate_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_video_control_signal_callback_framerate_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_interface_video_control_connect_to_key_frame_requested
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_video_control_signal_callback_key_frame_requested callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_interface_video_control_connect_to_mtu_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_video_control_signal_callback_mtu_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_interface_video_control_connect_to_video_resolution_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_video_control_signal_callback_video_resolution_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +void                (*tp_cli_call_content_interface_video_control_signal_callback_bitrate_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         guint arg_NewBitrate,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_video_control_signal_callback_framerate_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         guint arg_NewFramerate,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_video_control_signal_callback_key_frame_requested)
    +                                                        (TpCallContent *proxy,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_video_control_signal_callback_mtu_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         guint arg_NewMTU,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_video_control_signal_callback_video_resolution_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         const GValueArray *arg_NewResolution,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +
    +TpProxyPendingCall * tp_cli_call_content_interface_audio_control_call_report_input_volume
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         gint in_Volume,
    +                                                         tp_cli_call_content_interface_audio_control_callback_for_report_input_volume callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_content_interface_audio_control_call_report_output_volume
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         gint in_Volume,
    +                                                         tp_cli_call_content_interface_audio_control_callback_for_report_output_volume callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_audio_control_callback_for_report_input_volume)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_audio_control_callback_for_report_output_volume)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +
    +TpProxyPendingCall * tp_cli_call_content_interface_dtmf_call_multiple_tones
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         const gchar *in_Tones,
    +                                                         tp_cli_call_content_interface_dtmf_callback_for_multiple_tones callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_content_interface_dtmf_call_start_tone
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         guchar in_Event,
    +                                                         tp_cli_call_content_interface_dtmf_callback_for_start_tone callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_content_interface_dtmf_call_stop_tone
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_call_content_interface_dtmf_callback_for_stop_tone callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_dtmf_callback_for_multiple_tones)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_dtmf_callback_for_start_tone)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_dtmf_callback_for_stop_tone)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +TpProxySignalConnection * tp_cli_call_content_interface_dtmf_connect_to_sending_tones
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_dtmf_signal_callback_sending_tones callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_interface_dtmf_connect_to_stopped_tones
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_dtmf_signal_callback_stopped_tones callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_content_interface_dtmf_connect_to_tones_deferred
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_dtmf_signal_callback_tones_deferred callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +void                (*tp_cli_call_content_interface_dtmf_signal_callback_sending_tones)
    +                                                        (TpCallContent *proxy,
    +                                                         const gchar *arg_Tones,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_dtmf_signal_callback_stopped_tones)
    +                                                        (TpCallContent *proxy,
    +                                                         gboolean arg_Cancelled,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_interface_dtmf_signal_callback_tones_deferred)
    +                                                        (TpCallContent *proxy,
    +                                                         const gchar *arg_Tones,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +
    +
    +
    +

    Description

    +

    +Represents the contents of a call. +

    +
    +
    +

    Details

    +
    +

    tp_cli_call_content_call_remove ()

    +
    TpProxyPendingCall * tp_cli_call_content_call_remove    (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_call_content_callback_for_remove callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a Remove method call. +

    +

    +Remove the content from the call. This will cause <tp:dbus-ref namespace="ofdT.Channel.Type">Call1.ContentRemoved</tp:dbus-ref>((self_handle, <tp:value-ref type="Call_State_Change_Reason">User_Requested</tp:value-ref>, &quot;&quot;, &quot;&quot;)) to be emitted. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_content_callback_for_remove ()

    +
    void                (*tp_cli_call_content_callback_for_remove)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a Remove method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_content_connect_to_streams_added ()

    +
    TpProxySignalConnection * tp_cli_call_content_connect_to_streams_added
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_signal_callback_streams_added callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal StreamsAdded. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when streams are added to a call.</p> +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_connect_to_streams_removed ()

    +
    TpProxySignalConnection * tp_cli_call_content_connect_to_streams_removed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_signal_callback_streams_removed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal StreamsRemoved. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when streams are removed from a call</p> +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_signal_callback_streams_added ()

    +
    void                (*tp_cli_call_content_signal_callback_streams_added)
    +                                                        (TpCallContent *proxy,
    +                                                         const GPtrArray *arg_Streams,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal StreamsAdded. +

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

    proxy :

    The proxy on which tp_cli_call_content_connect_to_streams_added() +was called

    arg_Streams :

    The <tp:dbus-ref namespace="ofdT.Call1">Stream</tp:dbus-ref>s which were added.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_signal_callback_streams_removed ()

    +
    void                (*tp_cli_call_content_signal_callback_streams_removed)
    +                                                        (TpCallContent *proxy,
    +                                                         const GPtrArray *arg_Streams,
    +                                                         const GValueArray *arg_Reason,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal StreamsRemoved. +

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

    proxy :

    The proxy on which tp_cli_call_content_connect_to_streams_removed() +was called

    arg_Streams :

    The <tp:dbus-ref namespace="ofdT.Call1">Stream</tp:dbus-ref>s which were removed.

    arg_Reason :

    Why the content was removed.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_media_call_acknowledge_dtmf_change ()

    +
    TpProxyPendingCall * tp_cli_call_content_interface_media_call_acknowledge_dtmf_change
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         guchar in_Event,
    +                                                         guint in_State,
    +                                                         tp_cli_call_content_interface_media_callback_for_acknowledge_dtmf_change callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a AcknowledgeDTMFChange method call. +

    +

    +Called by the streaming implementation in response to <tp:member-ref>DTMFChangeRequested</tp:member-ref> to confirm that it has started or stopped sending the event in question. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Event :

    Used to pass an 'in' argument: The event referred to in the corresponding <tp:member-ref>DTMFChangeRequested</tp:member-ref> signal.

    in_State :

    Used to pass an 'in' argument: Either <tp:value-ref type="Sending_State">Sending</tp:value-ref> or <tp:value-ref type="Sending_State">None</tp:value-ref>. (TpSendingState)

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_media_call_fail ()

    +
    TpProxyPendingCall * tp_cli_call_content_interface_media_call_fail
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Reason,
    +                                                         tp_cli_call_content_interface_media_callback_for_fail callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a Fail method call. +

    +

    +Signal an unrecoverable error for this content, and remove it. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Reason :

    Used to pass an 'in' argument: A reason struct describing the error.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_media_call_update_local_media_description ()

    +
    TpProxyPendingCall * tp_cli_call_content_interface_media_call_update_local_media_description
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         GHashTable *in_MediaDescription,
    +                                                         tp_cli_call_content_interface_media_callback_for_update_local_media_description callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a UpdateLocalMediaDescription method call. +

    +

    +Update the local codec mapping and other interfaces of the MediaDescription. This method should only be used during an existing call to update the local media description. This may trigger a re-negotiation which may result in new new MediaDescriptionOffers if the &quot;FurtherNegotiationRequired&quot; property is TRUE. Otherwise, only parameters which strictly describe the media being sent can be changed. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_MediaDescription :

    Used to pass an 'in' argument: The updated media description that the local side wants to use.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_media_callback_for_acknowledge_dtmf_change ()

    +
    void                (*tp_cli_call_content_interface_media_callback_for_acknowledge_dtmf_change)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a AcknowledgeDTMFChange method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_content_interface_media_callback_for_fail ()

    +
    void                (*tp_cli_call_content_interface_media_callback_for_fail)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a Fail method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_content_interface_media_callback_for_update_local_media_description ()

    +
    void                (*tp_cli_call_content_interface_media_callback_for_update_local_media_description)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a UpdateLocalMediaDescription method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_content_interface_media_connect_to_dtmf_change_requested ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_dtmf_change_requested
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_dtmf_change_requested callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal DTMFChangeRequested. +

    +

    +Used by the CM to relay instructions from <tp:dbus-ref namespace="ofdT">Channel.Interface.DTMF</tp:dbus-ref> to the streaming implementation. If any contact in this call supports the telephone-event codec in their MediaDescription, this event should be sent as outlined in RFC 4733. Otherwise, it should be sent as an audible tone. +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_media_connect_to_local_media_description_changed ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_local_media_description_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_local_media_description_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal LocalMediaDescriptionChanged. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Change notification for <tp:dbus-ref namespace="ofdT.Call1.Content.Interface.Media">LocalMediaDescriptions</tp:dbus-ref> </p> +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_media_connect_to_media_description_offer_done ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_media_description_offer_done
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_media_description_offer_done callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal MediaDescriptionOfferDone. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when a <tp:dbus-ref namespace="ofdT.Call1.Content">MediaDescription</tp:dbus-ref> has been handled. </p> <p>Emission of this signal indicates that the <tp:member-ref>MediaDescriptionOffer</tp:member-ref> property has changed to <code>(&quot;/&quot;, 0, {})</code>.</p> +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_media_connect_to_media_descriptions_removed ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_media_descriptions_removed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_media_descriptions_removed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal MediaDescriptionsRemoved. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Removal notification for <tp:dbus-ref namespace="ofdT.Call1.Content.Interface.Media">RemoteMediaDescriptions</tp:dbus-ref> and <tp:dbus-ref namespace="ofdT.Call1.Content.Interface.Media">LocalMediaDescriptions</tp:dbus-ref> </p> +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_media_connect_to_new_media_description_offer ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_new_media_description_offer
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_new_media_description_offer callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal NewMediaDescriptionOffer. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when a new <tp:dbus-ref namespace="ofdT.Call1.Content">MediaDescription</tp:dbus-ref> appears. The streaming &gt;implementation MUST respond by calling the <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription">Accept</tp:dbus-ref> or <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription">Reject</tp:dbus-ref> method on the description object appeared.</p> <p>Emission of this signal indicates that the <tp:member-ref>MediaDescriptionOffer</tp:member-ref> property has changed to <code>(Description, Contact, MediaDescriptionProperties)</code>.</p> <p>When the MediaDescriptionOffer has been dealt with then <tp:dbus-ref namespace="ofdT.Call1.Content.Interface.Media">MediaDescriptionOfferDone</tp:dbus-ref> must be emitted before <tp:dbus-ref namespace="ofdT.Call1.Content.Interface.Media">NewMediaDescriptionOffer</tp:dbus-ref> is emitted again. </p> +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_media_connect_to_remote_media_descriptions_changed ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_media_connect_to_remote_media_descriptions_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_media_signal_callback_remote_media_descriptions_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal RemoteMediaDescriptionsChanged. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Change notification for <tp:dbus-ref namespace="ofdT.Call1.Content.Interface.Media">RemoteMediaDescriptions</tp:dbus-ref> </p> +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_media_signal_callback_dtmf_change_requested ()

    +
    void                (*tp_cli_call_content_interface_media_signal_callback_dtmf_change_requested)
    +                                                        (TpCallContent *proxy,
    +                                                         guchar arg_Event,
    +                                                         guint arg_State,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal DTMFChangeRequested. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_media_connect_to_dtmf_change_requested() +was called

    arg_Event :

    The event to send (or stop sending).

    arg_State :

    Either <tp:value-ref type="Sending_State">Pending_Send</tp:value-ref> or <tp:value-ref type="Sending_State">Pending_Stop_Sending</tp:value-ref>. (TpSendingState)

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_media_signal_callback_local_media_description_changed ()

    +
    void                (*tp_cli_call_content_interface_media_signal_callback_local_media_description_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         GHashTable *arg_Updated_Media_Description,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal LocalMediaDescriptionChanged. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_media_connect_to_local_media_description_changed() +was called

    arg_Updated_Media_Description :

    <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>The local content description that was updated</p>

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_media_signal_callback_media_description_offer_done ()

    +
    void                (*tp_cli_call_content_interface_media_signal_callback_media_description_offer_done)
    +                                                        (TpCallContent *proxy,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal MediaDescriptionOfferDone. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_media_connect_to_media_description_offer_done() +was called

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_media_signal_callback_media_descriptions_removed ()

    +
    void                (*tp_cli_call_content_interface_media_signal_callback_media_descriptions_removed)
    +                                                        (TpCallContent *proxy,
    +                                                         const GArray *arg_Removed_Media_Descriptions,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal MediaDescriptionsRemoved. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_media_connect_to_media_descriptions_removed() +was called

    arg_Removed_Media_Descriptions :

    <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>The local and remote content descriptions that are no longer part of this content</p>

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_media_signal_callback_new_media_description_offer ()

    +
    void                (*tp_cli_call_content_interface_media_signal_callback_new_media_description_offer)
    +                                                        (TpCallContent *proxy,
    +                                                         const gchar *arg_Media_Description,
    +                                                         GHashTable *arg_Properties,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal NewMediaDescriptionOffer. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_media_connect_to_new_media_description_offer() +was called

    arg_Media_Description :

    The object path of the new media description. This replaces any previous media description.

    arg_Properties :

    The immutable properties of the remote media description. <tp:rationale> Having all the MediaDescription properties here saves a D-Bus round-trip - it shouldn't be necessary to get the properties from the MediaDescription object, in practice. </tp:rationale>

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_media_signal_callback_remote_media_descriptions_changed ()

    +
    void                (*tp_cli_call_content_interface_media_signal_callback_remote_media_descriptions_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         GHashTable *arg_Updated_Media_Descriptions,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal RemoteMediaDescriptionsChanged. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_media_connect_to_remote_media_descriptions_changed() +was called

    arg_Updated_Media_Descriptions :

    <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>The remote content descriptions that were updated</p>

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_video_control_connect_to_bitrate_changed ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_video_control_connect_to_bitrate_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_video_control_signal_callback_bitrate_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal BitrateChanged. +

    +

    +The desired bitrate has changed +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_video_control_connect_to_framerate_changed ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_video_control_connect_to_framerate_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_video_control_signal_callback_framerate_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal FramerateChanged. +

    +

    +The desired framerate has changed +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_video_control_connect_to_key_frame_requested ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_video_control_connect_to_key_frame_requested
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_video_control_signal_callback_key_frame_requested callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal KeyFrameRequested. +

    +

    +Request that the video encoder produce a new key frame as soon as possible. +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_video_control_connect_to_mtu_changed ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_video_control_connect_to_mtu_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_video_control_signal_callback_mtu_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal MTUChanged. +

    +

    +The Maximum Transmission Unit has changed +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_video_control_connect_to_video_resolution_changed ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_video_control_connect_to_video_resolution_changed
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_video_control_signal_callback_video_resolution_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal VideoResolutionChanged. +

    +

    +The desired video resolution has changed. +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_video_control_signal_callback_bitrate_changed ()

    +
    void                (*tp_cli_call_content_interface_video_control_signal_callback_bitrate_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         guint arg_NewBitrate,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal BitrateChanged. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_video_control_connect_to_bitrate_changed() +was called

    arg_NewBitrate :

    (Undocumented)

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_video_control_signal_callback_framerate_changed ()

    +
    void                (*tp_cli_call_content_interface_video_control_signal_callback_framerate_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         guint arg_NewFramerate,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal FramerateChanged. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_video_control_connect_to_framerate_changed() +was called

    arg_NewFramerate :

    (Undocumented)

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_video_control_signal_callback_key_frame_requested ()

    +
    void                (*tp_cli_call_content_interface_video_control_signal_callback_key_frame_requested)
    +                                                        (TpCallContent *proxy,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal KeyFrameRequested. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_video_control_connect_to_key_frame_requested() +was called

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_video_control_signal_callback_mtu_changed ()

    +
    void                (*tp_cli_call_content_interface_video_control_signal_callback_mtu_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         guint arg_NewMTU,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal MTUChanged. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_video_control_connect_to_mtu_changed() +was called

    arg_NewMTU :

    (Undocumented)

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_video_control_signal_callback_video_resolution_changed ()

    +
    void                (*tp_cli_call_content_interface_video_control_signal_callback_video_resolution_changed)
    +                                                        (TpCallContent *proxy,
    +                                                         const GValueArray *arg_NewResolution,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal VideoResolutionChanged. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_video_control_connect_to_video_resolution_changed() +was called

    arg_NewResolution :

    (Undocumented)

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_audio_control_call_report_input_volume ()

    +
    TpProxyPendingCall * tp_cli_call_content_interface_audio_control_call_report_input_volume
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         gint in_Volume,
    +                                                         tp_cli_call_content_interface_audio_control_callback_for_report_input_volume callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a ReportInputVolume method call. +

    +

    +<p>Report to the CM that the Content input volume has been changed by the client.</p> <p>It is the client's responsibility to change the input volume used for the content. However, the client MUST call this whenever it changes input volume for the content.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Volume :

    Used to pass an 'in' argument: Report the input volume level as set by the client.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_audio_control_call_report_output_volume ()

    +
    TpProxyPendingCall * tp_cli_call_content_interface_audio_control_call_report_output_volume
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         gint in_Volume,
    +                                                         tp_cli_call_content_interface_audio_control_callback_for_report_output_volume callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a ReportOutputVolume method call. +

    +

    +<p>Report to the CM that the content output volume has been changed by the client.</p> <p>It is the client's responsibility to change the output volume used for the content. However, the client MUST call this whenever it changes output volume for the content.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Volume :

    Used to pass an 'in' argument: Report the output volume level as set by the client.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_audio_control_callback_for_report_input_volume ()

    +
    void                (*tp_cli_call_content_interface_audio_control_callback_for_report_input_volume)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a ReportInputVolume method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_content_interface_audio_control_callback_for_report_output_volume ()

    +
    void                (*tp_cli_call_content_interface_audio_control_callback_for_report_output_volume)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a ReportOutputVolume method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_call_multiple_tones ()

    +
    TpProxyPendingCall * tp_cli_call_content_interface_dtmf_call_multiple_tones
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         const gchar *in_Tones,
    +                                                         tp_cli_call_content_interface_dtmf_callback_for_multiple_tones callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a MultipleTones method call. +

    +

    +<p>Send multiple DTMF events to all eligible streams in the channel. Each tone will be played for an implementation-defined number of milliseconds (typically 250ms), followed by a gap before the next tone is played (typically 100ms). The duration and gap are defined by the protocol or connection manager.</p> <tp:rationale> <p>In cases where the client knows in advance the tone sequence it wants to send, it's easier to use this method than manually start and stop each tone in the sequence.</p> <p>The tone and gap lengths may need to vary for interoperability, according to the protocol and other implementations' ability to recognise tones. At the time of writing, GStreamer uses a minimum of 250ms tones and 100ms gaps when playing in-band DTMF in the normal audio stream, or 70ms tones and 50ms gaps when encoding DTMF as <code>audio/telephone-event</code>.</p> </tp:rationale> <p>Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Tones :

    Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A string representation of one or more DTMF events. Implementations of this method MUST support all of the following characters in this string:</p> <ul> <li>the digits 0-9, letters A-D and a-d, and symbols '*' and '#' correspond to the members of <tp:type>DTMF_Event</tp:type></li> <li>any of 'p', 'P', 'x', 'X' or ',' (comma) results in an implementation-defined pause, typically for 3 seconds</li> <li>'w' or 'W' waits for the user to continue, by stopping interpretation of the string, and if there is more to be played, emitting the <tp:member-ref>TonesDeferred</tp:member-ref> signal with the rest of the string as its argument: see that signal for details</li> </ul>

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_call_start_tone ()

    +
    TpProxyPendingCall * tp_cli_call_content_interface_dtmf_call_start_tone
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         guchar in_Event,
    +                                                         tp_cli_call_content_interface_dtmf_callback_for_start_tone callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a StartTone method call. +

    +

    +<p>Start sending a DTMF tone to all eligible streams in the channel. Where possible, the tone will continue until <tp:member-ref>StopTone</tp:member-ref> is called. On certain protocols, it may only be possible to send events with a predetermined length. In this case, the implementation MAY emit a fixed-length tone, and the StopTone method call SHOULD return NotAvailable.</p> <tp:rationale> The client may wish to control the exact duration and timing of the tones sent as a result of user's interaction with the dialpad, thus starting and stopping the tone sending explicitly. </tp:rationale> <p>Tone overlaping or queueing is not supported, so this method can only be called if no DTMF tones are already being played.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Event :

    Used to pass an 'in' argument: A numeric event code from the DTMF_Event enum.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_call_stop_tone ()

    +
    TpProxyPendingCall * tp_cli_call_content_interface_dtmf_call_stop_tone
    +                                                        (TpCallContent *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_call_content_interface_dtmf_callback_for_stop_tone callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a StopTone method call. +

    +

    +Stop sending any DTMF tones which have been started using the <tp:member-ref>StartTone</tp:member-ref> or <tp:member-ref>MultipleTones</tp:member-ref> methods. If there is no current tone, this method will do nothing. If MultipleTones was used, the client should not assume the sending has stopped immediately; instead, the client should wait for the StoppedTones signal. <tp:rationale> On some protocols it might be impossible to cancel queued tones immediately. </tp:rationale> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_callback_for_multiple_tones ()

    +
    void                (*tp_cli_call_content_interface_dtmf_callback_for_multiple_tones)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a MultipleTones method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_callback_for_start_tone ()

    +
    void                (*tp_cli_call_content_interface_dtmf_callback_for_start_tone)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a StartTone method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_callback_for_stop_tone ()

    +
    void                (*tp_cli_call_content_interface_dtmf_callback_for_stop_tone)
    +                                                        (TpCallContent *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a StopTone method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_connect_to_sending_tones ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_dtmf_connect_to_sending_tones
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_dtmf_signal_callback_sending_tones callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal SendingTones. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>DTMF tone(s)are being sent to all eligible streams in the channel. The signal is provided to indicating the fact that the streams are currently being used to send one or more DTMF tones, so any other media input is not getting through to the audio stream. It also serves as a cue for the <tp:member-ref>StopTone</tp:member-ref> method.</p> +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_connect_to_stopped_tones ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_dtmf_connect_to_stopped_tones
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_dtmf_signal_callback_stopped_tones callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal StoppedTones. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>DTMF tones have finished playing on streams in this channel.</p> +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_connect_to_tones_deferred ()

    +
    TpProxySignalConnection * tp_cli_call_content_interface_dtmf_connect_to_tones_deferred
    +                                                        (TpCallContent *proxy,
    +                                                         tp_cli_call_content_interface_dtmf_signal_callback_tones_deferred callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal TonesDeferred. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when 'w' or 'W', indicating &quot;wait for the user to continue&quot;, is encountered while playing a DTMF string queued by <tp:member-ref>MultipleTones</tp:member-ref>. Any queued DTMF events after the 'w', which have not yet been played, are placed in the <tp:member-ref>DeferredTones</tp:member-ref> property and copied into this signal's argument.</p> <p>When the channel handler is ready to continue, it MAY pass the value of <tp:member-ref>DeferredTones</tp:member-ref> to <tp:member-ref>MultipleTones</tp:member-ref>, to resume sending. Alternatively, it MAY ignore the deferred tones, or even play different tones instead. Any deferred tones are discarded the next time a tone is played.</p> <p>This signal SHOULD NOT be emitted if there is nothing left to play, i.e. if the 'w' was the last character in the DTMF string.</p> +

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

    proxy :

    A TpCallContent or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_signal_callback_sending_tones ()

    +
    void                (*tp_cli_call_content_interface_dtmf_signal_callback_sending_tones)
    +                                                        (TpCallContent *proxy,
    +                                                         const gchar *arg_Tones,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal SendingTones. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_dtmf_connect_to_sending_tones() +was called

    arg_Tones :

    DTMF string (one or more events) that is to be played.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_signal_callback_stopped_tones ()

    +
    void                (*tp_cli_call_content_interface_dtmf_signal_callback_stopped_tones)
    +                                                        (TpCallContent *proxy,
    +                                                         gboolean arg_Cancelled,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal StoppedTones. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_dtmf_connect_to_stopped_tones() +was called

    arg_Cancelled :

    True if the DTMF tones were actively cancelled via <tp:member-ref>StopTone</tp:member-ref>.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_content_interface_dtmf_signal_callback_tones_deferred ()

    +
    void                (*tp_cli_call_content_interface_dtmf_signal_callback_tones_deferred)
    +                                                        (TpCallContent *proxy,
    +                                                         const gchar *arg_Tones,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal TonesDeferred. +

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

    proxy :

    The proxy on which tp_cli_call_content_interface_dtmf_connect_to_tones_deferred() +was called

    arg_Tones :

    The new non-empty value of <tp:member-ref>DeferredTones</tp:member-ref>.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-cli-call-misc.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-cli-call-misc.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-cli-call-misc.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-cli-call-misc.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,1464 @@ + + + + +Channel Call misc interfaces + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    Channel Call misc interfaces

    +

    Channel Call misc interfaces — client-side wrappers for misc call interfaces

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/call-misc.h>
    +
    +TpProxyPendingCall * tp_cli_call_content_media_description_call_accept
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         GHashTable *in_Local_Media_Description,
    +                                                         tp_cli_call_content_media_description_callback_for_accept callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_content_media_description_call_reject
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Reason,
    +                                                         tp_cli_call_content_media_description_callback_for_reject callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_media_description_callback_for_accept)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_content_media_description_callback_for_reject)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +
    +TpProxyPendingCall * tp_cli_call_stream_endpoint_call_accept_selected_candidate_pair
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         tp_cli_call_stream_endpoint_callback_for_accept_selected_candidate_pair callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_endpoint_call_reject_selected_candidate_pair
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         tp_cli_call_stream_endpoint_callback_for_reject_selected_candidate_pair callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_endpoint_call_set_controlling
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         gboolean in_Controlling,
    +                                                         tp_cli_call_stream_endpoint_callback_for_set_controlling callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_endpoint_call_set_endpoint_state
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_Component,
    +                                                         guint in_State,
    +                                                         tp_cli_call_stream_endpoint_callback_for_set_endpoint_state callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_endpoint_call_set_selected_candidate_pair
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         tp_cli_call_stream_endpoint_callback_for_set_selected_candidate_pair callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_endpoint_callback_for_accept_selected_candidate_pair)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_endpoint_callback_for_reject_selected_candidate_pair)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_endpoint_callback_for_set_controlling)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_endpoint_callback_for_set_endpoint_state)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_endpoint_callback_for_set_selected_candidate_pair)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +TpProxySignalConnection * tp_cli_call_stream_endpoint_connect_to_candidate_pair_selected
    +                                                        (gpointer proxy,
    +                                                         tp_cli_call_stream_endpoint_signal_callback_candidate_pair_selected callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_endpoint_connect_to_controlling_changed
    +                                                        (gpointer proxy,
    +                                                         tp_cli_call_stream_endpoint_signal_callback_controlling_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_endpoint_connect_to_endpoint_state_changed
    +                                                        (gpointer proxy,
    +                                                         tp_cli_call_stream_endpoint_signal_callback_endpoint_state_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_endpoint_connect_to_remote_candidates_added
    +                                                        (gpointer proxy,
    +                                                         tp_cli_call_stream_endpoint_signal_callback_remote_candidates_added callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_endpoint_connect_to_remote_credentials_set
    +                                                        (gpointer proxy,
    +                                                         tp_cli_call_stream_endpoint_signal_callback_remote_credentials_set callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +void                (*tp_cli_call_stream_endpoint_signal_callback_candidate_pair_selected)
    +                                                        (TpProxy *proxy,
    +                                                         const GValueArray *arg_Local_Candidate,
    +                                                         const GValueArray *arg_Remote_Candidate,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_endpoint_signal_callback_controlling_changed)
    +                                                        (TpProxy *proxy,
    +                                                         gboolean arg_Controlling,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_endpoint_signal_callback_endpoint_state_changed)
    +                                                        (TpProxy *proxy,
    +                                                         guint arg_Component,
    +                                                         guint arg_State,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_endpoint_signal_callback_remote_candidates_added)
    +                                                        (TpProxy *proxy,
    +                                                         const GPtrArray *arg_Candidates,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_endpoint_signal_callback_remote_credentials_set)
    +                                                        (TpProxy *proxy,
    +                                                         const gchar *arg_Username,
    +                                                         const gchar *arg_Password,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +
    +
    +
    +

    Description

    +

    +Misc interfaces for calls. +

    +
    +
    +

    Details

    +
    +

    tp_cli_call_content_media_description_call_accept ()

    +
    TpProxyPendingCall * tp_cli_call_content_media_description_call_accept
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         GHashTable *in_Local_Media_Description,
    +                                                         tp_cli_call_content_media_description_callback_for_accept callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a Accept method call. +

    +

    +Accepts the updated Description and update the corresponding local description. If FurtherNegotiationRequired is True, calling this method will generally cause a network round-trip and a new MediaDescription to be offered (hopefully with FurtherNegotiationRequired set to False). +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Local_Media_Description :

    Used to pass an 'in' argument: The local description to send to the remote contacts and to use in the <tp:dbus-ref namespace="ofdT.Call1">Content</tp:dbus-ref>.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_content_media_description_call_reject ()

    +
    TpProxyPendingCall * tp_cli_call_content_media_description_call_reject
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Reason,
    +                                                         tp_cli_call_content_media_description_callback_for_reject callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a Reject method call. +

    +

    +Reject the proposed update to the remote description. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Reason :

    Used to pass an 'in' argument: A structured reason for the rejection.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_content_media_description_callback_for_accept ()

    +
    void                (*tp_cli_call_content_media_description_callback_for_accept)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a Accept method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_content_media_description_callback_for_reject ()

    +
    void                (*tp_cli_call_content_media_description_callback_for_reject)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a Reject method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_call_accept_selected_candidate_pair ()

    +
    TpProxyPendingCall * tp_cli_call_stream_endpoint_call_accept_selected_candidate_pair
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         tp_cli_call_stream_endpoint_callback_for_accept_selected_candidate_pair callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a AcceptSelectedCandidatePair method call. +

    +

    +Called in response to <tp:member-ref>CandidatePairSelected</tp:member-ref> if/when this candidate pair is known to have passed its connectivity checks. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Local_Candidate :

    Used to pass an 'in' argument: The local candidate that has been selected.

    in_Remote_Candidate :

    Used to pass an 'in' argument: The remote candidate that has been selected.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_call_reject_selected_candidate_pair ()

    +
    TpProxyPendingCall * tp_cli_call_stream_endpoint_call_reject_selected_candidate_pair
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         tp_cli_call_stream_endpoint_callback_for_reject_selected_candidate_pair callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a RejectSelectedCandidatePair method call. +

    +

    +Called in response to <tp:member-ref>CandidatePairSelected</tp:member-ref> if/when this candidate pair is known to have failed its connectivity checks. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Local_Candidate :

    Used to pass an 'in' argument: The local candidate that has been selected.

    in_Remote_Candidate :

    Used to pass an 'in' argument: The remote candidate that has been selected.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_call_set_controlling ()

    +
    TpProxyPendingCall * tp_cli_call_stream_endpoint_call_set_controlling
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         gboolean in_Controlling,
    +                                                         tp_cli_call_stream_endpoint_callback_for_set_controlling callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a SetControlling method call. +

    +

    +Set whether the local side is taking the Controlling role. Note that if there are multiple endpoints (e.g. SIP call forking) it may be the case that all endpoints need to have the same controlling/controlled orientation. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Controlling :

    Used to pass an 'in' argument: The new value of <tp:member-ref>Controlling</tp:member-ref>.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_call_set_endpoint_state ()

    +
    TpProxyPendingCall * tp_cli_call_stream_endpoint_call_set_endpoint_state
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_Component,
    +                                                         guint in_State,
    +                                                         tp_cli_call_stream_endpoint_callback_for_set_endpoint_state callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a SetEndpointState method call. +

    +

    +Change the <tp:member-ref>EndpointState</tp:member-ref> of the endpoint. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Component :

    Used to pass an 'in' argument: The component whose state needs updating. (TpStreamComponent)

    in_State :

    Used to pass an 'in' argument: The new state of this component. (TpStreamEndpointState)

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_call_set_selected_candidate_pair ()

    +
    TpProxyPendingCall * tp_cli_call_stream_endpoint_call_set_selected_candidate_pair
    +                                                        (gpointer proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         tp_cli_call_stream_endpoint_callback_for_set_selected_candidate_pair callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a SetSelectedCandidatePair method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Update the entry in <tp:member-ref>SelectedCandidatePairs</tp:member-ref> for a particular component, and signal it to the remote side.</p> <p>This method should only be called by the controlling side of an ICE session. See <tp:member-ref>CandidatePairSelected</tp:member-ref> for details.</p> <tp:rationale> <p>In the SDP offer/answer model, this signalling will take place as generating an updated offer. Note that updates may be queued up until information about all components of all streams is gathered.</p> </tp:rationale> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Local_Candidate :

    Used to pass an 'in' argument: The local candidate that has been selected.

    in_Remote_Candidate :

    Used to pass an 'in' argument: The remote candidate that has been selected.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_callback_for_accept_selected_candidate_pair ()

    +
    void                (*tp_cli_call_stream_endpoint_callback_for_accept_selected_candidate_pair)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a AcceptSelectedCandidatePair method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_callback_for_reject_selected_candidate_pair ()

    +
    void                (*tp_cli_call_stream_endpoint_callback_for_reject_selected_candidate_pair)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a RejectSelectedCandidatePair method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_callback_for_set_controlling ()

    +
    void                (*tp_cli_call_stream_endpoint_callback_for_set_controlling)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a SetControlling method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_callback_for_set_endpoint_state ()

    +
    void                (*tp_cli_call_stream_endpoint_callback_for_set_endpoint_state)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a SetEndpointState method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_callback_for_set_selected_candidate_pair ()

    +
    void                (*tp_cli_call_stream_endpoint_callback_for_set_selected_candidate_pair)
    +                                                        (TpProxy *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a SetSelectedCandidatePair method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_connect_to_candidate_pair_selected ()

    +
    TpProxySignalConnection * tp_cli_call_stream_endpoint_connect_to_candidate_pair_selected
    +                                                        (gpointer proxy,
    +                                                         tp_cli_call_stream_endpoint_signal_callback_candidate_pair_selected callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal CandidatePairSelected. +

    +

    +Emitted when a candidate is selected for use in the stream by the controlling side of an ICE session. The controlled side should call <tp:member-ref>AcceptSelectedCandidatePair</tp:member-ref> or <tp:member-ref>RejectSelectedCandidatePair</tp:member-ref> when connectivity checks have either succeeded or failed for this candidate pair. See also: <tp:member-ref>SelectedCandidatePairs</tp:member-ref>. +

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

    proxy :

    A TpProxy or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_connect_to_controlling_changed ()

    +
    TpProxySignalConnection * tp_cli_call_stream_endpoint_connect_to_controlling_changed
    +                                                        (gpointer proxy,
    +                                                         tp_cli_call_stream_endpoint_signal_callback_controlling_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal ControllingChanged. +

    +

    +The value of <tp:member-ref>Controlling</tp:member-ref> has changed. +

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

    proxy :

    A TpProxy or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_connect_to_endpoint_state_changed ()

    +
    TpProxySignalConnection * tp_cli_call_stream_endpoint_connect_to_endpoint_state_changed
    +                                                        (gpointer proxy,
    +                                                         tp_cli_call_stream_endpoint_signal_callback_endpoint_state_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal EndpointStateChanged. +

    +

    +Emitted when the <tp:member-ref>EndpointState</tp:member-ref> property changes. +

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

    proxy :

    A TpProxy or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_connect_to_remote_candidates_added ()

    +
    TpProxySignalConnection * tp_cli_call_stream_endpoint_connect_to_remote_candidates_added
    +                                                        (gpointer proxy,
    +                                                         tp_cli_call_stream_endpoint_signal_callback_remote_candidates_added callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal RemoteCandidatesAdded. +

    +

    +Emitted when remote candidates are added to the <tp:member-ref>RemoteCandidates</tp:member-ref> property. +

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

    proxy :

    A TpProxy or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_connect_to_remote_credentials_set ()

    +
    TpProxySignalConnection * tp_cli_call_stream_endpoint_connect_to_remote_credentials_set
    +                                                        (gpointer proxy,
    +                                                         tp_cli_call_stream_endpoint_signal_callback_remote_credentials_set callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal RemoteCredentialsSet. +

    +

    +Emitted when the remote ICE credentials for the endpoint are set. If each candidate has different credentials, then this signal will never be fired. +

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

    proxy :

    A TpProxy or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_signal_callback_candidate_pair_selected ()

    +
    void                (*tp_cli_call_stream_endpoint_signal_callback_candidate_pair_selected)
    +                                                        (TpProxy *proxy,
    +                                                         const GValueArray *arg_Local_Candidate,
    +                                                         const GValueArray *arg_Remote_Candidate,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal CandidatePairSelected. +

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

    proxy :

    The proxy on which tp_cli_call_stream_endpoint_connect_to_candidate_pair_selected() +was called

    arg_Local_Candidate :

    The local candidate that has been selected.

    arg_Remote_Candidate :

    The remote candidate that has been selected.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_signal_callback_controlling_changed ()

    +
    void                (*tp_cli_call_stream_endpoint_signal_callback_controlling_changed)
    +                                                        (TpProxy *proxy,
    +                                                         gboolean arg_Controlling,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal ControllingChanged. +

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

    proxy :

    The proxy on which tp_cli_call_stream_endpoint_connect_to_controlling_changed() +was called

    arg_Controlling :

    The new value of <tp:member-ref>Controlling</tp:member-ref>.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_signal_callback_endpoint_state_changed ()

    +
    void                (*tp_cli_call_stream_endpoint_signal_callback_endpoint_state_changed)
    +                                                        (TpProxy *proxy,
    +                                                         guint arg_Component,
    +                                                         guint arg_State,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal EndpointStateChanged. +

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

    proxy :

    The proxy on which tp_cli_call_stream_endpoint_connect_to_endpoint_state_changed() +was called

    arg_Component :

    The component whose state has changed. (TpStreamComponent)

    arg_State :

    The new state of this component. (TpStreamEndpointState)

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_signal_callback_remote_candidates_added ()

    +
    void                (*tp_cli_call_stream_endpoint_signal_callback_remote_candidates_added)
    +                                                        (TpProxy *proxy,
    +                                                         const GPtrArray *arg_Candidates,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal RemoteCandidatesAdded. +

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

    proxy :

    The proxy on which tp_cli_call_stream_endpoint_connect_to_remote_candidates_added() +was called

    arg_Candidates :

    The candidates that were added.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_endpoint_signal_callback_remote_credentials_set ()

    +
    void                (*tp_cli_call_stream_endpoint_signal_callback_remote_credentials_set)
    +                                                        (TpProxy *proxy,
    +                                                         const gchar *arg_Username,
    +                                                         const gchar *arg_Password,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal RemoteCredentialsSet. +

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

    proxy :

    The proxy on which tp_cli_call_stream_endpoint_connect_to_remote_credentials_set() +was called

    arg_Username :

    The username set.

    arg_Password :

    The password set.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-cli-call-stream.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-cli-call-stream.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-cli-call-stream.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-cli-call-stream.html 2012-02-20 17:31:29.000000000 +0000 @@ -0,0 +1,2469 @@ + + + + +Channel Call stream interfaces + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    Channel Call stream interfaces

    +

    Channel Call stream interfaces — client-side wrappers for call streams

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/call-stream.h>
    +
    +TpProxyPendingCall * tp_cli_call_stream_call_request_receiving
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_Contact,
    +                                                         gboolean in_Receive,
    +                                                         tp_cli_call_stream_callback_for_request_receiving callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_call_set_sending
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         gboolean in_Send,
    +                                                         tp_cli_call_stream_callback_for_set_sending callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_callback_for_request_receiving)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_callback_for_set_sending)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +TpProxySignalConnection * tp_cli_call_stream_connect_to_local_sending_state_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_signal_callback_local_sending_state_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_connect_to_remote_members_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_signal_callback_remote_members_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +void                (*tp_cli_call_stream_signal_callback_local_sending_state_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         guint arg_State,
    +                                                         const GValueArray *arg_Reason,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_signal_callback_remote_members_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         GHashTable *arg_Updates,
    +                                                         GHashTable *arg_Identifiers,
    +                                                         const GArray *arg_Removed,
    +                                                         const GValueArray *arg_Reason,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +
    +TpProxyPendingCall * tp_cli_call_stream_interface_media_call_add_candidates
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         const GPtrArray *in_Candidates,
    +                                                         tp_cli_call_stream_interface_media_callback_for_add_candidates callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_interface_media_call_complete_receiving_state_change
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_State,
    +                                                         tp_cli_call_stream_interface_media_callback_for_complete_receiving_state_change callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_interface_media_call_complete_sending_state_change
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_State,
    +                                                         tp_cli_call_stream_interface_media_callback_for_complete_sending_state_change callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_interface_media_call_fail
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Reason,
    +                                                         tp_cli_call_stream_interface_media_callback_for_fail callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_interface_media_call_finish_initial_candidates
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_call_stream_interface_media_callback_for_finish_initial_candidates callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_interface_media_call_report_receiving_failure
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Error,
    +                                                         const gchar *in_Message,
    +                                                         tp_cli_call_stream_interface_media_callback_for_report_receiving_failure callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_interface_media_call_report_sending_failure
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Error,
    +                                                         const gchar *in_Message,
    +                                                         tp_cli_call_stream_interface_media_callback_for_report_sending_failure callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_call_stream_interface_media_call_set_credentials
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         const gchar *in_Username,
    +                                                         const gchar *in_Password,
    +                                                         tp_cli_call_stream_interface_media_callback_for_set_credentials callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_callback_for_add_candidates)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_callback_for_complete_receiving_state_change)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_callback_for_complete_sending_state_change)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_callback_for_fail)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_callback_for_finish_initial_candidates)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_callback_for_report_receiving_failure)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_callback_for_report_sending_failure)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_callback_for_set_credentials)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_endpoints_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_endpoints_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_ice_restart_requested
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_ice_restart_requested callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_local_candidates_added
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_local_candidates_added callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_local_credentials_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_local_credentials_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_receiving_state_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_receiving_state_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_relay_info_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_relay_info_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_sending_state_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_sending_state_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_server_info_retrieved
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_server_info_retrieved callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_stun_servers_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_stun_servers_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +void                (*tp_cli_call_stream_interface_media_signal_callback_endpoints_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         const GPtrArray *arg_Endpoints_Added,
    +                                                         const GPtrArray *arg_Endpoints_Removed,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_signal_callback_ice_restart_requested)
    +                                                        (TpCallStream *proxy,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_signal_callback_local_candidates_added)
    +                                                        (TpCallStream *proxy,
    +                                                         const GPtrArray *arg_Candidates,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_signal_callback_local_credentials_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         const gchar *arg_Username,
    +                                                         const gchar *arg_Password,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_signal_callback_receiving_state_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         guint arg_State,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_signal_callback_relay_info_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         const GPtrArray *arg_Relay_Info,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_signal_callback_sending_state_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         guint arg_State,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_signal_callback_server_info_retrieved)
    +                                                        (TpCallStream *proxy,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_call_stream_interface_media_signal_callback_stun_servers_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         const GPtrArray *arg_Servers,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +
    +
    +
    +

    Description

    +

    +Represents the streams of a call. +

    +
    +
    +

    Details

    +
    +

    tp_cli_call_stream_call_request_receiving ()

    +
    TpProxyPendingCall * tp_cli_call_stream_call_request_receiving
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_Contact,
    +                                                         gboolean in_Receive,
    +                                                         tp_cli_call_stream_callback_for_request_receiving callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a RequestReceiving method call. +

    +

    +<p>Request that a remote contact stops or starts sending on this stream.</p> <p>The <tp:member-ref>CanRequestReceiving</tp:member-ref> property defines whether the protocol allows the local user to request the other side start sending on this stream.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Contact :

    Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Contact from which sending is requested</p> (TpContactHandle)

    in_Receive :

    Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>If true, request that the given contact starts to send media. If false, request that the given contact stops sending media.</p>

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_call_set_sending ()

    +
    TpProxyPendingCall * tp_cli_call_stream_call_set_sending
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         gboolean in_Send,
    +                                                         tp_cli_call_stream_callback_for_set_sending callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a SetSending method call. +

    +

    +Set the stream to start or stop sending media from the local user to other contacts. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Send :

    Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>If True, the <tp:member-ref>LocalSendingState</tp:member-ref> should change to <tp:value-ref type="Sending_State">Sending</tp:value-ref>, if it isn't already.</p> <p>If False, the <tp:member-ref>LocalSendingState</tp:member-ref> should change to <tp:value-ref type="Sending_State">None</tp:value-ref>, if it isn't already.</p>

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_callback_for_request_receiving ()

    +
    void                (*tp_cli_call_stream_callback_for_request_receiving)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a RequestReceiving method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_callback_for_set_sending ()

    +
    void                (*tp_cli_call_stream_callback_for_set_sending)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a SetSending method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_connect_to_local_sending_state_changed ()

    +
    TpProxySignalConnection * tp_cli_call_stream_connect_to_local_sending_state_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_signal_callback_local_sending_state_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal LocalSendingStateChanged. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> Emitted when <tp:member-ref>LocalSendingState</tp:member-ref> changes. +

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

    proxy :

    A TpCallStream or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_connect_to_remote_members_changed ()

    +
    TpProxySignalConnection * tp_cli_call_stream_connect_to_remote_members_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_signal_callback_remote_members_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal RemoteMembersChanged. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> Emitted when <tp:member-ref>RemoteMembers</tp:member-ref> changes. +

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

    proxy :

    A TpCallStream or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_signal_callback_local_sending_state_changed ()

    +
    void                (*tp_cli_call_stream_signal_callback_local_sending_state_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         guint arg_State,
    +                                                         const GValueArray *arg_Reason,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal LocalSendingStateChanged. +

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

    proxy :

    The proxy on which tp_cli_call_stream_connect_to_local_sending_state_changed() +was called

    arg_State :

    The new value of <tp:member-ref>LocalSendingState</tp:member-ref>. (TpSendingState)

    arg_Reason :

    A structured reason for the change.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_signal_callback_remote_members_changed ()

    +
    void                (*tp_cli_call_stream_signal_callback_remote_members_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         GHashTable *arg_Updates,
    +                                                         GHashTable *arg_Identifiers,
    +                                                         const GArray *arg_Removed,
    +                                                         const GValueArray *arg_Reason,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal RemoteMembersChanged. +

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

    proxy :

    The proxy on which tp_cli_call_stream_connect_to_remote_members_changed() +was called

    arg_Updates :

    A mapping from channel-specific handles to their updated sending state, whose keys include at least the members who were added, and the members whose states changed.

    arg_Identifiers :

    <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> The identifiers of the contacts in the <var>Updates</var> map.

    arg_Removed :

    The channel-specific handles that were removed from the keys of the <tp:member-ref>RemoteMembers</tp:member-ref> property, as a result of the contact leaving this stream

    arg_Reason :

    A structured reason for the change.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_call_add_candidates ()

    +
    TpProxyPendingCall * tp_cli_call_stream_interface_media_call_add_candidates
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         const GPtrArray *in_Candidates,
    +                                                         tp_cli_call_stream_interface_media_callback_for_add_candidates callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a AddCandidates method call. +

    +

    +Add candidates to the <tp:member-ref>LocalCandidates</tp:member-ref> property and signal them to the remote contact(s). Note that connection managers MAY delay the sending of candidates until <tp:member-ref>FinishInitialCandidates</tp:member-ref> is called. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Candidates :

    Used to pass an 'in' argument: The candidates to be added.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_call_complete_receiving_state_change ()

    +
    TpProxyPendingCall * tp_cli_call_stream_interface_media_call_complete_receiving_state_change
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_State,
    +                                                         tp_cli_call_stream_interface_media_callback_for_complete_receiving_state_change callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a CompleteReceivingStateChange method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Called in response to <tp:member-ref>ReceivingStateChanged</tp:member-ref>(Pending_*, *) to indicate that the media state has successfully progressed from Pending_{Start, Stop, Pause} to the corresponding non-pending state.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_State :

    Used to pass an 'in' argument: The new (non-pending) value of ReceivingState. (TpStreamFlowState)

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_call_complete_sending_state_change ()

    +
    TpProxyPendingCall * tp_cli_call_stream_interface_media_call_complete_sending_state_change
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_State,
    +                                                         tp_cli_call_stream_interface_media_callback_for_complete_sending_state_change callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a CompleteSendingStateChange method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Called in response to <tp:member-ref>SendingStateChanged</tp:member-ref>(Pending_*, *) to indicate that the media state has successfully progressed from Pending_{Start, Stop, Pause} to the corresponding non-pending state.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_State :

    Used to pass an 'in' argument: The new (non-pending) value of SendingState. (TpStreamFlowState)

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_call_fail ()

    +
    TpProxyPendingCall * tp_cli_call_stream_interface_media_call_fail
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         const GValueArray *in_Reason,
    +                                                         tp_cli_call_stream_interface_media_callback_for_fail callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a Fail method call. +

    +

    +Signal an unrecoverable error for this stream, and remove it. If all streams are removed from a content, then it will also be removed. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Reason :

    Used to pass an 'in' argument: A structured reason for stream removal.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_call_finish_initial_candidates ()

    +
    TpProxyPendingCall * tp_cli_call_stream_interface_media_call_finish_initial_candidates
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_call_stream_interface_media_callback_for_finish_initial_candidates callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a FinishInitialCandidates method call. +

    +

    +This indicates to the CM that the initial batch of candidates has been added, and should now be processed/sent to the remote side. <tp:rationale> Protocols supporting Raw UDP SHOULD wait for FinishInitialCandidates, and then set the lowest priority candidate as the Raw UDP candidate. </tp:rationale> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_call_report_receiving_failure ()

    +
    TpProxyPendingCall * tp_cli_call_stream_interface_media_call_report_receiving_failure
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Error,
    +                                                         const gchar *in_Message,
    +                                                         tp_cli_call_stream_interface_media_callback_for_report_receiving_failure callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a ReportReceivingFailure method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> Can be called at any point to indicate a failure in the incoming portion of the stream. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Reason :

    Used to pass an 'in' argument: (Undocumented) (TpCallStateChangeReason)

    in_Error :

    Used to pass an 'in' argument: (Undocumented)

    in_Message :

    Used to pass an 'in' argument: (Undocumented)

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_call_report_sending_failure ()

    +
    TpProxyPendingCall * tp_cli_call_stream_interface_media_call_report_sending_failure
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Error,
    +                                                         const gchar *in_Message,
    +                                                         tp_cli_call_stream_interface_media_callback_for_report_sending_failure callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a ReportSendingFailure method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> Can be called at any point to indicate a failure in the outgoing portion of the stream. +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Reason :

    Used to pass an 'in' argument: (Undocumented) (TpCallStateChangeReason)

    in_Error :

    Used to pass an 'in' argument: (Undocumented)

    in_Message :

    Used to pass an 'in' argument: (Undocumented)

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_call_set_credentials ()

    +
    TpProxyPendingCall * tp_cli_call_stream_interface_media_call_set_credentials
    +                                                        (TpCallStream *proxy,
    +                                                         gint timeout_ms,
    +                                                         const gchar *in_Username,
    +                                                         const gchar *in_Password,
    +                                                         tp_cli_call_stream_interface_media_callback_for_set_credentials callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a SetCredentials method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Used to set the username fragment and password for streams that have global credentials.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Username :

    Used to pass an 'in' argument: The username to use when authenticating on the stream.

    in_Password :

    Used to pass an 'in' argument: The password to use when authenticating on the stream.

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_callback_for_add_candidates ()

    +
    void                (*tp_cli_call_stream_interface_media_callback_for_add_candidates)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a AddCandidates method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_callback_for_complete_receiving_state_change ()

    +
    void                (*tp_cli_call_stream_interface_media_callback_for_complete_receiving_state_change)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a CompleteReceivingStateChange method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_callback_for_complete_sending_state_change ()

    +
    void                (*tp_cli_call_stream_interface_media_callback_for_complete_sending_state_change)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a CompleteSendingStateChange method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_callback_for_fail ()

    +
    void                (*tp_cli_call_stream_interface_media_callback_for_fail)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a Fail method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_callback_for_finish_initial_candidates ()

    +
    void                (*tp_cli_call_stream_interface_media_callback_for_finish_initial_candidates)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a FinishInitialCandidates method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_callback_for_report_receiving_failure ()

    +
    void                (*tp_cli_call_stream_interface_media_callback_for_report_receiving_failure)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a ReportReceivingFailure method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_callback_for_report_sending_failure ()

    +
    void                (*tp_cli_call_stream_interface_media_callback_for_report_sending_failure)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a ReportSendingFailure method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_callback_for_set_credentials ()

    +
    void                (*tp_cli_call_stream_interface_media_callback_for_set_credentials)
    +                                                        (TpCallStream *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a SetCredentials method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_connect_to_endpoints_changed ()

    +
    TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_endpoints_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_endpoints_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal EndpointsChanged. +

    +

    +Emitted when the <tp:member-ref>Endpoints</tp:member-ref> property changes. +

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

    proxy :

    A TpCallStream or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_connect_to_ice_restart_requested ()

    +
    TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_ice_restart_requested
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_ice_restart_requested callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal ICERestartRequested. +

    +

    +Emitted when the remote side requests an ICE restart (e.g. third party call control, when the remote endpoint changes). The streaming implementation should call <tp:member-ref>SetCredentials</tp:member-ref> again. +

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

    proxy :

    A TpCallStream or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_connect_to_local_candidates_added ()

    +
    TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_local_candidates_added
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_local_candidates_added callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal LocalCandidatesAdded. +

    +

    +Emitted when local candidates are added to the <tp:member-ref>LocalCandidates</tp:member-ref> property. +

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

    proxy :

    A TpCallStream or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_connect_to_local_credentials_changed ()

    +
    TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_local_credentials_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_local_credentials_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal LocalCredentialsChanged. +

    +

    +Emitted when the value of <tp:member-ref>LocalCredentials</tp:member-ref> changes to a non-empty value. This should only happen when the streaming implementation calls <tp:member-ref>SetCredentials</tp:member-ref>, so this signal is mostly useful for debugging. +

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

    proxy :

    A TpCallStream or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_connect_to_receiving_state_changed ()

    +
    TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_receiving_state_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_receiving_state_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal ReceivingStateChanged. +

    +

    +Change notification for <tp:member-ref>ReceivingState</tp:member-ref>. +

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

    proxy :

    A TpCallStream or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_connect_to_relay_info_changed ()

    +
    TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_relay_info_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_relay_info_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal RelayInfoChanged. +

    +

    +Emitted when the value of <tp:member-ref>RelayInfo</tp:member-ref> changes. +

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

    proxy :

    A TpCallStream or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_connect_to_sending_state_changed ()

    +
    TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_sending_state_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_sending_state_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal SendingStateChanged. +

    +

    +Change notification for <tp:member-ref>SendingState</tp:member-ref>. Note that this information is duplicated onto the Stream interface, so that UIs can ignore the Media interface, and streaming implementations can ignore everything but the media interface. +

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

    proxy :

    A TpCallStream or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_connect_to_server_info_retrieved ()

    +
    TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_server_info_retrieved
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_server_info_retrieved callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal ServerInfoRetrieved. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Signals that the initial information about STUN and Relay servers has been retrieved, i.e. the <tp:member-ref>HasServerInfo</tp:member-ref> property is now true.</p> +

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

    proxy :

    A TpCallStream or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_connect_to_stun_servers_changed ()

    +
    TpProxySignalConnection * tp_cli_call_stream_interface_media_connect_to_stun_servers_changed
    +                                                        (TpCallStream *proxy,
    +                                                         tp_cli_call_stream_interface_media_signal_callback_stun_servers_changed callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object,
    +                                                         GError **error);
    +

    +Connect a handler to the signal STUNServersChanged. +

    +

    +Emitted when the value of <tp:member-ref>STUNServers</tp:member-ref> changes. +

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

    proxy :

    A TpCallStream or subclass

    callback :

    Callback to be called when the signal is +received

    user_data :

    User-supplied data for the callback

    destroy :

    Destructor for the user-supplied data, which +will be called when this signal is disconnected, or +before this function returns NULL +

    weak_object :

    A GObject which will be weakly referenced; +if it is destroyed, this callback will automatically be +disconnected

    error :

    If not NULL, used to raise an error if NULL is +returned

    Returns :

    a TpProxySignalConnection containing all of the +above, which can be used to disconnect the signal; or +NULL if the proxy does not have the desired interface +or has become invalid.
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_signal_callback_endpoints_changed ()

    +
    void                (*tp_cli_call_stream_interface_media_signal_callback_endpoints_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         const GPtrArray *arg_Endpoints_Added,
    +                                                         const GPtrArray *arg_Endpoints_Removed,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal EndpointsChanged. +

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

    proxy :

    The proxy on which tp_cli_call_stream_interface_media_connect_to_endpoints_changed() +was called

    arg_Endpoints_Added :

    Endpoints that were added.

    arg_Endpoints_Removed :

    Endpoints that no longer exist.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_signal_callback_ice_restart_requested ()

    +
    void                (*tp_cli_call_stream_interface_media_signal_callback_ice_restart_requested)
    +                                                        (TpCallStream *proxy,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal ICERestartRequested. +

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

    proxy :

    The proxy on which tp_cli_call_stream_interface_media_connect_to_ice_restart_requested() +was called

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_signal_callback_local_candidates_added ()

    +
    void                (*tp_cli_call_stream_interface_media_signal_callback_local_candidates_added)
    +                                                        (TpCallStream *proxy,
    +                                                         const GPtrArray *arg_Candidates,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal LocalCandidatesAdded. +

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

    proxy :

    The proxy on which tp_cli_call_stream_interface_media_connect_to_local_candidates_added() +was called

    arg_Candidates :

    Candidates that have been added.

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_signal_callback_local_credentials_changed ()

    +
    void                (*tp_cli_call_stream_interface_media_signal_callback_local_credentials_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         const gchar *arg_Username,
    +                                                         const gchar *arg_Password,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal LocalCredentialsChanged. +

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

    proxy :

    The proxy on which tp_cli_call_stream_interface_media_connect_to_local_credentials_changed() +was called

    arg_Username :

    (Undocumented)

    arg_Password :

    (Undocumented)

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_signal_callback_receiving_state_changed ()

    +
    void                (*tp_cli_call_stream_interface_media_signal_callback_receiving_state_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         guint arg_State,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal ReceivingStateChanged. +

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

    proxy :

    The proxy on which tp_cli_call_stream_interface_media_connect_to_receiving_state_changed() +was called

    arg_State :

    The new value of ReceivingState. (TpStreamFlowState)

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_signal_callback_relay_info_changed ()

    +
    void                (*tp_cli_call_stream_interface_media_signal_callback_relay_info_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         const GPtrArray *arg_Relay_Info,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal RelayInfoChanged. +

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

    proxy :

    The proxy on which tp_cli_call_stream_interface_media_connect_to_relay_info_changed() +was called

    arg_Relay_Info :

    (Undocumented)

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_signal_callback_sending_state_changed ()

    +
    void                (*tp_cli_call_stream_interface_media_signal_callback_sending_state_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         guint arg_State,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal SendingStateChanged. +

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

    proxy :

    The proxy on which tp_cli_call_stream_interface_media_connect_to_sending_state_changed() +was called

    arg_State :

    The new value of SendingState. (TpStreamFlowState)

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_signal_callback_server_info_retrieved ()

    +
    void                (*tp_cli_call_stream_interface_media_signal_callback_server_info_retrieved)
    +                                                        (TpCallStream *proxy,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal ServerInfoRetrieved. +

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

    proxy :

    The proxy on which tp_cli_call_stream_interface_media_connect_to_server_info_retrieved() +was called

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    +

    tp_cli_call_stream_interface_media_signal_callback_stun_servers_changed ()

    +
    void                (*tp_cli_call_stream_interface_media_signal_callback_stun_servers_changed)
    +                                                        (TpCallStream *proxy,
    +                                                         const GPtrArray *arg_Servers,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Represents the signature of a callback for the signal STUNServersChanged. +

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

    proxy :

    The proxy on which tp_cli_call_stream_interface_media_connect_to_stun_servers_changed() +was called

    arg_Servers :

    (Undocumented)

    user_data :

    User-supplied data

    weak_object :

    User-supplied weakly referenced object
    +
    +
    +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-client.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-client.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-client.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-client.html 2012-02-20 17:31:30.000000000 +0000 @@ -77,7 +77,7 @@ const gchar *in_Connection, const GPtrArray *in_Channels, const GPtrArray *in_Requests_Satisfied, - guint64 in_User_Action_Time, + guint64 in_User_Action_Time, GHashTable *in_Handler_Info, tp_cli_client_handler_callback_for_handle_channels callback, gpointer user_data, @@ -369,7 +369,7 @@ const gchar *in_Connection, const GPtrArray *in_Channels, const GPtrArray *in_Requests_Satisfied, - guint64 in_User_Action_Time, + guint64 in_User_Action_Time, GHashTable *in_Handler_Info, tp_cli_client_handler_callback_for_handle_channels callback, gpointer user_data, diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-connection-addressing.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-connection-addressing.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-connection-addressing.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-connection-addressing.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,343 @@ + + + + +Connection Addressing interface + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    Connection Addressing interface

    +

    Connection Addressing interface — client-side wrappers for the Addressing interface

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/connection.h>
    +
    +TpProxyPendingCall * tp_cli_connection_interface_addressing_call_get_contacts_by_uri
    +                                                        (TpConnection *proxy,
    +                                                         gint timeout_ms,
    +                                                         const gchar **in_URIs,
    +                                                         const gchar **in_Interfaces,
    +                                                         tp_cli_connection_interface_addressing_callback_for_get_contacts_by_uri callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +TpProxyPendingCall * tp_cli_connection_interface_addressing_call_get_contacts_by_vcard_field
    +                                                        (TpConnection *proxy,
    +                                                         gint timeout_ms,
    +                                                         const gchar *in_Field,
    +                                                         const gchar **in_Addresses,
    +                                                         const gchar **in_Interfaces,
    +                                                         tp_cli_connection_interface_addressing_callback_for_get_contacts_by_vcard_field callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_connection_interface_addressing_callback_for_get_contacts_by_uri)
    +                                                        (TpConnection *proxy,
    +                                                         GHashTable *out_Requested,
    +                                                         GHashTable *out_Attributes,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +void                (*tp_cli_connection_interface_addressing_callback_for_get_contacts_by_vcard_field)
    +                                                        (TpConnection *proxy,
    +                                                         GHashTable *out_Requested,
    +                                                         GHashTable *out_Attributes,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +
    +
    +
    +

    Description

    +

    +An interface for connections in protocols where contacts' unique +identifiers can be expressed as vCard fields and/or URIs. +

    +
    +
    +

    Details

    +
    +

    tp_cli_connection_interface_addressing_call_get_contacts_by_uri ()

    +
    TpProxyPendingCall * tp_cli_connection_interface_addressing_call_get_contacts_by_uri
    +                                                        (TpConnection *proxy,
    +                                                         gint timeout_ms,
    +                                                         const gchar **in_URIs,
    +                                                         const gchar **in_Interfaces,
    +                                                         tp_cli_connection_interface_addressing_callback_for_get_contacts_by_uri callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a GetContactsByURI method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Request contacts and retrieve their attributes using URI addresses.</p> <p>The connection manager should record that these handles are in use by the client who invokes this method, and must not deallocate the handles until the client disconnects from the bus or calls the <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.ReleaseHandles</tp:dbus-ref> method.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_URIs :

    Used to pass an 'in' argument: The URI addresses to get contact handles for. Supported schemes can be found in <tp:dbus-ref namespace="org.freedesktop.Telepathy.Protocol.Interface.Addressing">AddressableURISchemes</tp:dbus-ref>.

    in_Interfaces :

    Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.</p> <p>Attributes from this interface and from <tp:dbus-ref>org.freedesktop.Telepathy.Connection</tp:dbus-ref> are always returned, and need not be requested explicitly.</p> <p>The behavior of this parameter is similar to the same parameter in <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface">Contacts.GetContactAttributes</tp:dbus-ref>.</p>

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_connection_interface_addressing_call_get_contacts_by_vcard_field ()

    +
    TpProxyPendingCall * tp_cli_connection_interface_addressing_call_get_contacts_by_vcard_field
    +                                                        (TpConnection *proxy,
    +                                                         gint timeout_ms,
    +                                                         const gchar *in_Field,
    +                                                         const gchar **in_Addresses,
    +                                                         const gchar **in_Interfaces,
    +                                                         tp_cli_connection_interface_addressing_callback_for_get_contacts_by_vcard_field callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a GetContactsByVCardField method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Request contacts and retrieve their attributes using a given field in their vCards.</p> <p>The connection manager should record that these handles are in use by the client who invokes this method, and must not deallocate the handles until the client disconnects from the bus or calls the <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.ReleaseHandles</tp:dbus-ref> method.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    in_Field :

    Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>The vCard field of the addresses we are requesting. The field name SHOULD be in lower case. Supported fields can be found in <tp:dbus-ref namespace="org.freedesktop.Telepathy.Protocol.Interface.Addressing">AddressableVCardFields</tp:dbus-ref>.</p> <p>The <code>url</code> vCard field MUST NOT appear here; see <tp:member-ref>GetContactsByURI</tp:member-ref> instead.</p> <tp:rationale> <p>In practice, protocols have a limited set of URI schemes that make sense to resolve as a contact.</p> </tp:rationale>

    in_Addresses :

    Used to pass an 'in' argument: The addresses to get contact handles for. The address types should match the given vCard field.

    in_Interfaces :

    Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A list of strings indicating which D-Bus interfaces the calling process is interested in. All supported attributes from these interfaces, whose values can be obtained without additional network activity, will be in the reply.</p> <p>Attributes from this interface and from <tp:dbus-ref>org.freedesktop.Telepathy.Connection</tp:dbus-ref> are always returned, and need not be requested explicitly.</p> <p>The behavior of this parameter is similar to the same parameter in <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface">Contacts.GetContactAttributes</tp:dbus-ref>.</p>

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +
    +

    tp_cli_connection_interface_addressing_callback_for_get_contacts_by_uri ()

    +
    void                (*tp_cli_connection_interface_addressing_callback_for_get_contacts_by_uri)
    +                                                        (TpConnection *proxy,
    +                                                         GHashTable *out_Requested,
    +                                                         GHashTable *out_Attributes,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a GetContactsByURI method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    out_Requested :

    Used to return an 'out' argument if error is NULL: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A mapping of requested URIs to the corresponding contact handles.</p> <p>Requested URIs that are not valid or understood for this protocol MUST be omitted from the mapping.</p>

    out_Attributes :

    Used to return an 'out' argument if error is NULL: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A dictionary mapping the contact handles to contact attributes. If any of the requested addresses are in fact invalid, they are simply omitted from this mapping. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.</p> <p>Requested URIs that are not valid or understood for this protocol MUST be omitted from the mapping.</p> <p>Each contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (<code>org.freedesktop.Telepathy.Connection/contact-id</code>). </p>

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    tp_cli_connection_interface_addressing_callback_for_get_contacts_by_vcard_field ()

    +
    void                (*tp_cli_connection_interface_addressing_callback_for_get_contacts_by_vcard_field)
    +                                                        (TpConnection *proxy,
    +                                                         GHashTable *out_Requested,
    +                                                         GHashTable *out_Attributes,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a GetContactsByVCardField method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    out_Requested :

    Used to return an 'out' argument if error is NULL: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A mapping from requested vCard addresses to the corresponding contact handles.</p> <p>Requested addresses that are not valid or understood for this protocol MUST be omitted from the mapping.</p>

    out_Attributes :

    Used to return an 'out' argument if error is NULL: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A dictionary mapping the contact handles to contact attributes. If any of the requested addresses are in fact invalid, they are simply omitted from this mapping. If contact attributes are not immediately known, the behaviour is defined by the interface; the attribute should either be omitted from the result or replaced with a default value.</p> <p>Requested addresses that are not valid or understood for this protocol MUST be omitted from the mapping.</p> <p>Each contact's attributes will always include at least the identifier that would be obtained by inspecting the handle (<code>org.freedesktop.Telepathy.Connection/contact-id</code>). </p>

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +
    +

    See Also

    +TpConnection +
    +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-connection-contact-list.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-connection-contact-list.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-connection-contact-list.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-connection-contact-list.html 2012-02-20 17:31:30.000000000 +0000 @@ -255,6 +255,13 @@ gpointer user_data, GDestroyNotify destroy, GObject *weak_object); +TpProxyPendingCall * tp_cli_connection_interface_contact_list_call_download + (TpConnection *proxy, + gint timeout_ms, + tp_cli_connection_interface_contact_list_callback_for_download callback, + gpointer user_data, + GDestroyNotify destroy, + GObject *weak_object); TpProxyPendingCall * tp_cli_connection_interface_contact_list_call_remove_contacts (TpConnection *proxy, gint timeout_ms, @@ -293,6 +300,11 @@ const GError *error, gpointer user_data, GObject *weak_object); +void (*tp_cli_connection_interface_contact_list_callback_for_download) + (TpConnection *proxy, + const GError *error, + gpointer user_data, + GObject *weak_object); void (*tp_cli_connection_interface_contact_list_callback_for_remove_contacts) (TpConnection *proxy, const GError *error, @@ -2096,6 +2108,72 @@

    +

    tp_cli_connection_interface_contact_list_call_download ()

    +
    TpProxyPendingCall * tp_cli_connection_interface_contact_list_call_download
    +                                                        (TpConnection *proxy,
    +                                                         gint timeout_ms,
    +                                                         tp_cli_connection_interface_contact_list_callback_for_download callback,
    +                                                         gpointer user_data,
    +                                                         GDestroyNotify destroy,
    +                                                         GObject *weak_object);
    +

    +Start a Download method call. +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Download the contact list from the server. If <tp:member-ref>DownloadAtConnection</tp:member-ref> is true, Download does nothing.</p> +

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

    proxy :

    the TpProxy +

    timeout_ms :

    the timeout in milliseconds, or -1 to use the +default

    callback :

    called when the method call succeeds or fails; +may be NULL to make a "fire and forget" call with no +reply tracking

    user_data :

    user-supplied data passed to the callback; +must be NULL if callback is NULL +

    destroy :

    called with the user_data as argument, after the +call has succeeded, failed or been cancelled; +must be NULL if callback is NULL +

    weak_object :

    If not NULL, a GObject which will be +weakly referenced; if it is destroyed, this call +will automatically be cancelled. Must be NULL if +callback is NULL +

    Returns :

    a TpProxyPendingCall representing the call in +progress. It is borrowed from the object, and will become +invalid when the callback is called, the call is +cancelled or the TpProxy becomes invalid.
    +
    +
    +

    tp_cli_connection_interface_contact_list_call_remove_contacts ()

    TpProxyPendingCall * tp_cli_connection_interface_contact_list_call_remove_contacts
                                                             (TpConnection *proxy,
    @@ -2420,6 +2498,41 @@
     

    +

    tp_cli_connection_interface_contact_list_callback_for_download ()

    +
    void                (*tp_cli_connection_interface_contact_list_callback_for_download)
    +                                                        (TpConnection *proxy,
    +                                                         const GError *error,
    +                                                         gpointer user_data,
    +                                                         GObject *weak_object);
    +

    +Signature of the callback called when a Download method call +succeeds or fails. +

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

    proxy :

    the proxy on which the call was made

    error :

    +NULL on success, or an error on failure

    user_data :

    user-supplied data

    weak_object :

    user-supplied object
    +
    +
    +

    tp_cli_connection_interface_contact_list_callback_for_remove_contacts ()

    void                (*tp_cli_connection_interface_contact_list_callback_for_remove_contacts)
                                                             (TpConnection *proxy,
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-connection.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-connection.html
    --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-connection.html	2011-12-19 15:20:42.000000000 +0000
    +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-connection.html	2012-02-20 17:31:30.000000000 +0000
    @@ -47,7 +47,7 @@
     #include <telepathy-glib/telepathy-glib.h>
     
     void                (*TpConnectionNameListCb)           (const gchar * const *names,
    -                                                         gsize n,
    +                                                         gsize n,
                                                              const gchar * const *cms,
                                                              const gchar * const *protocols,
                                                              const GError *error,
    @@ -86,6 +86,12 @@
                                                              TpConnectionWhenReadyCb callback,
                                                              gpointer user_data);
     gboolean            tp_connection_is_ready              (TpConnection *self);
    +void                tp_connection_disconnect_async      (TpConnection *self,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +gboolean            tp_connection_disconnect_finish     (TpConnection *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
     TpAccount *         tp_connection_get_account           (TpConnection *self);
     TpConnectionStatus  tp_connection_get_status            (TpConnection *self,
                                                              TpConnectionStatusReason *reason);
    @@ -756,7 +762,7 @@
     

    TpConnectionNameListCb ()

    void                (*TpConnectionNameListCb)           (const gchar * const *names,
    -                                                         gsize n,
    +                                                         gsize n,
                                                              const gchar * const *cms,
                                                              const gchar * const *protocols,
                                                              const GError *error,
    @@ -1382,6 +1388,79 @@
     

    +

    tp_connection_disconnect_async ()

    +
    void                tp_connection_disconnect_async      (TpConnection *self,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Disconnect the connection. +

    +

    +This method is intended for use by AccountManager implementations, +such as Mission Control. To disconnect a connection managed by an +AccountManager, either use tp_account_request_presence_async() +or tp_account_set_enabled_async(), depending whether the intention is +to put the account offline temporarily, or disable it longer-term. +

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

    self :

    a TpConnection +

    callback :

    a callback to call when the request is satisfied

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_connection_disconnect_finish ()

    +
    gboolean            tp_connection_disconnect_finish     (TpConnection *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Interpret the result of tp_connection_disconnect_async(). +

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

    self :

    a TpConnection +

    result :

    a GAsyncResult +

    error :

    a GError to fill

    Returns :

    +TRUE if the call was successful, otherwise FALSE +
    +

    Since 0.17.5

    +
    +
    +

    tp_connection_get_account ()

    TpAccount *         tp_connection_get_account           (TpConnection *self);

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-connection-manager.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-connection-manager.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-connection-manager.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-connection-manager.html 2012-02-20 17:31:30.000000000 +0000 @@ -47,7 +47,7 @@ #include <telepathy-glib/connection-manager.h> void (*TpConnectionManagerListCb) (TpConnectionManager * const *cms, - gsize n_cms, + gsize n_cms, const GError *error, gpointer user_data, GObject *weak_object); @@ -264,7 +264,7 @@

    TpConnectionManagerListCb ()

    void                (*TpConnectionManagerListCb)        (TpConnectionManager * const *cms,
    -                                                         gsize n_cms,
    +                                                         gsize n_cms,
                                                              const GError *error,
                                                              gpointer user_data,
                                                              GObject *weak_object);
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-connection-powersaving.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-connection-powersaving.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-connection-powersaving.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-connection-powersaving.html 2012-02-20 17:31:30.000000000 +0000 @@ -7,7 +7,7 @@ - + @@ -18,7 +18,7 @@ Up Home telepathy-glib API Reference Manual -Next +Next Top diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-contact-search.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-contact-search.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-contact-search.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-contact-search.html 2012-02-20 17:31:30.000000000 +0000 @@ -6,7 +6,7 @@ - + @@ -14,7 +14,7 @@ - + diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-dbus-properties-mixin.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-dbus-properties-mixin.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-dbus-properties-mixin.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-dbus-properties-mixin.html 2012-02-20 17:31:30.000000000 +0000 @@ -80,7 +80,7 @@ gpointer setter_data, GError **error); voidtp_dbus_properties_mixin_class_init (GObjectClass *cls, - gsize offset); + gsize offset); voidtp_dbus_properties_mixin_implement_interface (GObjectClass *cls, GQuark iface, @@ -656,7 +656,7 @@

    tp_dbus_properties_mixin_class_init ()

    void                tp_dbus_properties_mixin_class_init (GObjectClass *cls,
    -                                                         gsize offset);
    + gsize offset);

    Initialize the class cls to use the D-Bus Properties mixin. The given struct member, of size sizeof(TpDBusPropertiesMixinClass), @@ -1028,10 +1028,10 @@ 2 3 4 -

    +tp_dbus_properties_mixin_emit_properties_changed(G_OBJECT(self), + "org.mpris.MediaPlayer2.TrackList", properties); diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-debug.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-debug.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-debug.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-debug.html 2012-02-20 17:31:30.000000000 +0000 @@ -210,8 +210,8 @@
    1
     2
    -
    if (g_getenv ("MYPROG_TIMING") != NULL)
    -  g_log_set_default_handler (tp_debug_timestamped_log_handler, NULL);
    +
    if (g_getenv ("MYPROG_TIMING") != NULL)
    +  g_log_set_default_handler (tp_debug_timestamped_log_handler, NULL);
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-debug-sender.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-debug-sender.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-debug-sender.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-debug-sender.html 2012-02-20 17:31:30.000000000 +0000 @@ -338,19 +338,19 @@ 13 14
    /* Create a main loop and debug sender */
    -GMainLoop *loop = g_main_loop_new (NULL, FALSE);
    -TpDebugSender *sender = tp_debug_sender_dup ();
    +GMainLoop *loop = g_main_loop_new (NULL, FALSE);
    +TpDebugSender *sender = tp_debug_sender_dup ();
     
     /* Set the default handler */
    -g_log_set_default_handler (tp_debug_sender_log_handler, G_LOG_DOMAIN);
    +g_log_set_default_handler (tp_debug_sender_log_handler, G_LOG_DOMAIN);
     
     /* Run the main loop, but keeping a ref on the TpDebugSender from
      * the beginning of this code sample. */
    -g_main_loop_run (loop);
    +g_main_loop_run (loop);
     
     /* g_main_loop_quit was called, so only now can we clean up the
      * TpDebugSender. */
    -g_object_unref (sender);
    +g_object_unref (sender);
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-defs.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-defs.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-defs.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-defs.html 2012-02-20 17:31:30.000000000 +0000 @@ -199,7 +199,7 @@ The "user action time" used by methods like tp_account_channel_request_new() to represent channel requests that should be treated as though they happened at the current time. This is the same -concept as GDK_CURRENT_TIME in Gdk (but note that the numerical value used +concept as GDK_CURRENT_TIME in Gdk (but note that the numerical value used in Telepathy is not the same).

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib.devhelp2 telepathy-glib-0.17.5/docs/reference/html/telepathy-glib.devhelp2 --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib.devhelp2 2011-12-19 15:20:41.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib.devhelp2 2012-02-20 17:31:29.000000000 +0000 @@ -40,6 +40,7 @@ + @@ -53,6 +54,10 @@ + + + + @@ -75,6 +80,10 @@ + + + + @@ -93,6 +102,7 @@ + @@ -136,6 +146,14 @@ + + + + + + + + @@ -409,6 +427,8 @@ + + @@ -451,6 +471,8 @@ + + @@ -479,6 +501,8 @@ + + @@ -537,6 +561,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -566,11 +614,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586,6 +693,10 @@ + + + + @@ -663,6 +774,20 @@ + + + + + + + + + + + + + + @@ -728,6 +853,7 @@ + @@ -774,6 +900,8 @@ + + @@ -787,6 +915,12 @@ + + + + + + @@ -888,6 +1022,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -948,6 +1112,7 @@ + @@ -1012,6 +1177,8 @@ + + @@ -1045,6 +1212,9 @@ + + + @@ -1071,6 +1241,9 @@ + + + @@ -1081,6 +1254,23 @@ + + + + + + + + + + + + + + + + + @@ -1199,6 +1389,8 @@ + + @@ -1544,11 +1736,13 @@ + + @@ -1637,6 +1831,10 @@ + + + + @@ -2023,6 +2221,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2197,6 +2537,7 @@ + @@ -2260,6 +2601,7 @@ + @@ -2523,6 +2865,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2911,10 +3330,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3148,11 +3772,13 @@ + + @@ -3161,6 +3787,7 @@ + @@ -3196,6 +3823,14 @@ + + + + + + + + @@ -3716,12 +4351,14 @@ + + @@ -4053,6 +4690,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4154,7 +4949,11 @@ + + + + @@ -4556,6 +5355,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4609,6 +5487,7 @@ + diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-dtmf.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-dtmf.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-dtmf.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-dtmf.html 2012-02-20 17:31:30.000000000 +0000 @@ -7,7 +7,7 @@ - + @@ -18,7 +18,7 @@ Up Home telepathy-glib API Reference Manual -Next +Next Top diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-enums.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-enums.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-enums.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-enums.html 2012-02-20 17:31:30.000000000 +0000 @@ -137,6 +137,36 @@ #define NUM_TP_SASL_ABORT_REASONS enum TpSASLStatus; #define NUM_TP_SASL_STATUSES +enum TpCaptchaStatus; +#define NUM_TP_CAPTCHA_STATUSES +enum TpCaptchaCancelReason; +#define NUM_TP_CAPTCHA_CANCEL_REASONS +enum TpCaptchaFlags; +enum TpCallContentDisposition; +#define NUM_TP_CALL_CONTENT_DISPOSITIONS +enum TpCallContentPacketizationType; +#define NUM_TP_CALL_CONTENT_PACKETIZATION_TYPES +enum TpCallState; +#define NUM_TP_CALL_STATES +enum TpCallStateChangeReason; +#define NUM_TP_CALL_STATE_CHANGE_REASONS +enum TpCallStreamCandidateType; +#define NUM_TP_CALL_STREAM_CANDIDATE_TYPES +enum TpRCPTXRRTTMode; +#define NUM_TP_RCPT_XR_RTT_MODES +enum TpSendingState; +#define NUM_TP_SENDING_STATES +enum TpStreamComponent; +#define NUM_TP_STREAM_COMPONENTS +enum TpStreamEndpointState; +#define NUM_TP_STREAM_ENDPOINT_STATES +enum TpStreamFlowState; +#define NUM_TP_STREAM_FLOW_STATES +enum TpStreamTransportType; +#define NUM_TP_STREAM_TRANSPORT_TYPES +enum TpCallFlags; +enum TpCallMemberFlags; +enum TpRTCPXRStatisticsFlags;

    @@ -3128,6 +3158,892 @@ 1 higher than the highest valid value of TpSASLStatus.

    +
    +
    +

    enum TpCaptchaStatus

    +
    typedef enum {
    +    TP_CAPTCHA_STATUS_LOCAL_PENDING = 0,
    +    TP_CAPTCHA_STATUS_REMOTE_PENDING = 1,
    +    TP_CAPTCHA_STATUS_SUCCEEDED = 2,
    +    TP_CAPTCHA_STATUS_TRY_AGAIN = 3,
    +    TP_CAPTCHA_STATUS_FAILED = 4,
    +} TpCaptchaStatus;
    +
    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_CAPTCHA_STATUS_LOCAL_PENDING

    The challenge/response exchange is in progress and waiting for a local action. Call AnswerCaptchas to go to the Remote_Pending state, or call CancelCaptcha followed by Close to give up. +

    TP_CAPTCHA_STATUS_REMOTE_PENDING

    The challenge/response exchange is in progress and waiting for a response from the server. Wait for a reply from the server, which will result in the Succeeded, Try_Again, or Failed state, or call CancelCaptcha followed by Close to give up. +

    TP_CAPTCHA_STATUS_SUCCEEDED

    Everyone is happy. Connection to the server will proceed as soon as this state is reached. There is nothing useful to do in this state except to call Close to close the channel. +

    TP_CAPTCHA_STATUS_TRY_AGAIN

    The server has indicated an authentication failure. Call GetCaptchas again to get a new captcha, or CancelCaptcha followed by Close to give up. +

    TP_CAPTCHA_STATUS_FAILED

    Authentication has failed in some way. There is nothing useful to do in this state except to close the channel with Close. +
    +
    +
    +
    +

    NUM_TP_CAPTCHA_STATUSES

    +
    #define NUM_TP_CAPTCHA_STATUSES (4+1)
    +
    +

    +1 higher than the highest valid value of TpCaptchaStatus. +

    +
    +
    +
    +

    enum TpCaptchaCancelReason

    +
    typedef enum {
    +    TP_CAPTCHA_CANCEL_REASON_USER_CANCELLED = 0,
    +    TP_CAPTCHA_CANCEL_REASON_NOT_SUPPORTED = 1,
    +    TP_CAPTCHA_CANCEL_REASON_SERVICE_CONFUSED = 2,
    +} TpCaptchaCancelReason;
    +
    +

    + A reason why captcha authentication was aborted by the client. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_CAPTCHA_CANCEL_REASON_USER_CANCELLED

    The user aborted the authentication. If this is used, the CaptchaError SHOULD be set to Cancelled +

    TP_CAPTCHA_CANCEL_REASON_NOT_SUPPORTED

    The Handler doesn't support the given/required captcha types. If this is used, the CaptchaError SHOULD be set to CaptchaNotSupported. This SHOULD also be used if Close is called before CancelCaptcha. If no Handler supports captcha channels, the ChannelDispatcher will just call Close, because it has no knowledge of specific channel types. +

    TP_CAPTCHA_CANCEL_REASON_SERVICE_CONFUSED

    The Handler doesn't understand the captcha data received. The challenger may be sending gibberish. If this is used, the CaptchaError SHOULD be set to ServiceConfused. +
    +
    +
    +
    +

    NUM_TP_CAPTCHA_CANCEL_REASONS

    +
    #define NUM_TP_CAPTCHA_CANCEL_REASONS (2+1)
    +
    +

    +1 higher than the highest valid value of TpCaptchaCancelReason. +

    +
    +
    +
    +

    enum TpCaptchaFlags

    +
    typedef enum {
    +    TP_CAPTCHA_FLAGS_REQUIRED = 1,
    +} TpCaptchaFlags;
    +
    +

    + Extra flags to include with Captcha information +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

    +
    ++ + + + +

    TP_CAPTCHA_FLAGS_REQUIRED

    This captcha mechanism is required to be successfully answered in order to pass this captcha challenge. +
    +
    +
    +
    +

    enum TpCallContentDisposition

    +
    typedef enum {
    +    TP_CALL_CONTENT_DISPOSITION_NONE = 0,
    +    TP_CALL_CONTENT_DISPOSITION_INITIAL = 1,
    +} TpCallContentDisposition;
    +
    +

    + The disposition of this content, which defines whether to automatically start sending data on the streams when Accept is called on the channel. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_CALL_CONTENT_DISPOSITION_NONE

    The content has no specific disposition. +

    TP_CALL_CONTENT_DISPOSITION_INITIAL

    The content was initially part of the call. When Accept is called on the channel, all streams of this content with LocalSendingState set to Pending_Send will be moved to Sending as if SetSending (True) had been called. +
    +
    +
    +
    +

    NUM_TP_CALL_CONTENT_DISPOSITIONS

    +
    #define NUM_TP_CALL_CONTENT_DISPOSITIONS (1+1)
    +
    +

    +1 higher than the highest valid value of TpCallContentDisposition. +

    +
    +
    +
    +

    enum TpCallContentPacketizationType

    +
    typedef enum {
    +    TP_CALL_CONTENT_PACKETIZATION_TYPE_RTP = 0,
    +    TP_CALL_CONTENT_PACKETIZATION_TYPE_RAW = 1,
    +    TP_CALL_CONTENT_PACKETIZATION_TYPE_MSN_WEBCAM = 2,
    +} TpCallContentPacketizationType;
    +
    +

    + A packetization method that can be used for a content. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_CALL_CONTENT_PACKETIZATION_TYPE_RTP

    Real-time Transport Protocol, as documented by RFC 3550. +

    TP_CALL_CONTENT_PACKETIZATION_TYPE_RAW

    Raw media. +

    TP_CALL_CONTENT_PACKETIZATION_TYPE_MSN_WEBCAM

    MSN webcam. This is the video-only one-way type which was used in earlier versions of WLM. Although no longer used, modern WLM clients still support the MSN webcam protocol. +
    +
    +
    +
    +

    NUM_TP_CALL_CONTENT_PACKETIZATION_TYPES

    +
    #define NUM_TP_CALL_CONTENT_PACKETIZATION_TYPES (2+1)
    +
    +

    +1 higher than the highest valid value of TpCallContentPacketizationType. +

    +
    +
    +
    +

    enum TpCallState

    +
    typedef enum {
    +    TP_CALL_STATE_UNKNOWN = 0,
    +    TP_CALL_STATE_PENDING_INITIATOR = 1,
    +    TP_CALL_STATE_INITIALISING = 2,
    +    TP_CALL_STATE_INITIALISED = 3,
    +    TP_CALL_STATE_ACCEPTED = 4,
    +    TP_CALL_STATE_ACTIVE = 5,
    +    TP_CALL_STATE_ENDED = 6,
    +} TpCallState;
    +
    +

    + The state of a call, as a whole. The allowed transitions are: Pending_Initiator → Initialising (for outgoing calls, when Accept is called) Initialising → Initialised (for outgoing calls, when the remote client indicates that the user has been notified about the call. If the network is known not to provide feedback about whether the remote side is ringing, then the call should immediately be set to Ringing. Initialising → Initialised (for incoming calls, when e.g. the implementation has been initialised far enough that it is sensible to notify the user about the call (to reduce the probability that the user will pick up the call and have it immediately fail). The UI should then alert the user about the call, and call SetRinging) Initialised → Accepted (for outgoing calls to a contact, when the remote contact accepts the call; for incoming calls, when Accept is called.) Accepted → Active (when the local user successfully joins the call/conference, and media is known to be flowing successfully; also, when temporary connection problems are resolved (See below)). If the network is known not to provide feedback about when the call is properly connected, the call should immediately be set to Active. Active → Accepted (when there are temporary connection problems that the CM is aware of and able to recover from) any state → Ended (when the call is terminated normally, or when an error occurs that the CM is unable to recover from) Clients MAY consider unknown values from this enum to be an error - additional values will not be defined after the Call specification is declared to be stable. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_CALL_STATE_UNKNOWN

    The call state is not known. This call state MUST NOT appear as a value of the CallState property, but MAY be used by client code to represent calls whose state is as yet unknown. +

    TP_CALL_STATE_PENDING_INITIATOR

    The initiator of the call hasn't accepted the call yet. This state only makes sense for outgoing calls, where it means that the local user has not yet sent any signalling messages to the remote user(s), and will not do so until Accept is called. +

    TP_CALL_STATE_INITIALISING

    Progress has been made in placing the call, but the contact has not been made aware of the call yet. This corresponds to SIP's status code 183 Session Progress, and should be used for the period where the CM is waiting for the streaming implementation to initialise (before sending the initial INVITE or equivalent) and when the outgoing call has reached a gateway or ICE negotiation is pending. UIs should not produce a dialtone or start ringing if the call is in this state. +

    TP_CALL_STATE_INITIALISED

    In the outgoing case: at least one called user has been alerted about the call (a SIP 180 (Ringing) packet or equivalent has been received) but none have answered, so the call cannot go to Accepted (use Ringing to determine which members have been informed and which haven't, if you care). UIs SHOULD produce a dialtone for outgoing calls in this state. In the incoming case, the local user should be informed of the call as soon as the call reaches this state (and SetRinging should be called to inform the CM that this has happened, so that it can relay this fact to the caller using a SIP 180 (Ringing) packet or equivalent). +

    TP_CALL_STATE_ACCEPTED

    The contact being called has accepted the call, but the call is not in the Active state (The most common reason for this is that the streaming implementation hasn't connected yet). +

    TP_CALL_STATE_ACTIVE

    The contact being called has accepted the call, and discourse between at least two parties should now be possible. +

    TP_CALL_STATE_ENDED

    The call has ended, either via normal termination or an error. +
    +
    +
    +
    +

    NUM_TP_CALL_STATES

    +
    #define NUM_TP_CALL_STATES (6+1)
    +
    +

    +1 higher than the highest valid value of TpCallState. +

    +
    +
    +
    +

    enum TpCallStateChangeReason

    +
    typedef enum {
    +    TP_CALL_STATE_CHANGE_REASON_UNKNOWN = 0,
    +    TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE = 1,
    +    TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED = 2,
    +    TP_CALL_STATE_CHANGE_REASON_FORWARDED = 3,
    +    TP_CALL_STATE_CHANGE_REASON_REJECTED = 4,
    +    TP_CALL_STATE_CHANGE_REASON_NO_ANSWER = 5,
    +    TP_CALL_STATE_CHANGE_REASON_INVALID_CONTACT = 6,
    +    TP_CALL_STATE_CHANGE_REASON_PERMISSION_DENIED = 7,
    +    TP_CALL_STATE_CHANGE_REASON_BUSY = 8,
    +    TP_CALL_STATE_CHANGE_REASON_INTERNAL_ERROR = 9,
    +    TP_CALL_STATE_CHANGE_REASON_SERVICE_ERROR = 10,
    +    TP_CALL_STATE_CHANGE_REASON_NETWORK_ERROR = 11,
    +    TP_CALL_STATE_CHANGE_REASON_MEDIA_ERROR = 12,
    +    TP_CALL_STATE_CHANGE_REASON_CONNECTIVITY_ERROR = 13,
    +} TpCallStateChangeReason;
    +
    +

    + A simple representation of the reason for a change in the call's state, which may be used by simple clients, or used as a fallback when the DBus_Reason member of a Call_State_Reason struct is not understood. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_CALL_STATE_CHANGE_REASON_UNKNOWN

    We just don't know. Unknown values of this enum SHOULD also be treated like this. +

    TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE

    Situation normal. Progress has been made in the setup/teardown of the call (and it didn't require any user interaction). +

    TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED

    The change was requested by the contact indicated by the Actor member of a Call_State_Reason struct. If the Actor is the local user, the DBus_Reason SHOULD be the empty string. If the Actor is a remote user, the DBus_Reason SHOULD be the empty string if the call was terminated normally, but MAY be a non-empty error name to indicate error-like call termination reasons (call rejected as busy, kicked from a conference by a moderator, etc.). +

    TP_CALL_STATE_CHANGE_REASON_FORWARDED

    The call was forwarded. If known, the handle of the contact the call was forwarded to will be indicated by the "forwarded-to" member of a CallStateDetails dictionnary in the CallStateChanged signal. +

    TP_CALL_STATE_CHANGE_REASON_REJECTED

    The CallState changed from Initialised or Ended (or a content's direction changed) because it was rejected by the remote user. Corresponds to Rejected +

    TP_CALL_STATE_CHANGE_REASON_NO_ANSWER

    The CallState changed from Initialised or Ended because the initiator ended the call before the receiver accepted it. With an incoming call this state change reason signifies a missed call, or one that was picked up elsewhere before it was picked up here. Corresponds to NoAnswer or PickedUpElsewhere +

    TP_CALL_STATE_CHANGE_REASON_INVALID_CONTACT

    The CallState changed because one of the addresses does not exist on the network. Corresponds to DoesNotExist +

    TP_CALL_STATE_CHANGE_REASON_PERMISSION_DENIED

    The CallState changed because the local user is not authorised. Corresponds to PermissionDenied or InsufficientBalance +

    TP_CALL_STATE_CHANGE_REASON_BUSY

    The CallState changed from Initialised Ended because the receiver is busy (e.g. is already engaged in another call, and has not placed the initiator in a call-waiting queue). Corresponds to Busy +

    TP_CALL_STATE_CHANGE_REASON_INTERNAL_ERROR

    There has been an unexpected error in either the CM or some other local component. Corresponds to Confused or Media.StreamingError +

    TP_CALL_STATE_CHANGE_REASON_SERVICE_ERROR

    There has been an unexpected error in the server or some other remote component. Corresponds to ServiceConfused +

    TP_CALL_STATE_CHANGE_REASON_NETWORK_ERROR

    There has been a network error related to the CM or the signalling part of the call (compare and contrast: Streaming_Error). Corresponds to NetworkError +

    TP_CALL_STATE_CHANGE_REASON_MEDIA_ERROR

    Some aspect of the content is unsupported so has to be removed from the call. Corresponds to Media.UnsupportedType or Media.CodecsIncompatible +

    TP_CALL_STATE_CHANGE_REASON_CONNECTIVITY_ERROR

    It was not possible for the streaming implementation to connect to any of the users participating in this call or content. Corresponds to ConnectionFailed or ConnectionLost +
    +
    +
    +
    +

    NUM_TP_CALL_STATE_CHANGE_REASONS

    +
    #define NUM_TP_CALL_STATE_CHANGE_REASONS (13+1)
    +
    +

    +1 higher than the highest valid value of TpCallStateChangeReason. +

    +
    +
    +
    +

    enum TpCallStreamCandidateType

    +
    typedef enum {
    +    TP_CALL_STREAM_CANDIDATE_TYPE_NONE = 0,
    +    TP_CALL_STREAM_CANDIDATE_TYPE_HOST = 1,
    +    TP_CALL_STREAM_CANDIDATE_TYPE_SERVER_REFLEXIVE = 2,
    +    TP_CALL_STREAM_CANDIDATE_TYPE_PEER_REFLEXIVE = 3,
    +    TP_CALL_STREAM_CANDIDATE_TYPE_RELAY = 4,
    +    TP_CALL_STREAM_CANDIDATE_TYPE_MULTICAST = 5,
    +} TpCallStreamCandidateType;
    +
    +

    + The network topology that an IP candidate represents. This can sometimes be used to infer what kind of performance characteristics (latency, bandwith, etc) can be expected of connections made to this candidate. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_CALL_STREAM_CANDIDATE_TYPE_NONE

    This is not an IP candidate. This is a reserved value, and should not be seen on the bus. +

    TP_CALL_STREAM_CANDIDATE_TYPE_HOST

    This candidate represents a direct connection to the host, as its address is taken directly the host's IP stack. +

    TP_CALL_STREAM_CANDIDATE_TYPE_SERVER_REFLEXIVE

    This candidate probably represents a connection to the host through a NAT device, as its address was discovered by sending a binding request to a STUN server or similar. +

    TP_CALL_STREAM_CANDIDATE_TYPE_PEER_REFLEXIVE

    This candidate probably represents a good route between the host and its peer, as its address was discovered by sending a STUN binding request to one of the candidates advertised by the peer. +

    TP_CALL_STREAM_CANDIDATE_TYPE_RELAY

    This candidate represents the address of a relay server (usually somewhere on the public internet). This candidate is the most likely to work, but all media will go via a relay server, so latency is likely to be higher than other types of candidate. +

    TP_CALL_STREAM_CANDIDATE_TYPE_MULTICAST

    This candidate represents a Multicast group. This value should only appear if the Stream's Transport is set to Multicast. +
    +
    +
    +
    +

    NUM_TP_CALL_STREAM_CANDIDATE_TYPES

    +
    #define NUM_TP_CALL_STREAM_CANDIDATE_TYPES (5+1)
    +
    +

    +1 higher than the highest valid value of TpCallStreamCandidateType. +

    +
    +
    +
    +

    enum TpRCPTXRRTTMode

    +
    typedef enum {
    +    TP_RCPT_XR_RTT_MODE_ALL = 0,
    +    TP_RCPT_XR_RTT_MODE_SENDER = 1,
    +} TpRCPTXRRTTMode;
    +
    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_RCPT_XR_RTT_MODE_ALL

    Both RTP data senders and data receivers MAY send DLRR blocks. +

    TP_RCPT_XR_RTT_MODE_SENDER

    Only active RTP senders MAY send DLRR blocks, i.e., non RTP senders SHALL NOT send DLRR blocks. +
    +
    +
    +
    +

    NUM_TP_RCPT_XR_RTT_MODES

    +
    #define NUM_TP_RCPT_XR_RTT_MODES (1+1)
    +
    +

    +1 higher than the highest valid value of TpRCPTXRRTTMode. +

    +
    +
    +
    +

    enum TpSendingState

    +
    typedef enum {
    +    TP_SENDING_STATE_NONE = 0,
    +    TP_SENDING_STATE_PENDING_SEND = 1,
    +    TP_SENDING_STATE_SENDING = 2,
    +    TP_SENDING_STATE_PENDING_STOP_SENDING = 3,
    +} TpSendingState;
    +
    +

    + Enum indicating whether a contact is sending media. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_SENDING_STATE_NONE

    The contact is not sending media and has not been asked to do so. +

    TP_SENDING_STATE_PENDING_SEND

    The contact has been asked to start sending media. +

    TP_SENDING_STATE_SENDING

    The contact is sending media. +

    TP_SENDING_STATE_PENDING_STOP_SENDING

    The contact has been asked to stop sending media. +
    +
    +
    +
    +

    NUM_TP_SENDING_STATES

    +
    #define NUM_TP_SENDING_STATES (3+1)
    +
    +

    +1 higher than the highest valid value of TpSendingState. +

    +
    +
    +
    +

    enum TpStreamComponent

    +
    typedef enum {
    +    TP_STREAM_COMPONENT_UNKNOWN = 0,
    +    TP_STREAM_COMPONENT_DATA = 1,
    +    TP_STREAM_COMPONENT_CONTROL = 2,
    +} TpStreamComponent;
    +
    +

    + Media streams can use more than one UDP socket: one for RTP (data) and one for RTCP (control). Most of the time, they are adjacent to each other, but some protocols (xmpp) signal each port separately. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_STREAM_COMPONENT_UNKNOWN

    The stream transport type is unknown or not applicable (should not appear over dbus). +

    TP_STREAM_COMPONENT_DATA

    This is the high-traffic data socket, containing the audio/video data for the stream. +

    TP_STREAM_COMPONENT_CONTROL

    This is the low-traffic control socket, usually containing feedback about packet loss etc. +
    +
    +
    +
    +

    NUM_TP_STREAM_COMPONENTS

    +
    #define NUM_TP_STREAM_COMPONENTS (2+1)
    +
    +

    +1 higher than the highest valid value of TpStreamComponent. +

    +
    +
    +
    +

    enum TpStreamEndpointState

    +
    typedef enum {
    +    TP_STREAM_ENDPOINT_STATE_CONNECTING = 0,
    +    TP_STREAM_ENDPOINT_STATE_PROVISIONALLY_CONNECTED = 1,
    +    TP_STREAM_ENDPOINT_STATE_FULLY_CONNECTED = 2,
    +    TP_STREAM_ENDPOINT_STATE_EXHAUSTED_CANDIDATES = 3,
    +    TP_STREAM_ENDPOINT_STATE_FAILED = 4,
    +} TpStreamEndpointState;
    +
    +

    + Represents the state of ICE negotiation for a single component of a stream to an endpoint. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_STREAM_ENDPOINT_STATE_CONNECTING

    Candidate gathering and connectivity checks are in progress. +

    TP_STREAM_ENDPOINT_STATE_PROVISIONALLY_CONNECTED

    The streaming implementation has found at least one working candidate pair. It is possible to send media at this point, but the controlling side has yet to negotiate the final candidates for use in this call. +

    TP_STREAM_ENDPOINT_STATE_FULLY_CONNECTED

    This component of the stream is connected, and an updated offer has been sent and accepted (finalising the candidates to be used for the call). This should be set by the CM in response to AcceptSelectedCandidatePair. +

    TP_STREAM_ENDPOINT_STATE_EXHAUSTED_CANDIDATES

    The streaming implementation has tried connecting to all of the available candidates and none of them have connected. This is distinct from Failed, because the CM might be able to provide more candidates later (more likely in XMPP than SIP). +

    TP_STREAM_ENDPOINT_STATE_FAILED

    The CM and streaming implementation are in agreement that it is impossible to connect to this endpoint. This value should only be set by the CM. +
    +
    +
    +
    +

    NUM_TP_STREAM_ENDPOINT_STATES

    +
    #define NUM_TP_STREAM_ENDPOINT_STATES (4+1)
    +
    +

    +1 higher than the highest valid value of TpStreamEndpointState. +

    +
    +
    +
    +

    enum TpStreamFlowState

    +
    typedef enum {
    +    TP_STREAM_FLOW_STATE_STOPPED = 0,
    +    TP_STREAM_FLOW_STATE_PENDING_START = 1,
    +    TP_STREAM_FLOW_STATE_PENDING_STOP = 2,
    +    TP_STREAM_FLOW_STATE_STARTED = 3,
    +} TpStreamFlowState;
    +
    +

    + The type of SendingState and ReceivingState. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_STREAM_FLOW_STATE_STOPPED

    No data is flowing (or expected to be flowing) at this time. +

    TP_STREAM_FLOW_STATE_PENDING_START

    The streaming implementation has been told to start or receiving, but has not yet indicated that it is doing so. +

    TP_STREAM_FLOW_STATE_PENDING_STOP

    The streaming implementation has been told to stop sending or receiving data, but it has not yet indicated that it has done so. +

    TP_STREAM_FLOW_STATE_STARTED

    The streaming implementation is successfully sending or receiving data, and everything is going swimmingly. +
    +
    +
    +
    +

    NUM_TP_STREAM_FLOW_STATES

    +
    #define NUM_TP_STREAM_FLOW_STATES (3+1)
    +
    +

    +1 higher than the highest valid value of TpStreamFlowState. +

    +
    +
    +
    +

    enum TpStreamTransportType

    +
    typedef enum {
    +    TP_STREAM_TRANSPORT_TYPE_UNKNOWN = 0,
    +    TP_STREAM_TRANSPORT_TYPE_RAW_UDP = 1,
    +    TP_STREAM_TRANSPORT_TYPE_ICE = 2,
    +    TP_STREAM_TRANSPORT_TYPE_GTALK_P2P = 3,
    +    TP_STREAM_TRANSPORT_TYPE_WLM_2009 = 4,
    +    TP_STREAM_TRANSPORT_TYPE_SHM = 5,
    +    TP_STREAM_TRANSPORT_TYPE_MULTICAST = 6,
    +} TpStreamTransportType;
    +
    +

    + A transport that can be used for streaming. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_STREAM_TRANSPORT_TYPE_UNKNOWN

    The stream transport type is unknown or not applicable (for streams that do not have a configurable transport). +

    TP_STREAM_TRANSPORT_TYPE_RAW_UDP

    Raw UDP, with or without STUN. All streaming clients are assumed to support this transport, so there is no handler capability token for it in the Call1 interface. [This corresponds to "none" or "stun" in the old Media.StreamHandler interface.] +

    TP_STREAM_TRANSPORT_TYPE_ICE

    Interactive Connectivity Establishment, as defined by RFC 5245. Note that this value covers ICE-UDP only. [This corresponds to "ice-udp" in the old Media.StreamHandler interface.] +

    TP_STREAM_TRANSPORT_TYPE_GTALK_P2P

    Google Talk peer-to-peer connectivity establishment, as implemented by libjingle 0.3. [This corresponds to "gtalk-p2p" in the old Media.StreamHandler interface.] +

    TP_STREAM_TRANSPORT_TYPE_WLM_2009

    The transport used by Windows Live Messenger 2009 or later, which resembles ICE draft 19. [This corresponds to "wlm-2009" in the old Media.StreamHandler interface.] +

    TP_STREAM_TRANSPORT_TYPE_SHM

    Shared memory transport, as implemented by the GStreamer shmsrc and shmsink plugins. +

    TP_STREAM_TRANSPORT_TYPE_MULTICAST

    Multicast transport. +
    +
    +
    +
    +

    NUM_TP_STREAM_TRANSPORT_TYPES

    +
    #define NUM_TP_STREAM_TRANSPORT_TYPES (6+1)
    +
    +

    +1 higher than the highest valid value of TpStreamTransportType. +

    +
    +
    +
    +

    enum TpCallFlags

    +
    typedef enum {
    +    TP_CALL_FLAG_LOCALLY_HELD = 1,
    +    TP_CALL_FLAG_LOCALLY_RINGING = 2,
    +    TP_CALL_FLAG_LOCALLY_QUEUED = 4,
    +    TP_CALL_FLAG_FORWARDED = 8,
    +    TP_CALL_FLAG_CLEARING = 16,
    +} TpCallFlags;
    +
    +

    + A set of flags representing additional information than is available in CallState. Many of these flags only make sense in a particular (or may explain why a call is in a specific state). +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_CALL_FLAG_LOCALLY_HELD

    The call has been put on hold by the local user, e.g. using the Hold interface. This flag SHOULD only be set if there is at least one Content, and all Contents are locally held. Otherwise, in transient situations where some but not all contents are on hold, UIs would falsely indicate that the call as a whole is on hold, which could lead to the user saying something they'll regret, while under the impression that the other contacts can't hear them! This flag exists as a simplified proxy for HoldStateChanged, to reduce the number of signals that need to be listened to by a simple UI. +

    TP_CALL_FLAG_LOCALLY_RINGING

    This flag exists for observability of the SetRinging method (e.g. so that loggers can tell whether the call got as far as alerting the user, or whether something went wrong before then). It should be set when the SetRinging is called, and unset when the call leaves Initialised. +

    TP_CALL_FLAG_LOCALLY_QUEUED

    This flag exists for observability of the SetQueued method. It should be set when the SetQueued is called, and unset when the call leaves Initialising or Initialised. +

    TP_CALL_FLAG_FORWARDED

    The initiator of the call originally called a contact other than the current recipient of the call, but the call was then forwarded or diverted. This flag only makes sense on outgoing calls. It SHOULD be set or unset according to informational messages from other contacts. +

    TP_CALL_FLAG_CLEARING

    This flag only occurs when the CallState is Ended. The call with this flag set has ended, but not all resources corresponding to the call have been freed yet. Depending on the protocol there might be some audible feedback while the clearing flag is set. In calls following the ITU-T Q.931 standard there is a period of time between the call ending and the underlying channel being completely free for re-use. +
    +
    +
    +
    +

    enum TpCallMemberFlags

    +
    typedef enum {
    +    TP_CALL_MEMBER_FLAG_RINGING = 1,
    +    TP_CALL_MEMBER_FLAG_HELD = 2,
    +    TP_CALL_MEMBER_FLAG_CONFERENCE_HOST = 4,
    +} TpCallMemberFlags;
    +
    +

    + A set of flags representing the status of a remote contact in a call. It is protocol- and client-specific whether a particular contact will ever have a particular flag set on them, and Telepathy clients SHOULD NOT assume that a flag will ever be set. 180 Ringing in SIP, and its equivalent in XMPP, are optional informational messages, and implementations are not required to send them. The same applies to the messages used to indicate hold state. +

    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_CALL_MEMBER_FLAG_RINGING

    The remote contact's client has told us that the contact has been alerted about the call but has not responded. This is a flag per member, not a flag for the call as a whole, because in Muji conference calls, you could invite someone and have their state be "ringing" for a while. +

    TP_CALL_MEMBER_FLAG_HELD

    The call member has put this call on hold. This is a flag per member, not a flag for the call as a whole, because in conference calls, any member could put the conference on hold. +

    TP_CALL_MEMBER_FLAG_CONFERENCE_HOST

    This contact has merged this call into a conference. Note that GSM provides a notification when the remote party merges a call into a conference, but not when it is split out again; thus, this flag can only indicate that the call has been part of a conference at some point. If a GSM connection manager receives a notification that a call has been merged into a conference a second time, it SHOULD represent this by clearing and immediately re-setting this flag on the remote contact. +
    +
    +
    +
    +

    enum TpRTCPXRStatisticsFlags

    +
    typedef enum {
    +    TP_RTCP_XR_STATISTICS_FLAGS_LOSS = 1,
    +    TP_RTCP_XR_STATISTICS_FLAGS_DUPLICATE = 2,
    +    TP_RTCP_XR_STATISTICS_FLAGS_JITTER = 4,
    +    TP_RTCP_XR_STATISTICS_FLAGS_TTL = 8,
    +    TP_RTCP_XR_STATISTICS_FLAGS_HL = 16,
    +} TpRTCPXRStatisticsFlags;
    +
    +

    +Bitfield/set of flags generated from the Telepathy specification. +

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

    TP_RTCP_XR_STATISTICS_FLAGS_LOSS

    Loss report flag, as defined in RFC3611 section 4.6. +

    TP_RTCP_XR_STATISTICS_FLAGS_DUPLICATE

    Duplicate report flag, as defined in RFC3611 section 4.6. +

    TP_RTCP_XR_STATISTICS_FLAGS_JITTER

    Jitter flag, as defined in RFC3611 section 4.6. +

    TP_RTCP_XR_STATISTICS_FLAGS_TTL

    First bit of TTL or Hop Limit flag, as defined in RFC3611 section 4.6. +

    TP_RTCP_XR_STATISTICS_FLAGS_HL

    Second bit of TTL or Hop Limit flag, as defined in RFC3611 section 4.6. +
    +
    @@ -226,6 +227,7 @@ TP_ERROR_MEDIA_CODECS_INCOMPATIBLE, /*< nick=Media.CodecsIncompatible >*/ TP_ERROR_MEDIA_UNSUPPORTED_TYPE, /*< nick=Media.UnsupportedType >*/ TP_ERROR_MEDIA_STREAMING_ERROR, /*< nick=Media.StreamingError >*/ + TP_ERROR_CAPTCHA_NOT_SUPPORTED, /*< nick=CaptchaNotSupported >*/ } TpError;

    @@ -625,6 +627,13 @@ Since: 0.15.6 + +

    TP_ERROR_CAPTCHA_NOT_SUPPORTED

    + org.freedesktop.Telepathy.Error.Media.CaptchaNotSupported: + Raised if no UI is available to present captchas, or if one is + available but it is unable to answer any of the captchas given. + +
    @@ -1341,6 +1350,18 @@ Raised when the call's streaming implementation has some kind of internal error. <tp:rationale> This corresponds to <tp:value-ref type="Call_State_Change_Reason">Internal_Error</tp:value-ref>. </tp:rationale>

    +
    +
    +

    TP_ERROR_STR_CAPTCHA_NOT_SUPPORTED

    +
    #define TP_ERROR_STR_CAPTCHA_NOT_SUPPORTED "org.freedesktop.Telepathy.Error.CaptchaNotSupported"
    +
    +

    +The D-Bus error name org.freedesktop.Telepathy.Error.CaptchaNotSupported +

    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Raised if the <tp:dbus-ref namespace="ofdT.Channel.Interface">CaptchaAuthentication1</tp:dbus-ref> Handler either has no UI to present captchas, or it does, but wasn't able to answer any of the captchas given.</p> +

    +
    @@ -171,26 +171,26 @@ 18 19 20 -
    GHashTable *request = tp_asv_new (
    -    TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER,
    -    TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    -    TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, "foo@bar.com",
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_CONTENT_TYPE, G_TYPE_STRING, "text/plain",
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_DATE, G_TYPE_INT64, 1320925992,
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_DESCRIPTION, G_TYPE_STRING, "",
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_FILENAME, G_TYPE_STRING, "test.pdf",
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_INITIAL_OFFSET, G_TYPE_UINT64, 0,
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_SIZE, G_TYPE_UINT64, 165710,
    -    NULL);
    +        
    GHashTable *request = tp_asv_new (
    +    TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER,
    +    TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    +    TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, "foo@bar.com",
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_CONTENT_TYPE, G_TYPE_STRING, "text/plain",
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_DATE, G_TYPE_INT64, 1320925992,
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_DESCRIPTION, G_TYPE_STRING, "",
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_FILENAME, G_TYPE_STRING, "test.pdf",
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_INITIAL_OFFSET, G_TYPE_UINT64, 0,
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_SIZE, G_TYPE_UINT64, 165710,
    +    NULL);
     
    -TpAccountChannelRequest *channel_request = tp_account_channel_request_new (
    -    account, request,
    -    TP_USER_ACTION_TIME_CURRENT_TIME);
    +TpAccountChannelRequest *channel_request = tp_account_channel_request_new (
    +    account, request,
    +    TP_USER_ACTION_TIME_CURRENT_TIME);
     
    -tp_account_channel_request_create_and_handle_channel_async (channel_request, NULL,
    -    create_and_handle_cb, NULL);
    +tp_account_channel_request_create_and_handle_channel_async (channel_request, NULL,
    +    create_and_handle_cb, NULL);
     
    -g_hash_table_unref (request);
    +g_hash_table_unref (request);
    @@ -403,7 +403,7 @@

    tp_file_transfer_channel_get_size ()

    -
    guint64             tp_file_transfer_channel_get_size   (TpFileTransferChannel *self);
    +
    guint64             tp_file_transfer_channel_get_size   (TpFileTransferChannel *self);

    Return the "size" property

    @@ -426,7 +426,7 @@

    tp_file_transfer_channel_get_transferred_bytes ()

    -
    guint64             tp_file_transfer_channel_get_transferred_bytes
    +
    guint64             tp_file_transfer_channel_get_transferred_bytes
                                                             (TpFileTransferChannel *self);

    Return the "transferred-bytes" property @@ -536,7 +536,7 @@

    void                tp_file_transfer_channel_accept_file_async
                                                             (TpFileTransferChannel *self,
                                                              GFile *file,
    -                                                         guint64 offset,
    +                                                         guint64 offset,
                                                              GAsyncReadyCallback callback,
                                                              gpointer user_data);

    @@ -766,7 +766,7 @@


    The "initial-offset" property

    -
      "initial-offset"           guint64               : Read
    +
      "initial-offset"           guint64               : Read

    The offset in bytes from where the file should be sent.

    @@ -816,25 +816,25 @@ 17 18 19
    -
    GHashTable *request;
    -GHashTable *metadata = g_hash_table_new (g_str_hash, g_str_equal);
    -const gchar * const values[] = { "Jason Derulo", "Tinie Tempah", NULL };
    -g_hash_table_insert (metadata, "best buds", values);
    +        
    GHashTable *request;
    +GHashTable *metadata = g_hash_table_new (g_str_hash, g_str_equal);
    +const gchar * const values[] = { "Jason Derulo", "Tinie Tempah", NULL };
    +g_hash_table_insert (metadata, "best buds", values);
     
    -request = tp_asv_new (
    -    TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER,
    -    TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    -    TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, "foo@bar.com",
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_CONTENT_TYPE, G_TYPE_STRING, "text/plain",
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_DATE, G_TYPE_INT64, 1320925992,
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_DESCRIPTION, G_TYPE_STRING, "",
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_FILENAME, G_TYPE_STRING, "test.pdf",
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_INITIAL_OFFSET, G_TYPE_UINT64, 0,
    -    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_SIZE, G_TYPE_UINT64, 165710,
    -    TP_PROP_CHANNEL_INTERFACE_FILE_TRANSFER_METADATA_METADATA, TP_TYPE_METADATA, metadata,
    -    NULL);
    +request = tp_asv_new (
    +    TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER,
    +    TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    +    TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, "foo@bar.com",
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_CONTENT_TYPE, G_TYPE_STRING, "text/plain",
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_DATE, G_TYPE_INT64, 1320925992,
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_DESCRIPTION, G_TYPE_STRING, "",
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_FILENAME, G_TYPE_STRING, "test.pdf",
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_INITIAL_OFFSET, G_TYPE_UINT64, 0,
    +    TP_PROP_CHANNEL_TYPE_FILE_TRANSFER_SIZE, G_TYPE_UINT64, 165710,
    +    TP_PROP_CHANNEL_INTERFACE_FILE_TRANSFER_METADATA_METADATA, TP_TYPE_METADATA, metadata,
    +    NULL);
     
    -...
    +...
    @@ -889,12 +889,12 @@ 4 5 6 -
    tp_base_client_take_handler_filter (handler, tp_asv_new (
    -              TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER,
    -              TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    -              TP_PROP_CHANNEL_REQUESTED, G_TYPE_BOOLEAN, FALSE,
    -              TP_PROP_CHANNEL_INTERFACE_FILE_TRANSFER_METADATA_SERVICE_NAME, G_TYPE_STRING, "service.name",
    -              NULL));
    +
    tp_base_client_take_handler_filter (handler, tp_asv_new (
    +              TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER,
    +              TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    +              TP_PROP_CHANNEL_REQUESTED, G_TYPE_BOOLEAN, FALSE,
    +              TP_PROP_CHANNEL_INTERFACE_FILE_TRANSFER_METADATA_SERVICE_NAME, G_TYPE_STRING, "service.name",
    +              NULL));
    @@ -912,7 +912,7 @@

    The "size" property

    -
      "size"                     guint64               : Read
    +
      "size"                     guint64               : Read

    The size of the file to be transferred, or G_MAXUINT64 if not known. @@ -942,7 +942,7 @@


    The "transferred-bytes" property

    -
      "transferred-bytes"        guint64               : Read
    +
      "transferred-bytes"        guint64               : Read

    The number of bytes transferred so far in this file transfer. diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-gnio-util.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-gnio-util.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-gnio-util.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-gnio-util.html 2012-02-20 17:31:30.000000000 +0000 @@ -52,11 +52,31 @@ guchar *byte, GCancellable *cancellable, GError **error); +void tp_unix_connection_receive_credentials_with_byte_async + (GSocketConnection *connection, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GCredentials * tp_unix_connection_receive_credentials_with_byte_finish + (GSocketConnection *connection, + GAsyncResult *result, + guchar *byte, + GError **error); gboolean tp_unix_connection_send_credentials_with_byte (GSocketConnection *connection, guchar byte, GCancellable *cancellable, GError **error); +void tp_unix_connection_send_credentials_with_byte_async + (GSocketConnection *connection, + guchar byte, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_unix_connection_send_credentials_with_byte_finish + (GSocketConnection *connection, + GAsyncResult *result, + GError **error);

    @@ -190,6 +210,95 @@

    +

    tp_unix_connection_receive_credentials_with_byte_async ()

    +
    void                tp_unix_connection_receive_credentials_with_byte_async
    +                                                        (GSocketConnection *connection,
    +                                                         GCancellable *cancellable,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Asynchronously receive credentials. +

    +

    +For more details, see tp_unix_connection_receive_credentials_with_byte() +which is the synchronous version of this call. +

    +

    +When the operation is finished, callback will be called. You can then call +tp_unix_connection_receive_credentials_with_byte_finish() to get the result +of the operation. +

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

    connection :

    A GUnixConnection.

    cancellable :

    optional GCancellable object, NULL to ignore. [allow-none] +

    callback :

    a GAsyncReadyCallback to call when the request is satisfied. [scope async] +

    user_data :

    the data to pass to callback function. [closure] +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_unix_connection_receive_credentials_with_byte_finish ()

    +
    GCredentials *      tp_unix_connection_receive_credentials_with_byte_finish
    +                                                        (GSocketConnection *connection,
    +                                                         GAsyncResult *result,
    +                                                         guchar *byte,
    +                                                         GError **error);
    +

    +Finishes an asynchronous receive credentials operation started with +tp_unix_connection_receive_credentials_with_byte_async(). +

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

    connection :

    A GUnixConnection.

    result :

    a GAsyncResult.

    byte :

    if not NULL, used to return the byte. [out] +

    error :

    a GError, or NULL +

    Returns :

    a GCredentials, or NULL on error. +Free the returned object with g_object_unref(). [transfer full] +
    +

    Since 0.17.5

    +
    +
    +

    tp_unix_connection_send_credentials_with_byte ()

    gboolean            tp_unix_connection_send_credentials_with_byte
                                                             (GSocketConnection *connection,
    @@ -230,6 +339,93 @@
     

    Since 0.13.2

    +
    +
    +

    tp_unix_connection_send_credentials_with_byte_async ()

    +
    void                tp_unix_connection_send_credentials_with_byte_async
    +                                                        (GSocketConnection *connection,
    +                                                         guchar byte,
    +                                                         GCancellable *cancellable,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Asynchronously send credentials. +

    +

    +For more details, see tp_unix_connection_send_credentials_with_byte() which +is the synchronous version of this call. +

    +

    +When the operation is finished, callback will be called. You can then call +tp_unix_connection_send_credentials_with_byte_finish() to get the result of +the operation. +

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

    connection :

    A GUnixConnection.

    byte :

    the byte to send with the credentials

    cancellable :

    optional GCancellable object, NULL to ignore. [allow-none] +

    callback :

    a GAsyncReadyCallback to call when the request is satisfied. [scope async] +

    user_data :

    the data to pass to callback function. [closure] +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_unix_connection_send_credentials_with_byte_finish ()

    +
    gboolean            tp_unix_connection_send_credentials_with_byte_finish
    +                                                        (GSocketConnection *connection,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes an asynchronous send credentials operation started with +tp_unix_connection_send_credentials_with_byte_async(). +

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

    connection :

    A GUnixConnection.

    result :

    a GAsyncResult.

    error :

    a GError, or NULL +

    Returns :

    +TRUE if the operation was successful, otherwise FALSE.
    +

    Since 0.17.5

    +
    @@ -735,9 +762,7 @@

    A pair (contact handle, alias) as seen in the - <tp:member-ref> - AliasesChanged - </tp:member-ref> + <tp:member-ref>AliasesChanged</tp:member-ref> signal.

    @@ -811,56 +836,32 @@ An amount of money in a specified currency. For example, 3.21 British pounds would conventionally be represented by ( - <var> - Amount - </var> + <var>Amount</var> = - <tt> - 321 - </tt> + <tt>321</tt> , - <var> - Scale - </var> + <var>Scale</var> = - <tt> - 2 - </tt> + <tt>2</tt> , - <var> - Currency - </var> + <var>Currency</var> = - <tt> - &quot;GBP&quot; - </tt> + <tt>&quot;GBP&quot;</tt> ), but could be represented by ( - <var> - Amount - </var> + <var>Amount</var> = - <tt> - 3210 - </tt> + <tt>3210</tt> , - <var> - Scale - </var> + <var>Scale</var> = - <tt> - 3 - </tt> + <tt>3</tt> , - <var> - Currency - </var> + <var>Currency</var> = - <tt> - &quot;GBP&quot; - </tt> + <tt>&quot;GBP&quot;</tt> ) in a service that records balance in units of 0.001 pounds. </p> @@ -870,31 +871,19 @@ <p> As a special case, if - <var> - Amount - </var> + <var>Amount</var> = - <tt> - 0 - </tt> + <tt>0</tt> , - <var> - Scale - </var> + <var>Scale</var> = - <tt> - 2**32 - 1 - </tt> + <tt>2**32 - 1</tt> (i.e. the largest possible 32-bit unsigned integer) and - <var> - Currency - </var> + <var>Currency</var> = - <tt> - &quot;&quot; - </tt> + <tt>&quot;&quot;</tt> , this indicates an unknown amount. </p> @@ -1017,9 +1006,7 @@ new generic flags, old type-specific flags, new type-specific flags) representing a change to one of a contact's capabilities, as seen in the - <tp:member-ref> - CapabilitiesChanged - </tp:member-ref> + <tp:member-ref>CapabilitiesChanged</tp:member-ref> signal on the Capabilities interface.

    @@ -1083,9 +1070,7 @@

    A pair (channel type, type-specific flags) as passed to - <tp:member-ref> - AdvertiseCapabilities - </tp:member-ref> + <tp:member-ref>AdvertiseCapabilities</tp:member-ref> on the Capabilities interface.

    @@ -1127,9 +1112,7 @@ A struct (contact handle, channel type, generic flags, type-specific flags) representing a capability posessed by a contact, as returned by - <tp:member-ref> - GetCapabilities - </tp:member-ref> + <tp:member-ref>GetCapabilities</tp:member-ref> on the Capabilities interface.

    @@ -1315,11 +1298,9 @@ <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p> - Structure representing a class of channels that can be requested, + <p>Structure representing a class of channels that can be requested, identified by a set of properties that identify that class of - channel. - </p> + channel.</p>

    @@ -1327,12 +1308,10 @@ <tp:rationale> - <p> - This will often just be the channel type and the handle type, + <p>This will often just be the channel type and the handle type, but can include other properties of the channel - for instance, encrypted channels might require properties that - unencrypted channels do not, like an encryption key. - </p> + unencrypted channels do not, like an encryption key.</p> </tp:rationale> @@ -1340,11 +1319,9 @@

    - <p> - In some cases, these classes of channel may overlap, in the sense + <p>In some cases, these classes of channel may overlap, in the sense that one class fixes all the properties that another class does, - plus some more properties. - </p> + plus some more properties.</p>

    @@ -1352,11 +1329,9 @@ <tp:rationale> - <p> - For older clients to still be able to understand how to request + <p>For older clients to still be able to understand how to request channels in the presence of a hypothetical &quot;encryption&quot; interface, - we'd need to represent it like this: - </p> + we'd need to represent it like this:</p>

    @@ -1364,16 +1339,12 @@ <ul> - <li> - class 1: ChannelType = Text, TargetHandleType = CONTACT - </li> + <li>class 1: ChannelType = Text, TargetHandleType = CONTACT</li> - <li> - class 2: Channel.ChannelType = Text, + <li>class 2: Channel.ChannelType = Text, Channel.TargetHandleType = CONTACT, - Encryption.Encrypted = TRUE - </li> + Encryption.Encrypted = TRUE</li> </ul> @@ -1541,12 +1512,10 @@ <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p> - An access control mode for extended presence items like geolocation. + <p>An access control mode for extended presence items like geolocation. This type isn't actually used by the SimplePresence interface, but it's included here so it can be referenced by rich presence - interfaces. - </p> + interfaces.</p>

    @@ -1554,9 +1523,7 @@ <p> New interfaces should use this type, and NOT - <tp:type> - Rich_Presence_Access_Control - </tp:type> + <tp:type>Rich_Presence_Access_Control</tp:type> . </p> @@ -1594,9 +1561,7 @@ This type isn't actually used by the SimplePresence interface, but it's included here so it can be referenced by rich presence interfaces such as - <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface"> - Location - </tp:dbus-ref> + <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface">Location</tp:dbus-ref> . </p> @@ -1604,15 +1569,11 @@

    <p> - <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface"> - Location - </tp:dbus-ref> + <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface">Location</tp:dbus-ref> uses this for historical reasons, new interfaces will use - <tp:type> - Access_Control_Type - </tp:type> + <tp:type>Access_Control_Type</tp:type> . </p> @@ -1918,9 +1879,7 @@

    A struct describing a vCard field, with parameters, that may be passed to - <tp:member-ref> - SetContactInfo - </tp:member-ref> + <tp:member-ref>SetContactInfo</tp:member-ref> on this Connection.

    @@ -1967,6 +1926,59 @@

    +

    TP_HASH_TYPE_ADDRESSING_NORMALIZATION_MAP

    +
    #define TP_HASH_TYPE_ADDRESSING_NORMALIZATION_MAP (tp_type_dbus_hash_su ())
    +
    +

    +A map from URIs/vCard addresses to the corresponding handle. +

    +

    +This macro expands to a call to a function +that returns the GType of a GHashTable +appropriate for representing a D-Bus +dictionary of signature +a{su}. +

    +

    +Keys (D-Bus type s, +named Requested_String): +The URI or vCard address that has been requested by <tp:member-ref>GetContactsByVCardField</tp:member-ref> or <tp:member-ref>GetContactsByURI</tp:member-ref>. +

    +

    +Values (D-Bus type u, +type Contact_Handle, +named Handle): +A nonzero handle. +

    +
    +
    +
    +

    TP_HASH_TYPE_VCARD_FIELD_ADDRESS_MAP

    +
    #define TP_HASH_TYPE_VCARD_FIELD_ADDRESS_MAP (tp_type_dbus_hash_ss ())
    +
    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A mapping of vCard fields and addresses equivalent to a particular contact's protocol identifier. For instance, on XMPP this would contain <code>x-jabber</code> for all contacts, and <code>x-facebook-id</code> for contacts on Facebook's server.</p> +

    +

    +This macro expands to a call to a function +that returns the GType of a GHashTable +appropriate for representing a D-Bus +dictionary of signature +a{ss}. +

    +

    +Keys (D-Bus type s, +named VCard_Field): +A vCard field, such as <code>x-jabber</code>. +

    +

    +Values (D-Bus type s, +named Address): +The value of that vCard field for the contact. +

    +
    +
    +

    TP_STRUCT_TYPE_CONTACT_SUBSCRIPTIONS

    #define TP_STRUCT_TYPE_CONTACT_SUBSCRIPTIONS (tp_type_dbus_struct_uus ())
     
    @@ -2100,12 +2112,10 @@ <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p> - A pair (name, address) representing an e-mail address, + <p>A pair (name, address) representing an e-mail address, such as (&quot;Nicolas Dufresne&quot;, &quot;nicolas.dufresnecollabora.co.uk&quot;). At least one of name and address MUST be provided. A missing element will - be represented by the empty string. - </p> + be represented by the empty string.</p> <tp:rationale> @@ -2116,9 +2126,7 @@ protocols provide both the displayed name and the address. (If a protocol doesn't provide either, it should omit the appropriate field from the - <tp:type> - Mail - </tp:type> + <tp:type>Mail</tp:type> entirely.) </p> @@ -2164,20 +2172,16 @@ <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p> - A structure containing the required information to open a web-based - e-mail UI, without needing re-authentication (if possible). - </p> + <p>A structure containing the required information to open a web-based + e-mail UI, without needing re-authentication (if possible).</p>

    - <p> - Because the URL and POST data frequently contain short-lived + <p>Because the URL and POST data frequently contain short-lived credential tokens, a new URL should be requested (by calling one of the methods that returns a Mail_URL) for each visit to the web-based - UI, and the URL should be visited soon after it is returned. - </p> + UI, and the URL should be visited soon after it is returned.</p>

    @@ -2221,9 +2225,7 @@ the requirements of the <a href="http://www.w3.org/TR/html401/types.htmltype-cdata"> - - HTML CDATA type - </a> + HTML CDATA type</a> . The value MUST NOT be encoded with HTML entities. </p> @@ -2231,24 +2233,20 @@

    - <p> - For example, if the POST data should contain a key &quot;less-than&quot; with value + <p>For example, if the POST data should contain a key &quot;less-than&quot; with value &quot;&lt;&quot;, and a key &quot;percent&quot; with value &quot;%&quot;, this should be represented as two HTTP_Post_Data structures, (&quot;less-than&quot;, &quot;&lt;&quot;) and (&quot;percent&quot;, &quot;%&quot;), resulting in a POST request whose request body is &quot;less-than=&amp;lt;&amp;percent=25&quot;. If a client passes this to a browser by writing it into an HTML form, it - could do so by representing it as: - </p> + could do so by representing it as:</p>

    <pre> - &lt;input type=&quot;hidden&quot; name=&quot;less-than&quot;&gt;&amp;lt;&lt;/input&gt; &lt;input type=&quot;hidden&quot; name=&quot;percent&quot;&gt;%&lt;/input&gt; - - </pre> + </pre>

    @@ -2264,21 +2262,17 @@ instruct the browser how to load the URL (like the Netscape Plug-in API), in which case the client MUST escape - <a href="http://www.ietf.org/rfc/rfc1738.txt"> - characters that are - reserved in URLs - </a> + <a href="http://www.ietf.org/rfc/rfc1738.txt">characters that are + reserved in URLs</a> , if appropriate for that API. </p>

    - <p> - An array of pairs is used instead of a map from keys to values, + <p>An array of pairs is used instead of a map from keys to values, because it's valid to repeat keys in both HTML and - x-www-form-urlencoded data. - </p> + x-www-form-urlencoded data.</p> </tp:rationale> @@ -2322,9 +2316,7 @@ A structure representing a contact whose attempt to join a group is to be confirmed by the local user using - <tp:member-ref> - AddMembers - </tp:member-ref> + <tp:member-ref>AddMembers</tp:member-ref> .

    @@ -2460,14 +2452,10 @@ 1970-01-01 00:00 UTC, sender's handle, message type, flags, text) representing a pending text message, as returned by - <tp:member-ref> - ListPendingMessages - </tp:member-ref> + <tp:member-ref>ListPendingMessages</tp:member-ref> . The arguments of the - <tp:member-ref> - Received - </tp:member-ref> + <tp:member-ref>Received</tp:member-ref> signal also match this struct's signature.

    @@ -2715,14 +2703,10 @@

    Represents a participant in a multi-user D-Bus tube, as returned by - <tp:member-ref> - GetDBusNames - </tp:member-ref> + <tp:member-ref>GetDBusNames</tp:member-ref> and seen in the - <tp:member-ref> - DBusNamesChanged - </tp:member-ref> + <tp:member-ref>DBusNamesChanged</tp:member-ref> signal.

    @@ -2913,6 +2897,96 @@


    +

    TP_HASH_TYPE_CALL_MEMBER_MAP

    +
    #define TP_HASH_TYPE_CALL_MEMBER_MAP (tp_type_dbus_hash_uu ())
    +
    +

    +A mapping from handles to their current state in the call. +

    +

    +This macro expands to a call to a function +that returns the GType of a GHashTable +appropriate for representing a D-Bus +dictionary of signature +a{uu}. +

    +

    +Keys (D-Bus type u, +type Handle, +named key): +(Undocumented) +

    +

    +Values (D-Bus type u, +type Call_Member_Flags, +named Flag): +(Undocumented) +

    +
    +
    +
    +

    TP_ARRAY_TYPE_CALL_MEMBER_MAP_LIST

    +
    #define TP_ARRAY_TYPE_CALL_MEMBER_MAP_LIST (tp_type_dbus_array_of_a_7buu_7d ())
    +
    +

    +Expands to a call to a function +that returns the GType of a GPtrArray +of TP_HASH_TYPE_CALL_MEMBER_MAP. +

    +
    +
    +
    +

    TP_STRUCT_TYPE_CALL_STATE_REASON

    +
    #define TP_STRUCT_TYPE_CALL_STATE_REASON (tp_type_dbus_struct_uuss ())
    +
    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + + + <p> + A description of the reason for a change to the + + <tp:member-ref>CallState</tp:member-ref> + and/or + + <tp:member-ref>CallFlags</tp:member-ref> + . + </p> + + +

    +

    +This macro expands to a call to a function +that returns the GType of a GValueArray +appropriate for representing a D-Bus struct +with signature (uuss). +

    +

    +Member 0 (D-Bus type u, +type Contact_Handle, +named Actor): +The contact responsible for the change, or 0 if no contact was responsible. +

    +

    +Member 1 (D-Bus type u, +type Call_State_Change_Reason, +named Reason): +The reason, chosen from a limited set of possibilities defined by the Telepathy specification. If <tp:value-ref type="Call_State_Change_Reason">User_Requested</tp:value-ref> then the Actor member will dictate whether it was the local user or a remote contact responsible. +

    +

    +Member 2 (D-Bus type s, +type DBus_Error_Name, +named DBus_Reason): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A specific reason for the change, which may be a D-Bus error in the Telepathy namespace, a D-Bus error in any other namespace (for implementation-specific errors), or the empty string to indicate that the state change was not an error.</p> <p>This SHOULD be an empty string for changes to any state other than Ended.</p> <p>The errors Cancelled and Terminated SHOULD NOT be used here; an empty string SHOULD be used instead.</p> <tp:rationale> <p>Those error names are used to indicate normal call termination by the local user or another user, respectively, in contexts where a D-Bus error name must appear.</p> </tp:rationale> +

    +

    +Member 3 (D-Bus type s, +named Message): +An optional debug message, to expediate debugging the potentially many processes involved in a call. This may be communicated across the network in protocols that support doing so, but it is not essential. +

    +
    +
    +

    TP_ARRAY_TYPE_MEDIA_SESSION_HANDLER_INFO_LIST

    #define TP_ARRAY_TYPE_MEDIA_SESSION_HANDLER_INFO_LIST (tp_type_dbus_array_os ())
     
    @@ -3304,9 +3378,7 @@

    Implementors and users of Call's - <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription.Interface"> - RTCPFeedback - </tp:dbus-ref> + <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription.Interface">RTCPFeedback</tp:dbus-ref> should not use the MAXUINT default. Instead, in RTP/AVP, the default should be 5000 (5 seconds). If using the RTP/AVPF profile, it can be set to a lower value, @@ -3337,7 +3409,7 @@

    #define TP_STRUCT_TYPE_RTP_HEADER_EXTENSION (tp_type_dbus_struct_uuss ())
     

    -A struct defining a RTP Header extension +A struct defining a RTP Header extension.

    @@ -3349,7 +3421,7 @@

    Member 0 (D-Bus type u, named ID): -Identifier to be negotiated +Identifier to be negotiated.

    Member 1 (D-Bus type u, @@ -3360,12 +3432,12 @@

    Member 2 (D-Bus type s, named URI): -URI defining the extension +URI defining the extension.

    Member 3 (D-Bus type s, named Parameters): -Feedback parameters as a string. Format is defined in the relevant RFC +Feedback parameters as a string. Format is defined in the relevant RFC.


    @@ -3586,6 +3658,90 @@

    +

    TP_ARRAY_TYPE_CAPTCHA_INFO_LIST

    +
    #define TP_ARRAY_TYPE_CAPTCHA_INFO_LIST (tp_type_dbus_array_ussuas ())
    +
    +

    +Expands to a call to a function +that returns the GType of a GPtrArray +of TP_STRUCT_TYPE_CAPTCHA_INFO. +

    +
    +
    +
    +

    TP_HASH_TYPE_CAPTCHA_ANSWERS

    +
    #define TP_HASH_TYPE_CAPTCHA_ANSWERS (tp_type_dbus_hash_us ())
    +
    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> A mapping of captcha IDs to answer strings. +

    +

    +This macro expands to a call to a function +that returns the GType of a GHashTable +appropriate for representing a D-Bus +dictionary of signature +a{us}. +

    +

    +Keys (D-Bus type u, +named ID): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> The ID of the captcha to which the associated answer string is answering. +

    +

    +Values (D-Bus type s, +named Answer): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> The answer string to answer the captcha referenced by the associated ID. +

    +
    +
    +
    +

    TP_STRUCT_TYPE_CAPTCHA_INFO

    +
    #define TP_STRUCT_TYPE_CAPTCHA_INFO (tp_type_dbus_struct_ussuas ())
    +
    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + + + <p>A struct containing information regarding a single captcha + mechanism.</p> + + +

    +

    +This macro expands to a call to a function +that returns the GType of a GValueArray +appropriate for representing a D-Bus struct +with signature (ussuas). +

    +

    +Member 0 (D-Bus type u, +named ID): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>The ID with which to reference this captcha method when retrieving its data and answering it. They are unique within this channel instance only.</p> +

    +

    +Member 1 (D-Bus type s, +named Type): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>The type of challenge <a href="http://xmpp.org/extensions/xep-0158.htmlchallenge"> as defined by XEP-0158</a>. For instance, the commonly-used &quot;type the letters/words you see in this image&quot; challenge is represented by <code>ocr</code></p> +

    +

    +Member 2 (D-Bus type s, +named Label): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A human-readable label for the challenge, as defined in XEP-0158.</p> <p>If the server does not supply a label for a challenge of type other than <code>qa</code>, connection managers SHOULD set Label to an empty string instead of generating their own text. If the Label is an empty string, the Handler SHOULD replace it with a generic label in the user's locale, such as the strings suggested in XEP-0158 (for instance, <code>Enter the text you see</code> for <code>ocr</code> challenges). The Handler MAY use those generic labels in any case, as per <a href="http://xmpp.org/extensions/xep-0158.htmli18n">the Internationalization Considerations section of XEP-0158</a>.</p> <tp:rationale> <p>Connection managers are not usually localized, so text generated by the connection manager would be in English, regardless of the user's locale. The Handler is better-placed to generate a generic Label in the user's locale.</p> </tp:rationale> <p>For challenges of type <code>qa</code>, the Label is a plain-text question for the user to answer. The connection manager SHOULD NOT provide an empty Label; if it does, the Handler SHOULD treat that challenge as impossible, and SHOULD NOT attempt to display it.</p> +

    +

    +Member 3 (D-Bus type u, +type Captcha_Flags, +named Flags): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>One flag defined: Required. Most captchas will have no flags.</p> +

    +

    +Member 4 (D-Bus type as, +named Available_MIME_Types): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>A list of MIME types the server is offering to provide for this captcha method.</p> +

    +
    +
    +

    TP_STRUCT_TYPE_AVATAR

    #define TP_STRUCT_TYPE_AVATAR (tp_type_dbus_struct_ays ())
     
    @@ -3593,17 +3749,13 @@ <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p> - A struct containing avatar data marked with its MIME type. - </p> + <p>A struct containing avatar data marked with its MIME type.</p>

    - <p> - May be set to an empty byte-array and an empty string, indicating - no avatar. - </p> + <p>May be set to an empty byte-array and an empty string, indicating + no avatar.</p>

    @@ -3724,9 +3876,7 @@

    A struct representing a debug message, as returned by - <tp:member-ref> - GetMessages - </tp:member-ref> + <tp:member-ref>GetMessages</tp:member-ref> .

    @@ -3778,17 +3928,13 @@ <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p> - Struct representing one reason why a TLS certificate was rejected. - </p> + <p>Struct representing one reason why a TLS certificate was rejected.</p> - <p> - Since there can be multiple things wrong with a TLS certificate, + <p>Since there can be multiple things wrong with a TLS certificate, arrays of this type are used to represent lists of reasons for rejection. In that case, the most important reason SHOULD be placed - first in the list. - </p> + first in the list.</p>

    @@ -3854,6 +4000,431 @@ (Undocumented)

    +
    +
    +

    TP_ARRAY_TYPE_CANDIDATE_LIST

    +
    #define TP_ARRAY_TYPE_CANDIDATE_LIST (tp_type_dbus_array_usua_7bsv_7d ())
    +
    +

    +Expands to a call to a function +that returns the GType of a GPtrArray +of TP_STRUCT_TYPE_CANDIDATE. +

    +
    +
    +
    +

    TP_ARRAY_TYPE_CANDIDATE_PAIR_LIST

    +
    #define TP_ARRAY_TYPE_CANDIDATE_PAIR_LIST (tp_type_dbus_array__28usua_7bsv_7d_29_28usua_7bsv_7d_29 ())
    +
    +

    +Expands to a call to a function +that returns the GType of a GPtrArray +of TP_STRUCT_TYPE_CANDIDATE_PAIR. +

    +
    +
    +
    +

    TP_ARRAY_TYPE_CODEC_LIST

    +
    #define TP_ARRAY_TYPE_CODEC_LIST (tp_type_dbus_array_usuuba_7bss_7d ())
    +
    +

    +Expands to a call to a function +that returns the GType of a GPtrArray +of TP_STRUCT_TYPE_CODEC. +

    +
    +
    +
    +

    TP_ARRAY_TYPE_VIDEO_RESOLUTION_STRUCT

    +
    #define TP_ARRAY_TYPE_VIDEO_RESOLUTION_STRUCT (tp_type_dbus_array_uu ())
    +
    +

    +Expands to a call to a function +that returns the GType of a GPtrArray +of TP_STRUCT_TYPE_VIDEO_RESOLUTION. +

    +
    +
    +
    +

    TP_HASH_TYPE_CANDIDATE_INFO

    +
    #define TP_HASH_TYPE_CANDIDATE_INFO (tp_type_dbus_hash_sv ())
    +
    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Extra information about the candidate. Allowed and mandatory keys depend on the transport protocol used. The following keys are commenly used:</p> <dl> <dt><code>type</code> - u</dt> <dd>The type of candidate (<tp:type>Call_Stream_Candidate_Type</tp:type>)</dd> <dt><code>foundation</code> - s</dt> <dd>The foundation of this candidate</dd> <dt><code>protocol</code> - u</dt> <dd>Underlying protocol of the candidate (<tp:type>Media_Stream_Base_Proto</tp:type>) </dd> <dt><code>priority</code> - u</dt> <dd>Priority of the candidate (should be a number between 0 and 65535). Most ICE implementations will prefer the highest priority candidate pair that manages to connect. For backwards compatibility with non-ICE SIP clients, the lowest priority candidate may be sent as a raw UDP fallback candidate. It is recommended that a relay candidate is used as the lowest priority candidate if possible. If both IPv4 and IPv6 raw udp fallback candidates are available, they should be set to the same priority and advertised to the CM at the same time. The CM will decide which to advertise to the remote end.</dd> <dt><code>base-ip</code> - s</dt> <dd>The underlying Host address where media sent to this (non-host-type) candidate will eventually arrive.</dd> <dt><code>base-port</code> - u</dt> <dd>The underlying Host port where media sent to this (non-host-type) candidate will eventually arrive.</dd> <dt><code>username</code> - s</dt> <dd>Username of this candidate (only if credentials are per candidate)</dd> <dt><code>password</code> - s</dt> <dd>Password of this candidate (only if credentials are per candidate)</dd> <dt><code>ttl</code> - u</dt> <dd>The TTL mandated for RTP/RTCP packets sent to a multicast group (only valid for Multicast Streams)</dd> </dl> +

    +

    +This macro expands to a call to a function +that returns the GType of a GHashTable +appropriate for representing a D-Bus +dictionary of signature +a{sv}. +

    +

    +Keys (D-Bus type s, +named Key): +One of the well-known keys documented here, or an implementation-specific key. +

    +

    +Values (D-Bus type v, +named Value): +The value corresponding to that key. +

    +
    +
    +
    +

    TP_HASH_TYPE_COMPONENT_STATE_MAP

    +
    #define TP_HASH_TYPE_COMPONENT_STATE_MAP (tp_type_dbus_hash_uu ())
    +
    +

    +(Undocumented) +

    +

    +This macro expands to a call to a function +that returns the GType of a GHashTable +appropriate for representing a D-Bus +dictionary of signature +a{uu}. +

    +

    +Keys (D-Bus type u, +type Stream_Component, +named Component): +(Undocumented) +

    +

    +Values (D-Bus type u, +type Stream_Endpoint_State, +named State): +(Undocumented) +

    +
    +
    +
    +

    TP_HASH_TYPE_CONTACT_CODEC_MAP

    +
    #define TP_HASH_TYPE_CONTACT_CODEC_MAP (tp_type_dbus_hash_ua_28usuuba_7bss_7d_29 ())
    +
    +

    +A map from contact to the list of codecs he or she supports. +

    +

    +This macro expands to a call to a function +that returns the GType of a GHashTable +appropriate for representing a D-Bus +dictionary of signature +a{ua(usuuba{ss})}. +

    +

    +Keys (D-Bus type u, +type Contact_Handle, +named Handle): +A contact handle. +

    +

    +Values (D-Bus type a(usuuba{ss}), +type Codec[], +named Codecs): +The codecs that the contact supports. +

    +
    +
    +
    +

    TP_HASH_TYPE_CONTACT_MEDIA_DESCRIPTION_PROPERTIES_MAP

    +
    #define TP_HASH_TYPE_CONTACT_MEDIA_DESCRIPTION_PROPERTIES_MAP (tp_type_dbus_hash_ua_7bsv_7d ())
    +
    +

    +(Undocumented) +

    +

    +This macro expands to a call to a function +that returns the GType of a GHashTable +appropriate for representing a D-Bus +dictionary of signature +a{ua{sv}}. +

    +

    +Keys (D-Bus type u, +type Handle, +named Remote_Contact): +The remote contact this description refers to or 0. This matches the <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription">RemoteContact</tp:dbus-ref> property on <tp:dbus-ref namespace="ofdT.Call1.Content">MediaDescription</tp:dbus-ref> +

    +

    +Values (D-Bus type a{sv}, +type Media_Description_Properties, +named Media_Description_Properties): +The properties of the description +

    +
    +
    +
    +

    TP_HASH_TYPE_CONTACT_SENDING_STATE_MAP

    +
    #define TP_HASH_TYPE_CONTACT_SENDING_STATE_MAP (tp_type_dbus_hash_uu ())
    +
    +

    +A map from a contact to his or her sending state. +

    +

    +This macro expands to a call to a function +that returns the GType of a GHashTable +appropriate for representing a D-Bus +dictionary of signature +a{uu}. +

    +

    +Keys (D-Bus type u, +type Contact_Handle, +named Contact): +The contact handle. +

    +

    +Values (D-Bus type u, +type Sending_State, +named Sending): +The sending state of the contact. +

    +
    +
    +
    +

    TP_HASH_TYPE_CONTACT_SSRCS_MAP

    +
    #define TP_HASH_TYPE_CONTACT_SSRCS_MAP (tp_type_dbus_hash_uau ())
    +
    +

    +(Undocumented) +

    +

    +This macro expands to a call to a function +that returns the GType of a GHashTable +appropriate for representing a D-Bus +dictionary of signature +a{uau}. +

    +

    +Keys (D-Bus type u, +type Handle, +named Contact): +The remote contact these SSRCs belong to or 0. +

    +

    +Values (D-Bus type au, +named SSRCs): +The list of Synchronisation Sources. +

    +
    +
    +
    +

    TP_HASH_TYPE_MEDIA_DESCRIPTION_PROPERTIES

    +
    #define TP_HASH_TYPE_MEDIA_DESCRIPTION_PROPERTIES (tp_type_dbus_hash_sv ())
    +
    +

    +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p> A mapping containing all properties that define the information from a <tp:dbus-ref namespace="ofdT.Call1.Content">MediaDescription</tp:dbus-ref> and its interfaces. </p> <p> If <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription">HasRemoteInformation</tp:dbus-ref> is True, then this mapping will always contains at least <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription">Codecs</tp:dbus-ref> </p> +

    +

    +This macro expands to a call to a function +that returns the GType of a GHashTable +appropriate for representing a D-Bus +dictionary of signature +a{sv}. +

    +

    +Keys (D-Bus type s, +type DBus_Qualified_Member, +named Media_Description_Property): +A D-Bus interface name, followed by a dot and a D-Bus property name. +

    +

    +Values (D-Bus type v, +named Media_Description_Property_Value): +The value of the property +

    +
    +
    +
    +

    TP_STRUCT_TYPE_CANDIDATE

    +
    #define TP_STRUCT_TYPE_CANDIDATE (tp_type_dbus_struct_usua_7bsv_7d ())
    +
    +

    +A Stream Candidate. +

    +

    +This macro expands to a call to a function +that returns the GType of a GValueArray +appropriate for representing a D-Bus struct +with signature (usua{sv}). +

    +

    +Member 0 (D-Bus type u, +type Stream_Component, +named Component): +The component number. +

    +

    +Member 1 (D-Bus type s, +named IP): +The IP address to use. +

    +

    +Member 2 (D-Bus type u, +named Port): +The port number to use. +

    +

    +Member 3 (D-Bus type a{sv}, +type Candidate_Info, +named Info): +Additional information about the candidate. +

    +
    +
    +
    +

    TP_STRUCT_TYPE_CANDIDATE_PAIR

    +
    #define TP_STRUCT_TYPE_CANDIDATE_PAIR (tp_type_dbus_struct__28usua_7bsv_7d_29_28usua_7bsv_7d_29 ())
    +
    +

    +A Pair of candidates. +

    +

    +This macro expands to a call to a function +that returns the GType of a GValueArray +appropriate for representing a D-Bus struct +with signature ((usua{sv})(usua{sv})). +

    +

    +Member 0 (D-Bus type (usua{sv}), +type Candidate, +named Local): +The local candidate. +

    +

    +Member 1 (D-Bus type (usua{sv}), +type Candidate, +named Remote): +The remote candidate. +

    +
    +
    +
    +

    TP_STRUCT_TYPE_CODEC

    +
    #define TP_STRUCT_TYPE_CODEC (tp_type_dbus_struct_usuuba_7bss_7d ())
    +
    +

    +A description of a codec. + +

    +

    +This macro expands to a call to a function +that returns the GType of a GValueArray +appropriate for representing a D-Bus struct +with signature (usuuba{ss}). +

    +

    +Member 0 (D-Bus type u, +named Identifier): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> Numeric identifier for the codec. This will be used as the PT in the SDP or content description. +

    +

    +Member 1 (D-Bus type s, +named Name): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> The name of the codec. +

    +

    +Member 2 (D-Bus type u, +named Clockrate): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> The clockrate of the codec. +

    +

    +Member 3 (D-Bus type u, +named Channels): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> Number of channels of the codec if applicable, otherwise 0. +

    +

    +Member 4 (D-Bus type b, +named Updated): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> This should be set to true in calls to <tp:dbus-ref namespace="ofdT.Call1.Content.MediaDescription">Accept</tp:dbus-ref> and <tp:member-ref>UpdateLocalMediaDescription</tp:member-ref> if this codec has changed in a way that needs to be signalled over the network. If it is set to false, the CM is allowed ignore any differences between the current parameters and the previous ones <tp:rationale> This mechanism may be used to save bandwidth and avoid the CM having to calculate diffs against previous versions of this struct, which can lead to false-positives (e.g. redundant ptime updates). </tp:rationale> +

    +

    +Member 5 (D-Bus type a{ss}, +type String_String_Map, +named Parameters): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> Extra parameters for this codec. +

    +
    +
    +
    +

    TP_STRUCT_TYPE_MEDIA_DESCRIPTION_OFFER

    +
    #define TP_STRUCT_TYPE_MEDIA_DESCRIPTION_OFFER (tp_type_dbus_struct_oa_7bsv_7d ())
    +
    +

    +The remote description offer and its information + +

    +

    +This macro expands to a call to a function +that returns the GType of a GValueArray +appropriate for representing a D-Bus struct +with signature (oa{sv}). +

    +

    +Member 0 (D-Bus type o, +named Media_Description): +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> The object path to the <tp:dbus-ref namespace="ofdT.Call1.Content">MediaDescription</tp:dbus-ref> +

    +

    +Member 1 (D-Bus type a{sv}, +type Media_Description_Properties, +named Properties): +The immutable properties of all interfaces of the codec description. <tp:rationale> Having all the codec description properties here saves a D-Bus round-trip - it shouldn't be necessary to get the properties from the MediaDescription object, in practice. </tp:rationale> +

    +
    +
    +
    +

    TP_STRUCT_TYPE_STREAM_CREDENTIALS

    +
    #define TP_STRUCT_TYPE_STREAM_CREDENTIALS (tp_type_dbus_struct_ss ())
    +
    +

    +A username and password pair. +

    +

    +This macro expands to a call to a function +that returns the GType of a GValueArray +appropriate for representing a D-Bus struct +with signature (ss). +

    +

    +Member 0 (D-Bus type s, +named Username): +The username. +

    +

    +Member 1 (D-Bus type s, +named Password): +The password. +

    +
    +
    +
    +

    TP_STRUCT_TYPE_VIDEO_RESOLUTION

    +
    #define TP_STRUCT_TYPE_VIDEO_RESOLUTION (tp_type_dbus_struct_uu ())
    +
    +

    +With of the video stream. + +

    +

    +This macro expands to a call to a function +that returns the GType of a GValueArray +appropriate for representing a D-Bus struct +with signature (uu). +

    +

    +Member 0 (D-Bus type u, +named Width): +With of the video stream. +

    +

    +Member 1 (D-Bus type u, +named Height): +Height of the video stream. +

    +
    @@ -311,7 +311,7 @@

    The "user-action-time" property

    -
      "user-action-time"         gint64                : Read / Write / Construct Only
    +
      "user-action-time"         gint64                : Read / Write / Construct Only

    The time at which user action occurred, or one of the special values TP_USER_ACTION_TIME_NOT_USER_ACTION or diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-interfaces.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-interfaces.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-interfaces.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-interfaces.html 2012-02-20 17:31:29.000000000 +0000 @@ -75,6 +75,8 @@ #define TP_IFACE_QUARK_PROTOCOL_INTERFACE_PRESENCE #define TP_IFACE_CONNECTION #define TP_IFACE_QUARK_CONNECTION +#define TP_IFACE_CONNECTION_INTERFACE_ADDRESSING +#define TP_IFACE_QUARK_CONNECTION_INTERFACE_ADDRESSING #define TP_IFACE_CONNECTION_INTERFACE_ALIASING #define TP_IFACE_QUARK_CONNECTION_INTERFACE_ALIASING #define TP_IFACE_CONNECTION_INTERFACE_ANONYMITY @@ -117,6 +119,8 @@ #define TP_IFACE_QUARK_CONNECTION_INTERFACE_MAIL_NOTIFICATION #define TP_IFACE_CHANNEL #define TP_IFACE_QUARK_CHANNEL +#define TP_IFACE_CHANNEL_TYPE_CALL +#define TP_IFACE_QUARK_CHANNEL_TYPE_CALL #define TP_IFACE_CHANNEL_TYPE_CONTACT_LIST #define TP_IFACE_QUARK_CHANNEL_TYPE_CONTACT_LIST #define TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH @@ -145,6 +149,8 @@ #define TP_IFACE_QUARK_CHANNEL_INTERFACE_ANONYMITY #define TP_IFACE_CHANNEL_INTERFACE_CALL_STATE #define TP_IFACE_QUARK_CHANNEL_INTERFACE_CALL_STATE +#define TP_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION +#define TP_IFACE_QUARK_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION #define TP_IFACE_CHANNEL_INTERFACE_CHAT_STATE #define TP_IFACE_QUARK_CHANNEL_INTERFACE_CHAT_STATE #define TP_IFACE_CHANNEL_INTERFACE_CONFERENCE @@ -203,6 +209,30 @@ #define TP_IFACE_QUARK_CLIENT_OBSERVER #define TP_IFACE_CLIENT_INTERFACE_REQUESTS #define TP_IFACE_QUARK_CLIENT_INTERFACE_REQUESTS +#define TP_IFACE_CALL_CONTENT +#define TP_IFACE_QUARK_CALL_CONTENT +#define TP_IFACE_CALL_CONTENT_INTERFACE_MEDIA +#define TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_MEDIA +#define TP_IFACE_CALL_CONTENT_INTERFACE_VIDEO_CONTROL +#define TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_VIDEO_CONTROL +#define TP_IFACE_CALL_CONTENT_INTERFACE_AUDIO_CONTROL +#define TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_AUDIO_CONTROL +#define TP_IFACE_CALL_CONTENT_INTERFACE_DTMF +#define TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_DTMF +#define TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION +#define TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION +#define TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS +#define TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS +#define TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK +#define TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK +#define TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS +#define TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS +#define TP_IFACE_CALL_STREAM +#define TP_IFACE_QUARK_CALL_STREAM +#define TP_IFACE_CALL_STREAM_ENDPOINT +#define TP_IFACE_QUARK_CALL_STREAM_ENDPOINT +#define TP_IFACE_CALL_STREAM_INTERFACE_MEDIA +#define TP_IFACE_QUARK_CALL_STREAM_INTERFACE_MEDIA #define TP_PROP_ACCOUNT_AUTOMATIC_PRESENCE #define TP_PROP_ACCOUNT_CHANGING_PRESENCE #define TP_PROP_ACCOUNT_CONNECTION @@ -232,11 +262,70 @@ #define TP_PROP_ACCOUNT_PARAMETERS #define TP_PROP_ACCOUNT_REQUESTED_PRESENCE #define TP_PROP_ACCOUNT_SERVICE +#define TP_PROP_ACCOUNT_SUPERSEDES #define TP_PROP_ACCOUNT_VALID #define TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_CHAIN_DATA #define TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_TYPE #define TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_REJECTIONS #define TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_STATE +#define TP_PROP_CALL_CONTENT_DISPOSITION +#define TP_PROP_CALL_CONTENT_INTERFACES +#define TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_CURRENT_DTMF_EVENT +#define TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_CURRENT_DTMF_STATE +#define TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_LOCAL_MEDIA_DESCRIPTIONS +#define TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_MEDIA_DESCRIPTION_OFFER +#define TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_PACKETIZATION +#define TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_REMOTE_MEDIA_DESCRIPTIONS +#define TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_BITRATE +#define TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_FRAMERATE +#define TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_MANUAL_KEY_FRAMES +#define TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_MTU +#define TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_VIDEO_RESOLUTION +#define TP_PROP_CALL_CONTENT_INTERFACE_AUDIO_CONTROL_REQUESTED_INPUT_VOLUME +#define TP_PROP_CALL_CONTENT_INTERFACE_AUDIO_CONTROL_REQUESTED_OUTPUT_VOLUME +#define TP_PROP_CALL_CONTENT_INTERFACE_DTMF_CURRENTLY_SENDING_TONES +#define TP_PROP_CALL_CONTENT_INTERFACE_DTMF_DEFERRED_TONES +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_CODECS +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_FURTHER_NEGOTIATION_REQUIRED +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_HAS_REMOTE_INFORMATION +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACES +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_DLRR_MAX_SIZE +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_DUPLICATE_RLE_MAX_SIZE +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_ENABLE_METRICS +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_LOSS_RLE_MAX_SIZE +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_PACKET_RECEIPT_TIMES_MAX_SIZE +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_RTT_MODE +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_STATISTICS_FLAGS +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK_DOES_AVPF +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK_FEEDBACK_MESSAGES +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS_HEADER_EXTENSIONS +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_REMOTE_CONTACT +#define TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_SSRCS +#define TP_PROP_CALL_CONTENT_NAME +#define TP_PROP_CALL_CONTENT_STREAMS +#define TP_PROP_CALL_CONTENT_TYPE +#define TP_PROP_CALL_STREAM_CAN_REQUEST_RECEIVING +#define TP_PROP_CALL_STREAM_ENDPOINT_CONTROLLING +#define TP_PROP_CALL_STREAM_ENDPOINT_ENDPOINT_STATE +#define TP_PROP_CALL_STREAM_ENDPOINT_IS_ICE_LITE +#define TP_PROP_CALL_STREAM_ENDPOINT_REMOTE_CANDIDATES +#define TP_PROP_CALL_STREAM_ENDPOINT_REMOTE_CREDENTIALS +#define TP_PROP_CALL_STREAM_ENDPOINT_SELECTED_CANDIDATE_PAIRS +#define TP_PROP_CALL_STREAM_ENDPOINT_TRANSPORT +#define TP_PROP_CALL_STREAM_INTERFACES +#define TP_PROP_CALL_STREAM_INTERFACE_MEDIA_ENDPOINTS +#define TP_PROP_CALL_STREAM_INTERFACE_MEDIA_HAS_SERVER_INFO +#define TP_PROP_CALL_STREAM_INTERFACE_MEDIA_ICE_RESTART_PENDING +#define TP_PROP_CALL_STREAM_INTERFACE_MEDIA_LOCAL_CANDIDATES +#define TP_PROP_CALL_STREAM_INTERFACE_MEDIA_LOCAL_CREDENTIALS +#define TP_PROP_CALL_STREAM_INTERFACE_MEDIA_RECEIVING_STATE +#define TP_PROP_CALL_STREAM_INTERFACE_MEDIA_RELAY_INFO +#define TP_PROP_CALL_STREAM_INTERFACE_MEDIA_SENDING_STATE +#define TP_PROP_CALL_STREAM_INTERFACE_MEDIA_STUN_SERVERS +#define TP_PROP_CALL_STREAM_INTERFACE_MEDIA_TRANSPORT +#define TP_PROP_CALL_STREAM_LOCAL_SENDING_STATE +#define TP_PROP_CALL_STREAM_REMOTE_MEMBERS +#define TP_PROP_CALL_STREAM_REMOTE_MEMBER_IDENTIFIERS #define TP_PROP_CHANNEL_CHANNEL_TYPE #define TP_PROP_CHANNEL_DISPATCHER_INTERFACES #define TP_PROP_CHANNEL_DISPATCHER_INTERFACE_OPERATION_LIST_DISPATCH_OPERATIONS @@ -252,6 +341,10 @@ #define TP_PROP_CHANNEL_INTERFACE_ANONYMITY_ANONYMITY_MANDATORY #define TP_PROP_CHANNEL_INTERFACE_ANONYMITY_ANONYMITY_MODES #define TP_PROP_CHANNEL_INTERFACE_ANONYMITY_ANONYMOUS_ID +#define TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAN_RETRY_CAPTCHA +#define TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_ERROR +#define TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_ERROR_DETAILS +#define TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_STATUS #define TP_PROP_CHANNEL_INTERFACE_CHAT_STATE_CHAT_STATES #define TP_PROP_CHANNEL_INTERFACE_CONFERENCE_CHANNELS #define TP_PROP_CHANNEL_INTERFACE_CONFERENCE_INITIAL_CHANNELS @@ -329,6 +422,20 @@ #define TP_PROP_CHANNEL_TARGET_HANDLE #define TP_PROP_CHANNEL_TARGET_HANDLE_TYPE #define TP_PROP_CHANNEL_TARGET_ID +#define TP_PROP_CHANNEL_TYPE_CALL_CALL_FLAGS +#define TP_PROP_CHANNEL_TYPE_CALL_CALL_MEMBERS +#define TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE +#define TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE_DETAILS +#define TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE_REASON +#define TP_PROP_CHANNEL_TYPE_CALL_CONTENTS +#define TP_PROP_CHANNEL_TYPE_CALL_HARDWARE_STREAMING +#define TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO +#define TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO_NAME +#define TP_PROP_CHANNEL_TYPE_CALL_INITIAL_TRANSPORT +#define TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO +#define TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO_NAME +#define TP_PROP_CHANNEL_TYPE_CALL_MEMBER_IDENTIFIERS +#define TP_PROP_CHANNEL_TYPE_CALL_MUTABLE_CONTENTS #define TP_PROP_CHANNEL_TYPE_CONTACT_SEARCH_AVAILABLE_SEARCH_KEYS #define TP_PROP_CHANNEL_TYPE_CONTACT_SEARCH_LIMIT #define TP_PROP_CHANNEL_TYPE_CONTACT_SEARCH_SEARCH_STATE @@ -394,6 +501,7 @@ #define TP_PROP_CONNECTION_INTERFACE_CONTACT_INFO_CONTACT_INFO_FLAGS #define TP_PROP_CONNECTION_INTERFACE_CONTACT_INFO_SUPPORTED_FIELDS #define TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_CAN_CHANGE_CONTACT_LIST +#define TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_DOWNLOAD_AT_CONNECTION #define TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_REQUEST_USES_MESSAGE #define TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_CONTACT_LIST_PERSISTS #define TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_CONTACT_LIST_STATE @@ -440,6 +548,8 @@ #define TP_PROP_PROTOCOL_REQUESTABLE_CHANNEL_CLASSES #define TP_PROP_PROTOCOL_VCARD_FIELD #define TP_TOKEN_CONNECTION_CONTACT_ID +#define TP_TOKEN_CONNECTION_INTERFACE_ADDRESSING_ADDRESSES +#define TP_TOKEN_CONNECTION_INTERFACE_ADDRESSING_URIS #define TP_TOKEN_CONNECTION_INTERFACE_ALIASING_ALIAS #define TP_TOKEN_CONNECTION_INTERFACE_AVATARS_TOKEN #define TP_TOKEN_CONNECTION_INTERFACE_CAPABILITIES_CAPS @@ -453,6 +563,12 @@ #define TP_TOKEN_CONNECTION_INTERFACE_CONTACT_LIST_SUBSCRIBE #define TP_TOKEN_CONNECTION_INTERFACE_SIMPLE_PRESENCE_PRESENCE #define TP_TOKEN_CONNECTION_INTERFACE_LOCATION_LOCATION +#define TP_TOKEN_CHANNEL_TYPE_CALL_AUDIO +#define TP_TOKEN_CHANNEL_TYPE_CALL_GTALK_P2P +#define TP_TOKEN_CHANNEL_TYPE_CALL_ICE +#define TP_TOKEN_CHANNEL_TYPE_CALL_SHM +#define TP_TOKEN_CHANNEL_TYPE_CALL_VIDEO +#define TP_TOKEN_CHANNEL_TYPE_CALL_WLM_2009 #define TP_TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_GTALK_P2P #define TP_TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_ICE_UDP #define TP_TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_WLM_8_5 @@ -763,6 +879,22 @@


    +

    TP_IFACE_CONNECTION_INTERFACE_ADDRESSING

    +
    #define             TP_IFACE_CONNECTION_INTERFACE_ADDRESSING
    +

    +The interface name "org.freedesktop.Telepathy.Connection.Interface.Addressing1" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CONNECTION_INTERFACE_ADDRESSING

    +
    #define             TP_IFACE_QUARK_CONNECTION_INTERFACE_ADDRESSING
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Connection.Interface.Addressing1" +

    +
    +
    +

    TP_IFACE_CONNECTION_INTERFACE_ALIASING

    #define             TP_IFACE_CONNECTION_INTERFACE_ALIASING

    @@ -1099,6 +1231,22 @@


    +

    TP_IFACE_CHANNEL_TYPE_CALL

    +
    #define             TP_IFACE_CHANNEL_TYPE_CALL
    +

    +The interface name "org.freedesktop.Telepathy.Channel.Type.Call1" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CHANNEL_TYPE_CALL

    +
    #define             TP_IFACE_QUARK_CHANNEL_TYPE_CALL
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Channel.Type.Call1" +

    +
    +
    +

    TP_IFACE_CHANNEL_TYPE_CONTACT_LIST

    #define             TP_IFACE_CHANNEL_TYPE_CONTACT_LIST

    @@ -1323,6 +1471,22 @@


    +

    TP_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION

    +
    #define             TP_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION
    +

    +The interface name "org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION

    +
    #define             TP_IFACE_QUARK_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1" +

    +
    +
    +

    TP_IFACE_CHANNEL_INTERFACE_CHAT_STATE

    #define             TP_IFACE_CHANNEL_INTERFACE_CHAT_STATE

    @@ -1734,327 +1898,991 @@

    TP_IFACE_QUARK_CLIENT_APPROVER

    #define             TP_IFACE_QUARK_CLIENT_APPROVER

    -Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Client.Approver" +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Client.Approver" +

    +
    +
    +
    +

    TP_IFACE_CLIENT_HANDLER

    +
    #define             TP_IFACE_CLIENT_HANDLER
    +

    +The interface name "org.freedesktop.Telepathy.Client.Handler" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CLIENT_HANDLER

    +
    #define             TP_IFACE_QUARK_CLIENT_HANDLER
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Client.Handler" +

    +
    +
    +
    +

    TP_IFACE_CLIENT_OBSERVER

    +
    #define             TP_IFACE_CLIENT_OBSERVER
    +

    +The interface name "org.freedesktop.Telepathy.Client.Observer" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CLIENT_OBSERVER

    +
    #define             TP_IFACE_QUARK_CLIENT_OBSERVER
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Client.Observer" +

    +
    +
    +
    +

    TP_IFACE_CLIENT_INTERFACE_REQUESTS

    +
    #define             TP_IFACE_CLIENT_INTERFACE_REQUESTS
    +

    +The interface name "org.freedesktop.Telepathy.Client.Interface.Requests" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CLIENT_INTERFACE_REQUESTS

    +
    #define             TP_IFACE_QUARK_CLIENT_INTERFACE_REQUESTS
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Client.Interface.Requests" +

    +
    +
    +
    +

    TP_IFACE_CALL_CONTENT

    +
    #define             TP_IFACE_CALL_CONTENT
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Content" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_CONTENT

    +
    #define             TP_IFACE_QUARK_CALL_CONTENT
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Content" +

    +
    +
    +
    +

    TP_IFACE_CALL_CONTENT_INTERFACE_MEDIA

    +
    #define             TP_IFACE_CALL_CONTENT_INTERFACE_MEDIA
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Content.Interface.Media" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_MEDIA

    +
    #define             TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_MEDIA
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Content.Interface.Media" +

    +
    +
    +
    +

    TP_IFACE_CALL_CONTENT_INTERFACE_VIDEO_CONTROL

    +
    #define             TP_IFACE_CALL_CONTENT_INTERFACE_VIDEO_CONTROL
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_VIDEO_CONTROL

    +
    #define             TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_VIDEO_CONTROL
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl" +

    +
    +
    +
    +

    TP_IFACE_CALL_CONTENT_INTERFACE_AUDIO_CONTROL

    +
    #define             TP_IFACE_CALL_CONTENT_INTERFACE_AUDIO_CONTROL
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Content.Interface.AudioControl" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_AUDIO_CONTROL

    +
    #define             TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_AUDIO_CONTROL
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Content.Interface.AudioControl" +

    +
    +
    +
    +

    TP_IFACE_CALL_CONTENT_INTERFACE_DTMF

    +
    #define             TP_IFACE_CALL_CONTENT_INTERFACE_DTMF
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Content.Interface.DTMF" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_DTMF

    +
    #define             TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_DTMF
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Content.Interface.DTMF" +

    +
    +
    +
    +

    TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION

    +
    #define             TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION

    +
    #define             TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription" +

    +
    +
    +
    +

    TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS

    +
    #define             TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS

    +
    #define             TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports" +

    +
    +
    +
    +

    TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK

    +
    #define             TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPFeedback" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK

    +
    #define             TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPFeedback" +

    +
    +
    +
    +

    TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS

    +
    #define             TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTPHeaderExtensions" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS

    +
    #define             TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTPHeaderExtensions" +

    +
    +
    +
    +

    TP_IFACE_CALL_STREAM

    +
    #define             TP_IFACE_CALL_STREAM
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Stream" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_STREAM

    +
    #define             TP_IFACE_QUARK_CALL_STREAM
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Stream" +

    +
    +
    +
    +

    TP_IFACE_CALL_STREAM_ENDPOINT

    +
    #define             TP_IFACE_CALL_STREAM_ENDPOINT
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Stream.Endpoint" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_STREAM_ENDPOINT

    +
    #define             TP_IFACE_QUARK_CALL_STREAM_ENDPOINT
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Stream.Endpoint" +

    +
    +
    +
    +

    TP_IFACE_CALL_STREAM_INTERFACE_MEDIA

    +
    #define             TP_IFACE_CALL_STREAM_INTERFACE_MEDIA
    +

    +The interface name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media" +

    +
    +
    +
    +

    TP_IFACE_QUARK_CALL_STREAM_INTERFACE_MEDIA

    +
    #define             TP_IFACE_QUARK_CALL_STREAM_INTERFACE_MEDIA
    +

    +Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_AUTOMATIC_PRESENCE

    +
    #define             TP_PROP_ACCOUNT_AUTOMATIC_PRESENCE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.AutomaticPresence" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_CHANGING_PRESENCE

    +
    #define             TP_PROP_ACCOUNT_CHANGING_PRESENCE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.ChangingPresence" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_CONNECTION

    +
    #define             TP_PROP_ACCOUNT_CONNECTION
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Connection" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_CONNECTION_ERROR

    +
    #define             TP_PROP_ACCOUNT_CONNECTION_ERROR
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.ConnectionError" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_CONNECTION_ERROR_DETAILS

    +
    #define             TP_PROP_ACCOUNT_CONNECTION_ERROR_DETAILS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.ConnectionErrorDetails" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_CONNECTION_STATUS

    +
    #define             TP_PROP_ACCOUNT_CONNECTION_STATUS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.ConnectionStatus" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_CONNECTION_STATUS_REASON

    +
    #define             TP_PROP_ACCOUNT_CONNECTION_STATUS_REASON
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.ConnectionStatusReason" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_CONNECT_AUTOMATICALLY

    +
    #define             TP_PROP_ACCOUNT_CONNECT_AUTOMATICALLY
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.ConnectAutomatically" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_CURRENT_PRESENCE

    +
    #define             TP_PROP_ACCOUNT_CURRENT_PRESENCE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.CurrentPresence" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_DISPLAY_NAME

    +
    #define             TP_PROP_ACCOUNT_DISPLAY_NAME
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.DisplayName" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_ENABLED

    +
    #define             TP_PROP_ACCOUNT_ENABLED
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Enabled" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_HAS_BEEN_ONLINE

    +
    #define             TP_PROP_ACCOUNT_HAS_BEEN_ONLINE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.HasBeenOnline" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_ICON

    +
    #define             TP_PROP_ACCOUNT_ICON
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Icon" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_INTERFACES

    +
    #define             TP_PROP_ACCOUNT_INTERFACES
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Interfaces" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_INTERFACE_ADDRESSING_URI_SCHEMES

    +
    #define             TP_PROP_ACCOUNT_INTERFACE_ADDRESSING_URI_SCHEMES
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Addressing.URISchemes" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_INTERFACE_AVATAR_AVATAR

    +
    #define             TP_PROP_ACCOUNT_INTERFACE_AVATAR_AVATAR
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Avatar.Avatar" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_IDENTIFIER

    +
    #define             TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_IDENTIFIER
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Storage.StorageIdentifier" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_PROVIDER

    +
    #define             TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_PROVIDER
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Storage.StorageProvider" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_RESTRICTIONS

    +
    #define             TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_RESTRICTIONS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Storage.StorageRestrictions" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_SPECIFIC_INFORMATION

    +
    #define             TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_SPECIFIC_INFORMATION
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Storage.StorageSpecificInformation" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_MANAGER_INTERFACES

    +
    #define             TP_PROP_ACCOUNT_MANAGER_INTERFACES
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.AccountManager.Interfaces" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_MANAGER_INVALID_ACCOUNTS

    +
    #define             TP_PROP_ACCOUNT_MANAGER_INVALID_ACCOUNTS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.AccountManager.InvalidAccounts" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_MANAGER_SUPPORTED_ACCOUNT_PROPERTIES

    +
    #define             TP_PROP_ACCOUNT_MANAGER_SUPPORTED_ACCOUNT_PROPERTIES
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.AccountManager.SupportedAccountProperties" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_MANAGER_VALID_ACCOUNTS

    +
    #define             TP_PROP_ACCOUNT_MANAGER_VALID_ACCOUNTS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.AccountManager.ValidAccounts" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_NICKNAME

    +
    #define             TP_PROP_ACCOUNT_NICKNAME
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Nickname" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_NORMALIZED_NAME

    +
    #define             TP_PROP_ACCOUNT_NORMALIZED_NAME
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.NormalizedName" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_PARAMETERS

    +
    #define             TP_PROP_ACCOUNT_PARAMETERS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Parameters" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_REQUESTED_PRESENCE

    +
    #define             TP_PROP_ACCOUNT_REQUESTED_PRESENCE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.RequestedPresence" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_SERVICE

    +
    #define             TP_PROP_ACCOUNT_SERVICE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Service" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_SUPERSEDES

    +
    #define             TP_PROP_ACCOUNT_SUPERSEDES
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Supersedes" +

    +
    +
    +
    +

    TP_PROP_ACCOUNT_VALID

    +
    #define             TP_PROP_ACCOUNT_VALID
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Account.Valid" +

    +
    +
    +
    +

    TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_CHAIN_DATA

    +
    #define             TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_CHAIN_DATA
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Authentication.TLSCertificate.CertificateChainData" +

    +
    +
    +
    +

    TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_TYPE

    +
    #define             TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_TYPE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Authentication.TLSCertificate.CertificateType" +

    +
    +
    +
    +

    TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_REJECTIONS

    +
    #define             TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_REJECTIONS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Authentication.TLSCertificate.Rejections" +

    +
    +
    +
    +

    TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_STATE

    +
    #define             TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_STATE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Authentication.TLSCertificate.State" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_DISPOSITION

    +
    #define             TP_PROP_CALL_CONTENT_DISPOSITION
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Disposition" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACES

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACES
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interfaces" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_CURRENT_DTMF_EVENT

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_CURRENT_DTMF_EVENT
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.Media.CurrentDTMFEvent" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_CURRENT_DTMF_STATE

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_CURRENT_DTMF_STATE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.Media.CurrentDTMFState" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_LOCAL_MEDIA_DESCRIPTIONS

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_LOCAL_MEDIA_DESCRIPTIONS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.Media.LocalMediaDescriptions" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_MEDIA_DESCRIPTION_OFFER

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_MEDIA_DESCRIPTION_OFFER
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.Media.MediaDescriptionOffer" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_PACKETIZATION

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_PACKETIZATION
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.Media.Packetization" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_REMOTE_MEDIA_DESCRIPTIONS

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_REMOTE_MEDIA_DESCRIPTIONS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.Media.RemoteMediaDescriptions" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_BITRATE

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_BITRATE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl.Bitrate" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_FRAMERATE

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_FRAMERATE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl.Framerate" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_MANUAL_KEY_FRAMES

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_MANUAL_KEY_FRAMES
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl.ManualKeyFrames" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_MTU

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_MTU
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl.MTU" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_VIDEO_RESOLUTION

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_VIDEO_RESOLUTION
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl.VideoResolution" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_AUDIO_CONTROL_REQUESTED_INPUT_VOLUME

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_AUDIO_CONTROL_REQUESTED_INPUT_VOLUME
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.AudioControl.RequestedInputVolume" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_AUDIO_CONTROL_REQUESTED_OUTPUT_VOLUME

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_AUDIO_CONTROL_REQUESTED_OUTPUT_VOLUME
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.AudioControl.RequestedOutputVolume" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_DTMF_CURRENTLY_SENDING_TONES

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_DTMF_CURRENTLY_SENDING_TONES
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.DTMF.CurrentlySendingTones" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_INTERFACE_DTMF_DEFERRED_TONES

    +
    #define             TP_PROP_CALL_CONTENT_INTERFACE_DTMF_DEFERRED_TONES
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Interface.DTMF.DeferredTones" +

    +
    +
    +
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_CODECS

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_CODECS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Codecs"


    -

    TP_IFACE_CLIENT_HANDLER

    -
    #define             TP_IFACE_CLIENT_HANDLER
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_FURTHER_NEGOTIATION_REQUIRED

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_FURTHER_NEGOTIATION_REQUIRED

    -The interface name "org.freedesktop.Telepathy.Client.Handler" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.FurtherNegotiationRequired"


    -

    TP_IFACE_QUARK_CLIENT_HANDLER

    -
    #define             TP_IFACE_QUARK_CLIENT_HANDLER
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_HAS_REMOTE_INFORMATION

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_HAS_REMOTE_INFORMATION

    -Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Client.Handler" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.HasRemoteInformation"


    -

    TP_IFACE_CLIENT_OBSERVER

    -
    #define             TP_IFACE_CLIENT_OBSERVER
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACES

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACES

    -The interface name "org.freedesktop.Telepathy.Client.Observer" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interfaces"


    -

    TP_IFACE_QUARK_CLIENT_OBSERVER

    -
    #define             TP_IFACE_QUARK_CLIENT_OBSERVER
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_DLRR_MAX_SIZE

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_DLRR_MAX_SIZE

    -Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Client.Observer" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports.DLRRMaxSize"


    -

    TP_IFACE_CLIENT_INTERFACE_REQUESTS

    -
    #define             TP_IFACE_CLIENT_INTERFACE_REQUESTS
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_DUPLICATE_RLE_MAX_SIZE

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_DUPLICATE_RLE_MAX_SIZE

    -The interface name "org.freedesktop.Telepathy.Client.Interface.Requests" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports.DuplicateRLEMaxSize"


    -

    TP_IFACE_QUARK_CLIENT_INTERFACE_REQUESTS

    -
    #define             TP_IFACE_QUARK_CLIENT_INTERFACE_REQUESTS
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_ENABLE_METRICS

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_ENABLE_METRICS

    -Expands to a call to a function that returns a quark for the interface name "org.freedesktop.Telepathy.Client.Interface.Requests" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports.EnableMetrics"


    -

    TP_PROP_ACCOUNT_AUTOMATIC_PRESENCE

    -
    #define             TP_PROP_ACCOUNT_AUTOMATIC_PRESENCE
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_LOSS_RLE_MAX_SIZE

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_LOSS_RLE_MAX_SIZE

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.AutomaticPresence" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports.LossRLEMaxSize"


    -

    TP_PROP_ACCOUNT_CHANGING_PRESENCE

    -
    #define             TP_PROP_ACCOUNT_CHANGING_PRESENCE
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_PACKET_RECEIPT_TIMES_MAX_SIZE

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_PACKET_RECEIPT_TIMES_MAX_SIZE

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.ChangingPresence" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports.PacketReceiptTimesMaxSize"


    -

    TP_PROP_ACCOUNT_CONNECTION

    -
    #define             TP_PROP_ACCOUNT_CONNECTION
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_RTT_MODE

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_RTT_MODE

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Connection" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports.RTTMode"


    -

    TP_PROP_ACCOUNT_CONNECTION_ERROR

    -
    #define             TP_PROP_ACCOUNT_CONNECTION_ERROR
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_STATISTICS_FLAGS

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_STATISTICS_FLAGS

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.ConnectionError" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPExtendedReports.StatisticsFlags"


    -

    TP_PROP_ACCOUNT_CONNECTION_ERROR_DETAILS

    -
    #define             TP_PROP_ACCOUNT_CONNECTION_ERROR_DETAILS
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK_DOES_AVPF

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK_DOES_AVPF

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.ConnectionErrorDetails" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPFeedback.DoesAVPF"


    -

    TP_PROP_ACCOUNT_CONNECTION_STATUS

    -
    #define             TP_PROP_ACCOUNT_CONNECTION_STATUS
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK_FEEDBACK_MESSAGES

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK_FEEDBACK_MESSAGES

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.ConnectionStatus" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTCPFeedback.FeedbackMessages"


    -

    TP_PROP_ACCOUNT_CONNECTION_STATUS_REASON

    -
    #define             TP_PROP_ACCOUNT_CONNECTION_STATUS_REASON
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS_HEADER_EXTENSIONS

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS_HEADER_EXTENSIONS

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.ConnectionStatusReason" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.Interface.RTPHeaderExtensions.HeaderExtensions"


    -

    TP_PROP_ACCOUNT_CONNECT_AUTOMATICALLY

    -
    #define             TP_PROP_ACCOUNT_CONNECT_AUTOMATICALLY
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_REMOTE_CONTACT

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_REMOTE_CONTACT

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.ConnectAutomatically" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.RemoteContact"


    -

    TP_PROP_ACCOUNT_CURRENT_PRESENCE

    -
    #define             TP_PROP_ACCOUNT_CURRENT_PRESENCE
    +

    TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_SSRCS

    +
    #define             TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_SSRCS

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.CurrentPresence" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.MediaDescription.SSRCs"


    -

    TP_PROP_ACCOUNT_DISPLAY_NAME

    -
    #define             TP_PROP_ACCOUNT_DISPLAY_NAME
    +

    TP_PROP_CALL_CONTENT_NAME

    +
    #define             TP_PROP_CALL_CONTENT_NAME

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.DisplayName" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Name"


    -

    TP_PROP_ACCOUNT_ENABLED

    -
    #define             TP_PROP_ACCOUNT_ENABLED
    +

    TP_PROP_CALL_CONTENT_STREAMS

    +
    #define             TP_PROP_CALL_CONTENT_STREAMS

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Enabled" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Streams"


    -

    TP_PROP_ACCOUNT_HAS_BEEN_ONLINE

    -
    #define             TP_PROP_ACCOUNT_HAS_BEEN_ONLINE
    +

    TP_PROP_CALL_CONTENT_TYPE

    +
    #define             TP_PROP_CALL_CONTENT_TYPE

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.HasBeenOnline" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Content.Type"


    -

    TP_PROP_ACCOUNT_ICON

    -
    #define             TP_PROP_ACCOUNT_ICON
    +

    TP_PROP_CALL_STREAM_CAN_REQUEST_RECEIVING

    +
    #define             TP_PROP_CALL_STREAM_CAN_REQUEST_RECEIVING

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Icon" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.CanRequestReceiving"


    -

    TP_PROP_ACCOUNT_INTERFACES

    -
    #define             TP_PROP_ACCOUNT_INTERFACES
    +

    TP_PROP_CALL_STREAM_ENDPOINT_CONTROLLING

    +
    #define             TP_PROP_CALL_STREAM_ENDPOINT_CONTROLLING

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Interfaces" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Endpoint.Controlling"


    -

    TP_PROP_ACCOUNT_INTERFACE_ADDRESSING_URI_SCHEMES

    -
    #define             TP_PROP_ACCOUNT_INTERFACE_ADDRESSING_URI_SCHEMES
    +

    TP_PROP_CALL_STREAM_ENDPOINT_ENDPOINT_STATE

    +
    #define             TP_PROP_CALL_STREAM_ENDPOINT_ENDPOINT_STATE

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Addressing.URISchemes" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Endpoint.EndpointState"


    -

    TP_PROP_ACCOUNT_INTERFACE_AVATAR_AVATAR

    -
    #define             TP_PROP_ACCOUNT_INTERFACE_AVATAR_AVATAR
    +

    TP_PROP_CALL_STREAM_ENDPOINT_IS_ICE_LITE

    +
    #define             TP_PROP_CALL_STREAM_ENDPOINT_IS_ICE_LITE

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Avatar.Avatar" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Endpoint.IsICELite"


    -

    TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_IDENTIFIER

    -
    #define             TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_IDENTIFIER
    +

    TP_PROP_CALL_STREAM_ENDPOINT_REMOTE_CANDIDATES

    +
    #define             TP_PROP_CALL_STREAM_ENDPOINT_REMOTE_CANDIDATES

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Storage.StorageIdentifier" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Endpoint.RemoteCandidates"


    -

    TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_PROVIDER

    -
    #define             TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_PROVIDER
    +

    TP_PROP_CALL_STREAM_ENDPOINT_REMOTE_CREDENTIALS

    +
    #define             TP_PROP_CALL_STREAM_ENDPOINT_REMOTE_CREDENTIALS

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Storage.StorageProvider" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Endpoint.RemoteCredentials"


    -

    TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_RESTRICTIONS

    -
    #define             TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_RESTRICTIONS
    +

    TP_PROP_CALL_STREAM_ENDPOINT_SELECTED_CANDIDATE_PAIRS

    +
    #define             TP_PROP_CALL_STREAM_ENDPOINT_SELECTED_CANDIDATE_PAIRS

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Storage.StorageRestrictions" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Endpoint.SelectedCandidatePairs"


    -

    TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_SPECIFIC_INFORMATION

    -
    #define             TP_PROP_ACCOUNT_INTERFACE_STORAGE_STORAGE_SPECIFIC_INFORMATION
    +

    TP_PROP_CALL_STREAM_ENDPOINT_TRANSPORT

    +
    #define             TP_PROP_CALL_STREAM_ENDPOINT_TRANSPORT

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Interface.Storage.StorageSpecificInformation" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Endpoint.Transport"


    -

    TP_PROP_ACCOUNT_MANAGER_INTERFACES

    -
    #define             TP_PROP_ACCOUNT_MANAGER_INTERFACES
    +

    TP_PROP_CALL_STREAM_INTERFACES

    +
    #define             TP_PROP_CALL_STREAM_INTERFACES

    -The fully-qualified property name "org.freedesktop.Telepathy.AccountManager.Interfaces" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Interfaces"


    -

    TP_PROP_ACCOUNT_MANAGER_INVALID_ACCOUNTS

    -
    #define             TP_PROP_ACCOUNT_MANAGER_INVALID_ACCOUNTS
    +

    TP_PROP_CALL_STREAM_INTERFACE_MEDIA_ENDPOINTS

    +
    #define             TP_PROP_CALL_STREAM_INTERFACE_MEDIA_ENDPOINTS

    -The fully-qualified property name "org.freedesktop.Telepathy.AccountManager.InvalidAccounts" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media.Endpoints"


    -

    TP_PROP_ACCOUNT_MANAGER_SUPPORTED_ACCOUNT_PROPERTIES

    -
    #define             TP_PROP_ACCOUNT_MANAGER_SUPPORTED_ACCOUNT_PROPERTIES
    +

    TP_PROP_CALL_STREAM_INTERFACE_MEDIA_HAS_SERVER_INFO

    +
    #define             TP_PROP_CALL_STREAM_INTERFACE_MEDIA_HAS_SERVER_INFO

    -The fully-qualified property name "org.freedesktop.Telepathy.AccountManager.SupportedAccountProperties" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media.HasServerInfo"


    -

    TP_PROP_ACCOUNT_MANAGER_VALID_ACCOUNTS

    -
    #define             TP_PROP_ACCOUNT_MANAGER_VALID_ACCOUNTS
    +

    TP_PROP_CALL_STREAM_INTERFACE_MEDIA_ICE_RESTART_PENDING

    +
    #define             TP_PROP_CALL_STREAM_INTERFACE_MEDIA_ICE_RESTART_PENDING

    -The fully-qualified property name "org.freedesktop.Telepathy.AccountManager.ValidAccounts" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media.ICERestartPending"


    -

    TP_PROP_ACCOUNT_NICKNAME

    -
    #define             TP_PROP_ACCOUNT_NICKNAME
    +

    TP_PROP_CALL_STREAM_INTERFACE_MEDIA_LOCAL_CANDIDATES

    +
    #define             TP_PROP_CALL_STREAM_INTERFACE_MEDIA_LOCAL_CANDIDATES

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Nickname" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media.LocalCandidates"


    -

    TP_PROP_ACCOUNT_NORMALIZED_NAME

    -
    #define             TP_PROP_ACCOUNT_NORMALIZED_NAME
    +

    TP_PROP_CALL_STREAM_INTERFACE_MEDIA_LOCAL_CREDENTIALS

    +
    #define             TP_PROP_CALL_STREAM_INTERFACE_MEDIA_LOCAL_CREDENTIALS

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.NormalizedName" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media.LocalCredentials"


    -

    TP_PROP_ACCOUNT_PARAMETERS

    -
    #define             TP_PROP_ACCOUNT_PARAMETERS
    +

    TP_PROP_CALL_STREAM_INTERFACE_MEDIA_RECEIVING_STATE

    +
    #define             TP_PROP_CALL_STREAM_INTERFACE_MEDIA_RECEIVING_STATE

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Parameters" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media.ReceivingState"


    -

    TP_PROP_ACCOUNT_REQUESTED_PRESENCE

    -
    #define             TP_PROP_ACCOUNT_REQUESTED_PRESENCE
    +

    TP_PROP_CALL_STREAM_INTERFACE_MEDIA_RELAY_INFO

    +
    #define             TP_PROP_CALL_STREAM_INTERFACE_MEDIA_RELAY_INFO

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.RequestedPresence" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media.RelayInfo"


    -

    TP_PROP_ACCOUNT_SERVICE

    -
    #define             TP_PROP_ACCOUNT_SERVICE
    +

    TP_PROP_CALL_STREAM_INTERFACE_MEDIA_SENDING_STATE

    +
    #define             TP_PROP_CALL_STREAM_INTERFACE_MEDIA_SENDING_STATE

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Service" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media.SendingState"


    -

    TP_PROP_ACCOUNT_VALID

    -
    #define             TP_PROP_ACCOUNT_VALID
    +

    TP_PROP_CALL_STREAM_INTERFACE_MEDIA_STUN_SERVERS

    +
    #define             TP_PROP_CALL_STREAM_INTERFACE_MEDIA_STUN_SERVERS

    -The fully-qualified property name "org.freedesktop.Telepathy.Account.Valid" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media.STUNServers"


    -

    TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_CHAIN_DATA

    -
    #define             TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_CHAIN_DATA
    +

    TP_PROP_CALL_STREAM_INTERFACE_MEDIA_TRANSPORT

    +
    #define             TP_PROP_CALL_STREAM_INTERFACE_MEDIA_TRANSPORT

    -The fully-qualified property name "org.freedesktop.Telepathy.Authentication.TLSCertificate.CertificateChainData" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.Interface.Media.Transport"


    -

    TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_TYPE

    -
    #define             TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_TYPE
    +

    TP_PROP_CALL_STREAM_LOCAL_SENDING_STATE

    +
    #define             TP_PROP_CALL_STREAM_LOCAL_SENDING_STATE

    -The fully-qualified property name "org.freedesktop.Telepathy.Authentication.TLSCertificate.CertificateType" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.LocalSendingState"


    -

    TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_REJECTIONS

    -
    #define             TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_REJECTIONS
    +

    TP_PROP_CALL_STREAM_REMOTE_MEMBERS

    +
    #define             TP_PROP_CALL_STREAM_REMOTE_MEMBERS

    -The fully-qualified property name "org.freedesktop.Telepathy.Authentication.TLSCertificate.Rejections" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.RemoteMembers"


    -

    TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_STATE

    -
    #define             TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_STATE
    +

    TP_PROP_CALL_STREAM_REMOTE_MEMBER_IDENTIFIERS

    +
    #define             TP_PROP_CALL_STREAM_REMOTE_MEMBER_IDENTIFIERS

    -The fully-qualified property name "org.freedesktop.Telepathy.Authentication.TLSCertificate.State" +The fully-qualified property name "org.freedesktop.Telepathy.Call1.Stream.RemoteMemberIdentifiers"


    @@ -2179,6 +3007,38 @@

    +

    TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAN_RETRY_CAPTCHA

    +
    #define             TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAN_RETRY_CAPTCHA
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1.CanRetryCaptcha" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_ERROR

    +
    #define             TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_ERROR
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1.CaptchaError" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_ERROR_DETAILS

    +
    #define             TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_ERROR_DETAILS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1.CaptchaErrorDetails" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_STATUS

    +
    #define             TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_STATUS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1.CaptchaStatus" +

    +
    +
    +

    TP_PROP_CHANNEL_INTERFACE_CHAT_STATE_CHAT_STATES

    #define             TP_PROP_CHANNEL_INTERFACE_CHAT_STATE_CHAT_STATES

    @@ -2795,6 +3655,118 @@


    +

    TP_PROP_CHANNEL_TYPE_CALL_CALL_FLAGS

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_CALL_FLAGS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.CallFlags" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_CALL_MEMBERS

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_CALL_MEMBERS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.CallMembers" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.CallState" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE_DETAILS

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE_DETAILS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.CallStateDetails" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE_REASON

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE_REASON
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.CallStateReason" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_CONTENTS

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_CONTENTS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.Contents" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_HARDWARE_STREAMING

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_HARDWARE_STREAMING
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.HardwareStreaming" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.InitialAudio" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO_NAME

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO_NAME
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.InitialAudioName" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_INITIAL_TRANSPORT

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_INITIAL_TRANSPORT
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.InitialTransport" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.InitialVideo" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO_NAME

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO_NAME
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.InitialVideoName" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_MEMBER_IDENTIFIERS

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_MEMBER_IDENTIFIERS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.MemberIdentifiers" +

    +
    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CALL_MUTABLE_CONTENTS

    +
    #define             TP_PROP_CHANNEL_TYPE_CALL_MUTABLE_CONTENTS
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Channel.Type.Call1.MutableContents" +

    +
    +
    +

    TP_PROP_CHANNEL_TYPE_CONTACT_SEARCH_AVAILABLE_SEARCH_KEYS

    #define             TP_PROP_CHANNEL_TYPE_CONTACT_SEARCH_AVAILABLE_SEARCH_KEYS

    @@ -3315,6 +4287,14 @@


    +

    TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_DOWNLOAD_AT_CONNECTION

    +
    #define             TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_DOWNLOAD_AT_CONNECTION
    +

    +The fully-qualified property name "org.freedesktop.Telepathy.Connection.Interface.ContactList.DownloadAtConnection" +

    +
    +
    +

    TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_REQUEST_USES_MESSAGE

    #define             TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_REQUEST_USES_MESSAGE

    @@ -3683,6 +4663,22 @@


    +

    TP_TOKEN_CONNECTION_INTERFACE_ADDRESSING_ADDRESSES

    +
    #define             TP_TOKEN_CONNECTION_INTERFACE_ADDRESSING_ADDRESSES
    +

    +The fully-qualified contact attribute token name "org.freedesktop.Telepathy.Connection.Interface.Addressing1/addresses" +

    +
    +
    +
    +

    TP_TOKEN_CONNECTION_INTERFACE_ADDRESSING_URIS

    +
    #define             TP_TOKEN_CONNECTION_INTERFACE_ADDRESSING_URIS
    +

    +The fully-qualified contact attribute token name "org.freedesktop.Telepathy.Connection.Interface.Addressing1/uris" +

    +
    +
    +

    TP_TOKEN_CONNECTION_INTERFACE_ALIASING_ALIAS

    #define             TP_TOKEN_CONNECTION_INTERFACE_ALIASING_ALIAS

    @@ -3787,6 +4783,54 @@


    +

    TP_TOKEN_CHANNEL_TYPE_CALL_AUDIO

    +
    #define             TP_TOKEN_CHANNEL_TYPE_CALL_AUDIO
    +

    +The fully-qualified capability token name "org.freedesktop.Telepathy.Channel.Type.Call1/audio" +

    +
    +
    +
    +

    TP_TOKEN_CHANNEL_TYPE_CALL_GTALK_P2P

    +
    #define             TP_TOKEN_CHANNEL_TYPE_CALL_GTALK_P2P
    +

    +The fully-qualified capability token name "org.freedesktop.Telepathy.Channel.Type.Call1/gtalk-p2p" +

    +
    +
    +
    +

    TP_TOKEN_CHANNEL_TYPE_CALL_ICE

    +
    #define             TP_TOKEN_CHANNEL_TYPE_CALL_ICE
    +

    +The fully-qualified capability token name "org.freedesktop.Telepathy.Channel.Type.Call1/ice" +

    +
    +
    +
    +

    TP_TOKEN_CHANNEL_TYPE_CALL_SHM

    +
    #define             TP_TOKEN_CHANNEL_TYPE_CALL_SHM
    +

    +The fully-qualified capability token name "org.freedesktop.Telepathy.Channel.Type.Call1/shm" +

    +
    +
    +
    +

    TP_TOKEN_CHANNEL_TYPE_CALL_VIDEO

    +
    #define             TP_TOKEN_CHANNEL_TYPE_CALL_VIDEO
    +

    +The fully-qualified capability token name "org.freedesktop.Telepathy.Channel.Type.Call1/video" +

    +
    +
    +
    +

    TP_TOKEN_CHANNEL_TYPE_CALL_WLM_2009

    +
    #define             TP_TOKEN_CHANNEL_TYPE_CALL_WLM_2009
    +

    +The fully-qualified capability token name "org.freedesktop.Telepathy.Channel.Type.Call1/wlm-2009" +

    +
    +
    +

    TP_TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_GTALK_P2P

    #define             TP_TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_GTALK_P2P

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-protocol.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-protocol.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-protocol.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-protocol.html 2012-02-20 17:31:30.000000000 +0000 @@ -810,7 +810,7 @@ Start a NormalizeContactURI method call.

    -<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Attempt to normalize the given contact URI. Where possible, this SHOULD return an address that would appear in the <code>org.freedesktop.Telepathy.Connection.Interface.Addressing.DRAFT/uris</code> attribute for a contact on a connected <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection</tp:dbus-ref>. </p> <p>If full normalization requires network activity or is otherwise impossible to do without a <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection</tp:dbus-ref>, this method SHOULD perform a best-effort normalization.</p> <p>If the URI has extra information beyond what's necessary to identify a particular contact, such as an XMPP resource or an action to carry out, this extra information SHOULD be removed. If all URIs in a scheme contain a verb or action (like <code>aim</code>, <code>ymsgr</code> and <code>msnim</code> URIs), then the verb SHOULD be replaced with the one specified in <tp:member-ref>AddressableURISchemes</tp:member-ref>.</p> <tp:rationale> <p>This method is intended to normalize URIs stored in address books, for instance. In protocols like XMPP, if you vary the resource or action (query string), the URI still refers to the same high-level contact.</p> </tp:rationale> <p>For instance, <code>xmpp:romeoExample.Com/Empathy?message;body=Hello</code> would be normalized to <code>xmpp:romeoexample.com</code>, and <code>aim:goim?screenname=Romeo20M&amp;message=Hello</code> would be normalized to <code>aim:addbuddy?screenname=romeom</code>.</p> <p>This method MAY simply raise NotImplemented on some protocols, if it has no use.</p> +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Attempt to normalize the given contact URI. Where possible, this SHOULD return an address that would appear in the <code>org.freedesktop.Telepathy.Connection.Interface.Addressing1/uris</code> attribute for a contact on a connected <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection</tp:dbus-ref>. </p> <p>If full normalization requires network activity or is otherwise impossible to do without a <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection</tp:dbus-ref>, this method SHOULD perform a best-effort normalization.</p> <p>If the URI has extra information beyond what's necessary to identify a particular contact, such as an XMPP resource or an action to carry out, this extra information SHOULD be removed. If all URIs in a scheme contain a verb or action (like <code>aim</code>, <code>ymsgr</code> and <code>msnim</code> URIs), then the verb SHOULD be replaced with the one specified in <tp:member-ref>AddressableURISchemes</tp:member-ref>.</p> <tp:rationale> <p>This method is intended to normalize URIs stored in address books, for instance. In protocols like XMPP, if you vary the resource or action (query string), the URI still refers to the same high-level contact.</p> </tp:rationale> <p>For instance, <code>xmpp:romeoExample.Com/Empathy?message;body=Hello</code> would be normalized to <code>xmpp:romeoexample.com</code>, and <code>aim:goim?screenname=Romeo20M&amp;message=Hello</code> would be normalized to <code>aim:addbuddy?screenname=romeom</code>.</p> <p>This method MAY simply raise NotImplemented on some protocols, if it has no use.</p>

    @@ -882,7 +882,7 @@ Start a NormalizeVCardAddress method call.

    -<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Attempt to normalize the given vCard address. Where possible, this SHOULD return an address that would appear in the <code>org.freedesktop.Telepathy.Connection.Interface.Addressing.DRAFT/addresses</code> attribute for a contact on a connected <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection</tp:dbus-ref>. </p> <p>If full normalization requires network activity or is otherwise impossible to do without a <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection</tp:dbus-ref>, this method SHOULD perform a best-effort normalization.</p> <p>An example would be a vCard TEL field with a formatted number in the form of <code>+1 (206) 555 1234</code>, this would be normalized to <code>+12065551234</code>.</p> <p>This method MAY simply raise NotImplemented on some protocols, if it has no use.</p> +<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Attempt to normalize the given vCard address. Where possible, this SHOULD return an address that would appear in the <code>org.freedesktop.Telepathy.Connection.Interface.Addressing1/addresses</code> attribute for a contact on a connected <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection</tp:dbus-ref>. </p> <p>If full normalization requires network activity or is otherwise impossible to do without a <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection</tp:dbus-ref>, this method SHOULD perform a best-effort normalization.</p> <p>An example would be a vCard TEL field with a formatted number in the form of <code>+1 (206) 555 1234</code>, this would be normalized to <code>+12065551234</code>.</p> <p>This method MAY simply raise NotImplemented on some protocols, if it has no use.</p>

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-proxy.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-proxy.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-proxy.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-proxy.html 2012-02-20 17:31:30.000000000 +0000 @@ -95,9 +95,11 @@ +----TpProxy +----TpAccount +----TpAccountManager + +----TpChannel + +----TpCallContent + +----TpCallStream +----TpChannelDispatchOperation +----TpChannelDispatcher - +----TpChannel +----TpChannelRequest +----TpClient +----TpConnection @@ -445,9 +447,9 @@ - +tp_proxy_prepare_async(channel, NULL, callback, user_data);
    1
     2
     3
    TpChannel *channel = ...;
    +        
    TpChannel *channel = ...;
     
    -tp_proxy_prepare_async (channel, NULL, callback, user_data);
    @@ -468,10 +470,10 @@ 2 3 4 -
    TpChannel *channel = ...;
    -GQuark features[] = { TP_CHANNEL_FEATURE_CORE, 0 };
    +        
    TpChannel *channel = ...;
    +GQuark features[] = { TP_CHANNEL_FEATURE_CORE, 0 };
     
    -tp_proxy_prepare_async (channel, features, callback, user_data);
    +tp_proxy_prepare_async (channel, features, callback, user_data);
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-proxy-subclass.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-proxy-subclass.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-proxy-subclass.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-proxy-subclass.html 2012-02-20 17:31:30.000000000 +0000 @@ -84,7 +84,7 @@ void tp_proxy_pending_call_v0_completed (gpointer p); void tp_proxy_pending_call_v0_take_pending_call (TpProxyPendingCall *pc, - DBusGProxyCall *pending_call); + DBusGProxyCall *pending_call); void tp_proxy_pending_call_v0_take_results (TpProxyPendingCall *pc, GError *error, @@ -624,7 +624,7 @@

    tp_proxy_pending_call_v0_take_pending_call ()

    void                tp_proxy_pending_call_v0_take_pending_call
                                                             (TpProxyPendingCall *pc,
    -                                                         DBusGProxyCall *pending_call);
    + DBusGProxyCall *pending_call);

    Set the underlying pending call to be used by this object. See also tp_proxy_pending_call_v0_new(). diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-simple-approver.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-simple-approver.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-simple-approver.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-simple-approver.html 2012-02-20 17:31:30.000000000 +0000 @@ -137,32 +137,32 @@ 24 25 26 -

    static void
    -my_add_dispatch_operation (TpSimpleApprover *approver,
    -   TpAccount *account,
    -   TpConnection *connection,
    -   GList *channels,
    -   TpChannelDispatchOperation *dispatch_operation,
    -   TpAddDispatchOperationContext *context,
    -   gpointer user_data)
    -{
    - /* call tp_channel_dispatch_operation_handle_with_async()
    +        
    static void
    +my_add_dispatch_operation (TpSimpleApprover *approver,
    +   TpAccount *account,
    +   TpConnection *connection,
    +   GList *channels,
    +   TpChannelDispatchOperation *dispatch_operation,
    +   TpAddDispatchOperationContext *context,
    +   gpointer user_data)
    +{
    + /* call tp_channel_dispatch_operation_handle_with_async()
      if wanting to approve the channels */
     
    - tp_add_dispatch_operation_context_accept (context);
    -}
    + tp_add_dispatch_operation_context_accept (context);
    +}
     
    -factory = tp_automatic_client_factory_new (dbus);
    -client = tp_simple_approver_new_with_factory (factory, "MyApprover", FALSE,
    -   my_add_dispatch_operation, user_data);
    -g_object_unref (factory);
    +factory = tp_automatic_client_factory_new (dbus);
    +client = tp_simple_approver_new_with_factory (factory, "MyApprover", FALSE,
    +   my_add_dispatch_operation, user_data);
    +g_object_unref (factory);
     
    -tp_base_client_take_approver_filter (client, tp_asv_new (
    -     TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT,
    -     TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    -     NULL));
    +tp_base_client_take_approver_filter (client, tp_asv_new (
    +     TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT,
    +     TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    +     NULL));
     
    -tp_base_client_register (client, NULL);
    +tp_base_client_register (client, NULL);
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-simple-client-factory.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-simple-client-factory.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-simple-client-factory.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-simple-client-factory.html 2012-02-20 17:31:30.000000000 +0000 @@ -178,21 +178,21 @@ 13 14 15 -
    int main(int argc, char *argv[])
    -{
    -  TpSimpleClientFactory *factory;
    -  TpAccountManager *manager;
    +        
    int main(int argc, char *argv[])
    +{
    +  TpSimpleClientFactory *factory;
    +  TpAccountManager *manager;
     
    -  g_type_init ();
    +  g_type_init ();
     
    -  factory = my_factory_new ();
    -  manager = tp_account_manager_new_with_factory (factory);
    -  tp_account_manager_set_default (manager);
    +  factory = my_factory_new ();
    +  manager = tp_account_manager_new_with_factory (factory);
    +  tp_account_manager_set_default (manager);
     
    -  ...
    -  tp_proxy_prepare_async (manager, am_features, callback, user_data);
    -  ...
    -}
    + ... + tp_proxy_prepare_async (manager, am_features, callback, user_data); + ... +}
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-simple-handler.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-simple-handler.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-simple-handler.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-simple-handler.html 2012-02-20 17:31:29.000000000 +0000 @@ -54,7 +54,7 @@ TpConnection *connection, GList *channels, GList *requests_satisfied, - gint64 user_action_time, + gint64 user_action_time, TpHandleChannelsContext *context, gpointer user_data); TpBaseClient * tp_simple_handler_new (TpDBusDaemon *dbus, @@ -147,33 +147,33 @@ 25 26 27 -
    static void
    -my_handle_channels (TpSimpleHandler *handler,
    -   TpAccount *account,
    -   TpConnection *connection,
    -   GList *channels,
    -   GList *requests_satisfied,
    -   gint64 user_action_time,
    -   GList *requests,
    -   TpHandleChannelsContext *context,
    -   gpointer user_data)
    -{
    - /* start handling the channels here */
    +        
    static void
    +my_handle_channels (TpSimpleHandler *handler,
    +   TpAccount *account,
    +   TpConnection *connection,
    +   GList *channels,
    +   GList *requests_satisfied,
    +   gint64 user_action_time,
    +   GList *requests,
    +   TpHandleChannelsContext *context,
    +   gpointer user_data)
    +{
    + /* start handling the channels here */
     
    - tp_handle_channels_context_accept (context);
    -}
    + tp_handle_channels_context_accept (context);
    +}
     
    -factory = tp_automatic_client_factory_new (dbus);
    -client = tp_simple_handler_new_with_factory (factory, FALSE, FALSE,
    -    "MyHandler", FALSE, my_handle_channels, user_data);
    -g_object_unref (factory);
    +factory = tp_automatic_client_factory_new (dbus);
    +client = tp_simple_handler_new_with_factory (factory, FALSE, FALSE,
    +    "MyHandler", FALSE, my_handle_channels, user_data);
    +g_object_unref (factory);
     
    -tp_base_client_take_handler_filter (client, tp_asv_new (
    -     TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT,
    -     TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    -     NULL));
    +tp_base_client_take_handler_filter (client, tp_asv_new (
    +     TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT,
    +     TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    +     NULL));
     
    -tp_base_client_register (client, NULL);
    +tp_base_client_register (client, NULL);
    @@ -204,7 +204,7 @@ TpConnection *connection, GList *channels, GList *requests_satisfied, - gint64 user_action_time, + gint64 user_action_time, TpHandleChannelsContext *context, gpointer user_data);

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-simple-observer.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-simple-observer.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-simple-observer.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-simple-observer.html 2012-02-20 17:31:30.000000000 +0000 @@ -142,32 +142,32 @@ 24 25 26 -

    static void
    -my_observe_channels (TpSimpleObserver *observer,
    -   TpAccount *account,
    -   TpConnection *connection,
    -   GList *channels,
    -   TpChannelDispatchOperation *dispatch_operation,
    -   GList *requests,
    -   TpObserveChannelsContext *context,
    -   gpointer user_data)
    -{
    - /* do something useful with the channels here */
    +        
    static void
    +my_observe_channels (TpSimpleObserver *observer,
    +   TpAccount *account,
    +   TpConnection *connection,
    +   GList *channels,
    +   TpChannelDispatchOperation *dispatch_operation,
    +   GList *requests,
    +   TpObserveChannelsContext *context,
    +   gpointer user_data)
    +{
    + /* do something useful with the channels here */
     
    - tp_observe_channels_context_accept (context);
    -}
    + tp_observe_channels_context_accept (context);
    +}
     
    -factory = tp_automatic_client_factory_new (dbus);
    -client = tp_simple_observer_new_with_factory (factory, TRUE, "MyObserver",
    -    FALSE, my_observe_channels, user_data);
    -g_object_unref (factory);
    +factory = tp_automatic_client_factory_new (dbus);
    +client = tp_simple_observer_new_with_factory (factory, TRUE, "MyObserver",
    +    FALSE, my_observe_channels, user_data);
    +g_object_unref (factory);
     
    -tp_base_client_take_observer_filter (client, tp_asv_new (
    -     TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT,
    -     TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    -     NULL));
    +tp_base_client_take_observer_filter (client, tp_asv_new (
    +     TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_TEXT,
    +     TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT,
    +     NULL));
     
    -tp_base_client_register (client, NULL);
    +tp_base_client_register (client, NULL);
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-auth.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-auth.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-auth.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-auth.html 2012-02-20 17:31:30.000000000 +0000 @@ -43,7 +43,7 @@

    Synopsis

    -
    +
     #include <telepathy-glib/svc-channel.h>
     
                         TpSvcChannelTypeServerAuthentication;
    @@ -105,6 +105,53 @@
                                                              const gchar *in_Mechanism,
                                                              const GArray *in_Initial_Data,
                                                              DBusGMethodInvocation *context);
    +
    +
    +                    TpSvcChannelInterfaceCaptchaAuthentication;
    +                    TpSvcChannelInterfaceCaptchaAuthenticationClass;
    +
    +
    +void                (*tp_svc_channel_interface_captcha_authentication_answer_captchas_impl)
    +                                                        (TpSvcChannelInterfaceCaptchaAuthentication *self,
    +                                                         GHashTable *in_Answers,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_channel_interface_captcha_authentication_cancel_captcha_impl)
    +                                                        (TpSvcChannelInterfaceCaptchaAuthentication *self,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Debug_Message,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_channel_interface_captcha_authentication_get_captcha_data_impl)
    +                                                        (TpSvcChannelInterfaceCaptchaAuthentication *self,
    +                                                         guint in_ID,
    +                                                         const gchar *in_Mime_Type,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_channel_interface_captcha_authentication_get_captchas_impl)
    +                                                        (TpSvcChannelInterfaceCaptchaAuthentication *self,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_channel_interface_captcha_authentication_implement_answer_captchas
    +                                                        (TpSvcChannelInterfaceCaptchaAuthenticationClass *klass,
    +                                                         tp_svc_channel_interface_captcha_authentication_answer_captchas_impl impl);
    +void                tp_svc_channel_interface_captcha_authentication_implement_cancel_captcha
    +                                                        (TpSvcChannelInterfaceCaptchaAuthenticationClass *klass,
    +                                                         tp_svc_channel_interface_captcha_authentication_cancel_captcha_impl impl);
    +void                tp_svc_channel_interface_captcha_authentication_implement_get_captcha_data
    +                                                        (TpSvcChannelInterfaceCaptchaAuthenticationClass *klass,
    +                                                         tp_svc_channel_interface_captcha_authentication_get_captcha_data_impl impl);
    +void                tp_svc_channel_interface_captcha_authentication_implement_get_captchas
    +                                                        (TpSvcChannelInterfaceCaptchaAuthenticationClass *klass,
    +                                                         tp_svc_channel_interface_captcha_authentication_get_captchas_impl impl);
    +void                tp_svc_channel_interface_captcha_authentication_return_from_answer_captchas
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_channel_interface_captcha_authentication_return_from_cancel_captcha
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_channel_interface_captcha_authentication_return_from_get_captcha_data
    +                                                        (DBusGMethodInvocation *context,
    +                                                         const GArray *out_Captcha_Data);
    +void                tp_svc_channel_interface_captcha_authentication_return_from_get_captchas
    +                                                        (DBusGMethodInvocation *context,
    +                                                         const GPtrArray *out_Captcha_Info,
    +                                                         guint out_Number_Required,
    +                                                         const gchar *out_Language);
     
    @@ -117,6 +164,10 @@ GInterface +----TpSvcChannelInterfaceSASLAuthentication +
    +  GInterface
    +   +----TpSvcChannelInterfaceCaptchaAuthentication
    +

    Known Implementations

    @@ -145,6 +196,11 @@ allows providing a simple password to the connection manager for it to use with SASL or non-SASL mechanisms.

    +

    +The CaptchaAuthentication interface (since 0.17.5) allows +interactive captcha-solving so that the user can prove that they are not +a bot, on protocols requiring this. +

    Details

    @@ -626,6 +682,359 @@
    +
    +
    +

    TpSvcChannelInterfaceCaptchaAuthentication

    +
    typedef struct _TpSvcChannelInterfaceCaptchaAuthentication TpSvcChannelInterfaceCaptchaAuthentication;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcChannelInterfaceCaptchaAuthenticationClass

    +
    typedef struct _TpSvcChannelInterfaceCaptchaAuthenticationClass TpSvcChannelInterfaceCaptchaAuthenticationClass;
    +

    +The class of TpSvcChannelInterfaceCaptchaAuthentication. +

    +

    +In a full implementation of this interface (i.e. all +methods implemented), the interface initialization +function used in G_IMPLEMENT_INTERFACE() would +typically look like this: +

    +

    +

    +
    +static void
    +implement_channel_interface_captcha_authentication (gpointer klass,
    +    gpointer unused G_GNUC_UNUSED)
    +{
    +#define IMPLEMENT(x) tp_svc_channel_interface_captcha_authentication_implement_##x (\
    +  klass, my_object_##x)
    +  IMPLEMENT (get_captchas);
    +  IMPLEMENT (get_captcha_data);
    +  IMPLEMENT (answer_captchas);
    +  IMPLEMENT (cancel_captcha);
    +#undef IMPLEMENT
    +}
    +
    +

    +

    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_answer_captchas_impl ()

    +
    void                (*tp_svc_channel_interface_captcha_authentication_answer_captchas_impl)
    +                                                        (TpSvcChannelInterfaceCaptchaAuthentication *self,
    +                                                         GHashTable *in_Answers,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +AnswerCaptchas on interface org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1. +

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

    self :

    The object implementing this interface

    in_Answers :

    GHashTable * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_cancel_captcha_impl ()

    +
    void                (*tp_svc_channel_interface_captcha_authentication_cancel_captcha_impl)
    +                                                        (TpSvcChannelInterfaceCaptchaAuthentication *self,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Debug_Message,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +CancelCaptcha on interface org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1. +

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

    self :

    The object implementing this interface

    in_Reason :

    guint (FIXME, generate documentation)

    in_Debug_Message :

    const gchar * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_get_captcha_data_impl ()

    +
    void                (*tp_svc_channel_interface_captcha_authentication_get_captcha_data_impl)
    +                                                        (TpSvcChannelInterfaceCaptchaAuthentication *self,
    +                                                         guint in_ID,
    +                                                         const gchar *in_Mime_Type,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +GetCaptchaData on interface org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1. +

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

    self :

    The object implementing this interface

    in_ID :

    guint (FIXME, generate documentation)

    in_Mime_Type :

    const gchar * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_get_captchas_impl ()

    +
    void                (*tp_svc_channel_interface_captcha_authentication_get_captchas_impl)
    +                                                        (TpSvcChannelInterfaceCaptchaAuthentication *self,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +GetCaptchas on interface org.freedesktop.Telepathy.Channel.Interface.CaptchaAuthentication1. +

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

    self :

    The object implementing this interface

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_implement_answer_captchas ()

    +
    void                tp_svc_channel_interface_captcha_authentication_implement_answer_captchas
    +                                                        (TpSvcChannelInterfaceCaptchaAuthenticationClass *klass,
    +                                                         tp_svc_channel_interface_captcha_authentication_answer_captchas_impl impl);
    +

    +Register an implementation for the AnswerCaptchas method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the AnswerCaptchas D-Bus method
    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_implement_cancel_captcha ()

    +
    void                tp_svc_channel_interface_captcha_authentication_implement_cancel_captcha
    +                                                        (TpSvcChannelInterfaceCaptchaAuthenticationClass *klass,
    +                                                         tp_svc_channel_interface_captcha_authentication_cancel_captcha_impl impl);
    +

    +Register an implementation for the CancelCaptcha method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the CancelCaptcha D-Bus method
    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_implement_get_captcha_data ()

    +
    void                tp_svc_channel_interface_captcha_authentication_implement_get_captcha_data
    +                                                        (TpSvcChannelInterfaceCaptchaAuthenticationClass *klass,
    +                                                         tp_svc_channel_interface_captcha_authentication_get_captcha_data_impl impl);
    +

    +Register an implementation for the GetCaptchaData method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the GetCaptchaData D-Bus method
    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_implement_get_captchas ()

    +
    void                tp_svc_channel_interface_captcha_authentication_implement_get_captchas
    +                                                        (TpSvcChannelInterfaceCaptchaAuthenticationClass *klass,
    +                                                         tp_svc_channel_interface_captcha_authentication_get_captchas_impl impl);
    +

    +Register an implementation for the GetCaptchas method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the GetCaptchas D-Bus method
    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_return_from_answer_captchas ()

    +
    void                tp_svc_channel_interface_captcha_authentication_return_from_answer_captchas
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_return_from_cancel_captcha ()

    +
    void                tp_svc_channel_interface_captcha_authentication_return_from_cancel_captcha
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_return_from_get_captcha_data ()

    +
    void                tp_svc_channel_interface_captcha_authentication_return_from_get_captcha_data
    +                                                        (DBusGMethodInvocation *context,
    +                                                         const GArray *out_Captcha_Data);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

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

    context :

    The D-Bus method invocation context

    out_Captcha_Data :

    const GArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_channel_interface_captcha_authentication_return_from_get_captchas ()

    +
    void                tp_svc_channel_interface_captcha_authentication_return_from_get_captchas
    +                                                        (DBusGMethodInvocation *context,
    +                                                         const GPtrArray *out_Captcha_Info,
    +                                                         guint out_Number_Required,
    +                                                         const gchar *out_Language);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

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

    context :

    The D-Bus method invocation context

    out_Captcha_Info :

    const GPtrArray * (FIXME, generate documentation)

    out_Number_Required :

    guint (FIXME, generate documentation)

    out_Language :

    const gchar * (FIXME, generate documentation)
    +

    Signal Details

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-call.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-call.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-call.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-call.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,5295 @@ + + + + +Service-side Channel Call interface + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    Service-side Channel Call interface

    +

    Service-side Channel Call interface — GInterface to implement call channels

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/svc-call.h>
    +
    +                    TpSvcChannelTypeCall;
    +                    TpSvcChannelTypeCallClass;
    +void                (*tp_svc_channel_type_call_accept_impl)
    +                                                        (TpSvcChannelTypeCall *self,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_channel_type_call_add_content_impl)
    +                                                        (TpSvcChannelTypeCall *self,
    +                                                         const gchar *in_Content_Name,
    +                                                         guint in_Content_Type,
    +                                                         guint in_InitialDirection,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_channel_type_call_emit_call_members_changed
    +                                                        (gpointer instance,
    +                                                         GHashTable *arg_Flags_Changed,
    +                                                         GHashTable *arg_Identifiers,
    +                                                         const GArray *arg_Removed,
    +                                                         const GValueArray *arg_Reason);
    +void                tp_svc_channel_type_call_emit_call_state_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_Call_State,
    +                                                         guint arg_Call_Flags,
    +                                                         const GValueArray *arg_Call_State_Reason,
    +                                                         GHashTable *arg_Call_State_Details);
    +void                tp_svc_channel_type_call_emit_content_added
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Content);
    +void                tp_svc_channel_type_call_emit_content_removed
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Content,
    +                                                         const GValueArray *arg_Reason);
    +void                (*tp_svc_channel_type_call_hangup_impl)
    +                                                        (TpSvcChannelTypeCall *self,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Detailed_Hangup_Reason,
    +                                                         const gchar *in_Message,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_channel_type_call_implement_accept
    +                                                        (TpSvcChannelTypeCallClass *klass,
    +                                                         tp_svc_channel_type_call_accept_impl impl);
    +void                tp_svc_channel_type_call_implement_add_content
    +                                                        (TpSvcChannelTypeCallClass *klass,
    +                                                         tp_svc_channel_type_call_add_content_impl impl);
    +void                tp_svc_channel_type_call_implement_hangup
    +                                                        (TpSvcChannelTypeCallClass *klass,
    +                                                         tp_svc_channel_type_call_hangup_impl impl);
    +void                tp_svc_channel_type_call_implement_set_queued
    +                                                        (TpSvcChannelTypeCallClass *klass,
    +                                                         tp_svc_channel_type_call_set_queued_impl impl);
    +void                tp_svc_channel_type_call_implement_set_ringing
    +                                                        (TpSvcChannelTypeCallClass *klass,
    +                                                         tp_svc_channel_type_call_set_ringing_impl impl);
    +void                tp_svc_channel_type_call_return_from_accept
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_channel_type_call_return_from_add_content
    +                                                        (DBusGMethodInvocation *context,
    +                                                         const gchar *out_Content);
    +void                tp_svc_channel_type_call_return_from_hangup
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_channel_type_call_return_from_set_queued
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_channel_type_call_return_from_set_ringing
    +                                                        (DBusGMethodInvocation *context);
    +void                (*tp_svc_channel_type_call_set_queued_impl)
    +                                                        (TpSvcChannelTypeCall *self,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_channel_type_call_set_ringing_impl)
    +                                                        (TpSvcChannelTypeCall *self,
    +                                                         DBusGMethodInvocation *context);
    +
    +
    +                    TpSvcCallContent;
    +                    TpSvcCallContentClass;
    +void                tp_svc_call_content_emit_streams_added
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Streams);
    +void                tp_svc_call_content_emit_streams_removed
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Streams,
    +                                                         const GValueArray *arg_Reason);
    +void                tp_svc_call_content_implement_remove
    +                                                        (TpSvcCallContentClass *klass,
    +                                                         tp_svc_call_content_remove_impl impl);
    +void                (*tp_svc_call_content_remove_impl)  (TpSvcCallContent *self,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_content_return_from_remove
    +                                                        (DBusGMethodInvocation *context);
    +
    +
    +                    TpSvcCallContentInterfaceMedia;
    +                    TpSvcCallContentInterfaceMediaClass;
    +void                (*tp_svc_call_content_interface_media_acknowledge_dtmf_change_impl)
    +                                                        (TpSvcCallContentInterfaceMedia *self,
    +                                                         guchar in_Event,
    +                                                         guint in_State,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_content_interface_media_emit_dtmf_change_requested
    +                                                        (gpointer instance,
    +                                                         guchar arg_Event,
    +                                                         guint arg_State);
    +void                tp_svc_call_content_interface_media_emit_local_media_description_changed
    +                                                        (gpointer instance,
    +                                                         GHashTable *arg_Updated_Media_Description);
    +void                tp_svc_call_content_interface_media_emit_media_description_offer_done
    +                                                        (gpointer instance);
    +void                tp_svc_call_content_interface_media_emit_media_descriptions_removed
    +                                                        (gpointer instance,
    +                                                         const GArray *arg_Removed_Media_Descriptions);
    +void                tp_svc_call_content_interface_media_emit_new_media_description_offer
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Media_Description,
    +                                                         GHashTable *arg_Properties);
    +void                tp_svc_call_content_interface_media_emit_remote_media_descriptions_changed
    +                                                        (gpointer instance,
    +                                                         GHashTable *arg_Updated_Media_Descriptions);
    +void                (*tp_svc_call_content_interface_media_fail_impl)
    +                                                        (TpSvcCallContentInterfaceMedia *self,
    +                                                         const GValueArray *in_Reason,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_content_interface_media_implement_acknowledge_dtmf_change
    +                                                        (TpSvcCallContentInterfaceMediaClass *klass,
    +                                                         tp_svc_call_content_interface_media_acknowledge_dtmf_change_impl impl);
    +void                tp_svc_call_content_interface_media_implement_fail
    +                                                        (TpSvcCallContentInterfaceMediaClass *klass,
    +                                                         tp_svc_call_content_interface_media_fail_impl impl);
    +void                tp_svc_call_content_interface_media_implement_update_local_media_description
    +                                                        (TpSvcCallContentInterfaceMediaClass *klass,
    +                                                         tp_svc_call_content_interface_media_update_local_media_description_impl impl);
    +void                tp_svc_call_content_interface_media_return_from_acknowledge_dtmf_change
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_content_interface_media_return_from_fail
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_content_interface_media_return_from_update_local_media_description
    +                                                        (DBusGMethodInvocation *context);
    +void                (*tp_svc_call_content_interface_media_update_local_media_description_impl)
    +                                                        (TpSvcCallContentInterfaceMedia *self,
    +                                                         GHashTable *in_MediaDescription,
    +                                                         DBusGMethodInvocation *context);
    +
    +
    +                    TpSvcCallContentInterfaceVideoControl;
    +                    TpSvcCallContentInterfaceVideoControlClass;
    +void                tp_svc_call_content_interface_video_control_emit_bitrate_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_NewBitrate);
    +void                tp_svc_call_content_interface_video_control_emit_framerate_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_NewFramerate);
    +void                tp_svc_call_content_interface_video_control_emit_key_frame_requested
    +                                                        (gpointer instance);
    +void                tp_svc_call_content_interface_video_control_emit_mtu_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_NewMTU);
    +void                tp_svc_call_content_interface_video_control_emit_video_resolution_changed
    +                                                        (gpointer instance,
    +                                                         const GValueArray *arg_NewResolution);
    +
    +
    +                    TpSvcCallContentInterfaceAudioControl;
    +                    TpSvcCallContentInterfaceAudioControlClass;
    +void                tp_svc_call_content_interface_audio_control_implement_report_input_volume
    +                                                        (TpSvcCallContentInterfaceAudioControlClass *klass,
    +                                                         tp_svc_call_content_interface_audio_control_report_input_volume_impl impl);
    +void                tp_svc_call_content_interface_audio_control_implement_report_output_volume
    +                                                        (TpSvcCallContentInterfaceAudioControlClass *klass,
    +                                                         tp_svc_call_content_interface_audio_control_report_output_volume_impl impl);
    +void                (*tp_svc_call_content_interface_audio_control_report_input_volume_impl)
    +                                                        (TpSvcCallContentInterfaceAudioControl *self,
    +                                                         gint in_Volume,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_call_content_interface_audio_control_report_output_volume_impl)
    +                                                        (TpSvcCallContentInterfaceAudioControl *self,
    +                                                         gint in_Volume,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_content_interface_audio_control_return_from_report_input_volume
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_content_interface_audio_control_return_from_report_output_volume
    +                                                        (DBusGMethodInvocation *context);
    +
    +
    +                    TpSvcCallContentInterfaceDTMF;
    +                    TpSvcCallContentInterfaceDTMFClass;
    +void                tp_svc_call_content_interface_dtmf_emit_sending_tones
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Tones);
    +void                tp_svc_call_content_interface_dtmf_emit_stopped_tones
    +                                                        (gpointer instance,
    +                                                         gboolean arg_Cancelled);
    +void                tp_svc_call_content_interface_dtmf_emit_tones_deferred
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Tones);
    +void                tp_svc_call_content_interface_dtmf_implement_multiple_tones
    +                                                        (TpSvcCallContentInterfaceDTMFClass *klass,
    +                                                         tp_svc_call_content_interface_dtmf_multiple_tones_impl impl);
    +void                tp_svc_call_content_interface_dtmf_implement_start_tone
    +                                                        (TpSvcCallContentInterfaceDTMFClass *klass,
    +                                                         tp_svc_call_content_interface_dtmf_start_tone_impl impl);
    +void                tp_svc_call_content_interface_dtmf_implement_stop_tone
    +                                                        (TpSvcCallContentInterfaceDTMFClass *klass,
    +                                                         tp_svc_call_content_interface_dtmf_stop_tone_impl impl);
    +void                (*tp_svc_call_content_interface_dtmf_multiple_tones_impl)
    +                                                        (TpSvcCallContentInterfaceDTMF *self,
    +                                                         const gchar *in_Tones,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_content_interface_dtmf_return_from_multiple_tones
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_content_interface_dtmf_return_from_start_tone
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_content_interface_dtmf_return_from_stop_tone
    +                                                        (DBusGMethodInvocation *context);
    +void                (*tp_svc_call_content_interface_dtmf_start_tone_impl)
    +                                                        (TpSvcCallContentInterfaceDTMF *self,
    +                                                         guchar in_Event,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_call_content_interface_dtmf_stop_tone_impl)
    +                                                        (TpSvcCallContentInterfaceDTMF *self,
    +                                                         DBusGMethodInvocation *context);
    +
    +
    +                    TpSvcCallContentMediaDescription;
    +                    TpSvcCallContentMediaDescriptionClass;
    +void                (*tp_svc_call_content_media_description_accept_impl)
    +                                                        (TpSvcCallContentMediaDescription *self,
    +                                                         GHashTable *in_Local_Media_Description,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_content_media_description_implement_accept
    +                                                        (TpSvcCallContentMediaDescriptionClass *klass,
    +                                                         tp_svc_call_content_media_description_accept_impl impl);
    +void                tp_svc_call_content_media_description_implement_reject
    +                                                        (TpSvcCallContentMediaDescriptionClass *klass,
    +                                                         tp_svc_call_content_media_description_reject_impl impl);
    +void                tp_svc_call_content_media_description_return_from_accept
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_content_media_description_return_from_reject
    +                                                        (DBusGMethodInvocation *context);
    +void                (*tp_svc_call_content_media_description_reject_impl)
    +                                                        (TpSvcCallContentMediaDescription *self,
    +                                                         const GValueArray *in_Reason,
    +                                                         DBusGMethodInvocation *context);
    +
    +
    +                    TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReports;
    +                    TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReportsClass;
    +
    +
    +                    TpSvcCallContentMediaDescriptionInterfaceRTCPFeedback;
    +                    TpSvcCallContentMediaDescriptionInterfaceRTCPFeedbackClass;
    +
    +
    +                    TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensions;
    +                    TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensionsClass;
    +
    +
    +                    TpSvcCallStream;
    +                    TpSvcCallStreamClass;
    +void                tp_svc_call_stream_implement_request_receiving
    +                                                        (TpSvcCallStreamClass *klass,
    +                                                         tp_svc_call_stream_request_receiving_impl impl);
    +void                tp_svc_call_stream_implement_set_sending
    +                                                        (TpSvcCallStreamClass *klass,
    +                                                         tp_svc_call_stream_set_sending_impl impl);
    +void                tp_svc_call_stream_emit_local_sending_state_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_State,
    +                                                         const GValueArray *arg_Reason);
    +void                tp_svc_call_stream_emit_remote_members_changed
    +                                                        (gpointer instance,
    +                                                         GHashTable *arg_Updates,
    +                                                         GHashTable *arg_Identifiers,
    +                                                         const GArray *arg_Removed,
    +                                                         const GValueArray *arg_Reason);
    +void                (*tp_svc_call_stream_request_receiving_impl)
    +                                                        (TpSvcCallStream *self,
    +                                                         guint in_Contact,
    +                                                         gboolean in_Receive,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_return_from_request_receiving
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_return_from_set_sending
    +                                                        (DBusGMethodInvocation *context);
    +void                (*tp_svc_call_stream_set_sending_impl)
    +                                                        (TpSvcCallStream *self,
    +                                                         gboolean in_Send,
    +                                                         DBusGMethodInvocation *context);
    +
    +
    +                    TpSvcCallStreamInterfaceMedia;
    +                    TpSvcCallStreamInterfaceMediaClass;
    +void                (*tp_svc_call_stream_interface_media_add_candidates_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         const GPtrArray *in_Candidates,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_call_stream_interface_media_complete_receiving_state_change_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         guint in_State,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_call_stream_interface_media_complete_sending_state_change_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         guint in_State,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_interface_media_emit_endpoints_changed
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Endpoints_Added,
    +                                                         const GPtrArray *arg_Endpoints_Removed);
    +void                tp_svc_call_stream_interface_media_emit_ice_restart_requested
    +                                                        (gpointer instance);
    +void                tp_svc_call_stream_interface_media_emit_local_candidates_added
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Candidates);
    +void                tp_svc_call_stream_interface_media_emit_local_credentials_changed
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Username,
    +                                                         const gchar *arg_Password);
    +void                tp_svc_call_stream_interface_media_emit_receiving_state_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_State);
    +void                tp_svc_call_stream_interface_media_emit_relay_info_changed
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Relay_Info);
    +void                tp_svc_call_stream_interface_media_emit_sending_state_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_State);
    +void                tp_svc_call_stream_interface_media_emit_server_info_retrieved
    +                                                        (gpointer instance);
    +void                tp_svc_call_stream_interface_media_emit_stun_servers_changed
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Servers);
    +void                (*tp_svc_call_stream_interface_media_fail_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         const GValueArray *in_Reason,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_call_stream_interface_media_finish_initial_candidates_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_interface_media_implement_add_candidates
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_add_candidates_impl impl);
    +void                tp_svc_call_stream_interface_media_implement_complete_receiving_state_change
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_complete_receiving_state_change_impl impl);
    +void                tp_svc_call_stream_interface_media_implement_complete_sending_state_change
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_complete_sending_state_change_impl impl);
    +void                tp_svc_call_stream_interface_media_implement_fail
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_fail_impl impl);
    +void                tp_svc_call_stream_interface_media_implement_finish_initial_candidates
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_finish_initial_candidates_impl impl);
    +void                tp_svc_call_stream_interface_media_implement_report_receiving_failure
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_report_receiving_failure_impl impl);
    +void                tp_svc_call_stream_interface_media_implement_report_sending_failure
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_report_sending_failure_impl impl);
    +void                tp_svc_call_stream_interface_media_implement_set_credentials
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_set_credentials_impl impl);
    +void                (*tp_svc_call_stream_interface_media_report_receiving_failure_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Error,
    +                                                         const gchar *in_Message,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_call_stream_interface_media_report_sending_failure_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Error,
    +                                                         const gchar *in_Message,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_interface_media_return_from_add_candidates
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_interface_media_return_from_complete_receiving_state_change
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_interface_media_return_from_complete_sending_state_change
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_interface_media_return_from_fail
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_interface_media_return_from_finish_initial_candidates
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_interface_media_return_from_report_receiving_failure
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_interface_media_return_from_report_sending_failure
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_interface_media_return_from_set_credentials
    +                                                        (DBusGMethodInvocation *context);
    +void                (*tp_svc_call_stream_interface_media_set_credentials_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         const gchar *in_Username,
    +                                                         const gchar *in_Password,
    +                                                         DBusGMethodInvocation *context);
    +
    +
    +                    TpSvcCallStreamEndpoint;
    +                    TpSvcCallStreamEndpointClass;
    +void                (*tp_svc_call_stream_endpoint_accept_selected_candidate_pair_impl)
    +                                                        (TpSvcCallStreamEndpoint *self,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_endpoint_emit_candidate_pair_selected
    +                                                        (gpointer instance,
    +                                                         const GValueArray *arg_Local_Candidate,
    +                                                         const GValueArray *arg_Remote_Candidate);
    +void                tp_svc_call_stream_endpoint_emit_controlling_changed
    +                                                        (gpointer instance,
    +                                                         gboolean arg_Controlling);
    +void                tp_svc_call_stream_endpoint_emit_endpoint_state_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_Component,
    +                                                         guint arg_State);
    +void                tp_svc_call_stream_endpoint_emit_remote_candidates_added
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Candidates);
    +void                tp_svc_call_stream_endpoint_emit_remote_credentials_set
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Username,
    +                                                         const gchar *arg_Password);
    +void                tp_svc_call_stream_endpoint_implement_accept_selected_candidate_pair
    +                                                        (TpSvcCallStreamEndpointClass *klass,
    +                                                         tp_svc_call_stream_endpoint_accept_selected_candidate_pair_impl impl);
    +void                tp_svc_call_stream_endpoint_implement_reject_selected_candidate_pair
    +                                                        (TpSvcCallStreamEndpointClass *klass,
    +                                                         tp_svc_call_stream_endpoint_reject_selected_candidate_pair_impl impl);
    +void                tp_svc_call_stream_endpoint_implement_set_controlling
    +                                                        (TpSvcCallStreamEndpointClass *klass,
    +                                                         tp_svc_call_stream_endpoint_set_controlling_impl impl);
    +void                tp_svc_call_stream_endpoint_implement_set_endpoint_state
    +                                                        (TpSvcCallStreamEndpointClass *klass,
    +                                                         tp_svc_call_stream_endpoint_set_endpoint_state_impl impl);
    +void                tp_svc_call_stream_endpoint_implement_set_selected_candidate_pair
    +                                                        (TpSvcCallStreamEndpointClass *klass,
    +                                                         tp_svc_call_stream_endpoint_set_selected_candidate_pair_impl impl);
    +void                (*tp_svc_call_stream_endpoint_reject_selected_candidate_pair_impl)
    +                                                        (TpSvcCallStreamEndpoint *self,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_endpoint_return_from_accept_selected_candidate_pair
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_endpoint_return_from_reject_selected_candidate_pair
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_endpoint_return_from_set_controlling
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_endpoint_return_from_set_endpoint_state
    +                                                        (DBusGMethodInvocation *context);
    +void                tp_svc_call_stream_endpoint_return_from_set_selected_candidate_pair
    +                                                        (DBusGMethodInvocation *context);
    +void                (*tp_svc_call_stream_endpoint_set_controlling_impl)
    +                                                        (TpSvcCallStreamEndpoint *self,
    +                                                         gboolean in_Controlling,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_call_stream_endpoint_set_endpoint_state_impl)
    +                                                        (TpSvcCallStreamEndpoint *self,
    +                                                         guint in_Component,
    +                                                         guint in_State,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_call_stream_endpoint_set_selected_candidate_pair_impl)
    +                                                        (TpSvcCallStreamEndpoint *self,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         DBusGMethodInvocation *context);
    +
    +
    +
    +

    Object Hierarchy

    +
    +  GInterface
    +   +----TpSvcChannelTypeCall
    +
    +
    +  GInterface
    +   +----TpSvcCallContent
    +
    +
    +  GInterface
    +   +----TpSvcCallContentInterfaceMedia
    +
    +
    +  GInterface
    +   +----TpSvcCallContentInterfaceVideoControl
    +
    +
    +  GInterface
    +   +----TpSvcCallContentInterfaceAudioControl
    +
    +
    +  GInterface
    +   +----TpSvcCallContentInterfaceDTMF
    +
    +
    +  GInterface
    +   +----TpSvcCallContentMediaDescription
    +
    +
    +  GInterface
    +   +----TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReports
    +
    +
    +  GInterface
    +   +----TpSvcCallContentMediaDescriptionInterfaceRTCPFeedback
    +
    +
    +  GInterface
    +   +----TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensions
    +
    +
    +  GInterface
    +   +----TpSvcCallStream
    +
    +
    +  GInterface
    +   +----TpSvcCallStreamInterfaceMedia
    +
    +
    +  GInterface
    +   +----TpSvcCallStreamEndpoint
    +
    +
    +
    +

    Known Implementations

    +

    +TpSvcChannelTypeCall is implemented by + TpBaseCallChannel and TpBaseMediaCallChannel.

    +

    +TpSvcCallContent is implemented by + TpBaseCallContent and TpBaseMediaCallContent.

    +

    +TpSvcCallContentInterfaceMedia is implemented by + TpBaseMediaCallContent.

    +

    +TpSvcCallContentInterfaceDTMF is implemented by + TpBaseCallContent and TpBaseMediaCallContent.

    +

    +TpSvcCallContentMediaDescription is implemented by + TpCallContentMediaDescription.

    +

    +TpSvcCallStream is implemented by + TpBaseCallStream and TpBaseMediaCallStream.

    +

    +TpSvcCallStreamInterfaceMedia is implemented by + TpBaseMediaCallStream.

    +

    +TpSvcCallStreamEndpoint is implemented by + TpCallStreamEndpoint.

    +
    + +
    +

    Description

    +

    +Call channels represent real-time audio or video streaming, including +voice over IP, webcams, and telephony. +

    +
    +
    +

    Details

    +
    +

    TpSvcChannelTypeCall

    +
    typedef struct _TpSvcChannelTypeCall TpSvcChannelTypeCall;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcChannelTypeCallClass

    +
    typedef struct _TpSvcChannelTypeCallClass TpSvcChannelTypeCallClass;
    +

    +The class of TpSvcChannelTypeCall. +

    +

    +In a full implementation of this interface (i.e. all +methods implemented), the interface initialization +function used in G_IMPLEMENT_INTERFACE() would +typically look like this: +

    +

    +

    +
    +static void
    +implement_channel_type_call (gpointer klass,
    +    gpointer unused G_GNUC_UNUSED)
    +{
    +#define IMPLEMENT(x) tp_svc_channel_type_call_implement_##x (\
    +  klass, my_object_##x)
    +  IMPLEMENT (set_ringing);
    +  IMPLEMENT (set_queued);
    +  IMPLEMENT (accept);
    +  IMPLEMENT (hangup);
    +  IMPLEMENT (add_content);
    +#undef IMPLEMENT
    +}
    +
    +

    +

    +
    +
    +
    +

    tp_svc_channel_type_call_accept_impl ()

    +
    void                (*tp_svc_channel_type_call_accept_impl)
    +                                                        (TpSvcChannelTypeCall *self,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +Accept on interface org.freedesktop.Telepathy.Channel.Type.Call1. +

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

    self :

    The object implementing this interface

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_channel_type_call_add_content_impl ()

    +
    void                (*tp_svc_channel_type_call_add_content_impl)
    +                                                        (TpSvcChannelTypeCall *self,
    +                                                         const gchar *in_Content_Name,
    +                                                         guint in_Content_Type,
    +                                                         guint in_InitialDirection,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +AddContent on interface org.freedesktop.Telepathy.Channel.Type.Call1. +

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

    self :

    The object implementing this interface

    in_Content_Name :

    const gchar * (FIXME, generate documentation)

    in_Content_Type :

    guint (FIXME, generate documentation)

    in_InitialDirection :

    guint (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_channel_type_call_emit_call_members_changed ()

    +
    void                tp_svc_channel_type_call_emit_call_members_changed
    +                                                        (gpointer instance,
    +                                                         GHashTable *arg_Flags_Changed,
    +                                                         GHashTable *arg_Identifiers,
    +                                                         const GArray *arg_Removed,
    +                                                         const GValueArray *arg_Reason);
    +

    +Type-safe wrapper around g_signal_emit to emit the +CallMembersChanged signal on interface org.freedesktop.Telepathy.Channel.Type.Call1. +

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

    instance :

    The object implementing this interface

    arg_Flags_Changed :

    GHashTable * (FIXME, generate documentation)

    arg_Identifiers :

    GHashTable * (FIXME, generate documentation)

    arg_Removed :

    const GArray * (FIXME, generate documentation)

    arg_Reason :

    const GValueArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_channel_type_call_emit_call_state_changed ()

    +
    void                tp_svc_channel_type_call_emit_call_state_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_Call_State,
    +                                                         guint arg_Call_Flags,
    +                                                         const GValueArray *arg_Call_State_Reason,
    +                                                         GHashTable *arg_Call_State_Details);
    +

    +Type-safe wrapper around g_signal_emit to emit the +CallStateChanged signal on interface org.freedesktop.Telepathy.Channel.Type.Call1. +

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

    instance :

    The object implementing this interface

    arg_Call_State :

    guint (FIXME, generate documentation)

    arg_Call_Flags :

    guint (FIXME, generate documentation)

    arg_Call_State_Reason :

    const GValueArray * (FIXME, generate documentation)

    arg_Call_State_Details :

    GHashTable * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_channel_type_call_emit_content_added ()

    +
    void                tp_svc_channel_type_call_emit_content_added
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Content);
    +

    +Type-safe wrapper around g_signal_emit to emit the +ContentAdded signal on interface org.freedesktop.Telepathy.Channel.Type.Call1. +

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

    instance :

    The object implementing this interface

    arg_Content :

    const gchar * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_channel_type_call_emit_content_removed ()

    +
    void                tp_svc_channel_type_call_emit_content_removed
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Content,
    +                                                         const GValueArray *arg_Reason);
    +

    +Type-safe wrapper around g_signal_emit to emit the +ContentRemoved signal on interface org.freedesktop.Telepathy.Channel.Type.Call1. +

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

    instance :

    The object implementing this interface

    arg_Content :

    const gchar * (FIXME, generate documentation)

    arg_Reason :

    const GValueArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_channel_type_call_hangup_impl ()

    +
    void                (*tp_svc_channel_type_call_hangup_impl)
    +                                                        (TpSvcChannelTypeCall *self,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Detailed_Hangup_Reason,
    +                                                         const gchar *in_Message,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +Hangup on interface org.freedesktop.Telepathy.Channel.Type.Call1. +

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

    self :

    The object implementing this interface

    in_Reason :

    guint (FIXME, generate documentation)

    in_Detailed_Hangup_Reason :

    const gchar * (FIXME, generate documentation)

    in_Message :

    const gchar * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_channel_type_call_implement_accept ()

    +
    void                tp_svc_channel_type_call_implement_accept
    +                                                        (TpSvcChannelTypeCallClass *klass,
    +                                                         tp_svc_channel_type_call_accept_impl impl);
    +

    +Register an implementation for the Accept method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the Accept D-Bus method
    +
    +
    +
    +

    tp_svc_channel_type_call_implement_add_content ()

    +
    void                tp_svc_channel_type_call_implement_add_content
    +                                                        (TpSvcChannelTypeCallClass *klass,
    +                                                         tp_svc_channel_type_call_add_content_impl impl);
    +

    +Register an implementation for the AddContent method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the AddContent D-Bus method
    +
    +
    +
    +

    tp_svc_channel_type_call_implement_hangup ()

    +
    void                tp_svc_channel_type_call_implement_hangup
    +                                                        (TpSvcChannelTypeCallClass *klass,
    +                                                         tp_svc_channel_type_call_hangup_impl impl);
    +

    +Register an implementation for the Hangup method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the Hangup D-Bus method
    +
    +
    +
    +

    tp_svc_channel_type_call_implement_set_queued ()

    +
    void                tp_svc_channel_type_call_implement_set_queued
    +                                                        (TpSvcChannelTypeCallClass *klass,
    +                                                         tp_svc_channel_type_call_set_queued_impl impl);
    +

    +Register an implementation for the SetQueued method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the SetQueued D-Bus method
    +
    +
    +
    +

    tp_svc_channel_type_call_implement_set_ringing ()

    +
    void                tp_svc_channel_type_call_implement_set_ringing
    +                                                        (TpSvcChannelTypeCallClass *klass,
    +                                                         tp_svc_channel_type_call_set_ringing_impl impl);
    +

    +Register an implementation for the SetRinging method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the SetRinging D-Bus method
    +
    +
    +
    +

    tp_svc_channel_type_call_return_from_accept ()

    +
    void                tp_svc_channel_type_call_return_from_accept
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_channel_type_call_return_from_add_content ()

    +
    void                tp_svc_channel_type_call_return_from_add_content
    +                                                        (DBusGMethodInvocation *context,
    +                                                         const gchar *out_Content);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

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

    context :

    The D-Bus method invocation context

    out_Content :

    const gchar * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_channel_type_call_return_from_hangup ()

    +
    void                tp_svc_channel_type_call_return_from_hangup
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_channel_type_call_return_from_set_queued ()

    +
    void                tp_svc_channel_type_call_return_from_set_queued
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_channel_type_call_return_from_set_ringing ()

    +
    void                tp_svc_channel_type_call_return_from_set_ringing
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_channel_type_call_set_queued_impl ()

    +
    void                (*tp_svc_channel_type_call_set_queued_impl)
    +                                                        (TpSvcChannelTypeCall *self,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +SetQueued on interface org.freedesktop.Telepathy.Channel.Type.Call1. +

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

    self :

    The object implementing this interface

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_channel_type_call_set_ringing_impl ()

    +
    void                (*tp_svc_channel_type_call_set_ringing_impl)
    +                                                        (TpSvcChannelTypeCall *self,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +SetRinging on interface org.freedesktop.Telepathy.Channel.Type.Call1. +

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

    self :

    The object implementing this interface

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    TpSvcCallContent

    +
    typedef struct _TpSvcCallContent TpSvcCallContent;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallContentClass

    +
    typedef struct _TpSvcCallContentClass TpSvcCallContentClass;
    +

    +The class of TpSvcCallContent. +

    +

    +In a full implementation of this interface (i.e. all +methods implemented), the interface initialization +function used in G_IMPLEMENT_INTERFACE() would +typically look like this: +

    +

    +

    +
    +static void
    +implement_call_content (gpointer klass,
    +    gpointer unused G_GNUC_UNUSED)
    +{
    +#define IMPLEMENT(x) tp_svc_call_content_implement_##x (\
    +  klass, my_object_##x)
    +  IMPLEMENT (remove);
    +#undef IMPLEMENT
    +}
    +
    +

    +

    +
    +
    +
    +

    tp_svc_call_content_emit_streams_added ()

    +
    void                tp_svc_call_content_emit_streams_added
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Streams);
    +

    +Type-safe wrapper around g_signal_emit to emit the +StreamsAdded signal on interface org.freedesktop.Telepathy.Call1.Content. +

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

    instance :

    The object implementing this interface

    arg_Streams :

    const GPtrArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_emit_streams_removed ()

    +
    void                tp_svc_call_content_emit_streams_removed
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Streams,
    +                                                         const GValueArray *arg_Reason);
    +

    +Type-safe wrapper around g_signal_emit to emit the +StreamsRemoved signal on interface org.freedesktop.Telepathy.Call1.Content. +

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

    instance :

    The object implementing this interface

    arg_Streams :

    const GPtrArray * (FIXME, generate documentation)

    arg_Reason :

    const GValueArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_implement_remove ()

    +
    void                tp_svc_call_content_implement_remove
    +                                                        (TpSvcCallContentClass *klass,
    +                                                         tp_svc_call_content_remove_impl impl);
    +

    +Register an implementation for the Remove method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the Remove D-Bus method
    +
    +
    +
    +

    tp_svc_call_content_remove_impl ()

    +
    void                (*tp_svc_call_content_remove_impl)  (TpSvcCallContent *self,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +Remove on interface org.freedesktop.Telepathy.Call1.Content. +

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

    self :

    The object implementing this interface

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_content_return_from_remove ()

    +
    void                tp_svc_call_content_return_from_remove
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    TpSvcCallContentInterfaceMedia

    +
    typedef struct _TpSvcCallContentInterfaceMedia TpSvcCallContentInterfaceMedia;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallContentInterfaceMediaClass

    +
    typedef struct _TpSvcCallContentInterfaceMediaClass TpSvcCallContentInterfaceMediaClass;
    +

    +The class of TpSvcCallContentInterfaceMedia. +

    +

    +In a full implementation of this interface (i.e. all +methods implemented), the interface initialization +function used in G_IMPLEMENT_INTERFACE() would +typically look like this: +

    +

    +

    +
    +static void
    +implement_call_content_interface_media (gpointer klass,
    +    gpointer unused G_GNUC_UNUSED)
    +{
    +#define IMPLEMENT(x) tp_svc_call_content_interface_media_implement_##x (\
    +  klass, my_object_##x)
    +  IMPLEMENT (update_local_media_description);
    +  IMPLEMENT (acknowledge_dtmf_change);
    +  IMPLEMENT (fail);
    +#undef IMPLEMENT
    +}
    +
    +

    +

    +
    +
    +
    +

    tp_svc_call_content_interface_media_acknowledge_dtmf_change_impl ()

    +
    void                (*tp_svc_call_content_interface_media_acknowledge_dtmf_change_impl)
    +                                                        (TpSvcCallContentInterfaceMedia *self,
    +                                                         guchar in_Event,
    +                                                         guint in_State,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +AcknowledgeDTMFChange on interface org.freedesktop.Telepathy.Call1.Content.Interface.Media. +

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

    self :

    The object implementing this interface

    in_Event :

    guchar (FIXME, generate documentation)

    in_State :

    guint (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_content_interface_media_emit_dtmf_change_requested ()

    +
    void                tp_svc_call_content_interface_media_emit_dtmf_change_requested
    +                                                        (gpointer instance,
    +                                                         guchar arg_Event,
    +                                                         guint arg_State);
    +

    +Type-safe wrapper around g_signal_emit to emit the +DTMFChangeRequested signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_Event :

    guchar (FIXME, generate documentation)

    arg_State :

    guint (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_interface_media_emit_local_media_description_changed ()

    +
    void                tp_svc_call_content_interface_media_emit_local_media_description_changed
    +                                                        (gpointer instance,
    +                                                         GHashTable *arg_Updated_Media_Description);
    +

    +Type-safe wrapper around g_signal_emit to emit the +LocalMediaDescriptionChanged signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_Updated_Media_Description :

    GHashTable * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_interface_media_emit_media_description_offer_done ()

    +
    void                tp_svc_call_content_interface_media_emit_media_description_offer_done
    +                                                        (gpointer instance);
    +

    +Type-safe wrapper around g_signal_emit to emit the +MediaDescriptionOfferDone signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.Media. +

    +
    ++ + + + +

    instance :

    The object implementing this interface
    +
    +
    +
    +

    tp_svc_call_content_interface_media_emit_media_descriptions_removed ()

    +
    void                tp_svc_call_content_interface_media_emit_media_descriptions_removed
    +                                                        (gpointer instance,
    +                                                         const GArray *arg_Removed_Media_Descriptions);
    +

    +Type-safe wrapper around g_signal_emit to emit the +MediaDescriptionsRemoved signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_Removed_Media_Descriptions :

    const GArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_interface_media_emit_new_media_description_offer ()

    +
    void                tp_svc_call_content_interface_media_emit_new_media_description_offer
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Media_Description,
    +                                                         GHashTable *arg_Properties);
    +

    +Type-safe wrapper around g_signal_emit to emit the +NewMediaDescriptionOffer signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_Media_Description :

    const gchar * (FIXME, generate documentation)

    arg_Properties :

    GHashTable * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_interface_media_emit_remote_media_descriptions_changed ()

    +
    void                tp_svc_call_content_interface_media_emit_remote_media_descriptions_changed
    +                                                        (gpointer instance,
    +                                                         GHashTable *arg_Updated_Media_Descriptions);
    +

    +Type-safe wrapper around g_signal_emit to emit the +RemoteMediaDescriptionsChanged signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_Updated_Media_Descriptions :

    GHashTable * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_interface_media_fail_impl ()

    +
    void                (*tp_svc_call_content_interface_media_fail_impl)
    +                                                        (TpSvcCallContentInterfaceMedia *self,
    +                                                         const GValueArray *in_Reason,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +Fail on interface org.freedesktop.Telepathy.Call1.Content.Interface.Media. +

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

    self :

    The object implementing this interface

    in_Reason :

    const GValueArray * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_content_interface_media_implement_acknowledge_dtmf_change ()

    +
    void                tp_svc_call_content_interface_media_implement_acknowledge_dtmf_change
    +                                                        (TpSvcCallContentInterfaceMediaClass *klass,
    +                                                         tp_svc_call_content_interface_media_acknowledge_dtmf_change_impl impl);
    +

    +Register an implementation for the AcknowledgeDTMFChange method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the AcknowledgeDTMFChange D-Bus method
    +
    +
    +
    +

    tp_svc_call_content_interface_media_implement_fail ()

    +
    void                tp_svc_call_content_interface_media_implement_fail
    +                                                        (TpSvcCallContentInterfaceMediaClass *klass,
    +                                                         tp_svc_call_content_interface_media_fail_impl impl);
    +

    +Register an implementation for the Fail method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the Fail D-Bus method
    +
    +
    +
    +

    tp_svc_call_content_interface_media_implement_update_local_media_description ()

    +
    void                tp_svc_call_content_interface_media_implement_update_local_media_description
    +                                                        (TpSvcCallContentInterfaceMediaClass *klass,
    +                                                         tp_svc_call_content_interface_media_update_local_media_description_impl impl);
    +

    +Register an implementation for the UpdateLocalMediaDescription method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the UpdateLocalMediaDescription D-Bus method
    +
    +
    +
    +

    tp_svc_call_content_interface_media_return_from_acknowledge_dtmf_change ()

    +
    void                tp_svc_call_content_interface_media_return_from_acknowledge_dtmf_change
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_content_interface_media_return_from_fail ()

    +
    void                tp_svc_call_content_interface_media_return_from_fail
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_content_interface_media_return_from_update_local_media_description ()

    +
    void                tp_svc_call_content_interface_media_return_from_update_local_media_description
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_content_interface_media_update_local_media_description_impl ()

    +
    void                (*tp_svc_call_content_interface_media_update_local_media_description_impl)
    +                                                        (TpSvcCallContentInterfaceMedia *self,
    +                                                         GHashTable *in_MediaDescription,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +UpdateLocalMediaDescription on interface org.freedesktop.Telepathy.Call1.Content.Interface.Media. +

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

    self :

    The object implementing this interface

    in_MediaDescription :

    GHashTable * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    TpSvcCallContentInterfaceVideoControl

    +
    typedef struct _TpSvcCallContentInterfaceVideoControl TpSvcCallContentInterfaceVideoControl;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallContentInterfaceVideoControlClass

    +
    typedef struct _TpSvcCallContentInterfaceVideoControlClass TpSvcCallContentInterfaceVideoControlClass;
    +

    +The class of TpSvcCallContentInterfaceVideoControl. +This interface has no D-Bus methods, so an +implementation can typically pass NULL to +G_IMPLEMENT_INTERFACE() as the interface +initialization function. +

    +
    +
    +
    +

    tp_svc_call_content_interface_video_control_emit_bitrate_changed ()

    +
    void                tp_svc_call_content_interface_video_control_emit_bitrate_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_NewBitrate);
    +

    +Type-safe wrapper around g_signal_emit to emit the +BitrateChanged signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl. +

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

    instance :

    The object implementing this interface

    arg_NewBitrate :

    guint (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_interface_video_control_emit_framerate_changed ()

    +
    void                tp_svc_call_content_interface_video_control_emit_framerate_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_NewFramerate);
    +

    +Type-safe wrapper around g_signal_emit to emit the +FramerateChanged signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl. +

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

    instance :

    The object implementing this interface

    arg_NewFramerate :

    guint (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_interface_video_control_emit_key_frame_requested ()

    +
    void                tp_svc_call_content_interface_video_control_emit_key_frame_requested
    +                                                        (gpointer instance);
    +

    +Type-safe wrapper around g_signal_emit to emit the +KeyFrameRequested signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl. +

    +
    ++ + + + +

    instance :

    The object implementing this interface
    +
    +
    +
    +

    tp_svc_call_content_interface_video_control_emit_mtu_changed ()

    +
    void                tp_svc_call_content_interface_video_control_emit_mtu_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_NewMTU);
    +

    +Type-safe wrapper around g_signal_emit to emit the +MTUChanged signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl. +

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

    instance :

    The object implementing this interface

    arg_NewMTU :

    guint (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_interface_video_control_emit_video_resolution_changed ()

    +
    void                tp_svc_call_content_interface_video_control_emit_video_resolution_changed
    +                                                        (gpointer instance,
    +                                                         const GValueArray *arg_NewResolution);
    +

    +Type-safe wrapper around g_signal_emit to emit the +VideoResolutionChanged signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.VideoControl. +

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

    instance :

    The object implementing this interface

    arg_NewResolution :

    const GValueArray * (FIXME, generate documentation)
    +
    +
    +
    +

    TpSvcCallContentInterfaceAudioControl

    +
    typedef struct _TpSvcCallContentInterfaceAudioControl TpSvcCallContentInterfaceAudioControl;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallContentInterfaceAudioControlClass

    +
    typedef struct _TpSvcCallContentInterfaceAudioControlClass TpSvcCallContentInterfaceAudioControlClass;
    +

    +The class of TpSvcCallContentInterfaceAudioControl. +

    +

    +In a full implementation of this interface (i.e. all +methods implemented), the interface initialization +function used in G_IMPLEMENT_INTERFACE() would +typically look like this: +

    +

    +

    +
    +static void
    +implement_call_content_interface_audio_control (gpointer klass,
    +    gpointer unused G_GNUC_UNUSED)
    +{
    +#define IMPLEMENT(x) tp_svc_call_content_interface_audio_control_implement_##x (\
    +  klass, my_object_##x)
    +  IMPLEMENT (report_input_volume);
    +  IMPLEMENT (report_output_volume);
    +#undef IMPLEMENT
    +}
    +
    +

    +

    +
    +
    +
    +

    tp_svc_call_content_interface_audio_control_implement_report_input_volume ()

    +
    void                tp_svc_call_content_interface_audio_control_implement_report_input_volume
    +                                                        (TpSvcCallContentInterfaceAudioControlClass *klass,
    +                                                         tp_svc_call_content_interface_audio_control_report_input_volume_impl impl);
    +

    +Register an implementation for the ReportInputVolume method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the ReportInputVolume D-Bus method
    +
    +
    +
    +

    tp_svc_call_content_interface_audio_control_implement_report_output_volume ()

    +
    void                tp_svc_call_content_interface_audio_control_implement_report_output_volume
    +                                                        (TpSvcCallContentInterfaceAudioControlClass *klass,
    +                                                         tp_svc_call_content_interface_audio_control_report_output_volume_impl impl);
    +

    +Register an implementation for the ReportOutputVolume method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the ReportOutputVolume D-Bus method
    +
    +
    +
    +

    tp_svc_call_content_interface_audio_control_report_input_volume_impl ()

    +
    void                (*tp_svc_call_content_interface_audio_control_report_input_volume_impl)
    +                                                        (TpSvcCallContentInterfaceAudioControl *self,
    +                                                         gint in_Volume,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +ReportInputVolume on interface org.freedesktop.Telepathy.Call1.Content.Interface.AudioControl. +

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

    self :

    The object implementing this interface

    in_Volume :

    gint (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_content_interface_audio_control_report_output_volume_impl ()

    +
    void                (*tp_svc_call_content_interface_audio_control_report_output_volume_impl)
    +                                                        (TpSvcCallContentInterfaceAudioControl *self,
    +                                                         gint in_Volume,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +ReportOutputVolume on interface org.freedesktop.Telepathy.Call1.Content.Interface.AudioControl. +

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

    self :

    The object implementing this interface

    in_Volume :

    gint (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_content_interface_audio_control_return_from_report_input_volume ()

    +
    void                tp_svc_call_content_interface_audio_control_return_from_report_input_volume
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_content_interface_audio_control_return_from_report_output_volume ()

    +
    void                tp_svc_call_content_interface_audio_control_return_from_report_output_volume
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    TpSvcCallContentInterfaceDTMF

    +
    typedef struct _TpSvcCallContentInterfaceDTMF TpSvcCallContentInterfaceDTMF;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallContentInterfaceDTMFClass

    +
    typedef struct _TpSvcCallContentInterfaceDTMFClass TpSvcCallContentInterfaceDTMFClass;
    +

    +The class of TpSvcCallContentInterfaceDTMF. +

    +

    +In a full implementation of this interface (i.e. all +methods implemented), the interface initialization +function used in G_IMPLEMENT_INTERFACE() would +typically look like this: +

    +

    +

    +
    +static void
    +implement_call_content_interface_dtmf (gpointer klass,
    +    gpointer unused G_GNUC_UNUSED)
    +{
    +#define IMPLEMENT(x) tp_svc_call_content_interface_dtmf_implement_##x (\
    +  klass, my_object_##x)
    +  IMPLEMENT (start_tone);
    +  IMPLEMENT (stop_tone);
    +  IMPLEMENT (multiple_tones);
    +#undef IMPLEMENT
    +}
    +
    +

    +

    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_emit_sending_tones ()

    +
    void                tp_svc_call_content_interface_dtmf_emit_sending_tones
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Tones);
    +

    +Type-safe wrapper around g_signal_emit to emit the +SendingTones signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.DTMF. +

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

    instance :

    The object implementing this interface

    arg_Tones :

    const gchar * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_emit_stopped_tones ()

    +
    void                tp_svc_call_content_interface_dtmf_emit_stopped_tones
    +                                                        (gpointer instance,
    +                                                         gboolean arg_Cancelled);
    +

    +Type-safe wrapper around g_signal_emit to emit the +StoppedTones signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.DTMF. +

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

    instance :

    The object implementing this interface

    arg_Cancelled :

    gboolean (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_emit_tones_deferred ()

    +
    void                tp_svc_call_content_interface_dtmf_emit_tones_deferred
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Tones);
    +

    +Type-safe wrapper around g_signal_emit to emit the +TonesDeferred signal on interface org.freedesktop.Telepathy.Call1.Content.Interface.DTMF. +

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

    instance :

    The object implementing this interface

    arg_Tones :

    const gchar * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_implement_multiple_tones ()

    +
    void                tp_svc_call_content_interface_dtmf_implement_multiple_tones
    +                                                        (TpSvcCallContentInterfaceDTMFClass *klass,
    +                                                         tp_svc_call_content_interface_dtmf_multiple_tones_impl impl);
    +

    +Register an implementation for the MultipleTones method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the MultipleTones D-Bus method
    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_implement_start_tone ()

    +
    void                tp_svc_call_content_interface_dtmf_implement_start_tone
    +                                                        (TpSvcCallContentInterfaceDTMFClass *klass,
    +                                                         tp_svc_call_content_interface_dtmf_start_tone_impl impl);
    +

    +Register an implementation for the StartTone method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the StartTone D-Bus method
    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_implement_stop_tone ()

    +
    void                tp_svc_call_content_interface_dtmf_implement_stop_tone
    +                                                        (TpSvcCallContentInterfaceDTMFClass *klass,
    +                                                         tp_svc_call_content_interface_dtmf_stop_tone_impl impl);
    +

    +Register an implementation for the StopTone method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the StopTone D-Bus method
    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_multiple_tones_impl ()

    +
    void                (*tp_svc_call_content_interface_dtmf_multiple_tones_impl)
    +                                                        (TpSvcCallContentInterfaceDTMF *self,
    +                                                         const gchar *in_Tones,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +MultipleTones on interface org.freedesktop.Telepathy.Call1.Content.Interface.DTMF. +

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

    self :

    The object implementing this interface

    in_Tones :

    const gchar * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_return_from_multiple_tones ()

    +
    void                tp_svc_call_content_interface_dtmf_return_from_multiple_tones
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_return_from_start_tone ()

    +
    void                tp_svc_call_content_interface_dtmf_return_from_start_tone
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_return_from_stop_tone ()

    +
    void                tp_svc_call_content_interface_dtmf_return_from_stop_tone
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_start_tone_impl ()

    +
    void                (*tp_svc_call_content_interface_dtmf_start_tone_impl)
    +                                                        (TpSvcCallContentInterfaceDTMF *self,
    +                                                         guchar in_Event,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +StartTone on interface org.freedesktop.Telepathy.Call1.Content.Interface.DTMF. +

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

    self :

    The object implementing this interface

    in_Event :

    guchar (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_content_interface_dtmf_stop_tone_impl ()

    +
    void                (*tp_svc_call_content_interface_dtmf_stop_tone_impl)
    +                                                        (TpSvcCallContentInterfaceDTMF *self,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +StopTone on interface org.freedesktop.Telepathy.Call1.Content.Interface.DTMF. +

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

    self :

    The object implementing this interface

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    TpSvcCallContentMediaDescription

    +
    typedef struct _TpSvcCallContentMediaDescription TpSvcCallContentMediaDescription;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallContentMediaDescriptionClass

    +
    typedef struct _TpSvcCallContentMediaDescriptionClass TpSvcCallContentMediaDescriptionClass;
    +

    +The class of TpSvcCallContentMediaDescription. +

    +

    +In a full implementation of this interface (i.e. all +methods implemented), the interface initialization +function used in G_IMPLEMENT_INTERFACE() would +typically look like this: +

    +

    +

    +
    +static void
    +implement_call_content_media_description (gpointer klass,
    +    gpointer unused G_GNUC_UNUSED)
    +{
    +#define IMPLEMENT(x) tp_svc_call_content_media_description_implement_##x (\
    +  klass, my_object_##x)
    +  IMPLEMENT (accept);
    +  IMPLEMENT (reject);
    +#undef IMPLEMENT
    +}
    +
    +

    +

    +
    +
    +
    +

    tp_svc_call_content_media_description_accept_impl ()

    +
    void                (*tp_svc_call_content_media_description_accept_impl)
    +                                                        (TpSvcCallContentMediaDescription *self,
    +                                                         GHashTable *in_Local_Media_Description,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +Accept on interface org.freedesktop.Telepathy.Call1.Content.MediaDescription. +

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

    self :

    The object implementing this interface

    in_Local_Media_Description :

    GHashTable * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_content_media_description_implement_accept ()

    +
    void                tp_svc_call_content_media_description_implement_accept
    +                                                        (TpSvcCallContentMediaDescriptionClass *klass,
    +                                                         tp_svc_call_content_media_description_accept_impl impl);
    +

    +Register an implementation for the Accept method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the Accept D-Bus method
    +
    +
    +
    +

    tp_svc_call_content_media_description_implement_reject ()

    +
    void                tp_svc_call_content_media_description_implement_reject
    +                                                        (TpSvcCallContentMediaDescriptionClass *klass,
    +                                                         tp_svc_call_content_media_description_reject_impl impl);
    +

    +Register an implementation for the Reject method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the Reject D-Bus method
    +
    +
    +
    +

    tp_svc_call_content_media_description_return_from_accept ()

    +
    void                tp_svc_call_content_media_description_return_from_accept
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_content_media_description_return_from_reject ()

    +
    void                tp_svc_call_content_media_description_return_from_reject
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_content_media_description_reject_impl ()

    +
    void                (*tp_svc_call_content_media_description_reject_impl)
    +                                                        (TpSvcCallContentMediaDescription *self,
    +                                                         const GValueArray *in_Reason,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +Reject on interface org.freedesktop.Telepathy.Call1.Content.MediaDescription. +

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

    self :

    The object implementing this interface

    in_Reason :

    const GValueArray * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReports

    +
    typedef struct _TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReports TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReports;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReportsClass

    +
    typedef struct _TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReportsClass TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReportsClass;
    +

    +The class of TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReports. +This interface has no D-Bus methods, so an +implementation can typically pass NULL to +G_IMPLEMENT_INTERFACE() as the interface +initialization function. +

    +
    +
    +
    +

    TpSvcCallContentMediaDescriptionInterfaceRTCPFeedback

    +
    typedef struct _TpSvcCallContentMediaDescriptionInterfaceRTCPFeedback TpSvcCallContentMediaDescriptionInterfaceRTCPFeedback;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallContentMediaDescriptionInterfaceRTCPFeedbackClass

    +
    typedef struct _TpSvcCallContentMediaDescriptionInterfaceRTCPFeedbackClass TpSvcCallContentMediaDescriptionInterfaceRTCPFeedbackClass;
    +

    +The class of TpSvcCallContentMediaDescriptionInterfaceRTCPFeedback. +This interface has no D-Bus methods, so an +implementation can typically pass NULL to +G_IMPLEMENT_INTERFACE() as the interface +initialization function. +

    +
    +
    +
    +

    TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensions

    +
    typedef struct _TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensions TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensions;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensionsClass

    +
    typedef struct _TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensionsClass TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensionsClass;
    +

    +The class of TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensions. +This interface has no D-Bus methods, so an +implementation can typically pass NULL to +G_IMPLEMENT_INTERFACE() as the interface +initialization function. +

    +
    +
    +
    +

    TpSvcCallStream

    +
    typedef struct _TpSvcCallStream TpSvcCallStream;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallStreamClass

    +
    typedef struct _TpSvcCallStreamClass TpSvcCallStreamClass;
    +

    +The class of TpSvcCallStream. +

    +

    +In a full implementation of this interface (i.e. all +methods implemented), the interface initialization +function used in G_IMPLEMENT_INTERFACE() would +typically look like this: +

    +

    +

    +
    +static void
    +implement_call_stream (gpointer klass,
    +    gpointer unused G_GNUC_UNUSED)
    +{
    +#define IMPLEMENT(x) tp_svc_call_stream_implement_##x (\
    +  klass, my_object_##x)
    +  IMPLEMENT (set_sending);
    +  IMPLEMENT (request_receiving);
    +#undef IMPLEMENT
    +}
    +
    +

    +

    +
    +
    +
    +

    tp_svc_call_stream_implement_request_receiving ()

    +
    void                tp_svc_call_stream_implement_request_receiving
    +                                                        (TpSvcCallStreamClass *klass,
    +                                                         tp_svc_call_stream_request_receiving_impl impl);
    +

    +Register an implementation for the RequestReceiving method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the RequestReceiving D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_implement_set_sending ()

    +
    void                tp_svc_call_stream_implement_set_sending
    +                                                        (TpSvcCallStreamClass *klass,
    +                                                         tp_svc_call_stream_set_sending_impl impl);
    +

    +Register an implementation for the SetSending method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the SetSending D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_emit_local_sending_state_changed ()

    +
    void                tp_svc_call_stream_emit_local_sending_state_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_State,
    +                                                         const GValueArray *arg_Reason);
    +

    +Type-safe wrapper around g_signal_emit to emit the +LocalSendingStateChanged signal on interface org.freedesktop.Telepathy.Call1.Stream. +

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

    instance :

    The object implementing this interface

    arg_State :

    guint (FIXME, generate documentation)

    arg_Reason :

    const GValueArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_emit_remote_members_changed ()

    +
    void                tp_svc_call_stream_emit_remote_members_changed
    +                                                        (gpointer instance,
    +                                                         GHashTable *arg_Updates,
    +                                                         GHashTable *arg_Identifiers,
    +                                                         const GArray *arg_Removed,
    +                                                         const GValueArray *arg_Reason);
    +

    +Type-safe wrapper around g_signal_emit to emit the +RemoteMembersChanged signal on interface org.freedesktop.Telepathy.Call1.Stream. +

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

    instance :

    The object implementing this interface

    arg_Updates :

    GHashTable * (FIXME, generate documentation)

    arg_Identifiers :

    GHashTable * (FIXME, generate documentation)

    arg_Removed :

    const GArray * (FIXME, generate documentation)

    arg_Reason :

    const GValueArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_request_receiving_impl ()

    +
    void                (*tp_svc_call_stream_request_receiving_impl)
    +                                                        (TpSvcCallStream *self,
    +                                                         guint in_Contact,
    +                                                         gboolean in_Receive,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +RequestReceiving on interface org.freedesktop.Telepathy.Call1.Stream. +

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

    self :

    The object implementing this interface

    in_Contact :

    guint (FIXME, generate documentation)

    in_Receive :

    gboolean (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_return_from_request_receiving ()

    +
    void                tp_svc_call_stream_return_from_request_receiving
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_return_from_set_sending ()

    +
    void                tp_svc_call_stream_return_from_set_sending
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_set_sending_impl ()

    +
    void                (*tp_svc_call_stream_set_sending_impl)
    +                                                        (TpSvcCallStream *self,
    +                                                         gboolean in_Send,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +SetSending on interface org.freedesktop.Telepathy.Call1.Stream. +

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

    self :

    The object implementing this interface

    in_Send :

    gboolean (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    TpSvcCallStreamInterfaceMedia

    +
    typedef struct _TpSvcCallStreamInterfaceMedia TpSvcCallStreamInterfaceMedia;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallStreamInterfaceMediaClass

    +
    typedef struct _TpSvcCallStreamInterfaceMediaClass TpSvcCallStreamInterfaceMediaClass;
    +

    +The class of TpSvcCallStreamInterfaceMedia. +

    +

    +In a full implementation of this interface (i.e. all +methods implemented), the interface initialization +function used in G_IMPLEMENT_INTERFACE() would +typically look like this: +

    +

    +

    +
    +static void
    +implement_call_stream_interface_media (gpointer klass,
    +    gpointer unused G_GNUC_UNUSED)
    +{
    +#define IMPLEMENT(x) tp_svc_call_stream_interface_media_implement_##x (\
    +  klass, my_object_##x)
    +  IMPLEMENT (complete_sending_state_change);
    +  IMPLEMENT (report_sending_failure);
    +  IMPLEMENT (complete_receiving_state_change);
    +  IMPLEMENT (report_receiving_failure);
    +  IMPLEMENT (set_credentials);
    +  IMPLEMENT (add_candidates);
    +  IMPLEMENT (finish_initial_candidates);
    +  IMPLEMENT (fail);
    +#undef IMPLEMENT
    +}
    +
    +

    +

    +
    +
    +
    +

    tp_svc_call_stream_interface_media_add_candidates_impl ()

    +
    void                (*tp_svc_call_stream_interface_media_add_candidates_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         const GPtrArray *in_Candidates,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +AddCandidates on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    self :

    The object implementing this interface

    in_Candidates :

    const GPtrArray * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_complete_receiving_state_change_impl ()

    +
    void                (*tp_svc_call_stream_interface_media_complete_receiving_state_change_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         guint in_State,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +CompleteReceivingStateChange on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    self :

    The object implementing this interface

    in_State :

    guint (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_complete_sending_state_change_impl ()

    +
    void                (*tp_svc_call_stream_interface_media_complete_sending_state_change_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         guint in_State,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +CompleteSendingStateChange on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    self :

    The object implementing this interface

    in_State :

    guint (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_emit_endpoints_changed ()

    +
    void                tp_svc_call_stream_interface_media_emit_endpoints_changed
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Endpoints_Added,
    +                                                         const GPtrArray *arg_Endpoints_Removed);
    +

    +Type-safe wrapper around g_signal_emit to emit the +EndpointsChanged signal on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_Endpoints_Added :

    const GPtrArray * (FIXME, generate documentation)

    arg_Endpoints_Removed :

    const GPtrArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_emit_ice_restart_requested ()

    +
    void                tp_svc_call_stream_interface_media_emit_ice_restart_requested
    +                                                        (gpointer instance);
    +

    +Type-safe wrapper around g_signal_emit to emit the +ICERestartRequested signal on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

    +
    ++ + + + +

    instance :

    The object implementing this interface
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_emit_local_candidates_added ()

    +
    void                tp_svc_call_stream_interface_media_emit_local_candidates_added
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Candidates);
    +

    +Type-safe wrapper around g_signal_emit to emit the +LocalCandidatesAdded signal on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_Candidates :

    const GPtrArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_emit_local_credentials_changed ()

    +
    void                tp_svc_call_stream_interface_media_emit_local_credentials_changed
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Username,
    +                                                         const gchar *arg_Password);
    +

    +Type-safe wrapper around g_signal_emit to emit the +LocalCredentialsChanged signal on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_Username :

    const gchar * (FIXME, generate documentation)

    arg_Password :

    const gchar * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_emit_receiving_state_changed ()

    +
    void                tp_svc_call_stream_interface_media_emit_receiving_state_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_State);
    +

    +Type-safe wrapper around g_signal_emit to emit the +ReceivingStateChanged signal on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_State :

    guint (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_emit_relay_info_changed ()

    +
    void                tp_svc_call_stream_interface_media_emit_relay_info_changed
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Relay_Info);
    +

    +Type-safe wrapper around g_signal_emit to emit the +RelayInfoChanged signal on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_Relay_Info :

    const GPtrArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_emit_sending_state_changed ()

    +
    void                tp_svc_call_stream_interface_media_emit_sending_state_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_State);
    +

    +Type-safe wrapper around g_signal_emit to emit the +SendingStateChanged signal on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_State :

    guint (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_emit_server_info_retrieved ()

    +
    void                tp_svc_call_stream_interface_media_emit_server_info_retrieved
    +                                                        (gpointer instance);
    +

    +Type-safe wrapper around g_signal_emit to emit the +ServerInfoRetrieved signal on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

    +
    ++ + + + +

    instance :

    The object implementing this interface
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_emit_stun_servers_changed ()

    +
    void                tp_svc_call_stream_interface_media_emit_stun_servers_changed
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Servers);
    +

    +Type-safe wrapper around g_signal_emit to emit the +STUNServersChanged signal on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    instance :

    The object implementing this interface

    arg_Servers :

    const GPtrArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_fail_impl ()

    +
    void                (*tp_svc_call_stream_interface_media_fail_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         const GValueArray *in_Reason,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +Fail on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    self :

    The object implementing this interface

    in_Reason :

    const GValueArray * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_finish_initial_candidates_impl ()

    +
    void                (*tp_svc_call_stream_interface_media_finish_initial_candidates_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +FinishInitialCandidates on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    self :

    The object implementing this interface

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_implement_add_candidates ()

    +
    void                tp_svc_call_stream_interface_media_implement_add_candidates
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_add_candidates_impl impl);
    +

    +Register an implementation for the AddCandidates method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the AddCandidates D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_implement_complete_receiving_state_change ()

    +
    void                tp_svc_call_stream_interface_media_implement_complete_receiving_state_change
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_complete_receiving_state_change_impl impl);
    +

    +Register an implementation for the CompleteReceivingStateChange method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the CompleteReceivingStateChange D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_implement_complete_sending_state_change ()

    +
    void                tp_svc_call_stream_interface_media_implement_complete_sending_state_change
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_complete_sending_state_change_impl impl);
    +

    +Register an implementation for the CompleteSendingStateChange method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the CompleteSendingStateChange D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_implement_fail ()

    +
    void                tp_svc_call_stream_interface_media_implement_fail
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_fail_impl impl);
    +

    +Register an implementation for the Fail method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the Fail D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_implement_finish_initial_candidates ()

    +
    void                tp_svc_call_stream_interface_media_implement_finish_initial_candidates
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_finish_initial_candidates_impl impl);
    +

    +Register an implementation for the FinishInitialCandidates method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the FinishInitialCandidates D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_implement_report_receiving_failure ()

    +
    void                tp_svc_call_stream_interface_media_implement_report_receiving_failure
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_report_receiving_failure_impl impl);
    +

    +Register an implementation for the ReportReceivingFailure method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the ReportReceivingFailure D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_implement_report_sending_failure ()

    +
    void                tp_svc_call_stream_interface_media_implement_report_sending_failure
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_report_sending_failure_impl impl);
    +

    +Register an implementation for the ReportSendingFailure method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the ReportSendingFailure D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_implement_set_credentials ()

    +
    void                tp_svc_call_stream_interface_media_implement_set_credentials
    +                                                        (TpSvcCallStreamInterfaceMediaClass *klass,
    +                                                         tp_svc_call_stream_interface_media_set_credentials_impl impl);
    +

    +Register an implementation for the SetCredentials method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the SetCredentials D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_report_receiving_failure_impl ()

    +
    void                (*tp_svc_call_stream_interface_media_report_receiving_failure_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Error,
    +                                                         const gchar *in_Message,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +ReportReceivingFailure on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    self :

    The object implementing this interface

    in_Reason :

    guint (FIXME, generate documentation)

    in_Error :

    const gchar * (FIXME, generate documentation)

    in_Message :

    const gchar * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_report_sending_failure_impl ()

    +
    void                (*tp_svc_call_stream_interface_media_report_sending_failure_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         guint in_Reason,
    +                                                         const gchar *in_Error,
    +                                                         const gchar *in_Message,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +ReportSendingFailure on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    self :

    The object implementing this interface

    in_Reason :

    guint (FIXME, generate documentation)

    in_Error :

    const gchar * (FIXME, generate documentation)

    in_Message :

    const gchar * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_return_from_add_candidates ()

    +
    void                tp_svc_call_stream_interface_media_return_from_add_candidates
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_return_from_complete_receiving_state_change ()

    +
    void                tp_svc_call_stream_interface_media_return_from_complete_receiving_state_change
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_return_from_complete_sending_state_change ()

    +
    void                tp_svc_call_stream_interface_media_return_from_complete_sending_state_change
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_return_from_fail ()

    +
    void                tp_svc_call_stream_interface_media_return_from_fail
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_return_from_finish_initial_candidates ()

    +
    void                tp_svc_call_stream_interface_media_return_from_finish_initial_candidates
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_return_from_report_receiving_failure ()

    +
    void                tp_svc_call_stream_interface_media_return_from_report_receiving_failure
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_return_from_report_sending_failure ()

    +
    void                tp_svc_call_stream_interface_media_return_from_report_sending_failure
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_return_from_set_credentials ()

    +
    void                tp_svc_call_stream_interface_media_return_from_set_credentials
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_interface_media_set_credentials_impl ()

    +
    void                (*tp_svc_call_stream_interface_media_set_credentials_impl)
    +                                                        (TpSvcCallStreamInterfaceMedia *self,
    +                                                         const gchar *in_Username,
    +                                                         const gchar *in_Password,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +SetCredentials on interface org.freedesktop.Telepathy.Call1.Stream.Interface.Media. +

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

    self :

    The object implementing this interface

    in_Username :

    const gchar * (FIXME, generate documentation)

    in_Password :

    const gchar * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    TpSvcCallStreamEndpoint

    +
    typedef struct _TpSvcCallStreamEndpoint TpSvcCallStreamEndpoint;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcCallStreamEndpointClass

    +
    typedef struct _TpSvcCallStreamEndpointClass TpSvcCallStreamEndpointClass;
    +

    +The class of TpSvcCallStreamEndpoint. +

    +

    +In a full implementation of this interface (i.e. all +methods implemented), the interface initialization +function used in G_IMPLEMENT_INTERFACE() would +typically look like this: +

    +

    +

    +
    +static void
    +implement_call_stream_endpoint (gpointer klass,
    +    gpointer unused G_GNUC_UNUSED)
    +{
    +#define IMPLEMENT(x) tp_svc_call_stream_endpoint_implement_##x (\
    +  klass, my_object_##x)
    +  IMPLEMENT (set_selected_candidate_pair);
    +  IMPLEMENT (set_endpoint_state);
    +  IMPLEMENT (accept_selected_candidate_pair);
    +  IMPLEMENT (reject_selected_candidate_pair);
    +  IMPLEMENT (set_controlling);
    +#undef IMPLEMENT
    +}
    +
    +

    +

    +
    +
    +
    +

    tp_svc_call_stream_endpoint_accept_selected_candidate_pair_impl ()

    +
    void                (*tp_svc_call_stream_endpoint_accept_selected_candidate_pair_impl)
    +                                                        (TpSvcCallStreamEndpoint *self,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +AcceptSelectedCandidatePair on interface org.freedesktop.Telepathy.Call1.Stream.Endpoint. +

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

    self :

    The object implementing this interface

    in_Local_Candidate :

    const GValueArray * (FIXME, generate documentation)

    in_Remote_Candidate :

    const GValueArray * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_emit_candidate_pair_selected ()

    +
    void                tp_svc_call_stream_endpoint_emit_candidate_pair_selected
    +                                                        (gpointer instance,
    +                                                         const GValueArray *arg_Local_Candidate,
    +                                                         const GValueArray *arg_Remote_Candidate);
    +

    +Type-safe wrapper around g_signal_emit to emit the +CandidatePairSelected signal on interface org.freedesktop.Telepathy.Call1.Stream.Endpoint. +

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

    instance :

    The object implementing this interface

    arg_Local_Candidate :

    const GValueArray * (FIXME, generate documentation)

    arg_Remote_Candidate :

    const GValueArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_emit_controlling_changed ()

    +
    void                tp_svc_call_stream_endpoint_emit_controlling_changed
    +                                                        (gpointer instance,
    +                                                         gboolean arg_Controlling);
    +

    +Type-safe wrapper around g_signal_emit to emit the +ControllingChanged signal on interface org.freedesktop.Telepathy.Call1.Stream.Endpoint. +

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

    instance :

    The object implementing this interface

    arg_Controlling :

    gboolean (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_emit_endpoint_state_changed ()

    +
    void                tp_svc_call_stream_endpoint_emit_endpoint_state_changed
    +                                                        (gpointer instance,
    +                                                         guint arg_Component,
    +                                                         guint arg_State);
    +

    +Type-safe wrapper around g_signal_emit to emit the +EndpointStateChanged signal on interface org.freedesktop.Telepathy.Call1.Stream.Endpoint. +

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

    instance :

    The object implementing this interface

    arg_Component :

    guint (FIXME, generate documentation)

    arg_State :

    guint (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_emit_remote_candidates_added ()

    +
    void                tp_svc_call_stream_endpoint_emit_remote_candidates_added
    +                                                        (gpointer instance,
    +                                                         const GPtrArray *arg_Candidates);
    +

    +Type-safe wrapper around g_signal_emit to emit the +RemoteCandidatesAdded signal on interface org.freedesktop.Telepathy.Call1.Stream.Endpoint. +

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

    instance :

    The object implementing this interface

    arg_Candidates :

    const GPtrArray * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_emit_remote_credentials_set ()

    +
    void                tp_svc_call_stream_endpoint_emit_remote_credentials_set
    +                                                        (gpointer instance,
    +                                                         const gchar *arg_Username,
    +                                                         const gchar *arg_Password);
    +

    +Type-safe wrapper around g_signal_emit to emit the +RemoteCredentialsSet signal on interface org.freedesktop.Telepathy.Call1.Stream.Endpoint. +

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

    instance :

    The object implementing this interface

    arg_Username :

    const gchar * (FIXME, generate documentation)

    arg_Password :

    const gchar * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_implement_accept_selected_candidate_pair ()

    +
    void                tp_svc_call_stream_endpoint_implement_accept_selected_candidate_pair
    +                                                        (TpSvcCallStreamEndpointClass *klass,
    +                                                         tp_svc_call_stream_endpoint_accept_selected_candidate_pair_impl impl);
    +

    +Register an implementation for the AcceptSelectedCandidatePair method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the AcceptSelectedCandidatePair D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_implement_reject_selected_candidate_pair ()

    +
    void                tp_svc_call_stream_endpoint_implement_reject_selected_candidate_pair
    +                                                        (TpSvcCallStreamEndpointClass *klass,
    +                                                         tp_svc_call_stream_endpoint_reject_selected_candidate_pair_impl impl);
    +

    +Register an implementation for the RejectSelectedCandidatePair method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the RejectSelectedCandidatePair D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_implement_set_controlling ()

    +
    void                tp_svc_call_stream_endpoint_implement_set_controlling
    +                                                        (TpSvcCallStreamEndpointClass *klass,
    +                                                         tp_svc_call_stream_endpoint_set_controlling_impl impl);
    +

    +Register an implementation for the SetControlling method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the SetControlling D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_implement_set_endpoint_state ()

    +
    void                tp_svc_call_stream_endpoint_implement_set_endpoint_state
    +                                                        (TpSvcCallStreamEndpointClass *klass,
    +                                                         tp_svc_call_stream_endpoint_set_endpoint_state_impl impl);
    +

    +Register an implementation for the SetEndpointState method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the SetEndpointState D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_implement_set_selected_candidate_pair ()

    +
    void                tp_svc_call_stream_endpoint_implement_set_selected_candidate_pair
    +                                                        (TpSvcCallStreamEndpointClass *klass,
    +                                                         tp_svc_call_stream_endpoint_set_selected_candidate_pair_impl impl);
    +

    +Register an implementation for the SetSelectedCandidatePair method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the SetSelectedCandidatePair D-Bus method
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_reject_selected_candidate_pair_impl ()

    +
    void                (*tp_svc_call_stream_endpoint_reject_selected_candidate_pair_impl)
    +                                                        (TpSvcCallStreamEndpoint *self,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +RejectSelectedCandidatePair on interface org.freedesktop.Telepathy.Call1.Stream.Endpoint. +

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

    self :

    The object implementing this interface

    in_Local_Candidate :

    const GValueArray * (FIXME, generate documentation)

    in_Remote_Candidate :

    const GValueArray * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_return_from_accept_selected_candidate_pair ()

    +
    void                tp_svc_call_stream_endpoint_return_from_accept_selected_candidate_pair
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_return_from_reject_selected_candidate_pair ()

    +
    void                tp_svc_call_stream_endpoint_return_from_reject_selected_candidate_pair
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_return_from_set_controlling ()

    +
    void                tp_svc_call_stream_endpoint_return_from_set_controlling
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_return_from_set_endpoint_state ()

    +
    void                tp_svc_call_stream_endpoint_return_from_set_endpoint_state
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_return_from_set_selected_candidate_pair ()

    +
    void                tp_svc_call_stream_endpoint_return_from_set_selected_candidate_pair
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_set_controlling_impl ()

    +
    void                (*tp_svc_call_stream_endpoint_set_controlling_impl)
    +                                                        (TpSvcCallStreamEndpoint *self,
    +                                                         gboolean in_Controlling,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +SetControlling on interface org.freedesktop.Telepathy.Call1.Stream.Endpoint. +

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

    self :

    The object implementing this interface

    in_Controlling :

    gboolean (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_set_endpoint_state_impl ()

    +
    void                (*tp_svc_call_stream_endpoint_set_endpoint_state_impl)
    +                                                        (TpSvcCallStreamEndpoint *self,
    +                                                         guint in_Component,
    +                                                         guint in_State,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +SetEndpointState on interface org.freedesktop.Telepathy.Call1.Stream.Endpoint. +

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

    self :

    The object implementing this interface

    in_Component :

    guint (FIXME, generate documentation)

    in_State :

    guint (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_call_stream_endpoint_set_selected_candidate_pair_impl ()

    +
    void                (*tp_svc_call_stream_endpoint_set_selected_candidate_pair_impl)
    +                                                        (TpSvcCallStreamEndpoint *self,
    +                                                         const GValueArray *in_Local_Candidate,
    +                                                         const GValueArray *in_Remote_Candidate,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +SetSelectedCandidatePair on interface org.freedesktop.Telepathy.Call1.Stream.Endpoint. +

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

    self :

    The object implementing this interface

    in_Local_Candidate :

    const GValueArray * (FIXME, generate documentation)

    in_Remote_Candidate :

    const GValueArray * (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    Signal Details

    +
    +

    The "call-members-changed" signal

    +
    void                user_function                      (TpSvcChannelTypeCall *self,
    +                                                        GArray_guint_        *arg_Removed,
    +                                                        gpointer              user_data)        : Has Details
    +

    +The CallMembersChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Flags_Changed :

    GHashTable * (FIXME, generate documentation)

    arg_Identifiers :

    GHashTable * (FIXME, generate documentation)

    arg_Removed :

    const GArray * (FIXME, generate documentation)

    arg_Reason :

    const GValueArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "call-state-changed" signal

    +
    void                user_function                      (TpSvcChannelTypeCall *self,
    +                                                        guint                 arg_Call_State,
    +                                                        guint                 arg_Call_Flags,
    +                                                        gpointer              user_data)           : Has Details
    +

    +The CallStateChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Call_State :

    guint (FIXME, generate documentation)

    arg_Call_Flags :

    guint (FIXME, generate documentation)

    arg_Call_State_Reason :

    const GValueArray * (FIXME, generate documentation)

    arg_Call_State_Details :

    GHashTable * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "content-added" signal

    +
    void                user_function                      (TpSvcChannelTypeCall *self,
    +                                                        DBusGObjectPath      *arg_Content,
    +                                                        gpointer              user_data)        : Has Details
    +

    +The ContentAdded D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Content :

    const gchar * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "content-removed" signal

    +
    void                user_function                      (TpSvcChannelTypeCall *self,
    +                                                        DBusGObjectPath      *arg_Content,
    +                                                        gpointer              user_data)        : Has Details
    +

    +The ContentRemoved D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Content :

    const gchar * (FIXME, generate documentation)

    arg_Reason :

    const GValueArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "streams-added" signal

    +
    void                user_function                      (TpSvcCallContent           *self,
    +                                                        GPtrArray_DBusGObjectPath_ *arg_Streams,
    +                                                        gpointer                    user_data)        : Has Details
    +

    +The StreamsAdded D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Streams :

    const GPtrArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "streams-removed" signal

    +
    void                user_function                      (TpSvcCallContent           *self,
    +                                                        GPtrArray_DBusGObjectPath_ *arg_Streams,
    +                                                        gpointer                    user_data)        : Has Details
    +

    +The StreamsRemoved D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Streams :

    const GPtrArray * (FIXME, generate documentation)

    arg_Reason :

    const GValueArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "d-tm-fchange-requested" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceMedia *self,
    +                                                        guchar                          arg_Event,
    +                                                        guint                           arg_State,
    +                                                        gpointer                        user_data)      : Has Details
    +

    +The DTMFChangeRequested D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Event :

    guchar (FIXME, generate documentation)

    arg_State :

    guint (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "local-media-description-changed" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceMedia *self,
    +                                                        gpointer                        user_data)      : Has Details
    +

    +The LocalMediaDescriptionChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Updated_Media_Description :

    GHashTable * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "media-description-offer-done" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceMedia *self,
    +                                                        gpointer                        user_data)      : Has Details
    +

    +The MediaDescriptionOfferDone D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "media-descriptions-removed" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceMedia *self,
    +                                                        GArray_guint_                  *arg_Removed_Media_Descriptions,
    +                                                        gpointer                        user_data)                           : Has Details
    +

    +The MediaDescriptionsRemoved D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Removed_Media_Descriptions :

    const GArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "new-media-description-offer" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceMedia *self,
    +                                                        DBusGObjectPath                *arg_Media_Description,
    +                                                        gpointer                        user_data)                  : Has Details
    +

    +The NewMediaDescriptionOffer D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Media_Description :

    const gchar * (FIXME, generate documentation)

    arg_Properties :

    GHashTable * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "remote-media-descriptions-changed" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceMedia *self,
    +                                                        gpointer                        user_data)      : Has Details
    +

    +The RemoteMediaDescriptionsChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Updated_Media_Descriptions :

    GHashTable * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "bitrate-changed" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceVideoControl *self,
    +                                                        guint                                  arg_NewBitrate,
    +                                                        gpointer                               user_data)           : Has Details
    +

    +The BitrateChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_NewBitrate :

    guint (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "framerate-changed" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceVideoControl *self,
    +                                                        guint                                  arg_NewFramerate,
    +                                                        gpointer                               user_data)             : Has Details
    +

    +The FramerateChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_NewFramerate :

    guint (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "key-frame-requested" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceVideoControl *self,
    +                                                        gpointer                               user_data)      : Has Details
    +

    +The KeyFrameRequested D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "m-tu-changed" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceVideoControl *self,
    +                                                        guint                                  arg_NewMTU,
    +                                                        gpointer                               user_data)       : Has Details
    +

    +The MTUChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_NewMTU :

    guint (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "video-resolution-changed" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceVideoControl *self,
    +                                                        gpointer                               user_data)      : Has Details
    +

    +The VideoResolutionChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_NewResolution :

    const GValueArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "sending-tones" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceDTMF *self,
    +                                                        gchar                         *arg_Tones,
    +                                                        gpointer                       user_data)      : Has Details
    +

    +The SendingTones D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Tones :

    const gchar * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "stopped-tones" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceDTMF *self,
    +                                                        gboolean                       arg_Cancelled,
    +                                                        gpointer                       user_data)          : Has Details
    +

    +The StoppedTones D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Cancelled :

    gboolean (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "tones-deferred" signal

    +
    void                user_function                      (TpSvcCallContentInterfaceDTMF *self,
    +                                                        gchar                         *arg_Tones,
    +                                                        gpointer                       user_data)      : Has Details
    +

    +The TonesDeferred D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Tones :

    const gchar * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "local-sending-state-changed" signal

    +
    void                user_function                      (TpSvcCallStream *self,
    +                                                        guint            arg_State,
    +                                                        gpointer         user_data)      : Has Details
    +

    +The LocalSendingStateChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_State :

    guint (FIXME, generate documentation)

    arg_Reason :

    const GValueArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "remote-members-changed" signal

    +
    void                user_function                      (TpSvcCallStream *self,
    +                                                        GArray_guint_   *arg_Removed,
    +                                                        gpointer         user_data)        : Has Details
    +

    +The RemoteMembersChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Updates :

    GHashTable * (FIXME, generate documentation)

    arg_Identifiers :

    GHashTable * (FIXME, generate documentation)

    arg_Removed :

    const GArray * (FIXME, generate documentation)

    arg_Reason :

    const GValueArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "endpoints-changed" signal

    +
    void                user_function                      (TpSvcCallStreamInterfaceMedia *self,
    +                                                        GPtrArray_DBusGObjectPath_    *arg_Endpoints_Added,
    +                                                        GPtrArray_DBusGObjectPath_    *arg_Endpoints_Removed,
    +                                                        gpointer                       user_data)                  : Has Details
    +

    +The EndpointsChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Endpoints_Added :

    const GPtrArray * (FIXME, generate documentation)

    arg_Endpoints_Removed :

    const GPtrArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "i-ce-restart-requested" signal

    +
    void                user_function                      (TpSvcCallStreamInterfaceMedia *self,
    +                                                        gpointer                       user_data)      : Has Details
    +

    +The ICERestartRequested D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "local-candidates-added" signal

    +
    void                user_function                      (TpSvcCallStreamInterfaceMedia *self,
    +                                                        gpointer                       user_data)      : Has Details
    +

    +The LocalCandidatesAdded D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Candidates :

    const GPtrArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "local-credentials-changed" signal

    +
    void                user_function                      (TpSvcCallStreamInterfaceMedia *self,
    +                                                        gchar                         *arg_Username,
    +                                                        gchar                         *arg_Password,
    +                                                        gpointer                       user_data)         : Has Details
    +

    +The LocalCredentialsChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Username :

    const gchar * (FIXME, generate documentation)

    arg_Password :

    const gchar * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "receiving-state-changed" signal

    +
    void                user_function                      (TpSvcCallStreamInterfaceMedia *self,
    +                                                        guint                          arg_State,
    +                                                        gpointer                       user_data)      : Has Details
    +

    +The ReceivingStateChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_State :

    guint (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "relay-info-changed" signal

    +
    void                user_function                      (TpSvcCallStreamInterfaceMedia *self,
    +                                                        gpointer                       user_data)      : Has Details
    +

    +The RelayInfoChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Relay_Info :

    const GPtrArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "s-tu-nservers-changed" signal

    +
    void                user_function                      (TpSvcCallStreamInterfaceMedia *self,
    +                                                        gpointer                       user_data)      : Has Details
    +

    +The STUNServersChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Servers :

    const GPtrArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "sending-state-changed" signal

    +
    void                user_function                      (TpSvcCallStreamInterfaceMedia *self,
    +                                                        guint                          arg_State,
    +                                                        gpointer                       user_data)      : Has Details
    +

    +The SendingStateChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_State :

    guint (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "server-info-retrieved" signal

    +
    void                user_function                      (TpSvcCallStreamInterfaceMedia *self,
    +                                                        gpointer                       user_data)      : Has Details
    +

    +The ServerInfoRetrieved D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "candidate-pair-selected" signal

    +
    void                user_function                      (TpSvcCallStreamEndpoint *self,
    +                                                        gpointer                 user_data)      : Has Details
    +

    +The CandidatePairSelected D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Local_Candidate :

    const GValueArray * (FIXME, generate documentation)

    arg_Remote_Candidate :

    const GValueArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "controlling-changed" signal

    +
    void                user_function                      (TpSvcCallStreamEndpoint *self,
    +                                                        gboolean                 arg_Controlling,
    +                                                        gpointer                 user_data)            : Has Details
    +

    +The ControllingChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Controlling :

    gboolean (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "endpoint-state-changed" signal

    +
    void                user_function                      (TpSvcCallStreamEndpoint *self,
    +                                                        guint                    arg_Component,
    +                                                        guint                    arg_State,
    +                                                        gpointer                 user_data)          : Has Details
    +

    +The EndpointStateChanged D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Component :

    guint (FIXME, generate documentation)

    arg_State :

    guint (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "remote-candidates-added" signal

    +
    void                user_function                      (TpSvcCallStreamEndpoint *self,
    +                                                        gpointer                 user_data)      : Has Details
    +

    +The RemoteCandidatesAdded D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Candidates :

    const GPtrArray * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    +

    The "remote-credentials-set" signal

    +
    void                user_function                      (TpSvcCallStreamEndpoint *self,
    +                                                        gchar                   *arg_Username,
    +                                                        gchar                   *arg_Password,
    +                                                        gpointer                 user_data)         : Has Details
    +

    +The RemoteCredentialsSet D-Bus signal is emitted whenever this GObject signal is. +

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

    self :

    an object

    arg_Username :

    const gchar * (FIXME, generate documentation)

    arg_Password :

    const gchar * (FIXME, generate documentation)

    user_data :

    user data set when the signal handler was connected.
    +
    +
    +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-dispatcher.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-dispatcher.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-dispatcher.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-dispatcher.html 2012-02-20 17:31:30.000000000 +0000 @@ -53,7 +53,7 @@ (TpSvcChannelDispatcher *self, const gchar *in_Account, GHashTable *in_Requested_Properties, - gint64 in_User_Action_Time, + gint64 in_User_Action_Time, const gchar *in_Preferred_Handler, DBusGMethodInvocation *context); void tp_svc_channel_dispatcher_implement_create_channel @@ -66,7 +66,7 @@ (TpSvcChannelDispatcher *self, const gchar *in_Account, GHashTable *in_Requested_Properties, - gint64 in_User_Action_Time, + gint64 in_User_Action_Time, const gchar *in_Preferred_Handler, GHashTable *in_Hints, DBusGMethodInvocation *context); @@ -80,7 +80,7 @@ (TpSvcChannelDispatcher *self, const gchar *in_Account, GHashTable *in_Requested_Properties, - gint64 in_User_Action_Time, + gint64 in_User_Action_Time, const gchar *in_Preferred_Handler, DBusGMethodInvocation *context); void tp_svc_channel_dispatcher_implement_ensure_channel @@ -93,7 +93,7 @@ (TpSvcChannelDispatcher *self, const gchar *in_Account, GHashTable *in_Requested_Properties, - gint64 in_User_Action_Time, + gint64 in_User_Action_Time, const gchar *in_Preferred_Handler, GHashTable *in_Hints, DBusGMethodInvocation *context); @@ -103,7 +103,7 @@ void (*tp_svc_channel_dispatcher_delegate_channels_impl) (TpSvcChannelDispatcher *self, const GPtrArray *in_Channels, - gint64 in_User_Action_Time, + gint64 in_User_Action_Time, const gchar *in_Preferred_Handler, DBusGMethodInvocation *context); void tp_svc_channel_dispatcher_implement_delegate_channels @@ -115,7 +115,7 @@ void (*tp_svc_channel_dispatcher_present_channel_impl) (TpSvcChannelDispatcher *self, const gchar *in_Channel, - gint64 in_User_Action_Time, + gint64 in_User_Action_Time, DBusGMethodInvocation *context); void tp_svc_channel_dispatcher_return_from_delegate_channels (DBusGMethodInvocation *context, @@ -244,7 +244,7 @@ (TpSvcChannelDispatcher *self, const gchar *in_Account, GHashTable *in_Requested_Properties, - gint64 in_User_Action_Time, + gint64 in_User_Action_Time, const gchar *in_Preferred_Handler, DBusGMethodInvocation *context);

    @@ -337,7 +337,7 @@ (TpSvcChannelDispatcher *self, const gchar *in_Account, GHashTable *in_Requested_Properties, - gint64 in_User_Action_Time, + gint64 in_User_Action_Time, const gchar *in_Preferred_Handler, GHashTable *in_Hints, DBusGMethodInvocation *context); @@ -435,7 +435,7 @@ (TpSvcChannelDispatcher *self, const gchar *in_Account, GHashTable *in_Requested_Properties, - gint64 in_User_Action_Time, + gint64 in_User_Action_Time, const gchar *in_Preferred_Handler, DBusGMethodInvocation *context);

    @@ -528,7 +528,7 @@ (TpSvcChannelDispatcher *self, const gchar *in_Account, GHashTable *in_Requested_Properties, - gint64 in_User_Action_Time, + gint64 in_User_Action_Time, const gchar *in_Preferred_Handler, GHashTable *in_Hints, DBusGMethodInvocation *context); @@ -601,7 +601,7 @@

    void                (*tp_svc_channel_dispatcher_delegate_channels_impl)
                                                             (TpSvcChannelDispatcher *self,
                                                              const GPtrArray *in_Channels,
    -                                                         gint64 in_User_Action_Time,
    +                                                         gint64 in_User_Action_Time,
                                                              const gchar *in_Preferred_Handler,
                                                              DBusGMethodInvocation *context);

    @@ -690,7 +690,7 @@

    void                (*tp_svc_channel_dispatcher_present_channel_impl)
                                                             (TpSvcChannelDispatcher *self,
                                                              const gchar *in_Channel,
    -                                                         gint64 in_User_Action_Time,
    +                                                         gint64 in_User_Action_Time,
                                                              DBusGMethodInvocation *context);

    The signature of an implementation of the D-Bus method diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-dispatch-operation.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-dispatch-operation.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-dispatch-operation.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-dispatch-operation.html 2012-02-20 17:31:29.000000000 +0000 @@ -66,7 +66,7 @@ void (*tp_svc_channel_dispatch_operation_handle_with_time_impl) (TpSvcChannelDispatchOperation *self, const gchar *in_Handler, - gint64 in_UserActionTime, + gint64 in_UserActionTime, DBusGMethodInvocation *context); void tp_svc_channel_dispatch_operation_implement_handle_with_time (TpSvcChannelDispatchOperationClass *klass, @@ -292,7 +292,7 @@

    void                (*tp_svc_channel_dispatch_operation_handle_with_time_impl)
                                                             (TpSvcChannelDispatchOperation *self,
                                                              const gchar *in_Handler,
    -                                                         gint64 in_UserActionTime,
    +                                                         gint64 in_UserActionTime,
                                                              DBusGMethodInvocation *context);

    The signature of an implementation of the D-Bus method diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-file-transfer.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-file-transfer.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-file-transfer.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-file-transfer.html 2012-02-20 17:31:29.000000000 +0000 @@ -51,7 +51,7 @@ guint in_Address_Type, guint in_Access_Control, const GValue *in_Access_Control_Param, - guint64 in_Offset, + guint64 in_Offset, DBusGMethodInvocation *context); void tp_svc_channel_type_file_transfer_emit_file_transfer_state_changed (gpointer instance, @@ -59,10 +59,10 @@ guint arg_Reason); void tp_svc_channel_type_file_transfer_emit_initial_offset_defined (gpointer instance, - guint64 arg_InitialOffset); + guint64 arg_InitialOffset); void tp_svc_channel_type_file_transfer_emit_transferred_bytes_changed (gpointer instance, - guint64 arg_Count); + guint64 arg_Count); void tp_svc_channel_type_file_transfer_emit_uri_defined (gpointer instance, const gchar *arg_URI); @@ -156,7 +156,7 @@ guint in_Address_Type, guint in_Access_Control, const GValue *in_Access_Control_Param, - guint64 in_Offset, + guint64 in_Offset, DBusGMethodInvocation *context);

    The signature of an implementation of the D-Bus method @@ -226,7 +226,7 @@

    tp_svc_channel_type_file_transfer_emit_initial_offset_defined ()

    void                tp_svc_channel_type_file_transfer_emit_initial_offset_defined
                                                             (gpointer instance,
    -                                                         guint64 arg_InitialOffset);
    + guint64 arg_InitialOffset);

    Type-safe wrapper around g_signal_emit to emit the InitialOffsetDefined signal on interface org.freedesktop.Telepathy.Channel.Type.FileTransfer. @@ -250,7 +250,7 @@

    tp_svc_channel_type_file_transfer_emit_transferred_bytes_changed ()

    void                tp_svc_channel_type_file_transfer_emit_transferred_bytes_changed
                                                             (gpointer instance,
    -                                                         guint64 arg_Count);
    + guint64 arg_Count);

    Type-safe wrapper around g_signal_emit to emit the TransferredBytesChanged signal on interface org.freedesktop.Telepathy.Channel.Type.FileTransfer. @@ -468,7 +468,7 @@

    The "initial-offset-defined" signal

    void                user_function                      (TpSvcChannelTypeFileTransfer *self,
    -                                                        guint64                       arg_InitialOffset,
    +                                                        guint64                       arg_InitialOffset,
                                                             gpointer                      user_data)              : Has Details

    The InitialOffsetDefined D-Bus signal is emitted whenever this GObject signal is. @@ -495,7 +495,7 @@

    The "transferred-bytes-changed" signal

    void                user_function                      (TpSvcChannelTypeFileTransfer *self,
    -                                                        guint64                       arg_Count,
    +                                                        guint64                       arg_Count,
                                                             gpointer                      user_data)      : Has Details

    The TransferredBytesChanged D-Bus signal is emitted whenever this GObject signal is. diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel.html 2012-02-20 17:31:30.000000000 +0000 @@ -116,7 +116,7 @@

    Known Implementations

    TpSvcChannel is implemented by - TpBaseChannel and TpBasePasswordChannel.

    + TpBaseCallChannel, TpBaseChannel, TpBaseMediaCallChannel and TpBasePasswordChannel.

    Signals

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-media.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-media.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-media.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-media.html 2012-02-20 17:31:30.000000000 +0000 @@ -27,6 +27,8 @@  |  Object Hierarchy  |  + Known Implementations +  |  Signals @@ -236,6 +238,15 @@
    +

    Known Implementations

    +

    +TpSvcChannelInterfaceDTMF is implemented by + TpBaseCallChannel and TpBaseMediaCallChannel.

    +

    +TpSvcChannelInterfaceHold is implemented by + TpBaseMediaCallChannel.

    +
    +

    Signals

       "stream-added"                                   : Has Details
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-securable.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-securable.html
    --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-channel-securable.html	2011-12-19 15:20:42.000000000 +0000
    +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-channel-securable.html	2012-02-20 17:31:29.000000000 +0000
    @@ -7,7 +7,7 @@
     
     
     
    -
    +
     
     
     
    @@ -18,7 +18,7 @@
     Up
     Home
     telepathy-glib API Reference Manual
    -Next
    +Next
     
     
     Top
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-client.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-client.html
    --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-client.html	2011-12-19 15:20:42.000000000 +0000
    +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-client.html	2012-02-20 17:31:30.000000000 +0000
    @@ -71,7 +71,7 @@
                                                              const gchar *in_Connection,
                                                              const GPtrArray *in_Channels,
                                                              const GPtrArray *in_Requests_Satisfied,
    -                                                         guint64 in_User_Action_Time,
    +                                                         guint64 in_User_Action_Time,
                                                              GHashTable *in_Handler_Info,
                                                              DBusGMethodInvocation *context);
     void                tp_svc_client_handler_implement_handle_channels
    @@ -374,7 +374,7 @@
                                                              const gchar *in_Connection,
                                                              const GPtrArray *in_Channels,
                                                              const GPtrArray *in_Requests_Satisfied,
    -                                                         guint64 in_User_Action_Time,
    +                                                         guint64 in_User_Action_Time,
                                                              GHashTable *in_Handler_Info,
                                                              DBusGMethodInvocation *context);

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-connection.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-connection.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-connection.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-connection.html 2012-02-20 17:31:30.000000000 +0000 @@ -43,7 +43,7 @@

    Synopsis

    -
    +
     #include <telepathy-glib/svc-connection.h>
     
                         TpSvcConnection;
    @@ -747,6 +747,9 @@
                                                             (TpSvcConnectionInterfaceContactList *self,
                                                              const GArray *in_Contacts,
                                                              DBusGMethodInvocation *context);
    +void                (*tp_svc_connection_interface_contact_list_download_impl)
    +                                                        (TpSvcConnectionInterfaceContactList *self,
    +                                                         DBusGMethodInvocation *context);
     void                tp_svc_connection_interface_contact_list_emit_contacts_changed
                                                             (gpointer instance,
                                                              GHashTable *arg_Changes,
    @@ -767,6 +770,9 @@
     void                tp_svc_connection_interface_contact_list_implement_authorize_publication
                                                             (TpSvcConnectionInterfaceContactListClass *klass,
                                                              tp_svc_connection_interface_contact_list_authorize_publication_impl impl);
    +void                tp_svc_connection_interface_contact_list_implement_download
    +                                                        (TpSvcConnectionInterfaceContactListClass *klass,
    +                                                         tp_svc_connection_interface_contact_list_download_impl impl);
     void                tp_svc_connection_interface_contact_list_implement_get_contact_list_attributes
                                                             (TpSvcConnectionInterfaceContactListClass *klass,
                                                              tp_svc_connection_interface_contact_list_get_contact_list_attributes_impl impl);
    @@ -793,6 +799,8 @@
                                                              DBusGMethodInvocation *context);
     void                tp_svc_connection_interface_contact_list_return_from_authorize_publication
                                                             (DBusGMethodInvocation *context);
    +void                tp_svc_connection_interface_contact_list_return_from_download
    +                                                        (DBusGMethodInvocation *context);
     void                tp_svc_connection_interface_contact_list_return_from_get_contact_list_attributes
                                                             (DBusGMethodInvocation *context,
                                                              GHashTable *out_Attributes);
    @@ -895,6 +903,35 @@
                                                             (TpSvcConnectionInterfacePowerSaving *self,
                                                              gboolean in_Activate,
                                                              DBusGMethodInvocation *context);
    +
    +
    +                    TpSvcConnectionInterfaceAddressing;
    +                    TpSvcConnectionInterfaceAddressingClass;
    +void                (*tp_svc_connection_interface_addressing_get_contacts_by_uri_impl)
    +                                                        (TpSvcConnectionInterfaceAddressing *self,
    +                                                         const gchar **in_URIs,
    +                                                         const gchar **in_Interfaces,
    +                                                         DBusGMethodInvocation *context);
    +void                (*tp_svc_connection_interface_addressing_get_contacts_by_vcard_field_impl)
    +                                                        (TpSvcConnectionInterfaceAddressing *self,
    +                                                         const gchar *in_Field,
    +                                                         const gchar **in_Addresses,
    +                                                         const gchar **in_Interfaces,
    +                                                         DBusGMethodInvocation *context);
    +void                tp_svc_connection_interface_addressing_implement_get_contacts_by_uri
    +                                                        (TpSvcConnectionInterfaceAddressingClass *klass,
    +                                                         tp_svc_connection_interface_addressing_get_contacts_by_uri_impl impl);
    +void                tp_svc_connection_interface_addressing_implement_get_contacts_by_vcard_field
    +                                                        (TpSvcConnectionInterfaceAddressingClass *klass,
    +                                                         tp_svc_connection_interface_addressing_get_contacts_by_vcard_field_impl impl);
    +void                tp_svc_connection_interface_addressing_return_from_get_contacts_by_uri
    +                                                        (DBusGMethodInvocation *context,
    +                                                         GHashTable *out_Requested,
    +                                                         GHashTable *out_Attributes);
    +void                tp_svc_connection_interface_addressing_return_from_get_contacts_by_vcard_field
    +                                                        (DBusGMethodInvocation *context,
    +                                                         GHashTable *out_Requested,
    +                                                         GHashTable *out_Attributes);
     
    @@ -975,6 +1012,10 @@ GInterface +----TpSvcConnectionInterfacePowerSaving +
    +  GInterface
    +   +----TpSvcConnectionInterfaceAddressing
    +

    Known Implementations

    @@ -6595,6 +6636,7 @@ IMPLEMENT (remove_contacts); IMPLEMENT (unsubscribe); IMPLEMENT (unpublish); + IMPLEMENT (download); #undef IMPLEMENT } @@ -6632,6 +6674,30 @@

    +

    tp_svc_connection_interface_contact_list_download_impl ()

    +
    void                (*tp_svc_connection_interface_contact_list_download_impl)
    +                                                        (TpSvcConnectionInterfaceContactList *self,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +Download on interface org.freedesktop.Telepathy.Connection.Interface.ContactList. +

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

    self :

    The object implementing this interface

    context :

    Used to return values or throw an error
    +
    +
    +

    tp_svc_connection_interface_contact_list_emit_contacts_changed ()

    void                tp_svc_connection_interface_contact_list_emit_contacts_changed
                                                             (gpointer instance,
    @@ -6778,6 +6844,31 @@
     

    +

    tp_svc_connection_interface_contact_list_implement_download ()

    +
    void                tp_svc_connection_interface_contact_list_implement_download
    +                                                        (TpSvcConnectionInterfaceContactListClass *klass,
    +                                                         tp_svc_connection_interface_contact_list_download_impl impl);
    +

    +Register an implementation for the Download method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the Download D-Bus method
    +
    +
    +

    tp_svc_connection_interface_contact_list_implement_get_contact_list_attributes ()

    void                tp_svc_connection_interface_contact_list_implement_get_contact_list_attributes
                                                             (TpSvcConnectionInterfaceContactListClass *klass,
    @@ -6983,6 +7074,23 @@
     

    +

    tp_svc_connection_interface_contact_list_return_from_download ()

    +
    void                tp_svc_connection_interface_contact_list_return_from_download
    +                                                        (DBusGMethodInvocation *context);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

    +
    ++ + + + +

    context :

    The D-Bus method invocation context
    +
    +
    +

    tp_svc_connection_interface_contact_list_return_from_get_contact_list_attributes ()

    void                tp_svc_connection_interface_contact_list_return_from_get_contact_list_attributes
                                                             (DBusGMethodInvocation *context,
    @@ -7782,6 +7890,225 @@
     
     
    +
    +
    +

    TpSvcConnectionInterfaceAddressing

    +
    typedef struct _TpSvcConnectionInterfaceAddressing TpSvcConnectionInterfaceAddressing;
    +

    +Dummy typedef representing any implementation of this interface. +

    +
    +
    +
    +

    TpSvcConnectionInterfaceAddressingClass

    +
    typedef struct _TpSvcConnectionInterfaceAddressingClass TpSvcConnectionInterfaceAddressingClass;
    +

    +The class of TpSvcConnectionInterfaceAddressing. +

    +

    +In a full implementation of this interface (i.e. all +methods implemented), the interface initialization +function used in G_IMPLEMENT_INTERFACE() would +typically look like this: +

    +

    +

    +
    +static void
    +implement_connection_interface_addressing (gpointer klass,
    +    gpointer unused G_GNUC_UNUSED)
    +{
    +#define IMPLEMENT(x) tp_svc_connection_interface_addressing_implement_##x (\
    +  klass, my_object_##x)
    +  IMPLEMENT (get_contacts_by_vcard_field);
    +  IMPLEMENT (get_contacts_by_uri);
    +#undef IMPLEMENT
    +}
    +
    +

    +

    +
    +
    +
    +

    tp_svc_connection_interface_addressing_get_contacts_by_uri_impl ()

    +
    void                (*tp_svc_connection_interface_addressing_get_contacts_by_uri_impl)
    +                                                        (TpSvcConnectionInterfaceAddressing *self,
    +                                                         const gchar **in_URIs,
    +                                                         const gchar **in_Interfaces,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +GetContactsByURI on interface org.freedesktop.Telepathy.Connection.Interface.Addressing1. +

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

    self :

    The object implementing this interface

    in_URIs :

    const gchar ** (FIXME, generate documentation)

    in_Interfaces :

    const gchar ** (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_connection_interface_addressing_get_contacts_by_vcard_field_impl ()

    +
    void                (*tp_svc_connection_interface_addressing_get_contacts_by_vcard_field_impl)
    +                                                        (TpSvcConnectionInterfaceAddressing *self,
    +                                                         const gchar *in_Field,
    +                                                         const gchar **in_Addresses,
    +                                                         const gchar **in_Interfaces,
    +                                                         DBusGMethodInvocation *context);
    +

    +The signature of an implementation of the D-Bus method +GetContactsByVCardField on interface org.freedesktop.Telepathy.Connection.Interface.Addressing1. +

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

    self :

    The object implementing this interface

    in_Field :

    const gchar * (FIXME, generate documentation)

    in_Addresses :

    const gchar ** (FIXME, generate documentation)

    in_Interfaces :

    const gchar ** (FIXME, generate documentation)

    context :

    Used to return values or throw an error
    +
    +
    +
    +

    tp_svc_connection_interface_addressing_implement_get_contacts_by_uri ()

    +
    void                tp_svc_connection_interface_addressing_implement_get_contacts_by_uri
    +                                                        (TpSvcConnectionInterfaceAddressingClass *klass,
    +                                                         tp_svc_connection_interface_addressing_get_contacts_by_uri_impl impl);
    +

    +Register an implementation for the GetContactsByURI method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the GetContactsByURI D-Bus method
    +
    +
    +
    +

    tp_svc_connection_interface_addressing_implement_get_contacts_by_vcard_field ()

    +
    void                tp_svc_connection_interface_addressing_implement_get_contacts_by_vcard_field
    +                                                        (TpSvcConnectionInterfaceAddressingClass *klass,
    +                                                         tp_svc_connection_interface_addressing_get_contacts_by_vcard_field_impl impl);
    +

    +Register an implementation for the GetContactsByVCardField method in the vtable +of an implementation of this interface. To be called from +the interface init function. +

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

    klass :

    A class whose instances implement this interface

    impl :

    A callback used to implement the GetContactsByVCardField D-Bus method
    +
    +
    +
    +

    tp_svc_connection_interface_addressing_return_from_get_contacts_by_uri ()

    +
    void                tp_svc_connection_interface_addressing_return_from_get_contacts_by_uri
    +                                                        (DBusGMethodInvocation *context,
    +                                                         GHashTable *out_Requested,
    +                                                         GHashTable *out_Attributes);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

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

    context :

    The D-Bus method invocation context

    out_Requested :

    GHashTable * (FIXME, generate documentation)

    out_Attributes :

    GHashTable * (FIXME, generate documentation)
    +
    +
    +
    +

    tp_svc_connection_interface_addressing_return_from_get_contacts_by_vcard_field ()

    +
    void                tp_svc_connection_interface_addressing_return_from_get_contacts_by_vcard_field
    +                                                        (DBusGMethodInvocation *context,
    +                                                         GHashTable *out_Requested,
    +                                                         GHashTable *out_Attributes);
    +

    +Return successfully by calling dbus_g_method_return(). +This inline function exists only to provide type-safety. +

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

    context :

    The D-Bus method invocation context

    out_Requested :

    GHashTable * (FIXME, generate documentation)

    out_Attributes :

    GHashTable * (FIXME, generate documentation)
    +

    Signal Details

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-debug.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-debug.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-debug.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-debug.html 2012-02-20 17:31:30.000000000 +0000 @@ -6,7 +6,7 @@ - + @@ -14,7 +14,7 @@ - + diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-generic.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-generic.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc-generic.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc-generic.html 2012-02-20 17:31:30.000000000 +0000 @@ -152,7 +152,7 @@

    Known Implementations

    TpSvcDBusProperties is implemented by - TpBaseChannel, TpBaseClient, TpBaseConnection, TpBaseConnectionManager, TpBasePasswordChannel, TpBaseProtocol, TpDebugSender, TpSimpleApprover, TpSimpleHandler and TpSimpleObserver.

    + TpBaseCallChannel, TpBaseCallContent, TpBaseCallStream, TpBaseChannel, TpBaseClient, TpBaseConnection, TpBaseConnectionManager, TpBaseMediaCallChannel, TpBaseMediaCallContent, TpBaseMediaCallStream, TpBasePasswordChannel, TpBaseProtocol, TpCallContentMediaDescription, TpCallStreamEndpoint, TpDebugSender, TpSimpleApprover, TpSimpleHandler and TpSimpleObserver.

    Signals

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-svc.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-svc.html 2012-02-20 17:31:30.000000000 +0000 @@ -60,14 +60,14 @@ 6 7 8 -
    +G_DEFINE_TYPE_WITH_CODE(GabbleMediaStream, + gabble_media_stream, + G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE(TP_TYPE_SVC_MEDIA_STREAM_HANDLER, + stream_handler_iface_init) + ) @@ -112,28 +112,28 @@ 22 23
    /* in header files */
    -void conn_aliasing_iface_init (gpointer, gpointer);
    -void conn_avatars_iface_init (gpointer, gpointer);
    -void conn_presence_iface_init (gpointer, gpointer);
    +void conn_aliasing_iface_init (gpointer, gpointer);
    +void conn_avatars_iface_init (gpointer, gpointer);
    +void conn_presence_iface_init (gpointer, gpointer);
     
     /* in gabble-connection.c */
    -static void conn_iface_init (gpointer, gpointer);
    -static void capabilities_iface_init (gpointer, gpointer);
    +static void conn_iface_init (gpointer, gpointer);
    +static void capabilities_iface_init (gpointer, gpointer);
     
    -G_DEFINE_TYPE_WITH_CODE(GabbleConnection,
    -    gabble_connection,
    -    TP_TYPE_BASE_CONNECTION,
    -    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION,
    -      conn_iface_init);
    -    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_ALIASING,
    -      conn_aliasing_iface_init);
    -    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_AVATARS,
    -      conn_avatars_iface_init);
    -    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CAPABILITIES,
    -      capabilities_init);
    -    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE,
    -      conn_presence_iface_init);
    -    )
    +G_DEFINE_TYPE_WITH_CODE(GabbleConnection, + gabble_connection, + TP_TYPE_BASE_CONNECTION, + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION, + conn_iface_init); + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_ALIASING, + conn_aliasing_iface_init); + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_AVATARS, + conn_avatars_iface_init); + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CAPABILITIES, + capabilities_init); + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE, + conn_presence_iface_init); + ) @@ -159,9 +159,9 @@
    1
     2
     3
    -
    void (*tp_svc_media_session_handler_error_impl)
    -  (TpSvcMediaSessionHandler *self, guint errno, const char *message,
    -   DBusGMethodInvocation *context);
    +
    void (*tp_svc_media_session_handler_error_impl)
    +  (TpSvcMediaSessionHandler *self, guint errno, const char *message,
    +   DBusGMethodInvocation *context);
    @@ -183,15 +183,15 @@ 7 8 9 -
    static void
    -gabble_media_session_error (TpSvcMediaSessionHandler *iface,
    -                            guint errno,
    -                            const char *message,
    -                            DBusGMethodInvocation *context)
    -{
    -  GabbleMediaSession *self = GABBLE_MEDIA_SESSION (iface);
    +        
    static void
    +gabble_media_session_error (TpSvcMediaSessionHandler *iface,
    +                            guint errno,
    +                            const char *message,
    +                            DBusGMethodInvocation *context)
    +{
    +  GabbleMediaSession *self = GABBLE_MEDIA_SESSION (iface);
     
    -  /* do stuff with self here */
    + /* do stuff with self here */
    @@ -234,18 +234,18 @@ 10 11 12 -
    static void
    -gabble_media_session_error (TpSvcMediaSessionHandler *iface,
    -                            guint errno,
    -                            const char *message,
    -                            DBusGMethodInvocation *context)
    -{
    -  GabbleMediaSession *self = GABBLE_MEDIA_SESSION (iface);
    +        
    static void
    +gabble_media_session_error (TpSvcMediaSessionHandler *iface,
    +                            guint errno,
    +                            const char *message,
    +                            DBusGMethodInvocation *context)
    +{
    +  GabbleMediaSession *self = GABBLE_MEDIA_SESSION (iface);
     
    -  /* do stuff with self here */
    +  /* do stuff with self here */
     
    -  tp_svc_media_session_handler_return_from_error (context);
    -}
    + tp_svc_media_session_handler_return_from_error (context); +}
    @@ -269,8 +269,8 @@
    1
     2
    -
    tp_svc_media_session_handler_emit_new_stream_handler (session,
    -  object_path, id, media_type, TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL);
    +
    tp_svc_media_session_handler_emit_new_stream_handler (session,
    +  object_path, id, media_type, TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL);
    @@ -301,17 +301,17 @@ 9 10 11 -
    static void
    -session_handler_iface_init (gpointer g_iface, gpointer iface_data)
    -{
    -  TpSvcMediaSessionHandlerClass *klass =
    -    (TpSvcMediaSessionHandlerClass *)g_iface;
    -
    -  tp_svc_media_session_handler_implement_error (klass,
    -      gabble_media_session_error);
    -  tp_svc_media_session_handler_implement_ready (klass,
    -      gabble_media_session_ready);
    -}
    +
    static void
    +session_handler_iface_init (gpointer g_iface, gpointer iface_data)
    +{
    +  TpSvcMediaSessionHandlerClass *klass =
    +    (TpSvcMediaSessionHandlerClass *)g_iface;
    +
    +  tp_svc_media_session_handler_implement_error (klass,
    +      gabble_media_session_error);
    +  tp_svc_media_session_handler_implement_ready (klass,
    +      gabble_media_session_ready);
    +}
    @@ -338,18 +338,18 @@ 10 11 12 -
    static void
    -session_handler_iface_init (gpointer g_iface, gpointer iface_data)
    -{
    -  TpSvcMediaSessionHandlerClass *klass =
    -    (TpSvcMediaSessionHandlerClass *)g_iface;
    -
    -#define IMPLEMENT(x) tp_svc_media_session_handler_implement_##x (\
    -    klass, gabble_media_session_##x)
    -  IMPLEMENT(error);
    -  IMPLEMENT(ready);
    -#undef IMPLEMENT
    -}
    +
    static void
    +session_handler_iface_init (gpointer g_iface, gpointer iface_data)
    +{
    +  TpSvcMediaSessionHandlerClass *klass =
    +    (TpSvcMediaSessionHandlerClass *)g_iface;
    +
    +#define IMPLEMENT(x) tp_svc_media_session_handler_implement_##x (\
    +    klass, gabble_media_session_##x)
    +  IMPLEMENT(error);
    +  IMPLEMENT(ready);
    +#undef IMPLEMENT
    +}
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-TpContactsMixin.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-TpContactsMixin.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-TpContactsMixin.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-TpContactsMixin.html 2012-02-20 17:31:30.000000000 +0000 @@ -53,7 +53,7 @@ void tp_contacts_mixin_iface_init (gpointer g_iface, gpointer iface_data); void tp_contacts_mixin_init (GObject *obj, - gsize offset); + gsize offset); void tp_contacts_mixin_set_contact_attribute (GHashTable *contact_attributes, TpHandle handle, @@ -172,8 +172,8 @@
    1
     2
    -
    tp_contacts_mixin_class_init ((GObjectClass *) klass,
    -                         G_STRUCT_OFFSET (SomeObjectClass, contacts_mixin));
    +
    tp_contacts_mixin_class_init ((GObjectClass *) klass,
    +                         G_STRUCT_OFFSET (SomeObjectClass, contacts_mixin));
    @@ -243,7 +243,7 @@

    tp_contacts_mixin_init ()

    void                tp_contacts_mixin_init              (GObject *obj,
    -                                                         gsize offset);
    + gsize offset);

    Initialize the contacts mixin. Should be called from the implementation's instance init function like so: @@ -256,8 +256,8 @@

    1
     2
    -
    tp_contacts_mixin_init ((GObject *) self,
    -                    G_STRUCT_OFFSET (SomeObject, contacts_mixin));
    +
    tp_contacts_mixin_init ((GObject *) self,
    +                    G_STRUCT_OFFSET (SomeObject, contacts_mixin));
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-TpMessageMixin.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-TpMessageMixin.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-TpMessageMixin.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-TpMessageMixin.html 2012-02-20 17:31:30.000000000 +0000 @@ -54,7 +54,7 @@ TpDeliveryReportingSupportFlags delivery_reporting_support_flags, const gchar * const *supported_content_types); void tp_message_mixin_init (GObject *obj, - gsize offset, + gsize offset, TpBaseConnection *connection); void tp_message_mixin_init_dbus_properties (GObjectClass *cls); @@ -108,10 +108,10 @@ 2 3 4 -
    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_TEXT,
    -  tp_message_mixin_text_iface_init);
    -G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_MESSAGES,
    -  tp_message_mixin_messages_iface_init);
    +
    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_TEXT,
    +  tp_message_mixin_text_iface_init);
    +G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_MESSAGES,
    +  tp_message_mixin_messages_iface_init);
    @@ -245,7 +245,7 @@

    tp_message_mixin_init ()

    void                tp_message_mixin_init               (GObject *obj,
    -                                                         gsize offset,
    +                                                         gsize offset,
                                                              TpBaseConnection *connection);

    Initialize the mixin. Should be called from the implementation's @@ -260,9 +260,9 @@

    1
     2
     3
    -
    tp_message_mixin_init ((GObject *) self,
    -    G_STRUCT_OFFSET (SomeObject, message_mixin),
    -    self->connection);
    +
    tp_message_mixin_init ((GObject *) self,
    +    G_STRUCT_OFFSET (SomeObject, message_mixin),
    +    self->connection);
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-TpPresenceMixin.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-TpPresenceMixin.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-TpPresenceMixin.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-TpPresenceMixin.html 2012-02-20 17:31:30.000000000 +0000 @@ -108,7 +108,7 @@

    -Implementing SimplePresence

    +Implementing SimplePresence

    Since 0.7.13 this mixin supports the entire SimplePresence interface. You can implement TpSvcConnectionInterfaceSimplePresence as follows: @@ -131,13 +131,13 @@ 5 6 7 -

    G_DEFINE_TYPE_WITH_CODE (MyConnection, my_connection,
    -    TP_TYPE_BASE_CONNECTION,
    -    // ...
    -    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_SIMPLE_PRESENCE,
    -        tp_presence_mixin_simple_presence_iface_init);
    -    // ...
    -    )
    +
    G_DEFINE_TYPE_WITH_CODE (MyConnection, my_connection,
    +    TP_TYPE_BASE_CONNECTION,
    +    // ...
    +    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_SIMPLE_PRESENCE,
    +        tp_presence_mixin_simple_presence_iface_init);
    +    // ...
    +    )
    @@ -160,7 +160,7 @@

    -Implementing old-style Presence

    +Implementing old-style Presence

    This mixin also supports a large subset of the deprecated Presence interface. It does not support protocols where it is possible to set @@ -185,13 +185,13 @@ 5 6 7 -

    G_DEFINE_TYPE_WITH_CODE (MyConnection, my_connection,
    -    TP_TYPE_BASE_CONNECTION,
    -    // ...
    -    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE,
    -        tp_presence_mixin_iface_init);
    -    // ...
    -    )
    +
    G_DEFINE_TYPE_WITH_CODE (MyConnection, my_connection,
    +    TP_TYPE_BASE_CONNECTION,
    +    // ...
    +    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE,
    +        tp_presence_mixin_iface_init);
    +    // ...
    +    )
    @@ -568,13 +568,13 @@ 5 6 7 -
    TpPresenceMixinClass *mixin_class;
    +        
    TpPresenceMixinClass *mixin_class;
     
    -tp_presence_mixin_class_init ((GObjectClass *) klass,
    -    G_STRUCT_OFFSET (SomeObjectClass, presence_mixin));
    -mixin_class = TP_PRESENCE_MIXIN_CLASS (klass);
    -mixin_class->get_maximum_status_message_length =
    -    some_object_get_maximum_status_message_length;
    +tp_presence_mixin_class_init ((GObjectClass *) klass, + G_STRUCT_OFFSET (SomeObjectClass, presence_mixin)); +mixin_class = TP_PRESENCE_MIXIN_CLASS (klass); +mixin_class->get_maximum_status_message_length = + some_object_get_maximum_status_message_length;
    @@ -642,9 +642,9 @@
    1
     2
     3
    -
    tp_presence_mixin_class_init ((GObjectClass *) klass,
    -                              G_STRUCT_OFFSET (SomeObjectClass,
    -                                               presence_mixin));
    +
    tp_presence_mixin_class_init ((GObjectClass *) klass,
    +                              G_STRUCT_OFFSET (SomeObjectClass,
    +                                               presence_mixin));
    @@ -708,8 +708,8 @@
    1
     2
    -
    tp_presence_mixin_init ((GObject *) self,
    -                        G_STRUCT_OFFSET (SomeObject, presence_mixin));
    +
    tp_presence_mixin_init ((GObject *) self,
    +                        G_STRUCT_OFFSET (SomeObject, presence_mixin));
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-TpPropertiesMixin.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-TpPropertiesMixin.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-TpPropertiesMixin.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-TpPropertiesMixin.html 2012-02-20 17:31:29.000000000 +0000 @@ -336,9 +336,9 @@
    1
     2
     3
    -
    tp_properties_mixin_class_init ((GObjectClass *) klass,
    -                                G_STRUCT_OFFSET (SomeObjectClass,
    -                                 properties_mixin));
    +
    tp_properties_mixin_class_init ((GObjectClass *) klass,
    +                                G_STRUCT_OFFSET (SomeObjectClass,
    +                                 properties_mixin));
    @@ -392,9 +392,9 @@
    1
     2
     3
    -
    tp_properties_mixin_init ((GObject *) self,
    -                          G_STRUCT_OFFSET (SomeObject, properties_mixin),
    -                          self->contact_repo);
    +
    tp_properties_mixin_init ((GObject *) self,
    +                          G_STRUCT_OFFSET (SomeObject, properties_mixin),
    +                          self->contact_repo);
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-TpTextMixin.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-TpTextMixin.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-TpTextMixin.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-TpTextMixin.html 2012-02-20 17:31:30.000000000 +0000 @@ -181,8 +181,8 @@
    1
     2
    -
    tp_text_mixin_class_init ((GObjectClass *) klass,
    -                          G_STRUCT_OFFSET (SomeObjectClass, text_mixin));
    +
    tp_text_mixin_class_init ((GObjectClass *) klass,
    +                          G_STRUCT_OFFSET (SomeObjectClass, text_mixin));
    @@ -223,9 +223,9 @@
    1
     2
     3
    -
    tp_text_mixin_init ((GObject *) self,
    -                    G_STRUCT_OFFSET (SomeObject, text_mixin),
    -                    self->contact_repo);
    +
    tp_text_mixin_init ((GObject *) self,
    +                    G_STRUCT_OFFSET (SomeObject, text_mixin),
    +                    self->contact_repo);
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-util.html telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-util.html --- telepathy-glib-0.17.4/docs/reference/html/telepathy-glib-util.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/telepathy-glib-util.html 2012-02-20 17:31:30.000000000 +0000 @@ -61,12 +61,12 @@ gpointer p); GValue * tp_g_value_slice_new_double (double d); GValue * tp_g_value_slice_new_int (gint n); -GValue * tp_g_value_slice_new_int64 (gint64 n); +GValue * tp_g_value_slice_new_int64 (gint64 n); GValue * tp_g_value_slice_new_string (const gchar *string); GValue * tp_g_value_slice_new_static_string (const gchar *string); GValue * tp_g_value_slice_new_take_string (gchar *string); GValue * tp_g_value_slice_new_uint (guint n); -GValue * tp_g_value_slice_new_uint64 (guint64 n); +GValue * tp_g_value_slice_new_uint64 (guint64 n); GValue * tp_g_value_slice_new_byte (guchar n); void tp_g_value_slice_free (GValue *value); GValue * tp_g_value_slice_dup (const GValue *value); @@ -82,11 +82,11 @@ gchar * tp_escape_as_identifier (const gchar *name); gboolean tp_strv_contains (const gchar * const *strv, const gchar *str); -gint64 tp_g_key_file_get_int64 (GKeyFile *key_file, +gint64 tp_g_key_file_get_int64 (GKeyFile *key_file, const gchar *group_name, const gchar *key, GError **error); -guint64 tp_g_key_file_get_uint64 (GKeyFile *key_file, +guint64 tp_g_key_file_get_uint64 (GKeyFile *key_file, const gchar *group_name, const gchar *key, GError **error); @@ -95,11 +95,11 @@ GCallback c_handler, gpointer gobject, GConnectFlags connect_flags); -GValueArray * tp_value_array_build (gsize length, +GValueArray * tp_value_array_build (gsize length, GType type, ...); void tp_value_array_unpack (GValueArray *array, - gsize len, + gsize len, ...); TpWeakRef; TpWeakRef * tp_weak_ref_new (gpointer object, @@ -118,9 +118,9 @@ GAsyncReadyCallback callback, gpointer user_data, gpointer source_tag); -gint64 tp_user_action_time_from_x11 (guint32 x11_time); -gboolean tp_user_action_time_should_present (gint64 user_action_time, - guint32 *x11_time); +gint64 tp_user_action_time_from_x11 (guint32 x11_time); +gboolean tp_user_action_time_should_present (gint64 user_action_time, + guint32 *x11_time); gchar * tp_utf8_make_valid (const gchar *name); @@ -517,7 +517,7 @@

    tp_g_value_slice_new_int64 ()

    -
    GValue *            tp_g_value_slice_new_int64          (gint64 n);
    +
    GValue *            tp_g_value_slice_new_int64          (gint64 n);

    Slice-allocate and initialize a GValue. This function is convenient to use when constructing hash tables from string to GValue, for example. @@ -645,7 +645,7 @@


    tp_g_value_slice_new_uint64 ()

    -
    GValue *            tp_g_value_slice_new_uint64         (guint64 n);
    +
    GValue *            tp_g_value_slice_new_uint64         (guint64 n);

    Slice-allocate and initialize a GValue. This function is convenient to use when constructing hash tables from string to GValue, for example. @@ -964,7 +964,7 @@


    tp_g_key_file_get_int64 ()

    -
    gint64              tp_g_key_file_get_int64             (GKeyFile *key_file,
    +
    gint64              tp_g_key_file_get_int64             (GKeyFile *key_file,
                                                              const gchar *group_name,
                                                              const gchar *key,
                                                              GError **error);
    @@ -1006,7 +1006,7 @@

    tp_g_key_file_get_uint64 ()

    -
    guint64             tp_g_key_file_get_uint64            (GKeyFile *key_file,
    +
    guint64             tp_g_key_file_get_uint64            (GKeyFile *key_file,
                                                              const gchar *group_name,
                                                              const gchar *key,
                                                              GError **error);
    @@ -1111,7 +1111,7 @@

    tp_value_array_build ()

    -
    GValueArray *       tp_value_array_build                (gsize length,
    +
    GValueArray *       tp_value_array_build                (gsize length,
                                                              GType type,
                                                              ...);

    @@ -1122,7 +1122,7 @@

    -

    Example 3.  using tp_value_array_build

    +

    Example 3.  using tp_value_array_build

    @@ -1131,10 +1131,10 @@ 2 3 4 - +
    GValueArray *array = tp_value_array_build (2,
    -   G_TYPE_STRING, host,
    -   G_TYPE_UINT, port,
    -   G_TYPE_INVALID);
    GValueArray *array = tp_value_array_build (2,
    +   G_TYPE_STRING, host,
    +   G_TYPE_UINT, port,
    +   G_TYPE_INVALID);
    @@ -1171,7 +1171,7 @@

    tp_value_array_unpack ()

    void                tp_value_array_unpack               (GValueArray *array,
    -                                                         gsize len,
    +                                                         gsize len,
                                                              ...);

    Unpacks a GValueArray into separate variables. @@ -1183,7 +1183,7 @@

    -

    Example 4. using tp_value_array_unpack

    +

    Example 4. using tp_value_array_unpack

    @@ -1194,12 +1194,12 @@ 4 5 6 - +tp_value_array_unpack(array,2, + &host, + &port);
    const gchar *host;
    -guint port;
    +        
    const gchar *host;
    +guint port;
     
    -tp_value_array_unpack (array, 2,
    -   &host,
    -   &port);
    @@ -1389,20 +1389,20 @@ 12 13 14
    -
    typedef struct {
    -  TpConnection *conn;
    -  GError *error;
    -  GHashTable *table;
    -  MyStruct *misc;
    -} Foo;
    -Foo *foo;
    +        
    typedef struct {
    +  TpConnection *conn;
    +  GError *error;
    +  GHashTable *table;
    +  MyStruct *misc;
    +} Foo;
    +Foo *foo;
     
    -...
    +...
     
    -tp_clear_object (&foo->conn);
    -g_clear_error (&foo->error);
    -tp_clear_boxed (G_TYPE_HASH_TABLE, &foo->table);
    -tp_clear_pointer (&foo->misc, my_struct_destroy);
    +tp_clear_object (&foo->conn); +g_clear_error (&foo->error); +tp_clear_boxed (G_TYPE_HASH_TABLE, &foo->table); +tp_clear_pointer (&foo->misc, my_struct_destroy);
    @@ -1532,7 +1532,7 @@

    tp_user_action_time_from_x11 ()

    -
    gint64              tp_user_action_time_from_x11        (guint32 x11_time);
    +
    gint64              tp_user_action_time_from_x11        (guint32 x11_time);

    Convert an X11 timestamp into a user action time as used in Telepathy.

    @@ -1560,12 +1560,12 @@

    tp_user_action_time_should_present ()

    -
    gboolean            tp_user_action_time_should_present  (gint64 user_action_time,
    -                                                         guint32 *x11_time);
    +
    gboolean            tp_user_action_time_should_present  (gint64 user_action_time,
    +                                                         guint32 *x11_time);

    Interpret a Telepathy user action time to decide whether a Handler should attempt to gain focus. If TRUE is returned, it would be appropriate to -call gtk_window_present_with_time() using x11_time as input, for instance. +call gtk_window_present_with_time() using x11_time as input, for instance.

    x11_time is used to return a timestamp in the right format for X11, diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpBaseCallChannel.html telepathy-glib-0.17.5/docs/reference/html/TpBaseCallChannel.html --- telepathy-glib-0.17.4/docs/reference/html/TpBaseCallChannel.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpBaseCallChannel.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,910 @@ + + + + +TpBaseCallChannel + + + + + + + + + + + + + + + + + + + +

    +
    +
    + + +
    +

    TpBaseCallChannel

    +

    TpBaseCallChannel — base class for TpSvcChannelTypeCall implementations

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/telepathy-glib.h>
    +
    +                    TpBaseCallChannel;
    +struct              TpBaseCallChannelClass;
    +void                (*TpBaseCallChannelVoidFunc)        (TpBaseCallChannel *self);
    +TpBaseCallContent * (*TpBaseCallChannelAddContentFunc)  (TpBaseCallChannel *self,
    +                                                         const gchar *name,
    +                                                         TpMediaStreamType media,
    +                                                         TpMediaStreamDirection initial_direction,
    +                                                         GError **error);
    +void                (*TpBaseCallChannelHangupFunc)      (TpBaseCallChannel *self,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *detailed_reason,
    +                                                         const gchar *message);
    +TpCallState         tp_base_call_channel_get_state      (TpBaseCallChannel *self);
    +void                tp_base_call_channel_set_state      (TpBaseCallChannel *self,
    +                                                         TpCallState state,
    +                                                         guint actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +gboolean            tp_base_call_channel_has_initial_audio
    +                                                        (TpBaseCallChannel *self,
    +                                                         const gchar **initial_audio_name);
    +gboolean            tp_base_call_channel_has_initial_video
    +                                                        (TpBaseCallChannel *self,
    +                                                         const gchar **initial_video_name);
    +gboolean            tp_base_call_channel_has_mutable_contents
    +                                                        (TpBaseCallChannel *self);
    +GList *             tp_base_call_channel_get_contents   (TpBaseCallChannel *self);
    +void                tp_base_call_channel_add_content    (TpBaseCallChannel *self,
    +                                                         TpBaseCallContent *content);
    +void                tp_base_call_channel_remove_content (TpBaseCallChannel *self,
    +                                                         TpBaseCallContent *content,
    +                                                         TpHandle actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +void                tp_base_call_channel_update_member_flags
    +                                                        (TpBaseCallChannel *self,
    +                                                         TpHandle contact,
    +                                                         TpCallMemberFlags new_flags,
    +                                                         TpHandle actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +void                tp_base_call_channel_remove_member  (TpBaseCallChannel *self,
    +                                                         TpHandle contact,
    +                                                         TpHandle actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +GHashTable *        tp_base_call_channel_get_call_members
    +                                                        (TpBaseCallChannel *self);
    +void                tp_base_call_channel_remote_accept  (TpBaseCallChannel *self);
    +gboolean            tp_base_call_channel_is_accepted    (TpBaseCallChannel *self);
    +
    +
    +
    +

    Object Hierarchy

    +
    +  GObject
    +   +----TpBaseChannel
    +         +----TpBaseCallChannel
    +               +----TpBaseMediaCallChannel
    +
    +
    +
    +

    Implemented Interfaces

    +

    +TpBaseCallChannel implements + TpSvcDBusProperties, TpSvcChannel, TpChannelIface, TpExportableChannel, TpSvcChannelTypeCall and TpSvcChannelInterfaceDTMF.

    +
    +
    +

    Properties

    +
    +  "call-flags"               guint                 : Read
    +  "call-members"             GHashTable_guint+guint_*  : Read
    +  "call-state"               guint                 : Read
    +  "call-state-details"       GHashTable_gchararray+GValue_*  : Read
    +  "call-state-reason"        GValueArray_guint+guint+gchararray+gchararray_*  : Read
    +  "contents"                 GPtrArray_DBusGObjectPath_*  : Read
    +  "hardware-streaming"       gboolean              : Read
    +  "initial-audio"            gboolean              : Read / Write / Construct Only
    +  "initial-audio-name"       gchar*                : Read / Write / Construct Only
    +  "initial-tones"            gchar*                : Read / Write / Construct Only
    +  "initial-transport"        guint                 : Read / Write / Construct Only
    +  "initial-video"            gboolean              : Read / Write / Construct Only
    +  "initial-video-name"       gchar*                : Read / Write / Construct Only
    +  "member-identifiers"       GHashTable_guint+gchararray_*  : Read
    +  "mutable-contents"         gboolean              : Read / Write / Construct Only
    +
    +
    +
    +

    Description

    +

    +This base class makes it easier to write TpSvcChannelTypeCall +implementations by implementing its properties, and some of its methods. +

    +

    +Subclasses should fill in TpBaseCallChannelClass.accept, +TpBaseCallChannelClass.add_content and TpBaseCallChannelClass.hangup +virtual function. +

    +
    +
    +

    Details

    +
    +

    TpBaseCallChannel

    +
    typedef struct _TpBaseCallChannel TpBaseCallChannel;
    +

    +A base class for call channel implementations +

    +

    Since 0.17.5

    +
    +
    +
    +

    struct TpBaseCallChannelClass

    +
    struct TpBaseCallChannelClass {
    +  TpBaseCallChannelVoidFunc set_ringing;
    +  TpBaseCallChannelVoidFunc set_queued;
    +  TpBaseCallChannelVoidFunc accept;
    +  TpBaseCallChannelAddContentFunc add_content;
    +  TpBaseCallChannelHangupFunc hangup;
    +};
    +
    +

    +The class structure for TpBaseCallChannel +

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

    TpBaseCallChannelVoidFunc set_ringing;

    Notify members that client is ringing.

    TpBaseCallChannelVoidFunc set_queued;

    Notify members that call is queued.

    TpBaseCallChannelVoidFunc accept;

    accept the call. Note that TpBaseMediaCallChannel subclasses should +not override this virtual method, but TpBaseMediaCallChannelClass.accept +instead.

    TpBaseCallChannelAddContentFunc add_content;

    add content to the call. Implementation must call +tp_base_call_channel_add_content(). Can be NULL if +"mutable-contents" is FALSE.

    TpBaseCallChannelHangupFunc hangup;

    hangup the call.
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseCallChannelVoidFunc ()

    +
    void                (*TpBaseCallChannelVoidFunc)        (TpBaseCallChannel *self);
    +

    +Signature of an implementation of TpBaseCallChannelClass.set_ringing, +TpBaseCallChannelClass.set_queued and TpBaseCallChannelClass.accept. +

    +
    ++ + + + +

    self :

    a TpBaseCallChannel +
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseCallChannelAddContentFunc ()

    +
    TpBaseCallContent * (*TpBaseCallChannelAddContentFunc)  (TpBaseCallChannel *self,
    +                                                         const gchar *name,
    +                                                         TpMediaStreamType media,
    +                                                         TpMediaStreamDirection initial_direction,
    +                                                         GError **error);
    +

    +Signature of an implementation of TpBaseCallChannelClass.add_content. +

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

    self :

    a TpBaseCallChannel +

    name :

    the name for the new content

    media :

    a TpMediaStreamType +

    initial_direction :

    the desired initial direction of streams in the new +content

    error :

    a GError to fill

    Returns :

    a borrowed TpBaseCallContent.
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseCallChannelHangupFunc ()

    +
    void                (*TpBaseCallChannelHangupFunc)      (TpBaseCallChannel *self,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *detailed_reason,
    +                                                         const gchar *message);
    +

    +Signature of an implementation of TpBaseCallChannelClass.hangup. +

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

    self :

    a TpBaseCallChannel +

    reason :

    the TpCallStateChangeReason of the change

    detailed_reason :

    a more specific reason for the call hangup, if one is +available, or an empty string otherwise.

    message :

    a human-readable message to be sent to the remote contact(s).
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_get_state ()

    +
    TpCallState         tp_base_call_channel_get_state      (TpBaseCallChannel *self);
    +

    + +

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

    self :

    a TpBaseCallChannel +

    Returns :

    the value of "call-state" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_set_state ()

    +
    void                tp_base_call_channel_set_state      (TpBaseCallChannel *self,
    +                                                         TpCallState state,
    +                                                         guint actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +

    +Changes the call state and emit StateChanged signal with the new state. +

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

    self :

    a TpBaseCallChannel +

    state :

    the new TpCallState +

    actor_handle :

    the contact responsible for the change, or 0 if no contact was +responsible.

    reason :

    the TpCallStateChangeReason of the change

    dbus_reason :

    a specific reason for the change, which may be a D-Bus error in +the Telepathy namespace, a D-Bus error in any other namespace (for +implementation-specific errors), or the empty string to indicate that the +state change was not an error.

    message :

    an optional debug message, to expediate debugging the potentially +many processes involved in a call.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_has_initial_audio ()

    +
    gboolean            tp_base_call_channel_has_initial_audio
    +                                                        (TpBaseCallChannel *self,
    +                                                         const gchar **initial_audio_name);
    +

    + +

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

    self :

    a TpBaseCallChannel +

    initial_audio_name :

    a place to set the +value of "initial-audio-name". [out][allow-none][transfer none] +

    Returns :

    the value of "initial-audio" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_has_initial_video ()

    +
    gboolean            tp_base_call_channel_has_initial_video
    +                                                        (TpBaseCallChannel *self,
    +                                                         const gchar **initial_video_name);
    +

    + +

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

    self :

    a TpBaseCallChannel +

    initial_video_name :

    a place to set the +value of "initial-video-name". [out][allow-none][transfer none] +

    Returns :

    the value of "initial-video" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_has_mutable_contents ()

    +
    gboolean            tp_base_call_channel_has_mutable_contents
    +                                                        (TpBaseCallChannel *self);
    +

    + +

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

    self :

    a TpBaseCallChannel +

    Returns :

    the value of "mutable-contents" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_get_contents ()

    +
    GList *             tp_base_call_channel_get_contents   (TpBaseCallChannel *self);
    +

    +Get the contents of this call. The GList and its elements must not be freed +and should be copied before doing any modification. +

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

    self :

    a TpBaseCallChannel +

    Returns :

    a GList of TpBaseCallContent +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_add_content ()

    +
    void                tp_base_call_channel_add_content    (TpBaseCallChannel *self,
    +                                                         TpBaseCallContent *content);
    +

    +Add content to self. If content's "disposition" is +TP_CALL_CONTENT_DISPOSITION_INITIAL, also set +"initial-audio" and "initial-audio-name" +properties (or "initial-video" and +"initial-video-name"). +Note that it is not allowed to add INITIAL contents after having registered +self on the bus. +

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

    self :

    a TpBaseCallChannel +

    content :

    a TpBaseCallContent to add
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_remove_content ()

    +
    void                tp_base_call_channel_remove_content (TpBaseCallChannel *self,
    +                                                         TpBaseCallContent *content,
    +                                                         TpHandle actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +

    +Remove content from self. +

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

    self :

    a TpBaseCallChannel +

    content :

    a TpBaseCallContent to remove

    actor_handle :

    the contact responsible for the change, or 0 if no contact was +responsible.

    reason :

    the TpCallStateChangeReason of the change

    dbus_reason :

    a specific reason for the change, which may be a D-Bus error in +the Telepathy namespace, a D-Bus error in any other namespace (for +implementation-specific errors), or the empty string to indicate that the +state change was not an error.

    message :

    an optional debug message, to expediate debugging the potentially +many processes involved in a call.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_update_member_flags ()

    +
    void                tp_base_call_channel_update_member_flags
    +                                                        (TpBaseCallChannel *self,
    +                                                         TpHandle contact,
    +                                                         TpCallMemberFlags new_flags,
    +                                                         TpHandle actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +

    +Add or update contact call member with flags flags. +

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

    self :

    a TpBaseCallChannel +

    contact :

    the contact to update

    new_flags :

    the new TpCallMemberFlags of contact +

    actor_handle :

    the contact responsible for the change, or 0 if no contact was +responsible.

    reason :

    the TpCallStateChangeReason of the change

    dbus_reason :

    a specific reason for the change, which may be a D-Bus error in +the Telepathy namespace, a D-Bus error in any other namespace (for +implementation-specific errors), or the empty string to indicate that the +state change was not an error.

    message :

    an optional debug message, to expediate debugging the potentially +many processes involved in a call.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_remove_member ()

    +
    void                tp_base_call_channel_remove_member  (TpBaseCallChannel *self,
    +                                                         TpHandle contact,
    +                                                         TpHandle actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +

    +Remove contact from call members. +

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

    self :

    a TpBaseCallChannel +

    contact :

    the contact to remove

    actor_handle :

    the contact responsible for the change, or 0 if no contact was +responsible.

    reason :

    the TpCallStateChangeReason of the change

    dbus_reason :

    a specific reason for the change, which may be a D-Bus error in +the Telepathy namespace, a D-Bus error in any other namespace (for +implementation-specific errors), or the empty string to indicate that the +state change was not an error.

    message :

    an optional debug message, to expediate debugging the potentially +many processes involved in a call.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_get_call_members ()

    +
    GHashTable *        tp_base_call_channel_get_call_members
    +                                                        (TpBaseCallChannel *self);
    +

    + +

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

    self :

    a TpBaseCallChannel +

    Returns :

    the value of "call-members".
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_remote_accept ()

    +
    void                tp_base_call_channel_remote_accept  (TpBaseCallChannel *self);
    +

    +Must be called when the remote contact accepted the call. +"state" must be either TP_CALL_STATE_INITIALISED or +TP_CALL_STATE_INITIALISING and will then change to TP_CALL_STATE_ACCEPTED. +

    +

    +Must be used only for outgoing calls. +

    +
    ++ + + + +

    self :

    a TpBaseCallChannel +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_channel_is_accepted ()

    +
    gboolean            tp_base_call_channel_is_accepted    (TpBaseCallChannel *self);
    +

    + +

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

    self :

    a TpBaseCallChannel +

    Returns :

    Whether or not the call has been remotely accepted.
    +

    Since 0.17.5

    +
    +
    +
    +

    Property Details

    +
    +

    The "call-flags" property

    +
      "call-flags"               guint                 : Read
    +

    +The flags of this call. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "call-members" property

    +
      "call-members"             GHashTable_guint+guint_*  : Read
    +

    +GHashTable mapping TpHandle of each call member to their +TpCallMemberFlags. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "call-state" property

    +
      "call-state"               guint                 : Read
    +

    +The state of this call. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "call-state-details" property

    +
      "call-state-details"       GHashTable_gchararray+GValue_*  : Read
    +

    +Details on the call state. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "call-state-reason" property

    +
      "call-state-reason"        GValueArray_guint+guint+gchararray+gchararray_*  : Read
    +

    +The reason for last call state change. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "contents" property

    +
      "contents"                 GPtrArray_DBusGObjectPath_*  : Read
    +

    +GPtrArray of object-paths of the TpBaseCallContent objects. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "hardware-streaming" property

    +
      "hardware-streaming"       gboolean              : Read
    +

    +Indicate to clients whether or not this Connection Manager has hardware +streaming. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "initial-audio" property

    +
      "initial-audio"            gboolean              : Read / Write / Construct Only
    +

    +If set to TRUE on a requested channel, subclass should immediately attempt +to establish an audio stream to the remote contact. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "initial-audio-name" property

    +
      "initial-audio-name"       gchar*                : Read / Write / Construct Only
    +

    +Name to use to create the audio TpBaseCallContent if +"initial-audio" is set to TRUE. +

    +

    Default value: "audio"

    +

    Since 0.17.5

    +
    +
    +
    +

    The "initial-tones" property

    +
      "initial-tones"            gchar*                : Read / Write / Construct Only
    +

    +DTMF Tones to be played on the channel created. +

    +

    Default value: ""

    +

    Since 0.17.5

    +
    +
    +
    +

    The "initial-transport" property

    +
      "initial-transport"        guint                 : Read / Write / Construct Only
    +

    +If set to TRUE on a requested channel, this indicates the transport that +should be used for this call. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "initial-video" property

    +
      "initial-video"            gboolean              : Read / Write / Construct Only
    +

    +If set to TRUE on a requested channel, subclass should immediately attempt +to establish a video stream to the remote contact. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "initial-video-name" property

    +
      "initial-video-name"       gchar*                : Read / Write / Construct Only
    +

    +Name to use to create the video TpBaseCallContent if +"initial-video" is set to TRUE. +

    +

    Default value: "video"

    +

    Since 0.17.5

    +
    +
    +
    +

    The "member-identifiers" property

    +
      "member-identifiers"       GHashTable_guint+gchararray_*  : Read
    +

    +GHashTable mapping TpHandle of each call member to their identifiers. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "mutable-contents" property

    +
      "mutable-contents"         gboolean              : Read / Write / Construct Only
    +

    +Indicate to clients whether or not they can add/remove contents. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    + +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpBaseCallContent.html telepathy-glib-0.17.5/docs/reference/html/TpBaseCallContent.html --- telepathy-glib-0.17.4/docs/reference/html/TpBaseCallContent.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpBaseCallContent.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,659 @@ + + + + +TpBaseCallContent + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    TpBaseCallContent

    +

    TpBaseCallContent — base class for TpSvcCallContent implementations

    +
    + +
    +

    Object Hierarchy

    +
    +  GObject
    +   +----TpBaseCallContent
    +         +----TpBaseMediaCallContent
    +
    +
    +
    +

    Implemented Interfaces

    +

    +TpBaseCallContent implements + TpSvcDBusProperties, TpSvcCallContent and TpSvcCallContentInterfaceDTMF.

    +
    +
    +

    Properties

    +
    +  "connection"               TpBaseConnection*     : Read / Write / Construct Only
    +  "creator"                  guint                 : Read / Write / Construct Only
    +  "currently-sending-tones"  gboolean              : Read
    +  "deferred-tones"           gchar*                : Read
    +  "disposition"              guint                 : Read / Write / Construct Only
    +  "interfaces"               GStrv                 : Read
    +  "media-type"               guint                 : Read / Write / Construct Only
    +  "name"                     gchar*                : Read / Write / Construct Only
    +  "object-path"              gchar*                : Read / Write / Construct Only
    +  "streams"                  GPtrArray_DBusGObjectPath_*  : Read
    +
    +
    +
    +

    Description

    +

    +This base class makes it easier to write TpSvcCallContent +implementations by implementing its properties, and some of its methods. +

    +

    +Subclasses should fill in TpBaseCallContentClass.get_interfaces, +and TpBaseCallContentClass.deinit virtual function. +

    +
    +
    +

    Details

    +
    +

    TpBaseCallContent

    +
    typedef struct _TpBaseCallContent TpBaseCallContent;
    +

    +A base class for call content implementations +

    +

    Since 0.17.5

    +
    +
    +
    +

    struct TpBaseCallContentClass

    +
    struct TpBaseCallContentClass {
    +  TpBaseCallContentDeinitFunc deinit;
    +  TpBaseCallContentGetInterfacesFunc get_interfaces;
    +
    +  TpBaseCallContentStartToneFunc start_tone;
    +  TpBaseCallContentStopToneFunc stop_tone;
    +  TpBaseCallContentMultipleTonesFunc multiple_tones;
    +};
    +
    +

    +The class structure for TpBaseCallContent +

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

    TpBaseCallContentDeinitFunc deinit;

    optional; virtual method called by TpBaseCallChannel when removing +the content

    TpBaseCallContentGetInterfacesFunc get_interfaces;

    extra interfaces provided by this content (this SHOULD NOT +include TP_IFACE_CALL_CONTENT itself). Implementation must first chainup on +parent class implementation then add extra interfaces into the GPtrArray.

    TpBaseCallContentStartToneFunc start_tone;

    optional; virtual method called when user requested to send +a DTMF tone. Note that this method is already implemented by +TpBaseMediaCallContent and so does not have to be overriden when using that +subclass

    TpBaseCallContentStopToneFunc stop_tone;

    optional; virtual method called when user requested to stop +sending currently being played DTMF tones. Note that this method is already +implemented by TpBaseMediaCallContent and so does not have to be overriden +when using that subclass

    TpBaseCallContentMultipleTonesFunc multiple_tones;

    optional; virtual method called when user requested to send +multiple DTMF tones. Note that this method is already implemented by +TpBaseMediaCallContent and so does not have to be overriden when using that +subclass
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseCallContentGetInterfacesFunc ()

    +
    GPtrArray *         (*TpBaseCallContentGetInterfacesFunc)
    +                                                        (TpBaseCallContent *self);
    +

    +Signature of an implementation of TpBaseCallContentClass.get_interfaces. +

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

    self :

    a TpBaseCallContent +

    Returns :

    a GPtrArray containing static strings.
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseCallContentDeinitFunc ()

    +
    void                (*TpBaseCallContentDeinitFunc)      (TpBaseCallContent *self);
    +

    +Signature of an implementation of TpBaseCallContentClass.deinit. +

    +
    ++ + + + +

    self :

    a TpBaseCallContent +
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseCallContentMultipleTonesFunc ()

    +
    gboolean            (*TpBaseCallContentMultipleTonesFunc)
    +                                                        (TpBaseCallContent *self,
    +                                                         const gchar *tones,
    +                                                         GError **error);
    +

    +Signature of an implementation of TpBaseCallContentClass.multiple_tones. +

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

    self :

    a TpBaseCallContent +

    tones :

    a string representation of one or more DTMF events

    error :

    a GError to fill

    Returns :

    +TRUE on success, otherwise FALSE and set error +
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseCallContentStartToneFunc ()

    +
    gboolean            (*TpBaseCallContentStartToneFunc)   (TpBaseCallContent *self,
    +                                                         TpDTMFEvent event,
    +                                                         GError **error);
    +

    +Signature of an implementation of TpBaseCallContentClass.start_tone. +

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

    self :

    a TpBaseCallContent +

    event :

    a TpDTMFEvent +

    error :

    a GError to fill

    Returns :

    +TRUE on success, otherwise FALSE and set error +
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseCallContentStopToneFunc ()

    +
    gboolean            (*TpBaseCallContentStopToneFunc)    (TpBaseCallContent *self,
    +                                                         GError **error);
    +

    +Signature of an implementation of TpBaseCallContentClass.stop_tone. +

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

    self :

    a TpBaseCallContent +

    error :

    a GError to fill

    Returns :

    +TRUE on success, otherwise FALSE and set error +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_content_get_connection ()

    +
    TpBaseConnection *  tp_base_call_content_get_connection (TpBaseCallContent *self);
    +

    + +

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

    self :

    a TpBaseCallContent +

    Returns :

    the value of "connection" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_content_get_object_path ()

    +
    const gchar *       tp_base_call_content_get_object_path
    +                                                        (TpBaseCallContent *self);
    +

    + +

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

    self :

    a TpBaseCallContent +

    Returns :

    the value of "object-path" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_content_get_name ()

    +
    const gchar *       tp_base_call_content_get_name       (TpBaseCallContent *self);
    +

    + +

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

    self :

    a TpBaseCallContent +

    Returns :

    the value of "name" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_content_get_media_type ()

    +
    TpMediaStreamType   tp_base_call_content_get_media_type (TpBaseCallContent *self);
    +

    + +

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

    self :

    a TpBaseCallContent +

    Returns :

    the value of "media-type" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_content_get_disposition ()

    +
    TpCallContentDisposition tp_base_call_content_get_disposition
    +                                                        (TpBaseCallContent *self);
    +

    + +

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

    self :

    a TpBaseCallContent +

    Returns :

    the value of "disposition" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_content_get_streams ()

    +
    GList *             tp_base_call_content_get_streams    (TpBaseCallContent *self);
    +

    + +

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

    self :

    a TpBaseCallContent +

    Returns :

    a GList of TpBaseCallStream of this content.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_content_add_stream ()

    +
    void                tp_base_call_content_add_stream     (TpBaseCallContent *self,
    +                                                         TpBaseCallStream *stream);
    +

    +Add stream to self's "streams". Emitting StreamsAdded +DBus signal. +

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

    self :

    a TpBaseCallContent +

    stream :

    a TpBaseCallStream +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_content_remove_stream ()

    +
    void                tp_base_call_content_remove_stream  (TpBaseCallContent *self,
    +                                                         TpBaseCallStream *stream,
    +                                                         TpHandle actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +

    +Remove stream from self's "streams". Emitting +StreamsRemoved DBus signal. +

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

    self :

    a TpBaseCallContent +

    stream :

    a TpBaseCallStream +

    actor_handle :

    the contact responsible for the change, or 0 if no contact was +responsible.

    reason :

    the TpCallStateChangeReason of the change

    dbus_reason :

    a specific reason for the change, which may be a D-Bus error in +the Telepathy namespace, a D-Bus error in any other namespace (for +implementation-specific errors), or the empty string to indicate that the +state change was not an error.

    message :

    an optional debug message, to expediate debugging the potentially +many processes involved in a call.
    +

    Since 0.17.5

    +
    +
    +
    +

    Property Details

    +
    +

    The "connection" property

    +
      "connection"               TpBaseConnection*     : Read / Write / Construct Only
    +

    +TpBaseConnection object that owns this call content. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "creator" property

    +
      "creator"                  guint                 : Read / Write / Construct Only
    +

    +The contact TpHandle of the creator of this content. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "currently-sending-tones" property

    +
      "currently-sending-tones"  gboolean              : Read
    +

    +If this content is currently sending tones or not +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "deferred-tones" property

    +
      "deferred-tones"           gchar*                : Read
    +

    +Tones that are waiting for the user action to play. +

    +

    Default value: NULL

    +

    Since 0.17.5

    +
    +
    +
    +

    The "disposition" property

    +
      "disposition"              guint                 : Read / Write / Construct Only
    +

    +The TpCallContentDisposition of this content. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "interfaces" property

    +
      "interfaces"               GStrv                 : Read
    +

    +Additional interfaces implemented by this content. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "media-type" property

    +
      "media-type"               guint                 : Read / Write / Construct Only
    +

    +The TpMediaStreamType of this content. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "name" property

    +
      "name"                     gchar*                : Read / Write / Construct Only
    +

    +The name of this content, if any. +

    +

    Default value: ""

    +

    Since 0.17.5

    +
    +
    +
    +

    The "object-path" property

    +
      "object-path"              gchar*                : Read / Write / Construct Only
    +

    +The D-Bus object path used for this object on the bus. +

    +

    Default value: NULL

    +

    Since 0.17.5

    +
    +
    +
    +

    The "streams" property

    +
      "streams"                  GPtrArray_DBusGObjectPath_*  : Read
    +

    +A GPtrArray of this content streams' "object-path". +

    +

    Since 0.17.5

    +
    +
    + +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpBaseCallStream.html telepathy-glib-0.17.5/docs/reference/html/TpBaseCallStream.html --- telepathy-glib-0.17.4/docs/reference/html/TpBaseCallStream.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpBaseCallStream.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,632 @@ + + + + +TpBaseCallStream + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    TpBaseCallStream

    +

    TpBaseCallStream — base class for TpSvcCallStream implementations

    +
    + +
    +

    Object Hierarchy

    +
    +  GObject
    +   +----TpBaseCallStream
    +         +----TpBaseMediaCallStream
    +
    +
    +
    +

    Implemented Interfaces

    +

    +TpBaseCallStream implements + TpSvcDBusProperties and TpSvcCallStream.

    +
    +
    +

    Properties

    +
    +  "can-request-receiving"    gboolean              : Read
    +  "connection"               TpBaseConnection*     : Read / Write / Construct Only
    +  "interfaces"               GStrv                 : Read
    +  "local-sending-state"      guint                 : Read / Write / Construct Only
    +  "object-path"              gchar*                : Read / Write / Construct Only
    +  "remote-member-identifiers" GHashTable_guint+gchararray_*  : Read
    +  "remote-members"           GHashTable_guint+guint_*  : Read
    +
    +
    +
    +

    Description

    +

    +This base class makes it easier to write TpSvcCallStream +implementations by implementing its properties, and some of its methods. +

    +

    +Subclasses should fill in TpBaseCallStreamClass.get_interfaces, +TpBaseCallStreamClass.request_receiving and +TpBaseCallStreamClass.set_sending virtual function. +

    +
    +
    +

    Details

    +
    +

    TpBaseCallStream

    +
    typedef struct _TpBaseCallStream TpBaseCallStream;
    +

    +A base class for call stream implementations +

    +

    Since 0.17.5

    +
    +
    +
    +

    struct TpBaseCallStreamClass

    +
    struct TpBaseCallStreamClass {
    +  TpBaseCallStreamRequestReceivingFunc request_receiving;
    +  TpBaseCallStreamSetSendingFunc set_sending;
    +  TpBaseCallStreamGetInterfacesFunc get_interfaces;
    +};
    +
    +

    +The class structure for TpBaseCallStream +

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

    TpBaseCallStreamRequestReceivingFunc request_receiving;

    optional (see "can-request-receiving"); +virtual method called when user requested receiving from the given remote +contact.

    TpBaseCallStreamSetSendingFunc set_sending;

    mandatory; virtual method called when user requested to +start/stop sending to remote contacts.

    TpBaseCallStreamGetInterfacesFunc get_interfaces;

    extra interfaces provided by this stream (this SHOULD NOT +include TP_IFACE_CALL_STREAM itself). Implementation must first chainup on +parent class implementation then add extra interfaces into the GPtrArray.
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseCallStreamGetInterfacesFunc ()

    +
    GPtrArray *         (*TpBaseCallStreamGetInterfacesFunc)
    +                                                        (TpBaseCallStream *self);
    +

    +Signature of an implementation of TpBaseCallStreamClass.get_interfaces. +

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

    self :

    a TpBaseCallStream +

    Returns :

    a GPtrArray containing static strings.
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseCallStreamRequestReceivingFunc ()

    +
    gboolean            (*TpBaseCallStreamRequestReceivingFunc)
    +                                                        (TpBaseCallStream *self,
    +                                                         TpHandle contact,
    +                                                         gboolean receive,
    +                                                         GError **error);
    +

    +Signature of an implementation of TpBaseCallStreamClass.request_receiving. +

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

    self :

    a TpBaseCallStream +

    contact :

    the contact from who user wants to start or stop receiving

    receive :

    wheter or not user would like to be receiving

    error :

    a GError to fill

    Returns :

    +TRUE on success, FALSE otherwise.
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseCallStreamSetSendingFunc ()

    +
    gboolean            (*TpBaseCallStreamSetSendingFunc)   (TpBaseCallStream *self,
    +                                                         gboolean sending,
    +                                                         GError **error);
    +

    +Signature of an implementation of TpBaseCallStreamClass.set_sending. +

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

    self :

    a TpBaseCallStream +

    sending :

    whether or not user would like to be sending

    error :

    a GError to fill

    Returns :

    +TRUE on success, FALSE otherwise.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_stream_get_connection ()

    +
    TpBaseConnection *  tp_base_call_stream_get_connection  (TpBaseCallStream *self);
    +

    + +

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

    self :

    a TpBaseCallStream +

    Returns :

    the value of "connection" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_stream_get_object_path ()

    +
    const gchar *       tp_base_call_stream_get_object_path (TpBaseCallStream *self);
    +

    + +

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

    self :

    a TpBaseCallStream +

    Returns :

    the value of "object-path" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_stream_get_local_sending_state ()

    +
    TpSendingState      tp_base_call_stream_get_local_sending_state
    +                                                        (TpBaseCallStream *self);
    +

    + +

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

    self :

    a TpBaseCallStream +

    Returns :

    the value of "local-sending-state" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_stream_update_local_sending_state ()

    +
    gboolean            tp_base_call_stream_update_local_sending_state
    +                                                        (TpBaseCallStream *self,
    +                                                         TpSendingState new_state,
    +                                                         TpHandle actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +

    +Update the local sending state, emitting LocalSendingStateChanged +DBus signal if needed. +

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

    self :

    a TpBaseCallStream +

    new_state :

    the new local TpSendingState +

    actor_handle :

    the contact responsible for the change, or 0 if no contact was +responsible.

    reason :

    the TpCallStateChangeReason of the change

    dbus_reason :

    a specific reason for the change, which may be a D-Bus error in +the Telepathy namespace, a D-Bus error in any other namespace (for +implementation-specific errors), or the empty string to indicate that the +state change was not an error.

    message :

    an optional debug message, to expediate debugging the potentially +many processes involved in a call.

    Returns :

    +TRUE if state was updated, FALSE if it was already set to +new_state.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_stream_get_remote_sending_state ()

    +
    TpSendingState      tp_base_call_stream_get_remote_sending_state
    +                                                        (TpBaseCallStream *self,
    +                                                         TpHandle contact);
    +

    + +

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

    self :

    a TpBaseCallStream +

    contact :

    the TpHandle of a member contact

    Returns :

    the TpSendingState of contact.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_stream_update_remote_sending_state ()

    +
    gboolean            tp_base_call_stream_update_remote_sending_state
    +                                                        (TpBaseCallStream *self,
    +                                                         TpHandle contact,
    +                                                         TpSendingState new_state,
    +                                                         TpHandle actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +

    +If contact is not member, add it. Otherwise update its sending state. Emits +RemoteMemberChanged DBus signal if needed. +

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

    self :

    a TpBaseCallStream +

    contact :

    the TpHandle to update or add to members

    new_state :

    the new sending state of contact +

    actor_handle :

    the contact responsible for the change, or 0 if no contact was +responsible.

    reason :

    the TpCallStateChangeReason of the change

    dbus_reason :

    a specific reason for the change, which may be a D-Bus error in +the Telepathy namespace, a D-Bus error in any other namespace (for +implementation-specific errors), or the empty string to indicate that the +state change was not an error.

    message :

    an optional debug message, to expediate debugging the potentially +many processes involved in a call.

    Returns :

    +TRUE if state was updated, FALSE if it was already set to +new_state.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_call_stream_remove_member ()

    +
    gboolean            tp_base_call_stream_remove_member   (TpBaseCallStream *self,
    +                                                         TpHandle contact,
    +                                                         TpHandle actor_handle,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +

    +Remove contact from stream members, emitting RemoteMembersChanged DBus +signal if needed. Do nothing if contact is not member. +

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

    self :

    a TpBaseCallStream +

    contact :

    the TpHandle to remove from members

    actor_handle :

    the contact responsible for the change, or 0 if no contact was +responsible.

    reason :

    the TpCallStateChangeReason of the change

    dbus_reason :

    a specific reason for the change, which may be a D-Bus error in +the Telepathy namespace, a D-Bus error in any other namespace (for +implementation-specific errors), or the empty string to indicate that the +state change was not an error.

    message :

    an optional debug message, to expediate debugging the potentially +many processes involved in a call.

    Returns :

    +TRUE if contact was removed, FALSE if it was not member.
    +

    Since 0.17.5

    +
    +
    +
    +

    Property Details

    +
    +

    The "can-request-receiving" property

    +
      "can-request-receiving"    gboolean              : Read
    +

    +Whether or not user can request receiving from remote contact using the +RequestSending DBus method call. The value is determined by whether or not +TpBaseCallStreamClass.request_receiving is implemented. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "connection" property

    +
      "connection"               TpBaseConnection*     : Read / Write / Construct Only
    +

    +TpBaseConnection object that owns this call stream. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "interfaces" property

    +
      "interfaces"               GStrv                 : Read
    +

    +Additional interfaces implemented by this stream. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "local-sending-state" property

    +
      "local-sending-state"      guint                 : Read / Write / Construct Only
    +

    +The local TpSendingState. +

    +

    Allowed values: <= 4

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "object-path" property

    +
      "object-path"              gchar*                : Read / Write / Construct Only
    +

    +The D-Bus object path used for this object on the bus. +

    +

    Default value: NULL

    +

    Since 0.17.5

    +
    +
    +
    +

    The "remote-member-identifiers" property

    +
      "remote-member-identifiers" GHashTable_guint+gchararray_*  : Read
    +

    +GHashTable mapping contact TpHandle to their identifies. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "remote-members" property

    +
      "remote-members"           GHashTable_guint+guint_*  : Read
    +

    +GHashTable mapping contact TpHandle to their TpSendingState. +

    +

    Since 0.17.5

    +
    +
    + +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpBaseChannel.html telepathy-glib-0.17.5/docs/reference/html/TpBaseChannel.html --- telepathy-glib-0.17.4/docs/reference/html/TpBaseChannel.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpBaseChannel.html 2012-02-20 17:31:30.000000000 +0000 @@ -52,6 +52,7 @@ GHashTable *properties); void (*TpBaseChannelCloseFunc) (TpBaseChannel *chan); gchar * (*TpBaseChannelGetPathFunc) (TpBaseChannel *chan); +GPtrArray * (*TpBaseChannelGetInterfacesFunc) (TpBaseChannel *chan); void tp_base_channel_register (TpBaseChannel *chan); void tp_base_channel_close (TpBaseChannel *chan); void tp_base_channel_destroyed (TpBaseChannel *chan); @@ -59,6 +60,7 @@ TpHandle initiator); const gchar * tp_base_channel_get_object_path (TpBaseChannel *chan); TpBaseConnection * tp_base_channel_get_connection (TpBaseChannel *chan); +TpHandle tp_base_channel_get_self_handle (TpBaseChannel *chan); TpHandle tp_base_channel_get_target_handle (TpBaseChannel *chan); TpHandle tp_base_channel_get_initiator (TpBaseChannel *chan); gboolean tp_base_channel_is_requested (TpBaseChannel *chan); @@ -71,6 +73,7 @@
       GObject
        +----TpBaseChannel
    +         +----TpBaseCallChannel
              +----TpBasePasswordChannel
     
    @@ -99,9 +102,10 @@ relevant properties.

    -Subclasses should fill in TpBaseChannelClass.channel_type, -TpBaseChannelClass.target_handle_type and TpBaseChannelClass.interfaces, -and implement the TpBaseChannelClass.close virtual function. +Subclasses should fill in TpBaseChannelClass.channel_type and +TpBaseChannelClass.target_handle_type; and implement the +TpBaseChannelClass.get_interfaces and +TpBaseChannelClass.close virtual functions.

    If the channel type and/or interfaces being implemented define immutable @@ -138,6 +142,7 @@ TpBaseChannelCloseFunc close; TpBaseChannelFillPropertiesFunc fill_immutable_properties; TpBaseChannelGetPathFunc get_object_path_suffix; + TpBaseChannelGetInterfacesFunc get_interfaces; };

    @@ -162,8 +167,7 @@

    const gchar **interfaces;

    -Extra interfaces provided by this channel (this SHOULD NOT -include the channel type and interface itself) +Deprecated. Replaced by get_interfaces.

    TpBaseChannelCloseFunc close;

    @@ -187,6 +191,13 @@ implementation simply generates a unique path based on the object's address in memory. The returned string will be freed automatically. + +

    TpBaseChannelGetInterfacesFunc get_interfaces;

    +Extra interfaces provided by this channel (this SHOULD NOT +include the channel type and interface itself). Implementation must first +chainup on parent class implementation and then add extra interfaces into +the GPtrArray. Replaces interfaces. +

    Since 0.11.14

    @@ -224,22 +235,22 @@ 14 15 16
    -
    static void
    -my_search_channel_fill_properties (
    -    TpBaseChannel *chan,
    -    GHashTable *properties)
    -{
    -  TpBaseChannelClass *klass = TP_BASE_CHANNEL_CLASS (my_search_channel_parent_class);
    -
    -  klass->fill_immutable_properties (chan, properties);
    -
    -  tp_dbus_properties_mixin_fill_properties_hash (
    -      G_OBJECT (chan), properties,
    -      TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, "Limit",
    -      TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, "AvailableSearchKeys",
    -      TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, "Server",
    -      NULL);
    -}
    +
    static void
    +my_search_channel_fill_properties (
    +    TpBaseChannel *chan,
    +    GHashTable *properties)
    +{
    +  TpBaseChannelClass *klass = TP_BASE_CHANNEL_CLASS (my_search_channel_parent_class);
    +
    +  klass->fill_immutable_properties (chan, properties);
    +
    +  tp_dbus_properties_mixin_fill_properties_hash (
    +      G_OBJECT (chan), properties,
    +      TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, "Limit",
    +      TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, "AvailableSearchKeys",
    +      TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH, "Server",
    +      NULL);
    +}
    @@ -324,34 +335,34 @@ 26 27 28 -
    static void
    -my_channel_close (TpBaseChannel *chan)
    -{
    -  MyChannel *self = MY_CHANNEL (chan);
    -
    -  if (self->priv->closing)
    -    return;
    -
    -  self->priv->closing = TRUE;
    -
    -  // some hypothetical channel-specific clean-up function:
    -  clean_up (self, cleaned_up_cb);
    -}
    -
    -static void
    -cleaned_up_cb (MyChannel *self)
    -{
    -  // all done, we can finish closing now
    -  tp_base_channel_destroyed (TP_BASE_CHANNEL (self));
    -}
    -static void
    -my_channel_class_init (MyChannelClass *klass)
    -{
    -  TpBaseChannelClass *base_channel_class = TP_BASE_CHANNEL_CLASS (klass);
    -
    -  klass->close = my_channel_close;
    -  // ...
    -}
    +
    static void
    +my_channel_close (TpBaseChannel *chan)
    +{
    +  MyChannel *self = MY_CHANNEL (chan);
    +
    +  if (self->priv->closing)
    +    return;
    +
    +  self->priv->closing = TRUE;
    +
    +  // some hypothetical channel-specific clean-up function:
    +  clean_up (self, cleaned_up_cb);
    +}
    +
    +static void
    +cleaned_up_cb (MyChannel *self)
    +{
    +  // all done, we can finish closing now
    +  tp_base_channel_destroyed (TP_BASE_CHANNEL (self));
    +}
    +static void
    +my_channel_class_init (MyChannelClass *klass)
    +{
    +  TpBaseChannelClass *base_channel_class = TP_BASE_CHANNEL_CLASS (klass);
    +
    +  klass->close = my_channel_close;
    +  // ...
    +}
    @@ -378,14 +389,14 @@ 6 7 8 -
    static void
    -my_channel_class_init (MyChannelClass *klass)
    -{
    -  TpBaseChannelClass *base_channel_class = TP_BASE_CHANNEL_CLASS (klass);
    -
    -  klass->close = tp_base_channel_destroyed;
    -  // ...
    -}
    +
    static void
    +my_channel_class_init (MyChannelClass *klass)
    +{
    +  TpBaseChannelClass *base_channel_class = TP_BASE_CHANNEL_CLASS (klass);
    +
    +  klass->close = tp_base_channel_destroyed;
    +  // ...
    +}
    @@ -429,6 +440,70 @@

    +

    TpBaseChannelGetInterfacesFunc ()

    +
    GPtrArray *         (*TpBaseChannelGetInterfacesFunc)   (TpBaseChannel *chan);
    +

    +Signature of an implementation of TpBaseChannelClass.get_interfaces virtual +function. +

    +

    +Implementation must first chainup on parent class implementation and then +add extra interfaces into the GPtrArray. +

    +

    +

    +
    + + + + + + + +
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    static GPtrArray *
    +my_channel_get_interfaces (TpBaseChannel *self)
    +{
    +  GPtrArray *interfaces;
    +
    +  interfaces = TP_BASE_CHANNEL_CLASS (my_channel_parent_class)->get_interfaces (self);
    +
    +  g_ptr_array_add (interfaces, TP_IFACE_BADGERS);
    +
    +  return interfaces;
    +}
    +
    + +

    +

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

    chan :

    a channel

    Returns :

    a GPtrArray of static strings for D-Bus +interfaces implemented by this client. [transfer container] +
    +

    Since 0.17.5

    +
    +
    +

    tp_base_channel_register ()

    void                tp_base_channel_register            (TpBaseChannel *chan);

    @@ -565,6 +640,30 @@


    +

    tp_base_channel_get_self_handle ()

    +
    TpHandle            tp_base_channel_get_self_handle     (TpBaseChannel *chan);
    +

    +If chan has a TpGroupMixin, returns the value of group's self handle. +Otherwise return the value of "self-handle". +

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

    chan :

    a channel

    Returns :

    the self handle of chan +
    +

    Since 0.17.5

    +
    +
    +

    tp_base_channel_get_target_handle ()

    TpHandle            tp_base_channel_get_target_handle   (TpBaseChannel *chan);

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpBaseConnection.html telepathy-glib-0.17.5/docs/reference/html/TpBaseConnection.html --- telepathy-glib-0.17.4/docs/reference/html/TpBaseConnection.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpBaseConnection.html 2012-02-20 17:31:30.000000000 +0000 @@ -1066,14 +1066,14 @@ 6 7 8 -

    TpChannelManagerIter iter;
    -TpChannelManager *manager;
    +        
    TpChannelManagerIter iter;
    +TpChannelManager *manager;
     
    -tp_base_connection_channel_manager_iter_init (&iter, base_conn);
    -while (tp_base_connection_channel_manager_iter_next (&iter, &manager))
    -  {
    -    ...do something with manager...
    -  }
    +tp_base_connection_channel_manager_iter_init (&iter, base_conn); +while (tp_base_connection_channel_manager_iter_next (&iter, &manager)) + { + ...do something with manager... + }
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpBaseConnectionManager.html telepathy-glib-0.17.5/docs/reference/html/TpBaseConnectionManager.html --- telepathy-glib-0.17.4/docs/reference/html/TpBaseConnectionManager.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpBaseConnectionManager.html 2012-02-20 17:31:30.000000000 +0000 @@ -335,10 +335,10 @@

    gconstpointer def;

    Default value, as a (const gchar *) for string parameters, or -using GINT_TO_POINTER or GUINT_TO_POINTER for integer parameters +using GINT_TO_POINTER or GUINT_TO_POINTER for integer parameters -

    gsize offset;

    +

    gsize offset;

    Offset of the parameter in the opaque data structure, if appropriate. The member at that offset is expected to be a gint, guint, (gchar *) or gboolean, depending on gtype. The default diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpBaseMediaCallChannel.html telepathy-glib-0.17.5/docs/reference/html/TpBaseMediaCallChannel.html --- telepathy-glib-0.17.4/docs/reference/html/TpBaseMediaCallChannel.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpBaseMediaCallChannel.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,174 @@ + + + + +TpBaseMediaCallChannel + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    TpBaseMediaCallChannel

    +

    TpBaseMediaCallChannel — base class for TpSvcChannelTypeCall RTP media implementations

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/telepathy-glib.h>
    +
    +                    TpBaseMediaCallChannel;
    +struct              TpBaseMediaCallChannelClass;
    +void                (*TpBaseMediaCallChannelHoldStateChangedFunc)
    +                                                        (TpBaseMediaCallChannel *self,
    +                                                         TpLocalHoldState hold_state,
    +                                                         TpLocalHoldStateReason hold_state_reason);
    +void                (*TpBaseMediaCallChannelVoidFunc)   (TpBaseMediaCallChannel *self);
    +
    +
    +
    +

    Object Hierarchy

    +
    +  GObject
    +   +----TpBaseChannel
    +         +----TpBaseCallChannel
    +               +----TpBaseMediaCallChannel
    +
    +
    + +
    +

    Description

    +

    +This is a base class for connection managers that use standard RTP media. +

    +
    +
    +

    Details

    +
    +

    TpBaseMediaCallChannel

    +
    typedef struct _TpBaseMediaCallChannel TpBaseMediaCallChannel;
    +

    +A base class for call channel implementations with standard RTP +

    +

    Since 0.17.5

    +
    +
    +
    +

    struct TpBaseMediaCallChannelClass

    +
    struct TpBaseMediaCallChannelClass {
    +  TpBaseMediaCallChannelHoldStateChangedFunc hold_state_changed;
    +  TpBaseMediaCallChannelVoidFunc accept;
    +};
    +
    +

    +The class structure for TpBaseMediaCallChannel +

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

    TpBaseMediaCallChannelHoldStateChangedFunc hold_state_changed;

    optional; virtual method called when the hold state +changed

    TpBaseMediaCallChannelVoidFunc accept;

    optional; virtual method called when the call is locally accepted +and contents are ready. This replaces TpBaseCallChannelClass.accept.
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseMediaCallChannelHoldStateChangedFunc ()

    +
    void                (*TpBaseMediaCallChannelHoldStateChangedFunc)
    +                                                        (TpBaseMediaCallChannel *self,
    +                                                         TpLocalHoldState hold_state,
    +                                                         TpLocalHoldStateReason hold_state_reason);
    +

    +Signature of an implementation of +TpBaseMediaCallChannelClass.hold_state_changed. +

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

    self :

    a TpBaseMediaCallChannel +

    hold_state :

    the new TpLocalHoldState +

    hold_state_reason :

    the TpLocalHoldStateReason for this change
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseMediaCallChannelVoidFunc ()

    +
    void                (*TpBaseMediaCallChannelVoidFunc)   (TpBaseMediaCallChannel *self);
    +

    +Signature of an implementation of TpBaseMediaCallChannelClass.accept. +

    +
    ++ + + + +

    self :

    a TpBaseMediaCallChannel +
    +

    Since 0.17.5

    +
    +
    + +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpBaseMediaCallContent.html telepathy-glib-0.17.5/docs/reference/html/TpBaseMediaCallContent.html --- telepathy-glib-0.17.4/docs/reference/html/TpBaseMediaCallContent.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpBaseMediaCallContent.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,339 @@ + + + + +TpBaseMediaCallContent + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    TpBaseMediaCallContent

    +

    TpBaseMediaCallContent — base class for TpSvcCallContentInterfaceMedia + implementations

    +
    + +
    +

    Object Hierarchy

    +
    +  GObject
    +   +----TpBaseCallContent
    +         +----TpBaseMediaCallContent
    +
    +
    +
    +

    Implemented Interfaces

    +

    +TpBaseMediaCallContent implements + TpSvcDBusProperties, TpSvcCallContent, TpSvcCallContentInterfaceDTMF and TpSvcCallContentInterfaceMedia.

    +
    +
    +

    Properties

    +
    +  "current-dtmf-event"       guchar                : Read
    +  "current-dtmf-state"       guint                 : Read
    +  "local-media-descriptions" GHashTable_guint+GHashTable_gchararray+GValue__*  : Read
    +  "media-description-offer"  GValueArray_DBusGObjectPath+GHashTable_gchararray+GValue__*  : Read
    +  "packetization"            guint                 : Read / Write / Construct Only
    +  "remote-media-descriptions" GHashTable_guint+GHashTable_gchararray+GValue__*  : Read
    +
    +
    + +
    +

    Description

    +

    +This base class makes it easier to write TpSvcCallContentInterfaceMedia +implementations by implementing its properties and methods. +

    +

    +Subclasses must still implement TpBaseCallContent's virtual methods. +

    +
    +
    +

    Details

    +
    +

    TpBaseMediaCallContent

    +
    typedef struct _TpBaseMediaCallContent TpBaseMediaCallContent;
    +

    +A base class for media call content implementations +

    +

    Since 0.17.5

    +
    +
    +
    +

    struct TpBaseMediaCallContentClass

    +
    struct TpBaseMediaCallContentClass {
    +};
    +
    +

    +The class structure for TpBaseMediaCallContent +

    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_content_get_local_media_description ()

    +
    GHashTable *        tp_base_media_call_content_get_local_media_description
    +                                                        (TpBaseMediaCallContent *self,
    +                                                         TpHandle contact);
    +

    +Get the media description used to stream to contact. +

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

    self :

    a TpBaseMediaCallContent +

    contact :

    the contact

    Returns :

    borrowed GHashTable mapping iface propery string to GValue.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_content_offer_media_description_async ()

    +
    void                tp_base_media_call_content_offer_media_description_async
    +                                                        (TpBaseMediaCallContent *self,
    +                                                         TpCallContentMediaDescription *md,
    +                                                         GAsyncReadyCallback callback,
    +                                                         gpointer user_data);
    +

    +Offer md for media description negociation. +

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

    self :

    a TpBaseMediaCallContent +

    md :

    a TpCallContentMediaDescription +

    callback :

    a callback to call when the operation finishes

    user_data :

    data to pass to callback +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_content_offer_media_description_finish ()

    +
    gboolean            tp_base_media_call_content_offer_media_description_finish
    +                                                        (TpBaseMediaCallContent *self,
    +                                                         GAsyncResult *result,
    +                                                         GError **error);
    +

    +Finishes tp_base_media_call_content_offer_media_description_async(). +

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

    self :

    a TpBaseMediaCallContent +

    result :

    a GAsyncResult +

    error :

    a GError to fill
    +

    Since 0.17.5

    +
    +
    +
    +

    Property Details

    +
    +

    The "current-dtmf-event" property

    +
      "current-dtmf-event"       guchar                : Read
    +

    +The currently being played TpDTMFEvent if any +

    +

    Allowed values: <= 15

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "current-dtmf-state" property

    +
      "current-dtmf-state"       guint                 : Read
    +

    +The TpSendingState of the dtmf events +

    +

    Allowed values: <= 3

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "local-media-descriptions" property

    +
      "local-media-descriptions" GHashTable_guint+GHashTable_gchararray+GValue__*  : Read
    +

    +GHashTable{contact TpHandle, properties GHashTable} +The map of contacts to local media descriptions. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "media-description-offer" property

    +
      "media-description-offer"  GValueArray_DBusGObjectPath+GHashTable_gchararray+GValue__*  : Read
    +

    +GValueArray{object-path, contact TpHandle, properties GHashTable}. +The current media description offer if any. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "packetization" property

    +
      "packetization"            guint                 : Read / Write / Construct Only
    +

    +The TpCallContentPacketizationType of this content. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "remote-media-descriptions" property

    +
      "remote-media-descriptions" GHashTable_guint+GHashTable_gchararray+GValue__*  : Read
    +

    +GHashTable{contact TpHandle, properties GHashTable} +The map of contacts to remote media descriptions. +

    +

    Since 0.17.5

    +
    +
    +
    +

    Signal Details

    +
    +

    The "local-media-description-updated" signal

    +
    void                user_function                      (TpBaseMediaCallContent *self,
    +                                                        guint                   contact,
    +                                                        GHashTable             *properties,
    +                                                        gpointer                user_data)       : Run Last
    +

    +The ::local-media-description-changed signal is emitted whenever the local +media description changes for a remote contact. +

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

    self :

    the TpCallChannel +

    contact :

    the remote contact

    properties :

    the new media description properties asv

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    + +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpBaseMediaCallStream.html telepathy-glib-0.17.5/docs/reference/html/TpBaseMediaCallStream.html --- telepathy-glib-0.17.4/docs/reference/html/TpBaseMediaCallStream.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpBaseMediaCallStream.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,831 @@ + + + + +TpBaseMediaCallStream + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    TpBaseMediaCallStream

    +

    TpBaseMediaCallStream — base class for TpSvcCallStreamInterfaceMedia + implementations

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/telepathy-glib.h>
    +
    +                    TpBaseMediaCallStream;
    +struct              TpBaseMediaCallStreamClass;
    +gboolean            (*TpBaseMediaCallStreamFinishInitialCandidatesFunc)
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         GError **error);
    +GPtrArray *         (*TpBaseMediaCallStreamAddCandidatesFunc)
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         const GPtrArray *candidates,
    +                                                         GError **error);
    +void                (*TpBaseMediaCallStreamReportFailureFunc)
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         TpStreamFlowState old_state,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +void                (*TpBaseMediaCallStreamRequestReceivingFunc)
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         TpHandle contact,
    +                                                         gboolean receive);
    +gboolean            (*TpBaseMediaCallStreamSetSendingFunc)
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         gboolean sending,
    +                                                         GError **error);
    +void                tp_base_media_call_stream_set_relay_info
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         GPtrArray *relays);
    +void                tp_base_media_call_stream_set_stun_servers
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         GPtrArray *stun_servers);
    +void                tp_base_media_call_stream_add_endpoint
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         TpCallStreamEndpoint *endpoint);
    +void                tp_base_media_call_stream_remove_endpoint
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         TpCallStreamEndpoint *endpoint);
    +GList *             tp_base_media_call_stream_get_endpoints
    +                                                        (TpBaseMediaCallStream *self);
    +const gchar *       tp_base_media_call_stream_get_username
    +                                                        (TpBaseMediaCallStream *self);
    +const gchar *       tp_base_media_call_stream_get_password
    +                                                        (TpBaseMediaCallStream *self);
    +void                tp_base_media_call_stream_update_receiving_state
    +                                                        (TpBaseMediaCallStream *self);
    +TpStreamFlowState   tp_base_media_call_stream_get_receiving_state
    +                                                        (TpBaseMediaCallStream *self);
    +void                tp_base_media_call_stream_update_sending_state
    +                                                        (TpBaseMediaCallStream *self);
    +TpStreamFlowState   tp_base_media_call_stream_get_sending_state
    +                                                        (TpBaseMediaCallStream *self);
    +void                tp_base_media_call_stream_set_local_sending
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         gboolean sending);
    +GPtrArray *         tp_base_media_call_stream_get_local_candidates
    +                                                        (TpBaseMediaCallStream *self);
    +
    +
    +
    +

    Object Hierarchy

    +
    +  GObject
    +   +----TpBaseCallStream
    +         +----TpBaseMediaCallStream
    +
    +
    +
    +

    Implemented Interfaces

    +

    +TpBaseMediaCallStream implements + TpSvcDBusProperties, TpSvcCallStream and TpSvcCallStreamInterfaceMedia.

    +
    +
    +

    Properties

    +
    +  "endpoints"                GPtrArray_DBusGObjectPath_*  : Read
    +  "has-server-info"          gboolean              : Read
    +  "ice-restart-pending"      gboolean              : Read
    +  "local-candidates"         GPtrArray_GValueArray_guint+gchararray+guint+GHashTable_gchararray+GValue___*  : Read
    +  "local-credentials"        GValueArray_gchararray+gchararray_*  : Read
    +  "receiving-state"          guint                 : Read
    +  "relay-info"               GPtrArray_GHashTable_gchararray+GValue__*  : Read
    +  "sending-state"            guint                 : Read
    +  "stun-servers"             GPtrArray_GValueArray_gchararray+guint__*  : Read
    +  "transport"                guint                 : Read / Write / Construct Only
    +
    +
    +
    +

    Description

    +

    +This base class makes it easier to write TpSvcCallStreamInterfaceMedia +implementations by implementing some of its properties and methods. +

    +

    +Subclasses must still implement TpBaseCallStream's virtual methods plus +TpBaseMediaCallStreamClass.add_local_candidates and +TpBaseMediaCallStreamClass.finish_initial_candidates. +

    +
    +
    +

    Details

    +
    +

    TpBaseMediaCallStream

    +
    typedef struct _TpBaseMediaCallStream TpBaseMediaCallStream;
    +

    +A base class for media call stream implementations +

    +

    Since 0.17.5

    +
    +
    +
    +

    struct TpBaseMediaCallStreamClass

    +
    struct TpBaseMediaCallStreamClass {
    +  TpBaseMediaCallStreamReportFailureFunc report_sending_failure;
    +  TpBaseMediaCallStreamReportFailureFunc report_receiving_failure;
    +  TpBaseMediaCallStreamAddCandidatesFunc add_local_candidates;
    +  TpBaseMediaCallStreamFinishInitialCandidatesFunc finish_initial_candidates;
    +
    +  TpBaseMediaCallStreamRequestReceivingFunc request_receiving;
    +  TpBaseMediaCallStreamSetSendingFunc set_sending;
    +};
    +
    +

    +The class structure for TpBaseMediaCallStream +

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

    TpBaseMediaCallStreamReportFailureFunc report_sending_failure;

    optional; called to indicate a failure in the +outgoing portion of the stream

    TpBaseMediaCallStreamReportFailureFunc report_receiving_failure;

    optional; called to indicate a failure in the +incoming portion of the stream

    TpBaseMediaCallStreamAddCandidatesFunc add_local_candidates;

    mandatory; called when new candidates are added

    TpBaseMediaCallStreamFinishInitialCandidatesFunc finish_initial_candidates;

    optional; called when the initial batch of +candidates has been added, and should now be processed/sent to the remote +side

    TpBaseMediaCallStreamRequestReceivingFunc request_receiving;

    optional (see "can-request-receiving"); +virtual method called when user requested receiving from the given remote +contact. This virtual method should be implemented instead of +TpBaseCallStream.request_receiving +

    TpBaseMediaCallStreamSetSendingFunc set_sending;

    mandatory; virtual method called when user requested to +start/stop sending to remote contacts. This virtual method should be +implemented instead of TpBaseCallStream.set_sending +
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseMediaCallStreamFinishInitialCandidatesFunc ()

    +
    gboolean            (*TpBaseMediaCallStreamFinishInitialCandidatesFunc)
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         GError **error);
    +

    +Signature of an implementation of +TpBaseMediaCallStreamClass.finish_initial_candidates. +

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

    self :

    a TpBaseMediaCallStream +

    error :

    a GError to fill
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseMediaCallStreamAddCandidatesFunc ()

    +
    GPtrArray *         (*TpBaseMediaCallStreamAddCandidatesFunc)
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         const GPtrArray *candidates,
    +                                                         GError **error);
    +

    +Signature of an implementation of +TpBaseMediaCallStreamClass.add_local_candidates. +

    +

    +Implementation should validate the added candidates and return a subset +(or all) of them that are accepted. Implementation should return a new +GPtrArray build in a way that g_ptr_array_unref() is enough to free all its +memory. It is fine to just add element pointers from candidates to the +returned GPtrArray without deep-copy them. +

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

    self :

    a TpBaseMediaCallStream +

    candidates :

    a GPtrArray of GValueArray containing candidates info

    error :

    a GError to fill
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseMediaCallStreamReportFailureFunc ()

    +
    void                (*TpBaseMediaCallStreamReportFailureFunc)
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         TpStreamFlowState old_state,
    +                                                         TpCallStateChangeReason reason,
    +                                                         const gchar *dbus_reason,
    +                                                         const gchar *message);
    +

    +Signature of an implementation of +TpBaseMediaCallStreamClass.report_sending_failure and +TpBaseMediaCallStreamClass.report_receiving_failure. +

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

    self :

    a TpBaseMediaCallStream +

    old_state :

    the previous TpStreamFlowState +

    reason :

    the TpCallStateChangeReason of the change

    dbus_reason :

    a specific reason for the change, which may be a D-Bus error in +the Telepathy namespace, a D-Bus error in any other namespace (for +implementation-specific errors), or the empty string to indicate that the +state change was not an error.

    message :

    an optional debug message, to expediate debugging the potentially +many processes involved in a call.
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseMediaCallStreamRequestReceivingFunc ()

    +
    void                (*TpBaseMediaCallStreamRequestReceivingFunc)
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         TpHandle contact,
    +                                                         gboolean receive);
    +

    +Signature of an implementation of +TpBaseMediaCallStreamClass.request_receiving. +

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

    self :

    a TpBaseMediaCallStream +

    contact :

    the contact from who user wants to start or stop receiving

    receive :

    wheter or not user would like to be receiving
    +

    Since 0.17.5

    +
    +
    +
    +

    TpBaseMediaCallStreamSetSendingFunc ()

    +
    gboolean            (*TpBaseMediaCallStreamSetSendingFunc)
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         gboolean sending,
    +                                                         GError **error);
    +

    +Signature of an implementation of TpBaseMediaCallStreamClass.set_sending. +

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

    self :

    a TpBaseMediaCallStream +

    sending :

    whether or not user would like to be sending

    error :

    a GError to fill

    Returns :

    +TRUE on success, FALSE otherwise.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_set_relay_info ()

    +
    void                tp_base_media_call_stream_set_relay_info
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         GPtrArray *relays);
    +

    +Set the relays info. The GPtrArray should have a free_func defined such as +g_ptr_array_ref() is enough to keep the data and g_ptr_array_unref() is +enough to release it later. +

    +

    +Note that this replaces the previously set relays, it is not an addition. +

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

    self :

    a TpBaseMediaCallStream +

    relays :

    the new relays info
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_set_stun_servers ()

    +
    void                tp_base_media_call_stream_set_stun_servers
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         GPtrArray *stun_servers);
    +

    +Set the STUN servers. The GPtrArray should have a free_func defined such as +g_ptr_array_ref() is enough to keep the data and g_ptr_array_unref() is +enough to release it later. +

    +

    +Note that this replaces the previously set STUN servers, it is not an +addition. +

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

    self :

    a TpBaseMediaCallStream +

    stun_servers :

    the new stun servers
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_add_endpoint ()

    +
    void                tp_base_media_call_stream_add_endpoint
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         TpCallStreamEndpoint *endpoint);
    +

    +Add endpoint to "endpoints" list, and emits +EndpointsChanged DBus signal. +

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

    self :

    a TpBaseMediaCallStream +

    endpoint :

    a TpCallStreamEndpoint +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_remove_endpoint ()

    +
    void                tp_base_media_call_stream_remove_endpoint
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         TpCallStreamEndpoint *endpoint);
    +

    +Remove endpoint from "endpoints" list, and emits +EndpointsChanged DBus signal. +

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

    self :

    a TpBaseMediaCallStream +

    endpoint :

    a TpCallStreamEndpoint +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_get_endpoints ()

    +
    GList *             tp_base_media_call_stream_get_endpoints
    +                                                        (TpBaseMediaCallStream *self);
    +

    +Same as "endpoints" but as a GList of +TpCallStreamEndpoint. +

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

    self :

    a TpBaseMediaCallStream +

    Returns :

    Borrowed GList of TpCallStreamEndpoint.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_get_username ()

    +
    const gchar *       tp_base_media_call_stream_get_username
    +                                                        (TpBaseMediaCallStream *self);
    +

    + +

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

    self :

    a TpBaseMediaCallStream +

    Returns :

    the username part of "local-credentials" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_get_password ()

    +
    const gchar *       tp_base_media_call_stream_get_password
    +                                                        (TpBaseMediaCallStream *self);
    +

    + +

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

    self :

    a TpBaseMediaCallStream +

    Returns :

    the password part of "local-credentials" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_update_receiving_state ()

    +
    void                tp_base_media_call_stream_update_receiving_state
    +                                                        (TpBaseMediaCallStream *self);
    +

    +Update the receiving state. +

    +
    ++ + + + +

    self :

    a TpBaseMediaCallStream +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_get_receiving_state ()

    +
    TpStreamFlowState   tp_base_media_call_stream_get_receiving_state
    +                                                        (TpBaseMediaCallStream *self);
    +

    + +

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

    self :

    a TpBaseMediaCallStream +

    Returns :

    the value of "receiving-state".
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_update_sending_state ()

    +
    void                tp_base_media_call_stream_update_sending_state
    +                                                        (TpBaseMediaCallStream *self);
    +

    +Update the sending state. +

    +
    ++ + + + +

    self :

    a TpBaseMediaCallStream +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_get_sending_state ()

    +
    TpStreamFlowState   tp_base_media_call_stream_get_sending_state
    +                                                        (TpBaseMediaCallStream *self);
    +

    + +

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

    self :

    a TpBaseMediaCallStream +

    Returns :

    the value of "sending-state".
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_set_local_sending ()

    +
    void                tp_base_media_call_stream_set_local_sending
    +                                                        (TpBaseMediaCallStream *self,
    +                                                         gboolean sending);
    +

    +Set local sending state. +

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

    self :

    a TpBaseMediaCallStream +

    sending :

    whether or not we are sending
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_base_media_call_stream_get_local_candidates ()

    +
    GPtrArray *         tp_base_media_call_stream_get_local_candidates
    +                                                        (TpBaseMediaCallStream *self);
    +

    + +

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

    self :

    a TpBaseMediaCallStream +

    Returns :

    the value of "local-candidates" as a GtrArray +
    +

    Since 0.17.5

    +
    +
    +
    +

    Property Details

    +
    +

    The "endpoints" property

    +
      "endpoints"                GPtrArray_DBusGObjectPath_*  : Read
    +

    +GPtrArray{object-path string} +The endpoints of this content. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "has-server-info" property

    +
      "has-server-info"          gboolean              : Read
    +

    +TRUE if "relay-info" and +"stun-servers" have been set. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "ice-restart-pending" property

    +
      "ice-restart-pending"      gboolean              : Read
    +

    +TRUE when ICERestartRequested signal is emitted, and FALSE when +SetCredentials is called. Useful for debugging. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "local-candidates" property

    +
      "local-candidates"         GPtrArray_GValueArray_guint+gchararray+guint+GHashTable_gchararray+GValue___*  : Read
    +

    +GPtrArray{candidate GValueArray} +List of local candidates. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "local-credentials" property

    +
      "local-credentials"        GValueArray_gchararray+gchararray_*  : Read
    +

    +GValueArray{username string, password string} +ufrag and pwd as defined by ICE. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "receiving-state" property

    +
      "receiving-state"          guint                 : Read
    +

    +The receiving TpStreamFlowState. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "relay-info" property

    +
      "relay-info"               GPtrArray_GHashTable_gchararray+GValue__*  : Read
    +

    +GPtrArray{relay-info asv} +List of relay information. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "sending-state" property

    +
      "sending-state"            guint                 : Read
    +

    +The sending TpStreamFlowState. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "stun-servers" property

    +
      "stun-servers"             GPtrArray_GValueArray_gchararray+guint__*  : Read
    +

    +GPtrArray{stun-server GValueArray} +List of STUN servers. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "transport" property

    +
      "transport"                guint                 : Read / Write / Construct Only
    +

    +The TpStreamTransportType of this stream. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    + +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpBaseRoomConfig.html telepathy-glib-0.17.5/docs/reference/html/TpBaseRoomConfig.html --- telepathy-glib-0.17.4/docs/reference/html/TpBaseRoomConfig.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpBaseRoomConfig.html 2012-02-20 17:31:30.000000000 +0000 @@ -131,13 +131,13 @@ 5 6 7 -
    G_DEFINE_TYPE_WITH_CODE (MyMucChannel, my_muc_channel,
    -    TP_TYPE_BASE_CHANNEL,
    -    // ...
    -    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_ROOM_CONFIG,
    -        tp_base_room_config_iface_init)
    -    // ...
    -    )
    +
    G_DEFINE_TYPE_WITH_CODE (MyMucChannel, my_muc_channel,
    +    TP_TYPE_BASE_CHANNEL,
    +    // ...
    +    G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_ROOM_CONFIG,
    +        tp_base_room_config_iface_init)
    +    // ...
    +    )
    @@ -158,13 +158,13 @@ 5 6 7 -
    static void
    -my_muc_channel_class_init (MyMucChannelClass *klass)
    -{
    -  // ...
    -  tp_base_room_config_register_class (TP_BASE_CHANNEL_CLASS (klass));
    -  // ...
    -}
    +
    static void
    +my_muc_channel_class_init (MyMucChannelClass *klass)
    +{
    +  // ...
    +  tp_base_room_config_register_class (TP_BASE_CHANNEL_CLASS (klass));
    +  // ...
    +}
    @@ -198,11 +198,11 @@ 3 4 5 -
    g_object_self (room_config,
    -   "description", "A place to bury strangers",
    -   "private", TRUE,
    -   NULL);
    -tp_base_room_config_emit_properties_changed (room_config);
    +
    g_object_self (room_config,
    +   "description", "A place to bury strangers",
    +   "private", TRUE,
    +   NULL);
    +tp_base_room_config_emit_properties_changed (room_config);
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpCallContentMediaDescription.html telepathy-glib-0.17.5/docs/reference/html/TpCallContentMediaDescription.html --- telepathy-glib-0.17.4/docs/reference/html/TpCallContentMediaDescription.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpCallContentMediaDescription.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,399 @@ + + + + +TpCallContentMediaDescription + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    TpCallContentMediaDescription

    +

    TpCallContentMediaDescription — implementation of TpSvcCallContentMediaDescription

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/telepathy-glib.h>
    +
    +                    TpCallContentMediaDescription;
    +struct              TpCallContentMediaDescriptionClass;
    +TpCallContentMediaDescription * tp_call_content_media_description_new
    +                                                        (TpDBusDaemon *dbus_daemon,
    +                                                         const gchar *object_path,
    +                                                         TpHandle remote_contact,
    +                                                         gboolean has_remote_information,
    +                                                         gboolean further_negotiation_required);
    +const gchar *       tp_call_content_media_description_get_object_path
    +                                                        (TpCallContentMediaDescription *self);
    +TpHandle            tp_call_content_media_description_get_remote_contact
    +                                                        (TpCallContentMediaDescription *self);
    +void                tp_call_content_media_description_append_codec
    +                                                        (TpCallContentMediaDescription *self,
    +                                                         guint identifier,
    +                                                         const gchar *name,
    +                                                         guint clock_rate,
    +                                                         guint channels,
    +                                                         gboolean updated,
    +                                                         GHashTable *parameters);
    +void                tp_call_content_media_description_add_ssrc
    +                                                        (TpCallContentMediaDescription *self,
    +                                                         TpHandle contact,
    +                                                         guint ssrc);
    +
    +
    +
    +

    Object Hierarchy

    +
    +  GObject
    +   +----TpCallContentMediaDescription
    +
    +
    +
    +

    Implemented Interfaces

    +

    +TpCallContentMediaDescription implements + TpSvcCallContentMediaDescription and TpSvcDBusProperties.

    +
    +
    +

    Properties

    +
    +  "codecs"                   GPtrArray_GValueArray_guint+gchararray+guint+guint+gboolean+GHashTable_gchararray+gchararray___*  : Read
    +  "dbus-daemon"              TpDBusDaemon*         : Read / Write / Construct Only
    +  "further-negotiation-required" gboolean              : Read / Write / Construct Only
    +  "has-remote-information"   gboolean              : Read / Write / Construct Only
    +  "interfaces"               GStrv                 : Read
    +  "object-path"              gchar*                : Read / Write / Construct Only
    +  "remote-contact"           guint                 : Read / Write / Construct Only
    +  "ssrcs"                    GHashTable_guint+GArray_guint__*  : Read
    +
    +
    +
    +

    Description

    +

    +This class is used to negociate the media description used with a remote +contact. To be used with TpBaseMediaCallContent implementations. +

    +
    +
    +

    Details

    +
    +

    TpCallContentMediaDescription

    +
    typedef struct _TpCallContentMediaDescription TpCallContentMediaDescription;
    +

    +A class for media content description +

    +

    Since 0.17.5

    +
    +
    +
    +

    struct TpCallContentMediaDescriptionClass

    +
    struct TpCallContentMediaDescriptionClass {
    +};
    +
    +

    +The class structure for TpCallContentMediaDescription +

    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_media_description_new ()

    +
    TpCallContentMediaDescription * tp_call_content_media_description_new
    +                                                        (TpDBusDaemon *dbus_daemon,
    +                                                         const gchar *object_path,
    +                                                         TpHandle remote_contact,
    +                                                         gboolean has_remote_information,
    +                                                         gboolean further_negotiation_required);
    +

    +Create a new TpCallContentMediaDescription object. More information can be +added after construction using +tp_call_content_media_description_append_codec() and +tp_call_content_media_description_add_ssrc(). +

    +

    +Once all information has been filled, the media description can be offered +using tp_base_media_call_content_offer_media_description(). +

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

    dbus_daemon :

    value of "dbus-daemon" property

    object_path :

    value of "object-path" property

    remote_contact :

    value of +"remote-contact" property

    has_remote_information :

    value of +"has_remote_information" property

    further_negotiation_required :

    value of +"further_negotiation_required" property

    Returns :

    a new TpCallContentMediaDescription.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_media_description_get_object_path ()

    +
    const gchar *       tp_call_content_media_description_get_object_path
    +                                                        (TpCallContentMediaDescription *self);
    +

    + +

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

    self :

    a TpCallContentMediaDescription +

    Returns :

    the value of "object-path" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_media_description_get_remote_contact ()

    +
    TpHandle            tp_call_content_media_description_get_remote_contact
    +                                                        (TpCallContentMediaDescription *self);
    +

    + +

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

    self :

    a TpCallContentMediaDescription +

    Returns :

    the value of "remote-contact" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_media_description_append_codec ()

    +
    void                tp_call_content_media_description_append_codec
    +                                                        (TpCallContentMediaDescription *self,
    +                                                         guint identifier,
    +                                                         const gchar *name,
    +                                                         guint clock_rate,
    +                                                         guint channels,
    +                                                         gboolean updated,
    +                                                         GHashTable *parameters);
    +

    +Add description for a supported codec. +

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

    self :

    a TpCallContentMediaDescription +

    identifier :

    if you use this API, you know what it is about

    name :

    if you use this API, you know what it is about

    clock_rate :

    if you use this API, you know what it is about

    channels :

    if you use this API, you know what it is about

    updated :

    if you use this API, you know what it is about

    parameters :

    if you use this API, you know what it is about
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_content_media_description_add_ssrc ()

    +
    void                tp_call_content_media_description_add_ssrc
    +                                                        (TpCallContentMediaDescription *self,
    +                                                         TpHandle contact,
    +                                                         guint ssrc);
    +

    +if you use this API, you know what it is about +

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

    self :

    a TpCallContentMediaDescription +

    contact :

    if you use this API, you know what it is about

    ssrc :

    if you use this API, you know what it is about
    +

    Since 0.17.5

    +
    +
    +
    +

    Property Details

    +
    +

    The "codecs" property

    +
      "codecs"                   GPtrArray_GValueArray_guint+gchararray+guint+guint+gboolean+GHashTable_gchararray+gchararray___*  : Read
    +

    +GPtrArray{codecs GValueArray}. +A list of codecs the remote contact supports. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "dbus-daemon" property

    +
      "dbus-daemon"              TpDBusDaemon*         : Read / Write / Construct Only
    +

    +The connection to the DBus daemon owning the CM. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "further-negotiation-required" property

    +
      "further-negotiation-required" gboolean              : Read / Write / Construct Only
    +

    +TRUE if the MediaDescription contains remote information. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "has-remote-information" property

    +
      "has-remote-information"   gboolean              : Read / Write / Construct Only
    +

    True if the MediaDescription contains remote information.

    +

    Default value: FALSE

    +
    +
    +
    +

    The "interfaces" property

    +
      "interfaces"               GStrv                 : Read
    +

    +Additional interfaces implemented by this object. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "object-path" property

    +
      "object-path"              gchar*                : Read / Write / Construct Only
    +

    +The D-Bus object path used for this object on the bus. +

    +

    Default value: NULL

    +

    Since 0.17.5

    +
    +
    +
    +

    The "remote-contact" property

    +
      "remote-contact"           guint                 : Read / Write / Construct Only
    +

    +The contact TpHandle that this media description applies to. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    The "ssrcs" property

    +
      "ssrcs"                    GHashTable_guint+GArray_guint__*  : Read
    +

    +GHashTable{contact TpHandle, GArray{uint}} +A map of contacts to SSRCs. +

    +

    Since 0.17.5

    +
    +
    + +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpCallStreamEndpoint.html telepathy-glib-0.17.5/docs/reference/html/TpCallStreamEndpoint.html --- telepathy-glib-0.17.4/docs/reference/html/TpCallStreamEndpoint.html 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpCallStreamEndpoint.html 2012-02-20 17:31:30.000000000 +0000 @@ -0,0 +1,533 @@ + + + + +TpCallStreamEndpoint + + + + + + + + + + + + + + + + + + + +
    +
    +
    + + +
    +

    TpCallStreamEndpoint

    +

    TpCallStreamEndpoint — class for TpSvcCallStreamEndpoint implementations

    +
    +
    +

    Synopsis

    +
    +#include <telepathy-glib/telepathy-glib.h>
    +
    +                    TpCallStreamEndpoint;
    +struct              TpCallStreamEndpointClass;
    +TpCallStreamEndpoint * tp_call_stream_endpoint_new      (TpDBusDaemon *dbus_daemon,
    +                                                         const gchar *object_path,
    +                                                         TpStreamTransportType transport,
    +                                                         gboolean is_ice_lite);
    +const gchar *       tp_call_stream_endpoint_get_object_path
    +                                                        (TpCallStreamEndpoint *self);
    +TpStreamEndpointState tp_call_stream_endpoint_get_state (TpCallStreamEndpoint *self,
    +                                                         TpStreamComponent component);
    +void                tp_call_stream_endpoint_add_new_candidates
    +                                                        (TpCallStreamEndpoint *self,
    +                                                         const GPtrArray *candidates);
    +void                tp_call_stream_endpoint_add_new_candidate
    +                                                        (TpCallStreamEndpoint *self,
    +                                                         TpStreamComponent component,
    +                                                         const gchar *address,
    +                                                         guint port,
    +                                                         const GHashTable *info_hash);
    +void                tp_call_stream_endpoint_set_remote_credentials
    +                                                        (TpCallStreamEndpoint *self,
    +                                                         const gchar *username,
    +                                                         const gchar *password);
    +
    +
    +
    +

    Object Hierarchy

    +
    +  GObject
    +   +----TpCallStreamEndpoint
    +
    +
    +
    +

    Implemented Interfaces

    +

    +TpCallStreamEndpoint implements + TpSvcCallStreamEndpoint and TpSvcDBusProperties.

    +
    +
    +

    Properties

    +
    +  "controlling"              gboolean              : Read
    +  "dbus-daemon"              TpDBusDaemon*         : Read / Write / Construct Only
    +  "endpoint-state"           GHashTable_guint+guint_*  : Read
    +  "is-ice-lite"              gboolean              : Read / Write / Construct Only
    +  "object-path"              gchar*                : Read / Write / Construct Only
    +  "remote-candidates"        GPtrArray_GValueArray_guint+gchararray+guint+GHashTable_gchararray+GValue___*  : Read
    +  "remote-credentials"       GValueArray_gchararray+gchararray_*  : Read
    +  "selected-candidate-pairs" GPtrArray_GValueArray_GValueArray_guint+gchararray+guint+GHashTable_gchararray+GValue__+GValueArray_guint+gchararray+guint+GHashTable_gchararray+GValue____*  : Read
    +  "transport"                guint                 : Read / Write / Construct Only
    +
    +
    + +
    +

    Description

    +

    +This class makes it easier to write TpSvcCallStreamEndpoint +implementations by implementing its properties and methods. +

    +
    +
    +

    Details

    +
    +

    TpCallStreamEndpoint

    +
    typedef struct _TpCallStreamEndpoint TpCallStreamEndpoint;
    +

    +A class for call stream endpoint implementations +

    +

    Since 0.17.5

    +
    +
    +
    +

    struct TpCallStreamEndpointClass

    +
    struct TpCallStreamEndpointClass {
    +};
    +
    +

    +The class structure for TpCallStreamEndpoint +

    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_endpoint_new ()

    +
    TpCallStreamEndpoint * tp_call_stream_endpoint_new      (TpDBusDaemon *dbus_daemon,
    +                                                         const gchar *object_path,
    +                                                         TpStreamTransportType transport,
    +                                                         gboolean is_ice_lite);
    +

    +Create a new TpCallStreamEndpoint object. It is registered on the bus +at construction, and is unregistered at dispose. +

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

    dbus_daemon :

    value of "dbus-daemon" property

    object_path :

    value of "object-path" property

    transport :

    value of "transport" property

    is_ice_lite :

    value of "is_ice_lite" property

    Returns :

    a new TpCallStreamEndpoint.
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_endpoint_get_object_path ()

    +
    const gchar *       tp_call_stream_endpoint_get_object_path
    +                                                        (TpCallStreamEndpoint *self);
    +

    + +

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

    self :

    a TpCallStreamEndpoint +

    Returns :

    the value of "object-path" +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_endpoint_get_state ()

    +
    TpStreamEndpointState tp_call_stream_endpoint_get_state (TpCallStreamEndpoint *self,
    +                                                         TpStreamComponent component);
    +

    + +

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

    self :

    a TpCallStreamEndpoint +

    component :

    a TpStreamComponent +

    Returns :

    the state of self's component +
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_endpoint_add_new_candidates ()

    +
    void                tp_call_stream_endpoint_add_new_candidates
    +                                                        (TpCallStreamEndpoint *self,
    +                                                         const GPtrArray *candidates);
    +

    +Add candidates to the "remote-candidates" property. +See Also: tp_call_stream_endpoint_add_new_candidate(). +

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

    self :

    a TpCallStreamEndpoint +

    candidates :

    +GPtrArray of GValueArray defining the candidates to add
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_endpoint_add_new_candidate ()

    +
    void                tp_call_stream_endpoint_add_new_candidate
    +                                                        (TpCallStreamEndpoint *self,
    +                                                         TpStreamComponent component,
    +                                                         const gchar *address,
    +                                                         guint port,
    +                                                         const GHashTable *info_hash);
    +

    +Add a candidate to the "remote-candidates" property. +See Also: tp_call_stream_endpoint_add_new_candidates(). +

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

    self :

    a TpCallStreamEndpoint +

    component :

    a TpStreamComponent +

    address :

    an IP address

    port :

    a port number

    info_hash :

    string -> GValue mapping for extra info
    +

    Since 0.17.5

    +
    +
    +
    +

    tp_call_stream_endpoint_set_remote_credentials ()

    +
    void                tp_call_stream_endpoint_set_remote_credentials
    +                                                        (TpCallStreamEndpoint *self,
    +                                                         const gchar *username,
    +                                                         const gchar *password);
    +

    +Set the username and password to use for self's crendentials. +

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

    self :

    a TpCallStreamEndpoint +

    username :

    the username

    password :

    the password
    +

    Since 0.17.5

    +
    +
    +
    +

    Property Details

    +
    +

    The "controlling" property

    +
      "controlling"              gboolean              : Read
    +

    +Whether or not the local side is taking the controlling role. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "dbus-daemon" property

    +
      "dbus-daemon"              TpDBusDaemon*         : Read / Write / Construct Only
    +

    +The connection to the DBus daemon owning the CM. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "endpoint-state" property

    +
      "endpoint-state"           GHashTable_guint+guint_*  : Read
    +

    +GHashTable{TpStreamComponent -> TpStreamEndpointState} +The state of this endpoint. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "is-ice-lite" property

    +
      "is-ice-lite"              gboolean              : Read / Write / Construct Only
    +

    +Whether or not the Remote side is an ICE Lite endpoint. +

    +

    Default value: FALSE

    +

    Since 0.17.5

    +
    +
    +
    +

    The "object-path" property

    +
      "object-path"              gchar*                : Read / Write / Construct Only
    +

    +The D-Bus object path used for this object on the bus. +

    +

    Default value: NULL

    +

    Since 0.17.5

    +
    +
    +
    +

    The "remote-candidates" property

    +
      "remote-candidates"        GPtrArray_GValueArray_guint+gchararray+guint+GHashTable_gchararray+GValue___*  : Read
    +

    +GPtrArray{candidate GValueArray} +The remote candidates of this endpoint. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "remote-credentials" property

    +
      "remote-credentials"       GValueArray_gchararray+gchararray_*  : Read
    +

    +GValueArray{username string, password string} +The remote credentials of this endpoint. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "selected-candidate-pairs" property

    +
      "selected-candidate-pairs" GPtrArray_GValueArray_GValueArray_guint+gchararray+guint+GHashTable_gchararray+GValue__+GValueArray_guint+gchararray+guint+GHashTable_gchararray+GValue____*  : Read
    +

    +GPtrArray{local-candidate GValueArray, remote-candidate GValueArray} +The candidate pairs selected for this endpoint. +

    +

    Since 0.17.5

    +
    +
    +
    +

    The "transport" property

    +
      "transport"                guint                 : Read / Write / Construct Only
    +

    +The TpStreamTransportType for the content of this endpoint. +

    +

    Default value: 0

    +

    Since 0.17.5

    +
    +
    +
    +

    Signal Details

    +
    +

    The "candidate-accepted" signal

    +
    void                user_function                      (TpCallStreamEndpoint *self,
    +                                                        gpointer              user_data)      : Run Last
    +

    +The ::candidate-accepted signal is emitted whenever +AcceptSelectedCandidatePair DBus method has been called on this object. +

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

    self :

    the TpCallStreamEndpoint +

    local_candidate :

    the local candidate

    remote_candidate :

    the remote candidate

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    +

    The "candidate-rejected" signal

    +
    void                user_function                      (TpCallStreamEndpoint *self,
    +                                                        gpointer              user_data)      : Run Last
    +

    +The ::candidate-rejected signal is emitted whenever +RejectSelectedCandidatePair DBus method has been called on this object. +

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

    self :

    the TpCallStreamEndpoint +

    local_candidate :

    the local candidate

    remote_candidate :

    the remote candidate

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    +

    The "candidate-selected" signal

    +
    void                user_function                      (TpCallStreamEndpoint *self,
    +                                                        gpointer              user_data)      : Run Last
    +

    +The ::candidate-selected signal is emitted whenever +SetSelectedCandidatePair DBus method has been called on this object. +

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

    self :

    the TpCallStreamEndpoint +

    local_candidate :

    the local candidate

    remote_candidate :

    the remote candidate

    user_data :

    user data set when the signal handler was connected.
    +

    Since 0.17.5

    +
    +
    +
    +

    See Also

    +TpBaseMediaCallStream +
    +
    + + + \ No newline at end of file diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpChannelIface.html telepathy-glib-0.17.5/docs/reference/html/TpChannelIface.html --- telepathy-glib-0.17.4/docs/reference/html/TpChannelIface.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpChannelIface.html 2012-02-20 17:31:30.000000000 +0000 @@ -63,7 +63,7 @@

    Known Implementations

    TpChannelIface is implemented by - TpBaseChannel, TpBasePasswordChannel, TpChannel, TpDBusTubeChannel, TpFileTransferChannel, TpStreamTubeChannel and TpTextChannel.

    + TpBaseCallChannel, TpBaseChannel, TpBaseMediaCallChannel, TpBasePasswordChannel, TpCallChannel, TpChannel, TpDBusTubeChannel, TpFileTransferChannel, TpStreamTubeChannel and TpTextChannel.

    Properties

    diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpExportableChannel.html telepathy-glib-0.17.5/docs/reference/html/TpExportableChannel.html --- telepathy-glib-0.17.4/docs/reference/html/TpExportableChannel.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpExportableChannel.html 2012-02-20 17:31:30.000000000 +0000 @@ -72,7 +72,7 @@

    Known Implementations

    TpExportableChannel is implemented by - TpBaseChannel and TpBasePasswordChannel.

    + TpBaseCallChannel, TpBaseChannel, TpBaseMediaCallChannel and TpBasePasswordChannel.

    Properties

    @@ -206,25 +206,25 @@ 17 18 19 -
    case PROP_CHANNEL_PROPERTIES:
    -  g_value_take_boxed (value,
    -    tp_dbus_properties_mixin_make_properties_hash (object,
    -        // The spec says these properties MUST be included:
    -        TP_IFACE_CHANNEL, "TargetHandle",
    -        TP_IFACE_CHANNEL, "TargetHandleType",
    -        TP_IFACE_CHANNEL, "ChannelType",
    -        TP_IFACE_CHANNEL, "TargetID",
    -        TP_IFACE_CHANNEL, "Requested",
    -        // These aren't mandatory as of spec 0.17.17
    -        // (but they should be):
    -        TP_IFACE_CHANNEL, "InitiatorHandle",
    -        TP_IFACE_CHANNEL, "InitiatorID",
    -        TP_IFACE_CHANNEL, "Interfaces",
    -        // Perhaps your channel has some other immutable properties:
    -        TP_IFACE_CHANNEL_INTERFACE_MESSAGES, "SupportedContentTypes",
    -        // etc.
    -        NULL));
    -  break;
    +
    case PROP_CHANNEL_PROPERTIES:
    +  g_value_take_boxed (value,
    +    tp_dbus_properties_mixin_make_properties_hash (object,
    +        // The spec says these properties MUST be included:
    +        TP_IFACE_CHANNEL, "TargetHandle",
    +        TP_IFACE_CHANNEL, "TargetHandleType",
    +        TP_IFACE_CHANNEL, "ChannelType",
    +        TP_IFACE_CHANNEL, "TargetID",
    +        TP_IFACE_CHANNEL, "Requested",
    +        // These aren't mandatory as of spec 0.17.17
    +        // (but they should be):
    +        TP_IFACE_CHANNEL, "InitiatorHandle",
    +        TP_IFACE_CHANNEL, "InitiatorID",
    +        TP_IFACE_CHANNEL, "Interfaces",
    +        // Perhaps your channel has some other immutable properties:
    +        TP_IFACE_CHANNEL_INTERFACE_MESSAGES, "SupportedContentTypes",
    +        // etc.
    +        NULL));
    +  break;
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpIntset.html telepathy-glib-0.17.5/docs/reference/html/TpIntset.html --- telepathy-glib-0.17.4/docs/reference/html/TpIntset.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpIntset.html 2012-02-20 17:31:30.000000000 +0000 @@ -707,15 +707,15 @@ 7 8 9 -
    TpIntsetFastIter iter;
    -guint element;
    +        
    TpIntsetFastIter iter;
    +guint element;
     
    -tp_intset_fast_iter_init (&iter, intset);
    +tp_intset_fast_iter_init (&iter, intset);
     
    -while (tp_intset_fast_iter_next (&iter, &element))
    -{
    -  printf ("%u is in the intset\n", element);
    -}
    +while (tp_intset_fast_iter_next (&iter, &element)) +{ + printf ("%u is in the intset\n", element); +}
    @@ -798,12 +798,12 @@ 4 5 6 -
    void
    -do_something (const TpIntset *intset)
    -{
    -  TpIntsetIter iter = TP_INTSET_ITER_INIT (intset);
    -  /* ... do something with iter ... */
    -}
    +
    void
    +do_something (const TpIntset *intset)
    +{
    +  TpIntsetIter iter = TP_INTSET_ITER_INIT (intset);
    +  /* ... do something with iter ... */
    +}
    @@ -903,11 +903,11 @@ 3 4 5 -
    TpIntsetIter iter = TP_INTSET_INIT (intset);
    -while (tp_intset_iter_next (&iter))
    -{
    -  printf ("%u is in the intset\n", iter.element);
    -}
    +
    TpIntsetIter iter = TP_INTSET_INIT (intset);
    +while (tp_intset_iter_next (&iter))
    +{
    +  printf ("%u is in the intset\n", iter.element);
    +}
    diff -Nru telepathy-glib-0.17.4/docs/reference/html/TpMessage.html telepathy-glib-0.17.5/docs/reference/html/TpMessage.html --- telepathy-glib-0.17.4/docs/reference/html/TpMessage.html 2011-12-19 15:20:42.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/html/TpMessage.html 2012-02-20 17:31:30.000000000 +0000 @@ -49,8 +49,8 @@ gchar * tp_message_to_text (TpMessage *message, TpChannelTextMessageFlags *out_flags); TpChannelTextMessageType tp_message_get_message_type (TpMessage *self); -gint64 tp_message_get_received_timestamp (TpMessage *self); -gint64 tp_message_get_sent_timestamp (TpMessage *self); +gint64 tp_message_get_received_timestamp (TpMessage *self); +gint64 tp_message_get_sent_timestamp (TpMessage *self); const gchar * tp_message_get_specific_to_interface (TpMessage *self); const gchar * tp_message_get_supersedes (TpMessage *self); @@ -58,7 +58,7 @@ gboolean tp_message_is_delivery_report (TpMessage *self); gboolean tp_message_is_rescued (TpMessage *self); gboolean tp_message_is_scrollback (TpMessage *self); -guint32 tp_message_get_pending_message_id (TpMessage *self, +guint32 tp_message_get_pending_message_id (TpMessage *self, gboolean *valid); gboolean tp_message_is_mutable (TpMessage *self); @@ -88,11 +88,11 @@ void tp_message_set_int32 (TpMessage *self, guint part, const gchar *key, - gint32 i); + gint32 i); void tp_message_set_int64 (TpMessage *self, guint part, const gchar *key, - gint64 i); + gint64 i); void tp_message_set_string (TpMessage *self, guint part, const gchar *key, @@ -109,11 +109,11 @@ void tp_message_set_uint32 (TpMessage *self, guint part, const gchar *key, - guint32 u); + guint32 u); void tp_message_set_uint64 (TpMessage *self, guint part, const gchar *key, - guint64 u); + guint64 u); TpMessage * tp_message_new (TpBaseConnection *connection, guint initial_parts, @@ -282,7 +282,7 @@

    tp_message_get_received_timestamp ()

    -
    gint64              tp_message_get_received_timestamp   (TpMessage *self);
    +
    gint64              tp_message_get_received_timestamp   (TpMessage *self);

    Return when this message was received locally, as a number of seconds since the beginning of 1970 in the UTC timezone (the same representation used by @@ -306,7 +306,7 @@


    tp_message_get_sent_timestamp ()

    -
    gint64              tp_message_get_sent_timestamp       (TpMessage *self);
    +
    gint64              tp_message_get_sent_timestamp       (TpMessage *self);

    Return when this message was sent, as a number of seconds since the beginning of 1970 in the UTC timezone (the same representation used by @@ -500,7 +500,7 @@


    tp_message_get_pending_message_id ()

    -
    guint32             tp_message_get_pending_message_id   (TpMessage *self,
    +
    guint32             tp_message_get_pending_message_id   (TpMessage *self,
                                                              gboolean *valid);

    Return the incoming message ID of self. Only incoming messages have such @@ -786,7 +786,7 @@

    void                tp_message_set_int32                (TpMessage *self,
                                                              guint part,
                                                              const gchar *key,
    -                                                         gint32 i);
    + gint32 i);

    Set key in part part of self to have i as a signed integer value.

    @@ -821,7 +821,7 @@
    void                tp_message_set_int64                (TpMessage *self,
                                                              guint part,
                                                              const gchar *key,
    -                                                         gint64 i);
    + gint64 i);

    Set key in part part of self to have i as a signed integer value.

    @@ -964,7 +964,7 @@
    void                tp_message_set_uint32               (TpMessage *self,
                                                              guint part,
                                                              const gchar *key,
    -                                                         guint32 u);
    + guint32 u);

    Set key in part part of self to have u as an unsigned integer value.

    @@ -999,7 +999,7 @@
    void                tp_message_set_uint64               (TpMessage *self,
                                                              guint part,
                                                              const gchar *key,
    -                                                         guint64 u);
    + guint64 u);

    Set key in part part of self to have u as an unsigned integer value.

    diff -Nru telepathy-glib-0.17.4/docs/reference/Makefile.am telepathy-glib-0.17.5/docs/reference/Makefile.am --- telepathy-glib-0.17.4/docs/reference/Makefile.am 2011-09-27 11:57:27.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/Makefile.am 2012-02-20 16:56:41.000000000 +0000 @@ -65,9 +65,11 @@ account-channel-request-internal.h \ add-dispatch-operation-context-internal.h \ automatic-client-factory-internal.h \ + base-call-internal.h \ base-connection-internal.h \ base-contact-list-internal.h \ base-protocol-internal.h \ + call-internal.h \ channel-dispatch-operation-internal.h \ channel-internal.h \ client-message-internal.h \ diff -Nru telepathy-glib-0.17.4/docs/reference/Makefile.in telepathy-glib-0.17.5/docs/reference/Makefile.in --- telepathy-glib-0.17.4/docs/reference/Makefile.in 2011-12-19 15:18:53.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/Makefile.in 2012-02-20 17:31:08.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -57,11 +57,11 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = version.xml 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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -300,9 +300,11 @@ account-channel-request-internal.h \ add-dispatch-operation-context-internal.h \ automatic-client-factory-internal.h \ + base-call-internal.h \ base-connection-internal.h \ base-contact-list-internal.h \ base-protocol-internal.h \ + call-internal.h \ channel-dispatch-operation-internal.h \ channel-internal.h \ client-message-internal.h \ @@ -417,6 +419,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/gtk-doc.make: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -490,10 +493,15 @@ 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 -Nru telepathy-glib-0.17.4/docs/reference/telepathy-glib-docs.sgml telepathy-glib-0.17.5/docs/reference/telepathy-glib-docs.sgml --- telepathy-glib-0.17.4/docs/reference/telepathy-glib-docs.sgml 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/telepathy-glib-docs.sgml 2012-02-20 16:56:41.000000000 +0000 @@ -54,6 +54,7 @@ + @@ -67,6 +68,10 @@ + + + + @@ -89,6 +94,10 @@ + + + + @@ -109,6 +118,7 @@ + @@ -153,6 +163,14 @@ + + + + + + + + Service-side handle repositories diff -Nru telepathy-glib-0.17.4/docs/reference/telepathy-glib-sections.txt telepathy-glib-0.17.5/docs/reference/telepathy-glib-sections.txt --- telepathy-glib-0.17.4/docs/reference/telepathy-glib-sections.txt 2011-12-19 15:20:41.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/telepathy-glib-sections.txt 2012-02-20 17:31:29.000000000 +0000 @@ -187,12 +187,14 @@ TpBaseChannelFillPropertiesFunc TpBaseChannelCloseFunc TpBaseChannelGetPathFunc +TpBaseChannelGetInterfacesFunc tp_base_channel_register tp_base_channel_close tp_base_channel_destroyed tp_base_channel_reopened tp_base_channel_get_object_path tp_base_channel_get_connection +tp_base_channel_get_self_handle tp_base_channel_get_target_handle tp_base_channel_get_initiator tp_base_channel_is_requested @@ -838,6 +840,257 @@
    +svc-channel-call +svc-channel-call +telepathy-glib/svc-call.h +TpSvcChannelTypeCall +TpSvcChannelTypeCallClass +tp_svc_channel_type_call_accept_impl +tp_svc_channel_type_call_add_content_impl +tp_svc_channel_type_call_emit_call_members_changed +tp_svc_channel_type_call_emit_call_state_changed +tp_svc_channel_type_call_emit_content_added +tp_svc_channel_type_call_emit_content_removed +tp_svc_channel_type_call_hangup_impl +tp_svc_channel_type_call_implement_accept +tp_svc_channel_type_call_implement_add_content +tp_svc_channel_type_call_implement_hangup +tp_svc_channel_type_call_implement_set_queued +tp_svc_channel_type_call_implement_set_ringing +tp_svc_channel_type_call_return_from_accept +tp_svc_channel_type_call_return_from_add_content +tp_svc_channel_type_call_return_from_hangup +tp_svc_channel_type_call_return_from_set_queued +tp_svc_channel_type_call_return_from_set_ringing +tp_svc_channel_type_call_set_queued_impl +tp_svc_channel_type_call_set_ringing_impl + +TP_TYPE_SVC_CHANNEL_TYPE_CALL +TP_IS_SVC_CHANNEL_TYPE_CALL +TP_SVC_CHANNEL_TYPE_CALL +TP_SVC_CHANNEL_TYPE_CALL_GET_CLASS +tp_svc_channel_type_call_get_type + +TpSvcCallContent +TpSvcCallContentClass +tp_svc_call_content_emit_streams_added +tp_svc_call_content_emit_streams_removed +tp_svc_call_content_implement_remove +tp_svc_call_content_remove_impl +tp_svc_call_content_return_from_remove + +tp_svc_call_content_get_type +TP_SVC_CALL_CONTENT +TP_SVC_CALL_CONTENT_GET_CLASS +TP_IS_SVC_CALL_CONTENT +TP_TYPE_SVC_CALL_CONTENT + +TpSvcCallContentInterfaceMedia +TpSvcCallContentInterfaceMediaClass +tp_svc_call_content_interface_media_acknowledge_dtmf_change_impl +tp_svc_call_content_interface_media_emit_dtmf_change_requested +tp_svc_call_content_interface_media_emit_local_media_description_changed +tp_svc_call_content_interface_media_emit_media_description_offer_done +tp_svc_call_content_interface_media_emit_media_descriptions_removed +tp_svc_call_content_interface_media_emit_new_media_description_offer +tp_svc_call_content_interface_media_emit_remote_media_descriptions_changed +tp_svc_call_content_interface_media_fail_impl +tp_svc_call_content_interface_media_implement_acknowledge_dtmf_change +tp_svc_call_content_interface_media_implement_fail +tp_svc_call_content_interface_media_implement_update_local_media_description +tp_svc_call_content_interface_media_return_from_acknowledge_dtmf_change +tp_svc_call_content_interface_media_return_from_fail +tp_svc_call_content_interface_media_return_from_update_local_media_description +tp_svc_call_content_interface_media_update_local_media_description_impl + +tp_svc_call_content_interface_media_get_type +TP_SVC_CALL_CONTENT_INTERFACE_MEDIA +TP_SVC_CALL_CONTENT_INTERFACE_MEDIA_GET_CLASS +TP_IS_SVC_CALL_CONTENT_INTERFACE_MEDIA +TP_TYPE_SVC_CALL_CONTENT_INTERFACE_MEDIA + +TpSvcCallContentInterfaceVideoControl +TpSvcCallContentInterfaceVideoControlClass +tp_svc_call_content_interface_video_control_emit_bitrate_changed +tp_svc_call_content_interface_video_control_emit_framerate_changed +tp_svc_call_content_interface_video_control_emit_key_frame_requested +tp_svc_call_content_interface_video_control_emit_mtu_changed +tp_svc_call_content_interface_video_control_emit_video_resolution_changed + +tp_svc_call_content_interface_video_control_get_type +TP_SVC_CALL_CONTENT_INTERFACE_VIDEO_CONTROL +TP_SVC_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_GET_CLASS +TP_IS_SVC_CALL_CONTENT_INTERFACE_VIDEO_CONTROL +TP_TYPE_SVC_CALL_CONTENT_INTERFACE_VIDEO_CONTROL + +TpSvcCallContentInterfaceAudioControl +TpSvcCallContentInterfaceAudioControlClass +tp_svc_call_content_interface_audio_control_implement_report_input_volume +tp_svc_call_content_interface_audio_control_implement_report_output_volume +tp_svc_call_content_interface_audio_control_report_input_volume_impl +tp_svc_call_content_interface_audio_control_report_output_volume_impl +tp_svc_call_content_interface_audio_control_return_from_report_input_volume +tp_svc_call_content_interface_audio_control_return_from_report_output_volume + +tp_svc_call_content_interface_audio_control_get_type +TP_IS_SVC_CALL_CONTENT_INTERFACE_AUDIO_CONTROL +TP_SVC_CALL_CONTENT_INTERFACE_AUDIO_CONTROL +TP_SVC_CALL_CONTENT_INTERFACE_AUDIO_CONTROL_GET_CLASS +TP_TYPE_SVC_CALL_CONTENT_INTERFACE_AUDIO_CONTROL + +TpSvcCallContentInterfaceDTMF +TpSvcCallContentInterfaceDTMFClass +tp_svc_call_content_interface_dtmf_emit_sending_tones +tp_svc_call_content_interface_dtmf_emit_stopped_tones +tp_svc_call_content_interface_dtmf_emit_tones_deferred +tp_svc_call_content_interface_dtmf_implement_multiple_tones +tp_svc_call_content_interface_dtmf_implement_start_tone +tp_svc_call_content_interface_dtmf_implement_stop_tone +tp_svc_call_content_interface_dtmf_multiple_tones_impl +tp_svc_call_content_interface_dtmf_return_from_multiple_tones +tp_svc_call_content_interface_dtmf_return_from_start_tone +tp_svc_call_content_interface_dtmf_return_from_stop_tone +tp_svc_call_content_interface_dtmf_start_tone_impl +tp_svc_call_content_interface_dtmf_stop_tone_impl + +tp_svc_call_content_interface_dtmf_get_type +TP_IS_SVC_CALL_CONTENT_INTERFACE_DTMF +TP_SVC_CALL_CONTENT_INTERFACE_DTMF +TP_SVC_CALL_CONTENT_INTERFACE_DTMF_GET_CLASS +TP_TYPE_SVC_CALL_CONTENT_INTERFACE_DTMF + +TpSvcCallContentMediaDescription +TpSvcCallContentMediaDescriptionClass +tp_svc_call_content_media_description_accept_impl +tp_svc_call_content_media_description_implement_accept +tp_svc_call_content_media_description_implement_reject +tp_svc_call_content_media_description_return_from_accept +tp_svc_call_content_media_description_return_from_reject +tp_svc_call_content_media_description_reject_impl + +tp_svc_call_content_media_description_get_type +TP_SVC_CALL_CONTENT_MEDIA_DESCRIPTION +TP_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_GET_CLASS +TP_IS_SVC_CALL_CONTENT_MEDIA_DESCRIPTION +TP_TYPE_SVC_CALL_CONTENT_MEDIA_DESCRIPTION + +TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReports +TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReportsClass + +tp_svc_call_content_media_description_interface_rtcp_extended_reports_get_type +TP_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS +TP_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_GET_CLASS +TP_IS_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS +TP_TYPE_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS + +TpSvcCallContentMediaDescriptionInterfaceRTCPFeedback +TpSvcCallContentMediaDescriptionInterfaceRTCPFeedbackClass + +tp_svc_call_content_media_description_interface_rtcp_feedback_get_type +TP_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK +TP_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK_GET_CLASS +TP_IS_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK +TP_TYPE_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK + +TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensions +TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensionsClass + +tp_svc_call_content_media_description_interface_rtp_header_extensions_get_type +TP_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS +TP_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS_GET_CLASS +TP_IS_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS +TP_TYPE_SVC_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS + +TpSvcCallStream +TpSvcCallStreamClass +tp_svc_call_stream_implement_request_receiving +tp_svc_call_stream_implement_set_sending +tp_svc_call_stream_emit_local_sending_state_changed +tp_svc_call_stream_emit_remote_members_changed +tp_svc_call_stream_request_receiving_impl +tp_svc_call_stream_return_from_request_receiving +tp_svc_call_stream_return_from_set_sending +tp_svc_call_stream_set_sending_impl + +tp_svc_call_stream_get_type +TP_TYPE_SVC_CALL_STREAM +TP_SVC_CALL_STREAM +TP_SVC_CALL_STREAM_GET_CLASS +TP_IS_SVC_CALL_STREAM + +TpSvcCallStreamInterfaceMedia +TpSvcCallStreamInterfaceMediaClass +tp_svc_call_stream_interface_media_add_candidates_impl +tp_svc_call_stream_interface_media_complete_receiving_state_change_impl +tp_svc_call_stream_interface_media_complete_sending_state_change_impl +tp_svc_call_stream_interface_media_emit_endpoints_changed +tp_svc_call_stream_interface_media_emit_ice_restart_requested +tp_svc_call_stream_interface_media_emit_local_candidates_added +tp_svc_call_stream_interface_media_emit_local_credentials_changed +tp_svc_call_stream_interface_media_emit_receiving_state_changed +tp_svc_call_stream_interface_media_emit_relay_info_changed +tp_svc_call_stream_interface_media_emit_sending_state_changed +tp_svc_call_stream_interface_media_emit_server_info_retrieved +tp_svc_call_stream_interface_media_emit_stun_servers_changed +tp_svc_call_stream_interface_media_fail_impl +tp_svc_call_stream_interface_media_finish_initial_candidates_impl +tp_svc_call_stream_interface_media_implement_add_candidates +tp_svc_call_stream_interface_media_implement_complete_receiving_state_change +tp_svc_call_stream_interface_media_implement_complete_sending_state_change +tp_svc_call_stream_interface_media_implement_fail +tp_svc_call_stream_interface_media_implement_finish_initial_candidates +tp_svc_call_stream_interface_media_implement_report_receiving_failure +tp_svc_call_stream_interface_media_implement_report_sending_failure +tp_svc_call_stream_interface_media_implement_set_credentials +tp_svc_call_stream_interface_media_report_receiving_failure_impl +tp_svc_call_stream_interface_media_report_sending_failure_impl +tp_svc_call_stream_interface_media_return_from_add_candidates +tp_svc_call_stream_interface_media_return_from_complete_receiving_state_change +tp_svc_call_stream_interface_media_return_from_complete_sending_state_change +tp_svc_call_stream_interface_media_return_from_fail +tp_svc_call_stream_interface_media_return_from_finish_initial_candidates +tp_svc_call_stream_interface_media_return_from_report_receiving_failure +tp_svc_call_stream_interface_media_return_from_report_sending_failure +tp_svc_call_stream_interface_media_return_from_set_credentials +tp_svc_call_stream_interface_media_set_credentials_impl + +TP_SVC_CALL_STREAM_INTERFACE_MEDIA +TP_SVC_CALL_STREAM_INTERFACE_MEDIA_GET_CLASS +TP_TYPE_SVC_CALL_STREAM_INTERFACE_MEDIA +TP_IS_SVC_CALL_STREAM_INTERFACE_MEDIA +tp_svc_call_stream_interface_media_get_type + +TpSvcCallStreamEndpoint +TpSvcCallStreamEndpointClass +tp_svc_call_stream_endpoint_accept_selected_candidate_pair_impl +tp_svc_call_stream_endpoint_emit_candidate_pair_selected +tp_svc_call_stream_endpoint_emit_controlling_changed +tp_svc_call_stream_endpoint_emit_endpoint_state_changed +tp_svc_call_stream_endpoint_emit_remote_candidates_added +tp_svc_call_stream_endpoint_emit_remote_credentials_set +tp_svc_call_stream_endpoint_implement_accept_selected_candidate_pair +tp_svc_call_stream_endpoint_implement_reject_selected_candidate_pair +tp_svc_call_stream_endpoint_implement_set_controlling +tp_svc_call_stream_endpoint_implement_set_endpoint_state +tp_svc_call_stream_endpoint_implement_set_selected_candidate_pair +tp_svc_call_stream_endpoint_reject_selected_candidate_pair_impl +tp_svc_call_stream_endpoint_return_from_accept_selected_candidate_pair +tp_svc_call_stream_endpoint_return_from_reject_selected_candidate_pair +tp_svc_call_stream_endpoint_return_from_set_controlling +tp_svc_call_stream_endpoint_return_from_set_endpoint_state +tp_svc_call_stream_endpoint_return_from_set_selected_candidate_pair +tp_svc_call_stream_endpoint_set_controlling_impl +tp_svc_call_stream_endpoint_set_endpoint_state_impl +tp_svc_call_stream_endpoint_set_selected_candidate_pair_impl + +tp_svc_call_stream_endpoint_get_type +TP_IS_SVC_CALL_STREAM_ENDPOINT +TP_SVC_CALL_STREAM_ENDPOINT +TP_SVC_CALL_STREAM_ENDPOINT_GET_CLASS +TP_TYPE_SVC_CALL_STREAM_ENDPOINT +
    + +
    svc-anonymity svc-anonymity telepathy-glib/svc-channel.h,telepathy-glib/svc-connection.h @@ -1198,11 +1451,13 @@ TpSvcConnectionInterfaceContactList TpSvcConnectionInterfaceContactListClass tp_svc_connection_interface_contact_list_authorize_publication_impl +tp_svc_connection_interface_contact_list_download_impl tp_svc_connection_interface_contact_list_emit_contacts_changed tp_svc_connection_interface_contact_list_emit_contacts_changed_with_id tp_svc_connection_interface_contact_list_emit_contact_list_state_changed tp_svc_connection_interface_contact_list_get_contact_list_attributes_impl tp_svc_connection_interface_contact_list_implement_authorize_publication +tp_svc_connection_interface_contact_list_implement_download tp_svc_connection_interface_contact_list_implement_get_contact_list_attributes tp_svc_connection_interface_contact_list_implement_remove_contacts tp_svc_connection_interface_contact_list_implement_request_subscription @@ -1211,6 +1466,7 @@ tp_svc_connection_interface_contact_list_remove_contacts_impl tp_svc_connection_interface_contact_list_request_subscription_impl tp_svc_connection_interface_contact_list_return_from_authorize_publication +tp_svc_connection_interface_contact_list_return_from_download tp_svc_connection_interface_contact_list_return_from_get_contact_list_attributes tp_svc_connection_interface_contact_list_return_from_remove_contacts tp_svc_connection_interface_contact_list_return_from_request_subscription @@ -1218,6 +1474,9 @@ tp_svc_connection_interface_contact_list_return_from_unsubscribe tp_svc_connection_interface_contact_list_unpublish_impl tp_svc_connection_interface_contact_list_unsubscribe_impl +tp_svc_connection_interface_contact_list_download_impl +tp_svc_connection_interface_contact_list_implement_download +tp_svc_connection_interface_contact_list_return_from_download tp_svc_connection_interface_contact_blocking_get_type tp_svc_connection_interface_contact_list_get_type @@ -1290,6 +1549,21 @@ TP_SVC_CONNECTION_INTERFACE_POWER_SAVING TP_SVC_CONNECTION_INTERFACE_POWER_SAVING_GET_CLASS TP_TYPE_SVC_CONNECTION_INTERFACE_POWER_SAVING + +TpSvcConnectionInterfaceAddressing +TpSvcConnectionInterfaceAddressingClass +tp_svc_connection_interface_addressing_get_contacts_by_uri_impl +tp_svc_connection_interface_addressing_get_contacts_by_vcard_field_impl +tp_svc_connection_interface_addressing_implement_get_contacts_by_uri +tp_svc_connection_interface_addressing_implement_get_contacts_by_vcard_field +tp_svc_connection_interface_addressing_return_from_get_contacts_by_uri +tp_svc_connection_interface_addressing_return_from_get_contacts_by_vcard_field + +TP_IS_SVC_CONNECTION_INTERFACE_ADDRESSING +TP_SVC_CONNECTION_INTERFACE_ADDRESSING +TP_SVC_CONNECTION_INTERFACE_ADDRESSING_GET_CLASS +TP_TYPE_SVC_CONNECTION_INTERFACE_ADDRESSING +tp_svc_connection_interface_addressing_get_type
    @@ -1466,7 +1740,11 @@ tp_g_socket_address_from_variant tp_address_variant_from_g_socket_address tp_unix_connection_receive_credentials_with_byte +tp_unix_connection_receive_credentials_with_byte_async +tp_unix_connection_receive_credentials_with_byte_finish tp_unix_connection_send_credentials_with_byte +tp_unix_connection_send_credentials_with_byte_async +tp_unix_connection_send_credentials_with_byte_finish
    @@ -1559,12 +1837,14 @@ TP_HASH_TYPE_LOCATION TP_HASH_TYPE_CONTACT_LOCATIONS -# Connection - ContactInfo +# ContactInfo and Addressing TP_HASH_TYPE_CONTACT_INFO_MAP TP_STRUCT_TYPE_CONTACT_INFO_FIELD TP_ARRAY_TYPE_CONTACT_INFO_FIELD_LIST TP_STRUCT_TYPE_FIELD_SPEC TP_ARRAY_TYPE_FIELD_SPECS +TP_HASH_TYPE_ADDRESSING_NORMALIZATION_MAP +TP_HASH_TYPE_VCARD_FIELD_ADDRESS_MAP # Connection - ContactList, ContactGroups TP_STRUCT_TYPE_CONTACT_SUBSCRIPTIONS @@ -1615,6 +1895,11 @@ TP_STRUCT_TYPE_PROPERTY_VALUE TP_ARRAY_TYPE_PROPERTY_VALUE_LIST +# Channel - Call +TP_HASH_TYPE_CALL_MEMBER_MAP +TP_ARRAY_TYPE_CALL_MEMBER_MAP_LIST +TP_STRUCT_TYPE_CALL_STATE_REASON + # Channel - Media-related TP_ARRAY_TYPE_MEDIA_SESSION_HANDLER_INFO_LIST TP_STRUCT_TYPE_MEDIA_SESSION_HANDLER_INFO @@ -1649,6 +1934,11 @@ TP_HASH_TYPE_CONTACT_SEARCH_MAP TP_HASH_TYPE_CONTACT_SEARCH_RESULT_MAP +# Channel - captchas +TP_ARRAY_TYPE_CAPTCHA_INFO_LIST +TP_HASH_TYPE_CAPTCHA_ANSWERS +TP_STRUCT_TYPE_CAPTCHA_INFO + # Account and AM TP_STRUCT_TYPE_AVATAR @@ -1668,8 +1958,30 @@ # Metadata TP_HASH_TYPE_METADATA +# Call +TP_ARRAY_TYPE_CALL_MEMBER_MAP_LIST +TP_ARRAY_TYPE_CANDIDATE_LIST +TP_ARRAY_TYPE_CANDIDATE_PAIR_LIST +TP_ARRAY_TYPE_CODEC_LIST +TP_ARRAY_TYPE_VIDEO_RESOLUTION_STRUCT +TP_HASH_TYPE_CALL_MEMBER_MAP +TP_HASH_TYPE_CANDIDATE_INFO +TP_HASH_TYPE_COMPONENT_STATE_MAP +TP_HASH_TYPE_CONTACT_CODEC_MAP +TP_HASH_TYPE_CONTACT_MEDIA_DESCRIPTION_PROPERTIES_MAP +TP_HASH_TYPE_CONTACT_SENDING_STATE_MAP +TP_HASH_TYPE_CONTACT_SSRCS_MAP +TP_HASH_TYPE_MEDIA_DESCRIPTION_PROPERTIES +TP_STRUCT_TYPE_CALL_STATE_REASON +TP_STRUCT_TYPE_CANDIDATE +TP_STRUCT_TYPE_CANDIDATE_PAIR +TP_STRUCT_TYPE_CODEC +TP_STRUCT_TYPE_MEDIA_DESCRIPTION_OFFER +TP_STRUCT_TYPE_STREAM_CREDENTIALS +TP_STRUCT_TYPE_VIDEO_RESOLUTION tp_type_dbus_array__28us_29as +tp_type_dbus_array__28usua_7bsv_7d_29_28usua_7bsv_7d_29 tp_type_dbus_array_a_7bsv_7das tp_type_dbus_array_dsus tp_type_dbus_array_oa_7bsv_7d @@ -1677,6 +1989,7 @@ tp_type_dbus_array_of_a_7bss_7d tp_type_dbus_array_of_a_7bsv_7d tp_type_dbus_array_of_a_7bua_28a_7bsv_7das_29_7d +tp_type_dbus_array_of_a_7buu_7d tp_type_dbus_array_of_ay tp_type_dbus_array_of_o tp_type_dbus_array_of_y @@ -1694,7 +2007,9 @@ tp_type_dbus_array_us tp_type_dbus_array_usa_7bsv_7d tp_type_dbus_array_ussu +tp_type_dbus_array_usua_7bsv_7d tp_type_dbus_array_usuu +tp_type_dbus_array_usuuba_7bss_7d tp_type_dbus_array_usuussduss tp_type_dbus_array_usuuua_7bss_7d tp_type_dbus_array_usuuuu @@ -1720,6 +2035,7 @@ tp_type_dbus_hash_u_28uus_29 tp_type_dbus_hash_ua_28a_7bsv_7das_29 tp_type_dbus_hash_ua_28sasas_29 +tp_type_dbus_hash_ua_28usuuba_7bss_7d_29 tp_type_dbus_hash_ua_7bsv_7d tp_type_dbus_hash_uas tp_type_dbus_hash_uau @@ -1728,6 +2044,7 @@ tp_type_dbus_hash_uu tp_type_dbus_hash_uv tp_type_dbus_struct__28us_29as +tp_type_dbus_struct__28usua_7bsv_7d_29_28usua_7bsv_7d_29 tp_type_dbus_struct_a_7bsv_7das tp_type_dbus_struct_ays tp_type_dbus_struct_dsus @@ -1735,6 +2052,7 @@ tp_type_dbus_struct_oa_7bsv_7d tp_type_dbus_struct_os tp_type_dbus_struct_osuu +tp_type_dbus_struct_oua_7bsv_7d tp_type_dbus_struct_sa_28usuussduss_29 tp_type_dbus_struct_saa_7bsv_7das tp_type_dbus_struct_sasas @@ -1754,7 +2072,9 @@ tp_type_dbus_struct_usa_7bsv_7d tp_type_dbus_struct_uss tp_type_dbus_struct_ussu +tp_type_dbus_struct_usua_7bsv_7d tp_type_dbus_struct_usuu +tp_type_dbus_struct_usuuba_7bss_7d tp_type_dbus_struct_usuussduss tp_type_dbus_struct_usuuua_7bss_7d tp_type_dbus_struct_usuuuu @@ -1766,6 +2086,10 @@ tp_type_dbus_struct_uuuuus tp_type_dbus_struct_uuuuuu tp_type_dbus_struct_uv +tp_type_dbus_array_of_a_7buu_7d +tp_type_dbus_array_ussuas +tp_type_dbus_hash_su +tp_type_dbus_struct_ussuas
    @@ -2311,6 +2635,7 @@ TP_ERROR_STR_MEDIA_CODECS_INCOMPATIBLE TP_ERROR_STR_MEDIA_UNSUPPORTED_TYPE TP_ERROR_STR_MEDIA_STREAMING_ERROR +TP_ERROR_STR_CAPTCHA_NOT_SUPPORTED tp_error_get_type tp_errors_quark @@ -2561,6 +2886,36 @@ NUM_TP_SASL_ABORT_REASONS TpSASLStatus NUM_TP_SASL_STATUSES +TpCaptchaStatus +NUM_TP_CAPTCHA_STATUSES +TpCaptchaCancelReason +NUM_TP_CAPTCHA_CANCEL_REASONS +TpCaptchaFlags +TpCallContentDisposition +NUM_TP_CALL_CONTENT_DISPOSITIONS +TpCallContentPacketizationType +NUM_TP_CALL_CONTENT_PACKETIZATION_TYPES +TpCallState +NUM_TP_CALL_STATES +TpCallStateChangeReason +NUM_TP_CALL_STATE_CHANGE_REASONS +TpCallStreamCandidateType +NUM_TP_CALL_STREAM_CANDIDATE_TYPES +TpRCPTXRRTTMode +NUM_TP_RCPT_XR_RTT_MODES +TpSendingState +NUM_TP_SENDING_STATES +TpStreamComponent +NUM_TP_STREAM_COMPONENTS +TpStreamEndpointState +NUM_TP_STREAM_ENDPOINT_STATES +TpStreamFlowState +NUM_TP_STREAM_FLOW_STATES +TpStreamTransportType +NUM_TP_STREAM_TRANSPORT_TYPES +TpCallFlags +TpCallMemberFlags +TpRTCPXRStatisticsFlags
    @@ -2601,6 +2956,8 @@ TP_IFACE_QUARK_PROTOCOL_INTERFACE_PRESENCE TP_IFACE_CONNECTION TP_IFACE_QUARK_CONNECTION +TP_IFACE_CONNECTION_INTERFACE_ADDRESSING +TP_IFACE_QUARK_CONNECTION_INTERFACE_ADDRESSING TP_IFACE_CONNECTION_INTERFACE_ALIASING TP_IFACE_QUARK_CONNECTION_INTERFACE_ALIASING TP_IFACE_CONNECTION_INTERFACE_ANONYMITY @@ -2643,6 +3000,8 @@ TP_IFACE_QUARK_CONNECTION_INTERFACE_MAIL_NOTIFICATION TP_IFACE_CHANNEL TP_IFACE_QUARK_CHANNEL +TP_IFACE_CHANNEL_TYPE_CALL +TP_IFACE_QUARK_CHANNEL_TYPE_CALL TP_IFACE_CHANNEL_TYPE_CONTACT_LIST TP_IFACE_QUARK_CHANNEL_TYPE_CONTACT_LIST TP_IFACE_CHANNEL_TYPE_CONTACT_SEARCH @@ -2671,6 +3030,8 @@ TP_IFACE_QUARK_CHANNEL_INTERFACE_ANONYMITY TP_IFACE_CHANNEL_INTERFACE_CALL_STATE TP_IFACE_QUARK_CHANNEL_INTERFACE_CALL_STATE +TP_IFACE_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION +TP_IFACE_QUARK_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION TP_IFACE_CHANNEL_INTERFACE_CHAT_STATE TP_IFACE_QUARK_CHANNEL_INTERFACE_CHAT_STATE TP_IFACE_CHANNEL_INTERFACE_CONFERENCE @@ -2729,6 +3090,32 @@ TP_IFACE_QUARK_CLIENT_OBSERVER TP_IFACE_CLIENT_INTERFACE_REQUESTS TP_IFACE_QUARK_CLIENT_INTERFACE_REQUESTS +TP_IFACE_CHANNEL_TYPE_CALL +TP_IFACE_QUARK_CHANNEL_TYPE_CALL +TP_IFACE_CALL_CONTENT +TP_IFACE_QUARK_CALL_CONTENT +TP_IFACE_CALL_CONTENT_INTERFACE_MEDIA +TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_MEDIA +TP_IFACE_CALL_CONTENT_INTERFACE_VIDEO_CONTROL +TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_VIDEO_CONTROL +TP_IFACE_CALL_CONTENT_INTERFACE_AUDIO_CONTROL +TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_AUDIO_CONTROL +TP_IFACE_CALL_CONTENT_INTERFACE_DTMF +TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_DTMF +TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION +TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION +TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS +TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS +TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK +TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK +TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS +TP_IFACE_QUARK_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS +TP_IFACE_CALL_STREAM +TP_IFACE_QUARK_CALL_STREAM +TP_IFACE_CALL_STREAM_ENDPOINT +TP_IFACE_QUARK_CALL_STREAM_ENDPOINT +TP_IFACE_CALL_STREAM_INTERFACE_MEDIA +TP_IFACE_QUARK_CALL_STREAM_INTERFACE_MEDIA TP_PROP_ACCOUNT_AUTOMATIC_PRESENCE TP_PROP_ACCOUNT_CHANGING_PRESENCE TP_PROP_ACCOUNT_CONNECTION @@ -2758,11 +3145,70 @@ TP_PROP_ACCOUNT_PARAMETERS TP_PROP_ACCOUNT_REQUESTED_PRESENCE TP_PROP_ACCOUNT_SERVICE +TP_PROP_ACCOUNT_SUPERSEDES TP_PROP_ACCOUNT_VALID TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_CHAIN_DATA TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_CERTIFICATE_TYPE TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_REJECTIONS TP_PROP_AUTHENTICATION_TLS_CERTIFICATE_STATE +TP_PROP_CALL_CONTENT_DISPOSITION +TP_PROP_CALL_CONTENT_INTERFACES +TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_CURRENT_DTMF_EVENT +TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_CURRENT_DTMF_STATE +TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_LOCAL_MEDIA_DESCRIPTIONS +TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_MEDIA_DESCRIPTION_OFFER +TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_PACKETIZATION +TP_PROP_CALL_CONTENT_INTERFACE_MEDIA_REMOTE_MEDIA_DESCRIPTIONS +TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_BITRATE +TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_FRAMERATE +TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_MANUAL_KEY_FRAMES +TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_MTU +TP_PROP_CALL_CONTENT_INTERFACE_VIDEO_CONTROL_VIDEO_RESOLUTION +TP_PROP_CALL_CONTENT_INTERFACE_AUDIO_CONTROL_REQUESTED_INPUT_VOLUME +TP_PROP_CALL_CONTENT_INTERFACE_AUDIO_CONTROL_REQUESTED_OUTPUT_VOLUME +TP_PROP_CALL_CONTENT_INTERFACE_DTMF_CURRENTLY_SENDING_TONES +TP_PROP_CALL_CONTENT_INTERFACE_DTMF_DEFERRED_TONES +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_CODECS +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_FURTHER_NEGOTIATION_REQUIRED +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_HAS_REMOTE_INFORMATION +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACES +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_DLRR_MAX_SIZE +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_DUPLICATE_RLE_MAX_SIZE +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_ENABLE_METRICS +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_LOSS_RLE_MAX_SIZE +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_PACKET_RECEIPT_TIMES_MAX_SIZE +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_RTT_MODE +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS_STATISTICS_FLAGS +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK_DOES_AVPF +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK_FEEDBACK_MESSAGES +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS_HEADER_EXTENSIONS +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_REMOTE_CONTACT +TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_SSRCS +TP_PROP_CALL_CONTENT_NAME +TP_PROP_CALL_CONTENT_STREAMS +TP_PROP_CALL_CONTENT_TYPE +TP_PROP_CALL_STREAM_CAN_REQUEST_RECEIVING +TP_PROP_CALL_STREAM_ENDPOINT_CONTROLLING +TP_PROP_CALL_STREAM_ENDPOINT_ENDPOINT_STATE +TP_PROP_CALL_STREAM_ENDPOINT_IS_ICE_LITE +TP_PROP_CALL_STREAM_ENDPOINT_REMOTE_CANDIDATES +TP_PROP_CALL_STREAM_ENDPOINT_REMOTE_CREDENTIALS +TP_PROP_CALL_STREAM_ENDPOINT_SELECTED_CANDIDATE_PAIRS +TP_PROP_CALL_STREAM_ENDPOINT_TRANSPORT +TP_PROP_CALL_STREAM_INTERFACES +TP_PROP_CALL_STREAM_INTERFACE_MEDIA_ENDPOINTS +TP_PROP_CALL_STREAM_INTERFACE_MEDIA_HAS_SERVER_INFO +TP_PROP_CALL_STREAM_INTERFACE_MEDIA_ICE_RESTART_PENDING +TP_PROP_CALL_STREAM_INTERFACE_MEDIA_LOCAL_CANDIDATES +TP_PROP_CALL_STREAM_INTERFACE_MEDIA_LOCAL_CREDENTIALS +TP_PROP_CALL_STREAM_INTERFACE_MEDIA_RECEIVING_STATE +TP_PROP_CALL_STREAM_INTERFACE_MEDIA_RELAY_INFO +TP_PROP_CALL_STREAM_INTERFACE_MEDIA_SENDING_STATE +TP_PROP_CALL_STREAM_INTERFACE_MEDIA_STUN_SERVERS +TP_PROP_CALL_STREAM_INTERFACE_MEDIA_TRANSPORT +TP_PROP_CALL_STREAM_LOCAL_SENDING_STATE +TP_PROP_CALL_STREAM_REMOTE_MEMBERS +TP_PROP_CALL_STREAM_REMOTE_MEMBER_IDENTIFIERS TP_PROP_CHANNEL_CHANNEL_TYPE TP_PROP_CHANNEL_DISPATCHER_INTERFACES TP_PROP_CHANNEL_DISPATCHER_INTERFACE_OPERATION_LIST_DISPATCH_OPERATIONS @@ -2778,6 +3224,10 @@ TP_PROP_CHANNEL_INTERFACE_ANONYMITY_ANONYMITY_MANDATORY TP_PROP_CHANNEL_INTERFACE_ANONYMITY_ANONYMITY_MODES TP_PROP_CHANNEL_INTERFACE_ANONYMITY_ANONYMOUS_ID +TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAN_RETRY_CAPTCHA +TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_ERROR +TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_ERROR_DETAILS +TP_PROP_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_CAPTCHA_STATUS TP_PROP_CHANNEL_INTERFACE_CHAT_STATE_CHAT_STATES TP_PROP_CHANNEL_INTERFACE_CONFERENCE_CHANNELS TP_PROP_CHANNEL_INTERFACE_CONFERENCE_INITIAL_CHANNELS @@ -2855,6 +3305,20 @@ TP_PROP_CHANNEL_TARGET_HANDLE TP_PROP_CHANNEL_TARGET_HANDLE_TYPE TP_PROP_CHANNEL_TARGET_ID +TP_PROP_CHANNEL_TYPE_CALL_CALL_FLAGS +TP_PROP_CHANNEL_TYPE_CALL_CALL_MEMBERS +TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE +TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE_DETAILS +TP_PROP_CHANNEL_TYPE_CALL_CALL_STATE_REASON +TP_PROP_CHANNEL_TYPE_CALL_CONTENTS +TP_PROP_CHANNEL_TYPE_CALL_HARDWARE_STREAMING +TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO +TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO_NAME +TP_PROP_CHANNEL_TYPE_CALL_INITIAL_TRANSPORT +TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO +TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO_NAME +TP_PROP_CHANNEL_TYPE_CALL_MEMBER_IDENTIFIERS +TP_PROP_CHANNEL_TYPE_CALL_MUTABLE_CONTENTS TP_PROP_CHANNEL_TYPE_CONTACT_SEARCH_AVAILABLE_SEARCH_KEYS TP_PROP_CHANNEL_TYPE_CONTACT_SEARCH_LIMIT TP_PROP_CHANNEL_TYPE_CONTACT_SEARCH_SEARCH_STATE @@ -2920,6 +3384,7 @@ TP_PROP_CONNECTION_INTERFACE_CONTACT_INFO_CONTACT_INFO_FLAGS TP_PROP_CONNECTION_INTERFACE_CONTACT_INFO_SUPPORTED_FIELDS TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_CAN_CHANGE_CONTACT_LIST +TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_DOWNLOAD_AT_CONNECTION TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_REQUEST_USES_MESSAGE TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_CONTACT_LIST_PERSISTS TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_CONTACT_LIST_STATE @@ -2966,6 +3431,8 @@ TP_PROP_PROTOCOL_REQUESTABLE_CHANNEL_CLASSES TP_PROP_PROTOCOL_VCARD_FIELD TP_TOKEN_CONNECTION_CONTACT_ID +TP_TOKEN_CONNECTION_INTERFACE_ADDRESSING_ADDRESSES +TP_TOKEN_CONNECTION_INTERFACE_ADDRESSING_URIS TP_TOKEN_CONNECTION_INTERFACE_ALIASING_ALIAS TP_TOKEN_CONNECTION_INTERFACE_AVATARS_TOKEN TP_TOKEN_CONNECTION_INTERFACE_CAPABILITIES_CAPS @@ -2979,10 +3446,23 @@ TP_TOKEN_CONNECTION_INTERFACE_CONTACT_LIST_SUBSCRIBE TP_TOKEN_CONNECTION_INTERFACE_SIMPLE_PRESENCE_PRESENCE TP_TOKEN_CONNECTION_INTERFACE_LOCATION_LOCATION +TP_TOKEN_CHANNEL_TYPE_CALL_AUDIO +TP_TOKEN_CHANNEL_TYPE_CALL_GTALK_P2P +TP_TOKEN_CHANNEL_TYPE_CALL_ICE +TP_TOKEN_CHANNEL_TYPE_CALL_SHM +TP_TOKEN_CHANNEL_TYPE_CALL_VIDEO +TP_TOKEN_CHANNEL_TYPE_CALL_WLM_2009 TP_TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_GTALK_P2P TP_TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_ICE_UDP TP_TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_WLM_8_5 TP_TOKEN_CHANNEL_INTERFACE_MEDIA_SIGNALLING_WLM_2009 +TP_TOKEN_CHANNEL_TYPE_CALL_AUDIO +TP_TOKEN_CHANNEL_TYPE_CALL_GTALK_P2P +TP_TOKEN_CHANNEL_TYPE_CALL_ICE +TP_TOKEN_CHANNEL_TYPE_CALL_SHM +TP_TOKEN_CHANNEL_TYPE_CALL_VIDEO +TP_TOKEN_CHANNEL_TYPE_CALL_WLM_2009 + tp_iface_quark_account tp_iface_quark_account_interface_addressing @@ -3065,6 +3545,21 @@ tp_iface_quark_channel_interface_service_point tp_iface_quark_connection_interface_anonymity tp_iface_quark_connection_interface_service_point +tp_iface_quark_channel_interface_captcha_authentication +tp_iface_quark_connection_interface_addressing +tp_iface_quark_call_content +tp_iface_quark_call_content_interface_media +tp_iface_quark_call_content_interface_video_control +tp_iface_quark_call_content_interface_audio_control +tp_iface_quark_call_content_interface_dtmf +tp_iface_quark_call_content_media_description +tp_iface_quark_call_content_media_description_interface_rtcp_extended_reports +tp_iface_quark_call_content_media_description_interface_rtcp_feedback +tp_iface_quark_call_content_media_description_interface_rtp_header_extensions +tp_iface_quark_call_stream +tp_iface_quark_call_stream_endpoint +tp_iface_quark_call_stream_interface_media +tp_iface_quark_channel_type_call
    @@ -3631,6 +4126,8 @@ TpConnectionWhenReadyCb tp_connection_call_when_ready tp_connection_is_ready +tp_connection_disconnect_async +tp_connection_disconnect_finish tp_connection_get_account tp_connection_get_status tp_connection_get_connection_manager_name @@ -3922,11 +4419,13 @@ tp_cli_connection_interface_contact_groups_signal_callback_groups_created tp_cli_connection_interface_contact_groups_signal_callback_groups_removed tp_cli_connection_interface_contact_list_call_authorize_publication +tp_cli_connection_interface_contact_list_call_download tp_cli_connection_interface_contact_list_call_remove_contacts tp_cli_connection_interface_contact_list_call_request_subscription tp_cli_connection_interface_contact_list_call_unpublish tp_cli_connection_interface_contact_list_call_unsubscribe tp_cli_connection_interface_contact_list_callback_for_authorize_publication +tp_cli_connection_interface_contact_list_callback_for_download tp_cli_connection_interface_contact_list_callback_for_remove_contacts tp_cli_connection_interface_contact_list_callback_for_request_subscription tp_cli_connection_interface_contact_list_callback_for_unpublish @@ -4120,6 +4619,16 @@
    +connection-addressing +connection-addressing +telepathy-glib/connection.h +tp_cli_connection_interface_addressing_call_get_contacts_by_uri +tp_cli_connection_interface_addressing_call_get_contacts_by_vcard_field +tp_cli_connection_interface_addressing_callback_for_get_contacts_by_uri +tp_cli_connection_interface_addressing_callback_for_get_contacts_by_vcard_field +
    + +
    connection-manager connection-manager telepathy-glib/connection-manager.h @@ -4580,6 +5089,7 @@ tp_account_set_nickname_async tp_account_set_nickname_finish tp_account_get_normalized_name +tp_account_get_supersedes tp_account_get_avatar_async tp_account_get_avatar_finish tp_account_set_avatar_async @@ -5831,6 +6341,28 @@ TP_TYPE_SVC_CHANNEL_INTERFACE_SASL_AUTHENTICATION tp_svc_channel_interface_sasl_authentication_get_type TP_SVC_CHANNEL_INTERFACE_SASL_AUTHENTICATION_GET_CLASS + +TpSvcChannelInterfaceCaptchaAuthentication +TpSvcChannelInterfaceCaptchaAuthenticationClass + +TP_IS_SVC_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION +TP_SVC_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION +TP_SVC_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION_GET_CLASS +tp_svc_channel_interface_captcha_authentication_get_type +TP_TYPE_SVC_CHANNEL_INTERFACE_CAPTCHA_AUTHENTICATION + +tp_svc_channel_interface_captcha_authentication_answer_captchas_impl +tp_svc_channel_interface_captcha_authentication_cancel_captcha_impl +tp_svc_channel_interface_captcha_authentication_get_captcha_data_impl +tp_svc_channel_interface_captcha_authentication_get_captchas_impl +tp_svc_channel_interface_captcha_authentication_implement_answer_captchas +tp_svc_channel_interface_captcha_authentication_implement_cancel_captcha +tp_svc_channel_interface_captcha_authentication_implement_get_captcha_data +tp_svc_channel_interface_captcha_authentication_implement_get_captchas +tp_svc_channel_interface_captcha_authentication_return_from_answer_captchas +tp_svc_channel_interface_captcha_authentication_return_from_cancel_captcha +tp_svc_channel_interface_captcha_authentication_return_from_get_captcha_data +tp_svc_channel_interface_captcha_authentication_return_from_get_captchas
    @@ -5857,6 +6389,15 @@ tp_cli_channel_interface_sasl_authentication_run_start_mechanism_with_data tp_cli_channel_interface_sasl_authentication_signal_callback_new_challenge tp_cli_channel_interface_sasl_authentication_signal_callback_sasl_status_changed + +tp_cli_channel_interface_captcha_authentication_call_answer_captchas +tp_cli_channel_interface_captcha_authentication_call_cancel_captcha +tp_cli_channel_interface_captcha_authentication_call_get_captcha_data +tp_cli_channel_interface_captcha_authentication_call_get_captchas +tp_cli_channel_interface_captcha_authentication_callback_for_answer_captchas +tp_cli_channel_interface_captcha_authentication_callback_for_cancel_captcha +tp_cli_channel_interface_captcha_authentication_callback_for_get_captcha_data +tp_cli_channel_interface_captcha_authentication_callback_for_get_captchas
    @@ -5973,6 +6514,291 @@
    +cli-call-channel +cli-call-channel +telepathy-glib/channel.h + +tp_cli_channel_type_call_call_accept +tp_cli_channel_type_call_call_add_content +tp_cli_channel_type_call_call_hangup +tp_cli_channel_type_call_call_set_queued +tp_cli_channel_type_call_call_set_ringing +tp_cli_channel_type_call_callback_for_accept +tp_cli_channel_type_call_callback_for_add_content +tp_cli_channel_type_call_callback_for_hangup +tp_cli_channel_type_call_callback_for_set_queued +tp_cli_channel_type_call_callback_for_set_ringing +tp_cli_channel_type_call_connect_to_call_members_changed +tp_cli_channel_type_call_connect_to_call_state_changed +tp_cli_channel_type_call_connect_to_content_added +tp_cli_channel_type_call_connect_to_content_removed +tp_cli_channel_type_call_signal_callback_call_members_changed +tp_cli_channel_type_call_signal_callback_call_state_changed +tp_cli_channel_type_call_signal_callback_content_added +tp_cli_channel_type_call_signal_callback_content_removed +
    + +
    +call-channel +call-channel +telepathy-glib/telepathy-glib.h + +TpCallChannel +TpCallChannelClass +TP_CALL_CHANNEL_FEATURE_CORE + +TpCallStateReason + +tp_call_channel_get_contents +tp_call_channel_get_state +tp_call_channel_has_hardware_streaming +tp_call_channel_has_initial_audio +tp_call_channel_has_initial_video +tp_call_channel_has_mutable_contents +tp_call_channel_get_members + +tp_call_channel_has_dtmf +tp_call_channel_send_tones_async +tp_call_channel_send_tones_finish + +tp_call_channel_set_ringing_async +tp_call_channel_set_ringing_finish +tp_call_channel_set_queued_async +tp_call_channel_set_queued_finish +tp_call_channel_accept_async +tp_call_channel_accept_finish +tp_call_channel_hangup_async +tp_call_channel_hangup_finish +tp_call_channel_add_content_async +tp_call_channel_add_content_finish + +TpCallChannelPrivate +tp_call_channel_get_type +TP_CALL_CHANNEL +TP_CALL_CHANNEL_CLASS +TP_CALL_CHANNEL_GET_CLASS +TP_TYPE_CALL_CHANNEL +TP_IS_CALL_CHANNEL +TP_IS_CALL_CHANNEL_CLASS +tp_call_state_reason_get_type +TP_TYPE_CALL_STATE_REASON +tp_call_channel_get_feature_quark_core +
    + +
    +cli-call-content +cli-call-content +telepathy-glib/call-content.h + +tp_cli_call_content_call_remove +tp_cli_call_content_callback_for_remove +tp_cli_call_content_connect_to_streams_added +tp_cli_call_content_connect_to_streams_removed +tp_cli_call_content_signal_callback_streams_added +tp_cli_call_content_signal_callback_streams_removed + +tp_cli_call_content_interface_media_call_acknowledge_dtmf_change +tp_cli_call_content_interface_media_call_fail +tp_cli_call_content_interface_media_call_update_local_media_description +tp_cli_call_content_interface_media_callback_for_acknowledge_dtmf_change +tp_cli_call_content_interface_media_callback_for_fail +tp_cli_call_content_interface_media_callback_for_update_local_media_description +tp_cli_call_content_interface_media_connect_to_dtmf_change_requested +tp_cli_call_content_interface_media_connect_to_local_media_description_changed +tp_cli_call_content_interface_media_connect_to_media_description_offer_done +tp_cli_call_content_interface_media_connect_to_media_descriptions_removed +tp_cli_call_content_interface_media_connect_to_new_media_description_offer +tp_cli_call_content_interface_media_connect_to_remote_media_descriptions_changed +tp_cli_call_content_interface_media_signal_callback_dtmf_change_requested +tp_cli_call_content_interface_media_signal_callback_local_media_description_changed +tp_cli_call_content_interface_media_signal_callback_media_description_offer_done +tp_cli_call_content_interface_media_signal_callback_media_descriptions_removed +tp_cli_call_content_interface_media_signal_callback_new_media_description_offer +tp_cli_call_content_interface_media_signal_callback_remote_media_descriptions_changed + +tp_cli_call_content_interface_video_control_connect_to_bitrate_changed +tp_cli_call_content_interface_video_control_connect_to_framerate_changed +tp_cli_call_content_interface_video_control_connect_to_key_frame_requested +tp_cli_call_content_interface_video_control_connect_to_mtu_changed +tp_cli_call_content_interface_video_control_connect_to_video_resolution_changed +tp_cli_call_content_interface_video_control_signal_callback_bitrate_changed +tp_cli_call_content_interface_video_control_signal_callback_framerate_changed +tp_cli_call_content_interface_video_control_signal_callback_key_frame_requested +tp_cli_call_content_interface_video_control_signal_callback_mtu_changed +tp_cli_call_content_interface_video_control_signal_callback_video_resolution_changed + +tp_cli_call_content_interface_audio_control_call_report_input_volume +tp_cli_call_content_interface_audio_control_call_report_output_volume +tp_cli_call_content_interface_audio_control_callback_for_report_input_volume +tp_cli_call_content_interface_audio_control_callback_for_report_output_volume + +tp_cli_call_content_interface_dtmf_call_multiple_tones +tp_cli_call_content_interface_dtmf_call_start_tone +tp_cli_call_content_interface_dtmf_call_stop_tone +tp_cli_call_content_interface_dtmf_callback_for_multiple_tones +tp_cli_call_content_interface_dtmf_callback_for_start_tone +tp_cli_call_content_interface_dtmf_callback_for_stop_tone +tp_cli_call_content_interface_dtmf_connect_to_sending_tones +tp_cli_call_content_interface_dtmf_connect_to_stopped_tones +tp_cli_call_content_interface_dtmf_connect_to_tones_deferred +tp_cli_call_content_interface_dtmf_signal_callback_sending_tones +tp_cli_call_content_interface_dtmf_signal_callback_stopped_tones +tp_cli_call_content_interface_dtmf_signal_callback_tones_deferred +
    + +
    +call-content +call-content +telepathy-glib/telepathy-glib.h + +TpCallContent +TpCallContentClass +tp_call_content_init_known_interfaces +TP_CALL_CONTENT_FEATURE_CORE + +tp_call_content_get_disposition +tp_call_content_get_media_type +tp_call_content_get_name +tp_call_content_get_streams + +tp_call_content_remove_async +tp_call_content_remove_finish + +tp_call_content_send_tones_async +tp_call_content_send_tones_finish + +TpCallContentPrivate +tp_call_content_get_type +TP_CALL_CONTENT +TP_CALL_CONTENT_CLASS +TP_CALL_CONTENT_GET_CLASS +TP_IS_CALL_CONTENT +TP_IS_CALL_CONTENT_CLASS +TP_TYPE_CALL_CONTENT +tp_call_content_get_feature_quark_core +
    + +
    +cli-call-stream +cli-call-stream +telepathy-glib/call-stream.h + +tp_cli_call_stream_call_request_receiving +tp_cli_call_stream_call_set_sending +tp_cli_call_stream_callback_for_request_receiving +tp_cli_call_stream_callback_for_set_sending +tp_cli_call_stream_connect_to_local_sending_state_changed +tp_cli_call_stream_connect_to_remote_members_changed +tp_cli_call_stream_signal_callback_local_sending_state_changed +tp_cli_call_stream_signal_callback_remote_members_changed + +tp_cli_call_stream_interface_media_call_add_candidates +tp_cli_call_stream_interface_media_call_complete_receiving_state_change +tp_cli_call_stream_interface_media_call_complete_sending_state_change +tp_cli_call_stream_interface_media_call_fail +tp_cli_call_stream_interface_media_call_finish_initial_candidates +tp_cli_call_stream_interface_media_call_report_receiving_failure +tp_cli_call_stream_interface_media_call_report_sending_failure +tp_cli_call_stream_interface_media_call_set_credentials +tp_cli_call_stream_interface_media_callback_for_add_candidates +tp_cli_call_stream_interface_media_callback_for_complete_receiving_state_change +tp_cli_call_stream_interface_media_callback_for_complete_sending_state_change +tp_cli_call_stream_interface_media_callback_for_fail +tp_cli_call_stream_interface_media_callback_for_finish_initial_candidates +tp_cli_call_stream_interface_media_callback_for_report_receiving_failure +tp_cli_call_stream_interface_media_callback_for_report_sending_failure +tp_cli_call_stream_interface_media_callback_for_set_credentials +tp_cli_call_stream_interface_media_connect_to_endpoints_changed +tp_cli_call_stream_interface_media_connect_to_ice_restart_requested +tp_cli_call_stream_interface_media_connect_to_local_candidates_added +tp_cli_call_stream_interface_media_connect_to_local_credentials_changed +tp_cli_call_stream_interface_media_connect_to_receiving_state_changed +tp_cli_call_stream_interface_media_connect_to_relay_info_changed +tp_cli_call_stream_interface_media_connect_to_sending_state_changed +tp_cli_call_stream_interface_media_connect_to_server_info_retrieved +tp_cli_call_stream_interface_media_connect_to_stun_servers_changed +tp_cli_call_stream_interface_media_signal_callback_endpoints_changed +tp_cli_call_stream_interface_media_signal_callback_ice_restart_requested +tp_cli_call_stream_interface_media_signal_callback_local_candidates_added +tp_cli_call_stream_interface_media_signal_callback_local_credentials_changed +tp_cli_call_stream_interface_media_signal_callback_receiving_state_changed +tp_cli_call_stream_interface_media_signal_callback_relay_info_changed +tp_cli_call_stream_interface_media_signal_callback_sending_state_changed +tp_cli_call_stream_interface_media_signal_callback_server_info_retrieved +tp_cli_call_stream_interface_media_signal_callback_stun_servers_changed +
    + +
    +call-stream +call-stream +telepathy-glib/telepathy-glib.h + +TpCallStream +TpCallStreamClass +tp_call_stream_init_known_interfaces +TP_CALL_STREAM_FEATURE_CORE + +tp_call_stream_can_request_receiving +tp_call_stream_get_local_sending_state +tp_call_stream_get_remote_members + +tp_call_stream_request_receiving_async +tp_call_stream_request_receiving_finish +tp_call_stream_set_sending_async +tp_call_stream_set_sending_finish + +tp_call_stream_get_type +TpCallStreamPrivate +TP_CALL_STREAM +TP_CALL_STREAM_CLASS +TP_CALL_STREAM_GET_CLASS +TP_IS_CALL_STREAM +TP_IS_CALL_STREAM_CLASS +TP_TYPE_CALL_STREAM +tp_call_stream_get_feature_quark_core +
    + +
    +cli-call-misc +cli-call-misc +telepathy-glib/call-misc.h +tp_cli_call_content_media_description_call_accept +tp_cli_call_content_media_description_call_reject +tp_cli_call_content_media_description_callback_for_accept +tp_cli_call_content_media_description_callback_for_reject + +tp_cli_call_stream_endpoint_call_accept_selected_candidate_pair +tp_cli_call_stream_endpoint_call_reject_selected_candidate_pair +tp_cli_call_stream_endpoint_call_set_controlling +tp_cli_call_stream_endpoint_call_set_endpoint_state +tp_cli_call_stream_endpoint_call_set_selected_candidate_pair +tp_cli_call_stream_endpoint_callback_for_accept_selected_candidate_pair +tp_cli_call_stream_endpoint_callback_for_reject_selected_candidate_pair +tp_cli_call_stream_endpoint_callback_for_set_controlling +tp_cli_call_stream_endpoint_callback_for_set_endpoint_state +tp_cli_call_stream_endpoint_callback_for_set_selected_candidate_pair +tp_cli_call_stream_endpoint_connect_to_candidate_pair_selected +tp_cli_call_stream_endpoint_connect_to_controlling_changed +tp_cli_call_stream_endpoint_connect_to_endpoint_state_changed +tp_cli_call_stream_endpoint_connect_to_remote_candidates_added +tp_cli_call_stream_endpoint_connect_to_remote_credentials_set +tp_cli_call_stream_endpoint_signal_callback_candidate_pair_selected +tp_cli_call_stream_endpoint_signal_callback_controlling_changed +tp_cli_call_stream_endpoint_signal_callback_endpoint_state_changed +tp_cli_call_stream_endpoint_signal_callback_remote_candidates_added +tp_cli_call_stream_endpoint_signal_callback_remote_credentials_set +
    + +
    +call-misc +call-misc +telepathy-glib/telepathy-glib.h + +tp_call_content_media_description_init_known_interfaces +tp_call_stream_endpoint_init_known_interfaces +
    + +
    simple-client-factory simple-client-factory telepathy-glib/telepathy-glib.h @@ -6041,3 +6867,228 @@ tp_svc_channel_interface_file_transfer_metadata_get_type TP_SVC_CHANNEL_INTERFACE_FILE_TRANSFER_METADATA_GET_CLASS
    + +
    +telepathy-glib/telepathy-glib.h +base-call-channel +TpBaseCallChannel + +TpBaseCallChannel +TpBaseCallChannelClass +TpBaseCallChannelVoidFunc +TpBaseCallChannelAddContentFunc +TpBaseCallChannelHangupFunc +tp_base_call_channel_get_state +tp_base_call_channel_set_state +tp_base_call_channel_has_initial_audio +tp_base_call_channel_has_initial_video +tp_base_call_channel_has_mutable_contents +tp_base_call_channel_get_contents +tp_base_call_channel_add_content +tp_base_call_channel_remove_content +tp_base_call_channel_update_member_flags +tp_base_call_channel_remove_member +tp_base_call_channel_get_call_members +tp_base_call_channel_remote_accept +tp_base_call_channel_is_accepted + +TP_BASE_CALL_CHANNEL +TP_BASE_CALL_CHANNEL_CLASS +TP_BASE_CALL_CHANNEL_GET_CLASS +TP_IS_BASE_CALL_CHANNEL +TP_IS_BASE_CALL_CHANNEL_CLASS +TP_TYPE_BASE_CALL_CHANNEL +tp_base_call_channel_get_type + +TpBaseCallChannelPrivate +
    + +
    +telepathy-glib/telepathy-glib.h +base-call-content +TpBaseCallContent + +TpBaseCallContent +TpBaseCallContentClass +TpBaseCallContentGetInterfacesFunc +TpBaseCallContentDeinitFunc +TpBaseCallContentMultipleTonesFunc +TpBaseCallContentStartToneFunc +TpBaseCallContentStopToneFunc +tp_base_call_content_get_connection +tp_base_call_content_get_object_path +tp_base_call_content_get_name +tp_base_call_content_get_media_type +tp_base_call_content_get_disposition +tp_base_call_content_get_streams +tp_base_call_content_add_stream +tp_base_call_content_remove_stream + +TP_BASE_CALL_CONTENT +TP_BASE_CALL_CONTENT_CLASS +TP_BASE_CALL_CONTENT_GET_CLASS +TP_IS_BASE_CALL_CONTENT +TP_IS_BASE_CALL_CONTENT_CLASS +TP_TYPE_BASE_CALL_CONTENT +tp_base_call_content_get_type + +TpBaseCallContentPrivate +
    + +
    +telepathy-glib/telepathy-glib.h +base-call-stream +TpBaseCallStream + +TpBaseCallStream +TpBaseCallStreamClass +TpBaseCallStreamGetInterfacesFunc +TpBaseCallStreamRequestReceivingFunc +TpBaseCallStreamSetSendingFunc +tp_base_call_stream_get_connection +tp_base_call_stream_get_object_path +tp_base_call_stream_get_local_sending_state +tp_base_call_stream_update_local_sending_state +tp_base_call_stream_get_remote_sending_state +tp_base_call_stream_update_remote_sending_state +tp_base_call_stream_remove_member + +TP_BASE_CALL_STREAM +TP_BASE_CALL_STREAM_CLASS +TP_BASE_CALL_STREAM_GET_CLASS +TP_IS_BASE_CALL_STREAM +TP_IS_BASE_CALL_STREAM_CLASS +TP_TYPE_BASE_CALL_STREAM +tp_base_call_stream_get_type + +TpBaseCallStreamPrivate +
    + +
    +telepathy-glib/telepathy-glib.h +base-media-call-content +TpBaseMediaCallContent + +TpBaseMediaCallContent +TpBaseMediaCallContentClass +tp_base_media_call_content_get_local_media_description +tp_base_media_call_content_offer_media_description_async +tp_base_media_call_content_offer_media_description_finish + +TP_BASE_MEDIA_CALL_CONTENT +TP_BASE_MEDIA_CALL_CONTENT_CLASS +TP_BASE_MEDIA_CALL_CONTENT_GET_CLASS +TP_IS_BASE_MEDIA_CALL_CONTENT +TP_IS_BASE_MEDIA_CALL_CONTENT_CLASS +TP_TYPE_BASE_MEDIA_CALL_CONTENT +tp_base_media_call_content_get_type + +TpBaseMediaCallContentPrivate +
    + +
    +telepathy-glib/telepathy-glib.h +call-content-media-description +TpCallContentMediaDescription + +TpCallContentMediaDescription +TpCallContentMediaDescriptionClass +tp_call_content_media_description_new +tp_call_content_media_description_get_object_path +tp_call_content_media_description_get_remote_contact +tp_call_content_media_description_append_codec +tp_call_content_media_description_add_ssrc + +TP_CALL_CONTENT_MEDIA_DESCRIPTION +TP_CALL_CONTENT_MEDIA_DESCRIPTION_CLASS +TP_CALL_CONTENT_MEDIA_DESCRIPTION_GET_CLASS +TP_IS_CALL_CONTENT_MEDIA_DESCRIPTION +TP_IS_CALL_CONTENT_MEDIA_DESCRIPTION_CLASS +TP_TYPE_CALL_CONTENT_MEDIA_DESCRIPTION +tp_call_content_media_description_get_type + +TpBaseMediaCallContentPrivate +
    + +
    +telepathy-glib/telepathy-glib.h +base-media-call-stream +TpBaseMediaCallStream + +TpBaseMediaCallStream +TpBaseMediaCallStreamClass +TpBaseMediaCallStreamFinishInitialCandidatesFunc +TpBaseMediaCallStreamAddCandidatesFunc +TpBaseMediaCallStreamReportFailureFunc +TpBaseMediaCallStreamRequestReceivingFunc +TpBaseMediaCallStreamSetSendingFunc +tp_base_media_call_stream_set_relay_info +tp_base_media_call_stream_set_stun_servers +tp_base_media_call_stream_add_endpoint +tp_base_media_call_stream_remove_endpoint +tp_base_media_call_stream_get_endpoints +tp_base_media_call_stream_get_username +tp_base_media_call_stream_get_password +tp_base_media_call_stream_update_receiving_state +tp_base_media_call_stream_get_receiving_state +tp_base_media_call_stream_update_sending_state +tp_base_media_call_stream_get_sending_state +tp_base_media_call_stream_set_local_sending +tp_base_media_call_stream_get_local_candidates + +TP_BASE_MEDIA_CALL_STREAM +TP_BASE_MEDIA_CALL_STREAM_CLASS +TP_BASE_MEDIA_CALL_STREAM_GET_CLASS +TP_IS_BASE_MEDIA_CALL_STREAM +TP_IS_BASE_MEDIA_CALL_STREAM_CLASS +TP_TYPE_BASE_MEDIA_CALL_STREAM +tp_base_media_call_stream_get_type + +TpBaseMediaCallStreamPrivate +
    + +
    +telepathy-glib/telepathy-glib.h +call-stream-endpoint +TpCallStreamEndpoint + +TpCallStreamEndpoint +TpCallStreamEndpointClass +tp_call_stream_endpoint_new +tp_call_stream_endpoint_get_object_path +tp_call_stream_endpoint_get_state +tp_call_stream_endpoint_add_new_candidates +tp_call_stream_endpoint_add_new_candidate +tp_call_stream_endpoint_set_remote_credentials + +TP_CALL_STREAM_ENDPOINT +TP_CALL_STREAM_ENDPOINT_CLASS +TP_CALL_STREAM_ENDPOINT_GET_CLASS +TP_IS_CALL_STREAM_ENDPOINT +TP_IS_CALL_STREAM_ENDPOINT_CLASS +TP_TYPE_CALL_STREAM_ENDPOINT +tp_call_stream_endpoint_get_type + +TpCallStreamEndpointPrivate +
    + +
    +telepathy-glib/telepathy-glib.h +base-media-call-channel +TpBaseMediaCallChannel + +TpBaseMediaCallChannel +TpBaseMediaCallChannelClass +TpBaseMediaCallChannelHoldStateChangedFunc +TpBaseMediaCallChannelVoidFunc + +TP_BASE_MEDIA_CALL_CHANNEL +TP_BASE_MEDIA_CALL_CHANNEL_CLASS +TP_BASE_MEDIA_CALL_CHANNEL_GET_CLASS +TP_IS_BASE_MEDIA_CALL_CHANNEL +TP_IS_BASE_MEDIA_CALL_CHANNEL_CLASS +TP_TYPE_BASE_MEDIA_CALL_CHANNEL +tp_base_media_call_channel_get_type + +TpBaseMediaCallChannelPrivate +
    diff -Nru telepathy-glib-0.17.4/docs/reference/telepathy-glib.types telepathy-glib-0.17.5/docs/reference/telepathy-glib.types --- telepathy-glib-0.17.4/docs/reference/telepathy-glib.types 2011-12-19 15:20:41.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/telepathy-glib.types 2012-02-20 17:31:29.000000000 +0000 @@ -5,17 +5,29 @@ tp_automatic_client_factory_get_type tp_automatic_proxy_factory_get_type tp_avatar_requirements_get_type +tp_base_call_channel_get_type +tp_base_call_content_get_type +tp_base_call_stream_get_type tp_base_channel_get_type tp_base_client_get_type tp_base_connection_get_type tp_base_connection_manager_get_type tp_base_contact_list_get_type +tp_base_media_call_channel_get_type +tp_base_media_call_content_get_type +tp_base_media_call_stream_get_type tp_base_password_channel_get_type tp_base_protocol_get_type tp_base_room_config_get_type tp_base_room_config_property_get_type tp_basic_proxy_factory_get_type tp_blockable_contact_list_get_type +tp_call_channel_get_type +tp_call_content_get_type +tp_call_content_media_description_get_type +tp_call_state_reason_get_type +tp_call_stream_endpoint_get_type +tp_call_stream_get_type tp_capabilities_get_type tp_channel_dispatch_operation_get_type tp_channel_dispatcher_get_type @@ -81,12 +93,25 @@ tp_svc_account_interface_storage_get_type tp_svc_account_manager_get_type tp_svc_authentication_tls_certificate_get_type +tp_svc_call_content_get_type +tp_svc_call_content_interface_audio_control_get_type +tp_svc_call_content_interface_dtmf_get_type +tp_svc_call_content_interface_media_get_type +tp_svc_call_content_interface_video_control_get_type +tp_svc_call_content_media_description_get_type +tp_svc_call_content_media_description_interface_rtcp_extended_reports_get_type +tp_svc_call_content_media_description_interface_rtcp_feedback_get_type +tp_svc_call_content_media_description_interface_rtp_header_extensions_get_type +tp_svc_call_stream_endpoint_get_type +tp_svc_call_stream_get_type +tp_svc_call_stream_interface_media_get_type tp_svc_channel_dispatch_operation_get_type tp_svc_channel_dispatcher_get_type tp_svc_channel_dispatcher_interface_operation_list_get_type tp_svc_channel_get_type tp_svc_channel_interface_anonymity_get_type tp_svc_channel_interface_call_state_get_type +tp_svc_channel_interface_captcha_authentication_get_type tp_svc_channel_interface_chat_state_get_type tp_svc_channel_interface_conference_get_type tp_svc_channel_interface_destroyable_get_type @@ -106,6 +131,7 @@ tp_svc_channel_interface_subject_get_type tp_svc_channel_interface_tube_get_type tp_svc_channel_request_get_type +tp_svc_channel_type_call_get_type tp_svc_channel_type_contact_list_get_type tp_svc_channel_type_contact_search_get_type tp_svc_channel_type_dbus_tube_get_type @@ -123,6 +149,7 @@ tp_svc_client_interface_requests_get_type tp_svc_client_observer_get_type tp_svc_connection_get_type +tp_svc_connection_interface_addressing_get_type tp_svc_connection_interface_aliasing_get_type tp_svc_connection_interface_anonymity_get_type tp_svc_connection_interface_avatars_get_type diff -Nru telepathy-glib-0.17.4/docs/reference/version.xml telepathy-glib-0.17.5/docs/reference/version.xml --- telepathy-glib-0.17.4/docs/reference/version.xml 2011-12-19 15:19:02.000000000 +0000 +++ telepathy-glib-0.17.5/docs/reference/version.xml 2012-02-20 17:31:14.000000000 +0000 @@ -1 +1 @@ -0.17.4 +0.17.5 diff -Nru telepathy-glib-0.17.4/examples/client/approver.c telepathy-glib-0.17.5/examples/client/approver.c --- telepathy-glib-0.17.4/examples/client/approver.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/approver.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/examples/client/contact-list.c telepathy-glib-0.17.5/examples/client/contact-list.c --- telepathy-glib-0.17.4/examples/client/contact-list.c 2011-10-14 16:58:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/contact-list.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/examples/client/extended-client.c telepathy-glib-0.17.5/examples/client/extended-client.c --- telepathy-glib-0.17.4/examples/client/extended-client.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/extended-client.c 2012-02-20 16:55:59.000000000 +0000 @@ -13,6 +13,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/examples/client/inspect-channel.c telepathy-glib-0.17.5/examples/client/inspect-channel.c --- telepathy-glib-0.17.4/examples/client/inspect-channel.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/inspect-channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/examples/client/inspect-cm.c telepathy-glib-0.17.5/examples/client/inspect-cm.c --- telepathy-glib-0.17.4/examples/client/inspect-cm.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/inspect-cm.c 2012-02-20 16:55:59.000000000 +0000 @@ -21,6 +21,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/examples/client/inspect-connection.c telepathy-glib-0.17.5/examples/client/inspect-connection.c --- telepathy-glib-0.17.4/examples/client/inspect-connection.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/inspect-connection.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/examples/client/inspect-contact.c telepathy-glib-0.17.5/examples/client/inspect-contact.c --- telepathy-glib-0.17.4/examples/client/inspect-contact.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/inspect-contact.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/examples/client/js/Makefile.in telepathy-glib-0.17.5/examples/client/js/Makefile.in --- telepathy-glib-0.17.4/examples/client/js/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/js/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -50,11 +50,11 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = 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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -320,10 +320,15 @@ 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 -Nru telepathy-glib-0.17.4/examples/client/list-connections.c telepathy-glib-0.17.5/examples/client/list-connections.c --- telepathy-glib-0.17.4/examples/client/list-connections.c 2010-04-02 09:22:21.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/list-connections.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include typedef struct { diff -Nru telepathy-glib-0.17.4/examples/client/list-managers.c telepathy-glib-0.17.5/examples/client/list-managers.c --- telepathy-glib-0.17.4/examples/client/list-managers.c 2010-04-02 09:22:21.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/list-managers.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include typedef struct { diff -Nru telepathy-glib-0.17.4/examples/client/Makefile.in telepathy-glib-0.17.5/examples/client/Makefile.in --- telepathy-glib-0.17.4/examples/client/Makefile.in 2011-12-19 15:18:53.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -74,8 +74,8 @@ telepathy_example_approver_DEPENDENCIES = \ $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am_telepathy_example_contact_list_OBJECTS = contact-list.$(OBJEXT) telepathy_example_contact_list_OBJECTS = \ @@ -165,21 +165,21 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(telepathy_example_approver_SOURCES) \ $(telepathy_example_contact_list_SOURCES) \ @@ -545,37 +545,37 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -telepathy-example-approver$(EXEEXT): $(telepathy_example_approver_OBJECTS) $(telepathy_example_approver_DEPENDENCIES) +telepathy-example-approver$(EXEEXT): $(telepathy_example_approver_OBJECTS) $(telepathy_example_approver_DEPENDENCIES) $(EXTRA_telepathy_example_approver_DEPENDENCIES) @rm -f telepathy-example-approver$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_approver_OBJECTS) $(telepathy_example_approver_LDADD) $(LIBS) -telepathy-example-contact-list$(EXEEXT): $(telepathy_example_contact_list_OBJECTS) $(telepathy_example_contact_list_DEPENDENCIES) +telepathy-example-contact-list$(EXEEXT): $(telepathy_example_contact_list_OBJECTS) $(telepathy_example_contact_list_DEPENDENCIES) $(EXTRA_telepathy_example_contact_list_DEPENDENCIES) @rm -f telepathy-example-contact-list$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_contact_list_OBJECTS) $(telepathy_example_contact_list_LDADD) $(LIBS) -telepathy-example-extended-client$(EXEEXT): $(telepathy_example_extended_client_OBJECTS) $(telepathy_example_extended_client_DEPENDENCIES) +telepathy-example-extended-client$(EXEEXT): $(telepathy_example_extended_client_OBJECTS) $(telepathy_example_extended_client_DEPENDENCIES) $(EXTRA_telepathy_example_extended_client_DEPENDENCIES) @rm -f telepathy-example-extended-client$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_extended_client_OBJECTS) $(telepathy_example_extended_client_LDADD) $(LIBS) -telepathy-example-inspect-channel$(EXEEXT): $(telepathy_example_inspect_channel_OBJECTS) $(telepathy_example_inspect_channel_DEPENDENCIES) +telepathy-example-inspect-channel$(EXEEXT): $(telepathy_example_inspect_channel_OBJECTS) $(telepathy_example_inspect_channel_DEPENDENCIES) $(EXTRA_telepathy_example_inspect_channel_DEPENDENCIES) @rm -f telepathy-example-inspect-channel$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_inspect_channel_OBJECTS) $(telepathy_example_inspect_channel_LDADD) $(LIBS) -telepathy-example-inspect-cm$(EXEEXT): $(telepathy_example_inspect_cm_OBJECTS) $(telepathy_example_inspect_cm_DEPENDENCIES) +telepathy-example-inspect-cm$(EXEEXT): $(telepathy_example_inspect_cm_OBJECTS) $(telepathy_example_inspect_cm_DEPENDENCIES) $(EXTRA_telepathy_example_inspect_cm_DEPENDENCIES) @rm -f telepathy-example-inspect-cm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_inspect_cm_OBJECTS) $(telepathy_example_inspect_cm_LDADD) $(LIBS) -telepathy-example-inspect-connection$(EXEEXT): $(telepathy_example_inspect_connection_OBJECTS) $(telepathy_example_inspect_connection_DEPENDENCIES) +telepathy-example-inspect-connection$(EXEEXT): $(telepathy_example_inspect_connection_OBJECTS) $(telepathy_example_inspect_connection_DEPENDENCIES) $(EXTRA_telepathy_example_inspect_connection_DEPENDENCIES) @rm -f telepathy-example-inspect-connection$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_inspect_connection_OBJECTS) $(telepathy_example_inspect_connection_LDADD) $(LIBS) -telepathy-example-inspect-contact$(EXEEXT): $(telepathy_example_inspect_contact_OBJECTS) $(telepathy_example_inspect_contact_DEPENDENCIES) +telepathy-example-inspect-contact$(EXEEXT): $(telepathy_example_inspect_contact_OBJECTS) $(telepathy_example_inspect_contact_DEPENDENCIES) $(EXTRA_telepathy_example_inspect_contact_DEPENDENCIES) @rm -f telepathy-example-inspect-contact$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_inspect_contact_OBJECTS) $(telepathy_example_inspect_contact_LDADD) $(LIBS) -telepathy-example-list-connections$(EXEEXT): $(telepathy_example_list_connections_OBJECTS) $(telepathy_example_list_connections_DEPENDENCIES) +telepathy-example-list-connections$(EXEEXT): $(telepathy_example_list_connections_OBJECTS) $(telepathy_example_list_connections_DEPENDENCIES) $(EXTRA_telepathy_example_list_connections_DEPENDENCIES) @rm -f telepathy-example-list-connections$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_list_connections_OBJECTS) $(telepathy_example_list_connections_LDADD) $(LIBS) -telepathy-example-list-managers$(EXEEXT): $(telepathy_example_list_managers_OBJECTS) $(telepathy_example_list_managers_DEPENDENCIES) +telepathy-example-list-managers$(EXEEXT): $(telepathy_example_list_managers_OBJECTS) $(telepathy_example_list_managers_DEPENDENCIES) $(EXTRA_telepathy_example_list_managers_DEPENDENCIES) @rm -f telepathy-example-list-managers$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_list_managers_OBJECTS) $(telepathy_example_list_managers_LDADD) $(LIBS) -telepathy-example-media-observer$(EXEEXT): $(telepathy_example_media_observer_OBJECTS) $(telepathy_example_media_observer_DEPENDENCIES) +telepathy-example-media-observer$(EXEEXT): $(telepathy_example_media_observer_OBJECTS) $(telepathy_example_media_observer_DEPENDENCIES) $(EXTRA_telepathy_example_media_observer_DEPENDENCIES) @rm -f telepathy-example-media-observer$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_media_observer_OBJECTS) $(telepathy_example_media_observer_LDADD) $(LIBS) -telepathy-example-text-handler$(EXEEXT): $(telepathy_example_text_handler_OBJECTS) $(telepathy_example_text_handler_DEPENDENCIES) +telepathy-example-text-handler$(EXEEXT): $(telepathy_example_text_handler_OBJECTS) $(telepathy_example_text_handler_DEPENDENCIES) $(EXTRA_telepathy_example_text_handler_DEPENDENCIES) @rm -f telepathy-example-text-handler$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_text_handler_OBJECTS) $(telepathy_example_text_handler_LDADD) $(LIBS) @@ -600,26 +600,23 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -838,10 +835,15 @@ 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: diff -Nru telepathy-glib-0.17.4/examples/client/media-observer.c telepathy-glib-0.17.5/examples/client/media-observer.c --- telepathy-glib-0.17.4/examples/client/media-observer.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/media-observer.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/examples/client/python/Makefile.in telepathy-glib-0.17.5/examples/client/python/Makefile.in --- telepathy-glib-0.17.4/examples/client/python/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/python/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -50,11 +50,11 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = 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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -324,10 +324,15 @@ 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 -Nru telepathy-glib-0.17.4/examples/client/stream-tubes/Makefile.in telepathy-glib-0.17.5/examples/client/stream-tubes/Makefile.in --- telepathy-glib-0.17.4/examples/client/stream-tubes/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/stream-tubes/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -58,8 +58,8 @@ accepter_LDADD = $(LDADD) accepter_DEPENDENCIES = \ $(top_builddir)/telepathy-glib/libtelepathy-glib.la -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am_offerer_OBJECTS = offerer.$(OBJEXT) offerer_OBJECTS = $(am_offerer_OBJECTS) @@ -76,21 +76,21 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(accepter_SOURCES) $(offerer_SOURCES) DIST_SOURCES = $(accepter_SOURCES) $(offerer_SOURCES) @@ -328,10 +328,10 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -accepter$(EXEEXT): $(accepter_OBJECTS) $(accepter_DEPENDENCIES) +accepter$(EXEEXT): $(accepter_OBJECTS) $(accepter_DEPENDENCIES) $(EXTRA_accepter_DEPENDENCIES) @rm -f accepter$(EXEEXT) $(AM_V_CCLD)$(LINK) $(accepter_OBJECTS) $(accepter_LDADD) $(LIBS) -offerer$(EXEEXT): $(offerer_OBJECTS) $(offerer_DEPENDENCIES) +offerer$(EXEEXT): $(offerer_OBJECTS) $(offerer_DEPENDENCIES) $(EXTRA_offerer_DEPENDENCIES) @rm -f offerer$(EXEEXT) $(AM_V_CCLD)$(LINK) $(offerer_OBJECTS) $(offerer_LDADD) $(LIBS) @@ -347,26 +347,23 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -470,10 +467,15 @@ 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 -Nru telepathy-glib-0.17.4/examples/client/text-handler.c telepathy-glib-0.17.5/examples/client/text-handler.c --- telepathy-glib-0.17.4/examples/client/text-handler.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/examples/client/text-handler.c 2012-02-20 16:55:59.000000000 +0000 @@ -10,6 +10,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/examples/cm/call/call-channel.c telepathy-glib-0.17.5/examples/cm/call/call-channel.c --- telepathy-glib-0.17.4/examples/cm/call/call-channel.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/call-channel.c 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,841 @@ +/* + * call-channel.c - an example 1-1 audio/video call + * + * For simplicity, this channel emulates a device with its own + * audio/video user interface, like a video-equipped form of the phones + * manipulated by telepathy-snom or gnome-phone-manager. + * + * As a result, this channel has the HardwareStreaming flag, its contents + * and streams do not have the Media interface, and clients should not attempt + * to do their own streaming using telepathy-farsight, telepathy-stream-engine + * or maemo-stream-engine. + * + * In practice, nearly all connection managers do not have HardwareStreaming, + * and do have the Media interface on their contents/streams. Usage for those + * CMs is the same, except that whichever client is the primary handler + * for the channel should also hand the channel over to telepathy-farsight or + * telepathy-stream-engine to implement the actual streaming. + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "call-channel.h" + +#include + +#include + +#include +#include +#include +#include +#include + +#include "call-content.h" +#include "call-stream.h" + +static void hold_iface_init (gpointer iface, gpointer data); + +G_DEFINE_TYPE_WITH_CODE (ExampleCallChannel, + example_call_channel, + TP_TYPE_BASE_MEDIA_CALL_CHANNEL, + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_HOLD, + hold_iface_init)) + +enum +{ + PROP_SIMULATION_DELAY = 1, + N_PROPS +}; + +struct _ExampleCallChannelPrivate +{ + guint simulation_delay; + TpBaseConnection *conn; + TpHandle handle; + gboolean locally_requested; + + guint hold_state; + guint hold_state_reason; + + guint next_stream_id; + gboolean closed; +}; + +static const char * example_call_channel_interfaces[] = { + TP_IFACE_CHANNEL_INTERFACE_HOLD, + NULL +}; + +/* In practice you need one for audio, plus one per video (e.g. a + * presentation might have separate video contents for the slides + * and a camera pointed at the presenter), so having more than three + * would be highly unusual */ +#define MAX_CONTENTS_PER_CALL 100 + +G_GNUC_NULL_TERMINATED static void +example_call_channel_set_state (ExampleCallChannel *self, + TpCallState state, + TpCallFlags flags, + TpHandle actor, + TpCallStateChangeReason reason, + const gchar *error, + ...) +{ + /* FIXME: TpBaseCallChannel is not that flexible */ + tp_base_call_channel_set_state ((TpBaseCallChannel *) self, + state, actor, reason, error, ""); +} + +static void +example_call_channel_init (ExampleCallChannel *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EXAMPLE_TYPE_CALL_CHANNEL, + ExampleCallChannelPrivate); + + self->priv->next_stream_id = 1; + + self->priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD; + self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_NONE; +} + +static ExampleCallContent *example_call_channel_add_content ( + ExampleCallChannel *self, TpMediaStreamType media_type, + gboolean locally_requested, gboolean initial, + const gchar *requested_name, GError **error); + +static void example_call_channel_initiate_outgoing (ExampleCallChannel *self); + +static void +constructed (GObject *object) +{ + void (*chain_up) (GObject *) = + ((GObjectClass *) example_call_channel_parent_class)->constructed; + ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); + TpBaseChannel *base = (TpBaseChannel *) self; + TpBaseCallChannel *call = (TpBaseCallChannel *) self; + + if (chain_up != NULL) + chain_up (object); + + self->priv->handle = tp_base_channel_get_target_handle (base); + self->priv->locally_requested = tp_base_channel_is_requested (base); + self->priv->conn = tp_base_channel_get_connection (base); + + tp_base_call_channel_update_member_flags (call, self->priv->handle, 0, + 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); + + if (self->priv->locally_requested) + { + /* Nobody is locally pending. The remote peer will turn up in + * remote-pending state when we actually contact them, which is done + * in example_call_channel_initiate_outgoing. */ + example_call_channel_set_state (self, + TP_CALL_STATE_PENDING_INITIATOR, 0, 0, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + NULL); + } + else + { + /* This is an incoming call, so the self-handle is locally + * pending, to indicate that we need to answer. */ + example_call_channel_set_state (self, + TP_CALL_STATE_INITIALISED, 0, self->priv->handle, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + NULL); + } + + /* FIXME: should respect initial names */ + if (tp_base_call_channel_has_initial_audio (call, NULL)) + { + g_message ("Channel initially has an audio stream"); + example_call_channel_add_content (self, TP_MEDIA_STREAM_TYPE_AUDIO, + self->priv->locally_requested, TRUE, NULL, NULL); + } + + if (tp_base_call_channel_has_initial_video (call, NULL)) + { + g_message ("Channel initially has a video stream"); + example_call_channel_add_content (self, TP_MEDIA_STREAM_TYPE_VIDEO, + self->priv->locally_requested, TRUE, NULL, NULL); + } + + tp_base_channel_register (base); +} + +static void +get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); + + switch (property_id) + { + case PROP_SIMULATION_DELAY: + g_value_set_uint (value, self->priv->simulation_delay); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); + + switch (property_id) + { + case PROP_SIMULATION_DELAY: + self->priv->simulation_delay = g_value_get_uint (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +example_call_channel_terminate (ExampleCallChannel *self, + TpHandle actor, + TpChannelGroupChangeReason reason, + TpCallStateChangeReason call_reason, + const gchar *error_name) +{ + TpBaseCallChannel *base = (TpBaseCallChannel *) self; + TpCallState call_state = tp_base_call_channel_get_state (base); + + if (call_state != TP_CALL_STATE_ENDED) + { + GList *contents; + + example_call_channel_set_state (self, + TP_CALL_STATE_ENDED, 0, actor, + call_reason, error_name, + NULL); + + /* FIXME: fd.o #24936 #c20: it's unclear in the spec whether we should + * remove peers on call termination or not. For now this example does. */ + tp_base_call_channel_remove_member (base, self->priv->handle, + actor, call_reason, error_name, NULL); + + if (actor == tp_base_connection_get_self_handle (self->priv->conn)) + { + const gchar *send_reason; + + /* In a real protocol these would be some sort of real protocol + * construct, like an XMPP error stanza or a SIP error code */ + switch (reason) + { + case TP_CHANNEL_GROUP_CHANGE_REASON_BUSY: + send_reason = ""; + break; + + case TP_CHANNEL_GROUP_CHANGE_REASON_NO_ANSWER: + send_reason = ""; + break; + + default: + send_reason = ""; + } + + g_message ("SIGNALLING: send: Terminating call: %s", send_reason); + } + + /* terminate all streams: to avoid modifying the hash table (in the + * streams-removed handler) while iterating over it, we have to copy the + * keys and iterate over those */ + contents = tp_base_call_channel_get_contents (base); + contents = g_list_copy (contents); + for (; contents != NULL; contents = g_list_delete_link (contents, contents)) + { + example_call_content_remove_stream (contents->data); + tp_base_call_channel_remove_content (base, contents->data, + 0, call_reason, error_name, ""); + } + } +} + +static void +dispose (GObject *object) +{ + ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); + + /* the manager is meant to hold a ref to us until we've closed */ + g_assert (self->priv->closed); + + ((GObjectClass *) example_call_channel_parent_class)->dispose (object); +} + +static void +close_channel (TpBaseChannel *base) +{ + ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (base); + + example_call_channel_terminate (self, + tp_base_connection_get_self_handle (self->priv->conn), + TP_CHANNEL_GROUP_CHANGE_REASON_NONE, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, ""); + + self->priv->closed = TRUE; + + tp_base_channel_destroyed (base); +} + +static void call_accept (TpBaseCallChannel *self); +static TpBaseCallContent * call_add_content (TpBaseCallChannel *self, + const gchar *name, + TpMediaStreamType media, + TpMediaStreamDirection initial_direction, + GError **error); +static void call_hangup (TpBaseCallChannel *self, + guint reason, + const gchar *detailed_reason, + const gchar *message); + +static void +example_call_channel_class_init (ExampleCallChannelClass *klass) +{ + GObjectClass *object_class = (GObjectClass *) klass; + TpBaseChannelClass *base_class = TP_BASE_CHANNEL_CLASS (klass); + TpBaseCallChannelClass *call_class = (TpBaseCallChannelClass *) klass; + GParamSpec *param_spec; + + g_type_class_add_private (klass, + sizeof (ExampleCallChannelPrivate)); + + call_class->accept = call_accept; + call_class->add_content = call_add_content; + call_class->hangup = call_hangup; + + base_class->target_handle_type = TP_HANDLE_TYPE_CONTACT; + base_class->interfaces = example_call_channel_interfaces; + base_class->close = close_channel; + + object_class->constructed = constructed; + object_class->set_property = set_property; + object_class->get_property = get_property; + object_class->dispose = dispose; + + param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", + "Delay between simulated network events", + 0, G_MAXUINT32, 1000, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, + param_spec); +} + +static gboolean +simulate_contact_ended_cb (gpointer p) +{ + ExampleCallChannel *self = p; + TpBaseCallChannel *base = (TpBaseCallChannel *) self; + TpCallState call_state = tp_base_call_channel_get_state (base); + + /* if the call has been cancelled while we were waiting for the + * contact to do so, do nothing! */ + if (call_state == TP_CALL_STATE_ENDED) + return FALSE; + + g_message ("SIGNALLING: receive: call terminated: "); + + example_call_channel_terminate (self, self->priv->handle, + TP_CHANNEL_GROUP_CHANGE_REASON_NONE, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, ""); + + return FALSE; +} + +static gboolean +simulate_contact_answered_cb (gpointer p) +{ + ExampleCallChannel *self = p; + TpBaseCallChannel *base = (TpBaseCallChannel *) self; + TpCallState call_state = tp_base_call_channel_get_state (base); + GList *contents; + TpHandleRepoIface *contact_repo; + const gchar *peer; + + /* if the call has been cancelled while we were waiting for the + * contact to answer, do nothing! */ + if (call_state == TP_CALL_STATE_ENDED) + return FALSE; + + /* otherwise, we're waiting for a response from the contact, which now + * arrives */ + g_assert_cmpuint (call_state, ==, TP_CALL_STATE_INITIALISED); + + g_message ("SIGNALLING: receive: contact answered our call"); + + tp_base_call_channel_remote_accept (base); + + contents = tp_base_call_channel_get_contents (base); + for (; contents != NULL; contents = contents->next) + { + ExampleCallStream *stream = example_call_content_get_stream (contents->data); + + if (stream == NULL) + continue; + + /* remote contact accepts our proposed stream direction */ + example_call_stream_simulate_contact_agreed_to_send (stream); + } + + contact_repo = tp_base_connection_get_handles + (self->priv->conn, TP_HANDLE_TYPE_CONTACT); + peer = tp_handle_inspect (contact_repo, self->priv->handle); + + /* If the contact's ID contains the magic string "(terminate)", simulate + * them hanging up after a moment. */ + if (strstr (peer, "(terminate)") != NULL) + { + g_timeout_add_full (G_PRIORITY_DEFAULT, + self->priv->simulation_delay, + simulate_contact_ended_cb, g_object_ref (self), + g_object_unref); + } + + return FALSE; +} + +static gboolean +simulate_contact_busy_cb (gpointer p) +{ + ExampleCallChannel *self = p; + TpBaseCallChannel *base = (TpBaseCallChannel *) self; + TpCallState call_state = tp_base_call_channel_get_state (base); + + /* if the call has been cancelled while we were waiting for the + * contact to answer, do nothing */ + if (call_state == TP_CALL_STATE_ENDED) + return FALSE; + + /* otherwise, we're waiting for a response from the contact, which now + * arrives */ + g_assert_cmpuint (call_state, ==, TP_CALL_STATE_INITIALISED); + + g_message ("SIGNALLING: receive: call terminated: "); + + example_call_channel_terminate (self, self->priv->handle, + TP_CHANNEL_GROUP_CHANGE_REASON_BUSY, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, + TP_ERROR_STR_BUSY); + + return FALSE; +} + +static ExampleCallContent * +example_call_channel_add_content (ExampleCallChannel *self, + TpMediaStreamType media_type, + gboolean locally_requested, + gboolean initial, + const gchar *requested_name, + GError **error) +{ + TpBaseCallChannel *base = (TpBaseCallChannel *) self; + GList *contents; + const gchar *type_str; + TpHandle creator = self->priv->handle; + TpCallContentDisposition disposition = + TP_CALL_CONTENT_DISPOSITION_NONE; + guint id = self->priv->next_stream_id++; + ExampleCallContent *content; + ExampleCallStream *stream; + gchar *name; + gchar *path; + guint i; + + /* an arbitrary limit much less than 2**32 means we don't use ridiculous + * amounts of memory, and also means @i can't wrap around when we use it to + * uniquify content names. */ + contents = tp_base_call_channel_get_contents (base); + if (g_list_length (contents) > MAX_CONTENTS_PER_CALL) + { + g_set_error (error, TP_ERRORS, TP_ERROR_PERMISSION_DENIED, + "What are you doing with all those contents anyway?!"); + return NULL; + } + + type_str = (media_type == TP_MEDIA_STREAM_TYPE_AUDIO ? "audio" : "video"); + if (tp_str_empty (requested_name)) + { + requested_name = type_str; + } + + for (i = 0; ; i++) + { + GList *l; + + if (i == 0) + name = g_strdup (requested_name); + else + name = g_strdup_printf ("%s (%u)", requested_name, i); + + for (l = contents; l != NULL; l = l->next) + { + if (!tp_strdiff (tp_base_call_content_get_name (l->data), name)) + break; + } + + if (l == NULL) + { + /* this name hasn't been used - good enough */ + break; + } + + g_free (name); + name = NULL; + } + + if (initial) + disposition = TP_CALL_CONTENT_DISPOSITION_INITIAL; + + if (locally_requested) + { + g_message ("SIGNALLING: send: new %s stream %s", type_str, name); + creator = self->priv->conn->self_handle; + } + + path = g_strdup_printf ("%s/Content%u", + tp_base_channel_get_object_path ((TpBaseChannel *) self), + id); + content = g_object_new (EXAMPLE_TYPE_CALL_CONTENT, + "connection", self->priv->conn, + "creator", creator, + "media-type", media_type, + "name", name, + "disposition", disposition, + "object-path", path, + NULL); + + tp_base_call_channel_add_content (base, (TpBaseCallContent *) content); + g_free (path); + + path = g_strdup_printf ("%s/Stream%u", + tp_base_channel_get_object_path ((TpBaseChannel *) self), + id); + stream = g_object_new (EXAMPLE_TYPE_CALL_STREAM, + "connection", self->priv->conn, + "handle", self->priv->handle, + "locally-requested", locally_requested, + "object-path", path, + NULL); + + example_call_content_add_stream (content, stream); + g_free (path); + + g_object_unref (content); + g_object_unref (stream); + + return content; +} + +static gboolean +simulate_contact_ringing_cb (gpointer p) +{ + ExampleCallChannel *self = p; + TpHandleRepoIface *contact_repo = tp_base_connection_get_handles + (self->priv->conn, TP_HANDLE_TYPE_CONTACT); + const gchar *peer; + + tp_base_call_channel_update_member_flags ((TpBaseCallChannel *) self, + self->priv->handle, TP_CALL_MEMBER_FLAG_RINGING, + 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); + + /* In this example there is no real contact, so just simulate them + * answering after a short time - unless the contact's name + * contains "(no answer)" or "(busy)" */ + + peer = tp_handle_inspect (contact_repo, self->priv->handle); + + if (strstr (peer, "(busy)") != NULL) + { + g_timeout_add_full (G_PRIORITY_DEFAULT, + self->priv->simulation_delay, + simulate_contact_busy_cb, g_object_ref (self), + g_object_unref); + } + else if (strstr (peer, "(no answer)") != NULL) + { + /* do nothing - the call just rings forever */ + } + else + { + g_timeout_add_full (G_PRIORITY_DEFAULT, + self->priv->simulation_delay, + simulate_contact_answered_cb, g_object_ref (self), + g_object_unref); + } + + return FALSE; +} + +static void +example_call_channel_initiate_outgoing (ExampleCallChannel *self) +{ + g_message ("SIGNALLING: send: new streamed media call"); + + example_call_channel_set_state (self, + TP_CALL_STATE_INITIALISED, 0, + tp_base_connection_get_self_handle (self->priv->conn), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + NULL); + + /* After a moment, we're sent an informational message saying it's ringing */ + g_timeout_add_full (G_PRIORITY_DEFAULT, + self->priv->simulation_delay, + simulate_contact_ringing_cb, g_object_ref (self), + g_object_unref); +} + +static void +accept_incoming_call (ExampleCallChannel *self) +{ + TpBaseCallChannel *base = (TpBaseCallChannel *) self; + TpHandleRepoIface *contact_repo = tp_base_connection_get_handles + (self->priv->conn, TP_HANDLE_TYPE_CONTACT); + GList *contents; + + g_message ("SIGNALLING: send: Accepting incoming call from %s", + tp_handle_inspect (contact_repo, self->priv->handle)); + + example_call_channel_set_state (self, + TP_CALL_STATE_ACCEPTED, 0, + tp_base_connection_get_self_handle (self->priv->conn), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + NULL); + + contents = tp_base_call_channel_get_contents (base); + for (; contents != NULL; contents = contents->next) + { + ExampleCallStream *stream = example_call_content_get_stream (contents->data); + guint disposition = tp_base_call_content_get_disposition (contents->data); + + if (stream == NULL || disposition != TP_CALL_CONTENT_DISPOSITION_INITIAL) + continue; + + /* we accept the proposed stream direction */ + example_call_stream_accept_proposed_direction (stream); + } +} + +static void +call_accept (TpBaseCallChannel *base) +{ + ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (base); + + if (self->priv->locally_requested) + { + /* Take the contents we've already added, and make them happen */ + example_call_channel_initiate_outgoing (self); + } + else + { + accept_incoming_call (self); + } +} + +static void +call_hangup (TpBaseCallChannel *base, + guint reason, + const gchar *detailed_reason, + const gchar *message G_GNUC_UNUSED) +{ + ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (base); + + example_call_channel_terminate (self, + tp_base_connection_get_self_handle (self->priv->conn), + TP_CHANNEL_GROUP_CHANGE_REASON_NONE, reason, detailed_reason); +} + +static TpBaseCallContent * +call_add_content (TpBaseCallChannel *base, + const gchar *content_name, + guint content_type, + TpMediaStreamDirection initial_direction, + GError **error) +{ + ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (base); + + return (TpBaseCallContent *) example_call_channel_add_content (self, + content_type, TRUE, FALSE, content_name, error); +} + +static gboolean +simulate_hold (gpointer p) +{ + ExampleCallChannel *self = p; + TpBaseCallChannel *base = (TpBaseCallChannel *) self; + TpCallState call_state = tp_base_call_channel_get_state (base); + TpCallFlags call_flags = 0; /* FIXME */ + + self->priv->hold_state = TP_LOCAL_HOLD_STATE_HELD; + g_message ("SIGNALLING: hold state changed to held"); + tp_svc_channel_interface_hold_emit_hold_state_changed (self, + self->priv->hold_state, self->priv->hold_state_reason); + + example_call_channel_set_state (self, call_state, + call_flags | TP_CALL_FLAG_LOCALLY_HELD, + tp_base_connection_get_self_handle (self->priv->conn), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", NULL); + + return FALSE; +} + +static gboolean +simulate_unhold (gpointer p) +{ + ExampleCallChannel *self = p; + TpBaseCallChannel *base = (TpBaseCallChannel *) self; + TpCallState call_state = tp_base_call_channel_get_state (base); + TpCallFlags call_flags = 0; /* FIXME */ + + self->priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD; + g_message ("SIGNALLING: hold state changed to unheld"); + tp_svc_channel_interface_hold_emit_hold_state_changed (self, + self->priv->hold_state, self->priv->hold_state_reason); + + example_call_channel_set_state (self, call_state, + call_flags & ~TP_CALL_FLAG_LOCALLY_HELD, + tp_base_connection_get_self_handle (self->priv->conn), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", NULL); + + return FALSE; +} + +static gboolean +simulate_inability_to_unhold (gpointer p) +{ + ExampleCallChannel *self = p; + + self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_HOLD; + g_message ("SIGNALLING: unable to unhold - hold state changed to " + "pending hold"); + tp_svc_channel_interface_hold_emit_hold_state_changed (self, + self->priv->hold_state, self->priv->hold_state_reason); + /* hold again */ + g_timeout_add_full (G_PRIORITY_DEFAULT, + self->priv->simulation_delay, + simulate_hold, g_object_ref (self), + g_object_unref); + return FALSE; +} + +static void +hold_get_hold_state (TpSvcChannelInterfaceHold *iface, + DBusGMethodInvocation *context) +{ + ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); + + tp_svc_channel_interface_hold_return_from_get_hold_state (context, + self->priv->hold_state, self->priv->hold_state_reason); +} + +static void +hold_request_hold (TpSvcChannelInterfaceHold *iface, + gboolean hold, + DBusGMethodInvocation *context) +{ + ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); + TpHandleRepoIface *contact_repo = tp_base_connection_get_handles + (self->priv->conn, TP_HANDLE_TYPE_CONTACT); + GError *error = NULL; + const gchar *peer; + GSourceFunc callback; + + if ((hold && self->priv->hold_state == TP_LOCAL_HOLD_STATE_HELD) || + (!hold && self->priv->hold_state == TP_LOCAL_HOLD_STATE_UNHELD)) + { + tp_svc_channel_interface_hold_return_from_request_hold (context); + return; + } + + peer = tp_handle_inspect (contact_repo, self->priv->handle); + + if (!hold && strstr (peer, "(no unhold)") != NULL) + { + g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "unable to unhold"); + goto error; + } + + self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_REQUESTED; + + if (hold) + { + self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_HOLD; + callback = simulate_hold; + } + else + { + self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_UNHOLD; + + peer = tp_handle_inspect (contact_repo, self->priv->handle); + + if (strstr (peer, "(inability to unhold)") != NULL) + { + callback = simulate_inability_to_unhold; + } + else + { + callback = simulate_unhold; + } + } + + g_message ("SIGNALLING: hold state changed to pending %s", + (hold ? "hold" : "unhold")); + tp_svc_channel_interface_hold_emit_hold_state_changed (iface, + self->priv->hold_state, self->priv->hold_state_reason); + /* No need to change the call flags - we never change the actual hold state + * here, only the pending hold state */ + + g_timeout_add_full (G_PRIORITY_DEFAULT, + self->priv->simulation_delay, + callback, g_object_ref (self), + g_object_unref); + + tp_svc_channel_interface_hold_return_from_request_hold (context); + return; + +error: + dbus_g_method_return_error (context, error); + g_error_free (error); +} + + +void +hold_iface_init (gpointer iface, + gpointer data) +{ + TpSvcChannelInterfaceHoldClass *klass = iface; + +#define IMPLEMENT(x) \ + tp_svc_channel_interface_hold_implement_##x (klass, hold_##x) + IMPLEMENT (get_hold_state); + IMPLEMENT (request_hold); +#undef IMPLEMENT +} diff -Nru telepathy-glib-0.17.4/examples/cm/call/call-channel.h telepathy-glib-0.17.5/examples/cm/call/call-channel.h --- telepathy-glib-0.17.4/examples/cm/call/call-channel.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/call-channel.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * call-channel.h - header for an example channel + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef EXAMPLE_CALL_CHANNEL_H +#define EXAMPLE_CALL_CHANNEL_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct _ExampleCallChannel ExampleCallChannel; +typedef struct _ExampleCallChannelPrivate + ExampleCallChannelPrivate; + +typedef struct _ExampleCallChannelClass + ExampleCallChannelClass; + +GType example_call_channel_get_type (void); + +#define EXAMPLE_TYPE_CALL_CHANNEL \ + (example_call_channel_get_type ()) +#define EXAMPLE_CALL_CHANNEL(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALL_CHANNEL, \ + ExampleCallChannel)) +#define EXAMPLE_CALL_CHANNEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALL_CHANNEL, \ + ExampleCallChannelClass)) +#define EXAMPLE_IS_CALL_CHANNEL(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALL_CHANNEL)) +#define EXAMPLE_IS_CALL_CHANNEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALL_CHANNEL)) +#define EXAMPLE_CALL_CHANNEL_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CHANNEL, \ + ExampleCallChannelClass)) + +struct _ExampleCallChannelClass { + TpBaseMediaCallChannelClass parent_class; +}; + +struct _ExampleCallChannel { + TpBaseMediaCallChannel parent; + + ExampleCallChannelPrivate *priv; +}; + +G_END_DECLS + +#endif diff -Nru telepathy-glib-0.17.4/examples/cm/call/call-content.c telepathy-glib-0.17.5/examples/cm/call/call-content.c --- telepathy-glib-0.17.4/examples/cm/call/call-content.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/call-content.c 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,103 @@ +/* + * call-content.c - a content in a call. + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "call-content.h" + +#include +#include +#include + +G_DEFINE_TYPE (ExampleCallContent, + example_call_content, + TP_TYPE_BASE_MEDIA_CALL_CONTENT) + +struct _ExampleCallContentPrivate +{ + ExampleCallStream *stream; +}; + +static void +example_call_content_init (ExampleCallContent *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EXAMPLE_TYPE_CALL_CONTENT, + ExampleCallContentPrivate); +} + +static void +dispose (GObject *object) +{ + ExampleCallContent *self = EXAMPLE_CALL_CONTENT (object); + + g_clear_object (&self->priv->stream); + + ((GObjectClass *) example_call_content_parent_class)->dispose (object); +} + +static void +example_call_content_class_init (ExampleCallContentClass *klass) +{ + GObjectClass *object_class = (GObjectClass *) klass; + + g_type_class_add_private (klass, + sizeof (ExampleCallContentPrivate)); + + object_class->dispose = dispose; +} + +ExampleCallStream * +example_call_content_get_stream (ExampleCallContent *self) +{ + g_return_val_if_fail (EXAMPLE_IS_CALL_CONTENT (self), NULL); + + return self->priv->stream; +} + +void +example_call_content_add_stream (ExampleCallContent *self, + ExampleCallStream *stream) +{ + g_return_if_fail (EXAMPLE_IS_CALL_CONTENT (self)); + g_return_if_fail (EXAMPLE_IS_CALL_STREAM (stream)); + g_return_if_fail (self->priv->stream == NULL); + + self->priv->stream = g_object_ref (stream); + + tp_base_call_content_add_stream ((TpBaseCallContent *) self, + (TpBaseCallStream *) stream); +} + +void +example_call_content_remove_stream (ExampleCallContent *self) +{ + TpBaseCallStream *stream; + + g_return_if_fail (EXAMPLE_IS_CALL_CONTENT (self)); + g_return_if_fail (self->priv->stream != NULL); + + stream = (TpBaseCallStream *) self->priv->stream; + self->priv->stream = NULL; + + tp_base_call_content_remove_stream ((TpBaseCallContent *) self, stream, + 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); + + g_object_unref (stream); +} diff -Nru telepathy-glib-0.17.4/examples/cm/call/call-content.h telepathy-glib-0.17.5/examples/cm/call/call-content.h --- telepathy-glib-0.17.4/examples/cm/call/call-content.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/call-content.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,82 @@ +/* + * call-content.h - header for an example content + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef EXAMPLE_CALL_CONTENT_H +#define EXAMPLE_CALL_CONTENT_H + +#include + +#include + +#include "call-stream.h" + +G_BEGIN_DECLS + +typedef struct _ExampleCallContent ExampleCallContent; +typedef struct _ExampleCallContentPrivate + ExampleCallContentPrivate; + +typedef struct _ExampleCallContentClass + ExampleCallContentClass; +typedef struct _ExampleCallContentClassPrivate + ExampleCallContentClassPrivate; + +GType example_call_content_get_type (void); + +#define EXAMPLE_TYPE_CALL_CONTENT \ + (example_call_content_get_type ()) +#define EXAMPLE_CALL_CONTENT(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALL_CONTENT, \ + ExampleCallContent)) +#define EXAMPLE_CALL_CONTENT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALL_CONTENT, \ + ExampleCallContentClass)) +#define EXAMPLE_IS_CALL_CONTENT(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALL_CONTENT)) +#define EXAMPLE_IS_CALL_CONTENT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALL_CONTENT)) +#define EXAMPLE_CALL_CONTENT_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CONTENT, \ + ExampleCallContentClass)) + +struct _ExampleCallContentClass { + TpBaseMediaCallContentClass parent_class; + + ExampleCallContentClassPrivate *priv; +}; + +struct _ExampleCallContent { + TpBaseMediaCallContent parent; + + ExampleCallContentPrivate *priv; +}; + +/* In this example, each content can only have one stream. */ +ExampleCallStream *example_call_content_get_stream (ExampleCallContent *self); + +void example_call_content_add_stream (ExampleCallContent *self, + ExampleCallStream *stream); + +void example_call_content_remove_stream (ExampleCallContent *self); + +G_END_DECLS + +#endif diff -Nru telepathy-glib-0.17.4/examples/cm/call/call-manager.c telepathy-glib-0.17.5/examples/cm/call/call-manager.c --- telepathy-glib-0.17.4/examples/cm/call/call-manager.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/call-manager.c 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,538 @@ +/* + * call-manager.c - an example channel manager for Call channels. + * + * This channel manager emulates a protocol like XMPP Jingle, where you can + * make several simultaneous calls to the same or different contacts. + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "call-manager.h" + +#include + +#include +#include +#include +#include +#include + +#include "call-channel.h" + +static void channel_manager_iface_init (gpointer, gpointer); + +G_DEFINE_TYPE_WITH_CODE (ExampleCallManager, + example_call_manager, + G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_MANAGER, + channel_manager_iface_init)) + +/* type definition stuff */ + +enum +{ + PROP_CONNECTION = 1, + PROP_SIMULATION_DELAY, + N_PROPS +}; + +struct _ExampleCallManagerPrivate +{ + TpBaseConnection *conn; + guint simulation_delay; + + /* Map from reffed ExampleCallChannel to the same pointer; used as a + * set. + */ + GHashTable *channels; + + /* Next channel will be ("CallChannel%u", next_channel_index) */ + guint next_channel_index; + + gulong status_changed_id; + gulong available_id; +}; + +static void +example_call_manager_init (ExampleCallManager *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EXAMPLE_TYPE_CALL_MANAGER, + ExampleCallManagerPrivate); + + self->priv->conn = NULL; + self->priv->channels = g_hash_table_new_full (NULL, NULL, g_object_unref, + NULL); + self->priv->status_changed_id = 0; + self->priv->available_id = 0; +} + +static void +example_call_manager_close_all (ExampleCallManager *self) +{ + if (self->priv->channels != NULL) + { + GHashTable *tmp = self->priv->channels; + GHashTableIter iter; + gpointer v; + + self->priv->channels = NULL; + + g_hash_table_iter_init (&iter, tmp); + + while (g_hash_table_iter_next (&iter, NULL, &v)) + tp_base_channel_close (v); + + g_hash_table_unref (tmp); + } + + if (self->priv->available_id != 0) + { + g_signal_handler_disconnect (self->priv->conn, + self->priv->available_id); + self->priv->available_id = 0; + } + + if (self->priv->status_changed_id != 0) + { + g_signal_handler_disconnect (self->priv->conn, + self->priv->status_changed_id); + self->priv->status_changed_id = 0; + } +} + +static void +dispose (GObject *object) +{ + ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); + + example_call_manager_close_all (self); + g_assert (self->priv->channels == NULL); + + ((GObjectClass *) example_call_manager_parent_class)->dispose ( + object); +} + +static void +get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); + + switch (property_id) + { + case PROP_CONNECTION: + g_value_set_object (value, self->priv->conn); + break; + + case PROP_SIMULATION_DELAY: + g_value_set_uint (value, self->priv->simulation_delay); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); + + switch (property_id) + { + case PROP_CONNECTION: + /* We don't ref the connection, because it owns a reference to the + * channel manager, and it guarantees that the manager's lifetime is + * less than its lifetime */ + self->priv->conn = g_value_get_object (value); + break; + + case PROP_SIMULATION_DELAY: + self->priv->simulation_delay = g_value_get_uint (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } +} + +static void +status_changed_cb (TpBaseConnection *conn, + guint status, + guint reason, + ExampleCallManager *self) +{ + switch (status) + { + case TP_CONNECTION_STATUS_DISCONNECTED: + { + example_call_manager_close_all (self); + } + break; + + default: + break; + } +} + +static ExampleCallChannel *new_channel (ExampleCallManager *self, + TpHandle handle, TpHandle initiator, gpointer request_token, + gboolean initial_audio, gboolean initial_video); + +static gboolean +simulate_incoming_call_cb (gpointer p) +{ + ExampleCallManager *self = p; + TpHandleRepoIface *contact_repo; + TpHandle caller; + + /* do nothing if we've been disconnected while waiting for the contact to + * call us */ + if (self->priv->available_id == 0) + return FALSE; + + /* We're called by someone whose ID on the IM service is "caller" */ + contact_repo = tp_base_connection_get_handles (self->priv->conn, + TP_HANDLE_TYPE_CONTACT); + caller = tp_handle_ensure (contact_repo, "caller", NULL, NULL); + + new_channel (self, caller, caller, NULL, TRUE, FALSE); + + return FALSE; +} + +/* Whenever our presence changes from away to available, and whenever our + * presence message changes while remaining available, simulate a call from + * a contact */ +static void +available_cb (GObject *conn G_GNUC_UNUSED, + const gchar *message, + ExampleCallManager *self) +{ + g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, + simulate_incoming_call_cb, g_object_ref (self), g_object_unref); +} + +static void +constructed (GObject *object) +{ + ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); + void (*chain_up) (GObject *) = + ((GObjectClass *) example_call_manager_parent_class)->constructed; + + if (chain_up != NULL) + { + chain_up (object); + } + + self->priv->status_changed_id = g_signal_connect (self->priv->conn, + "status-changed", (GCallback) status_changed_cb, self); + + self->priv->available_id = g_signal_connect (self->priv->conn, + "available", (GCallback) available_cb, self); +} + +static void +example_call_manager_class_init (ExampleCallManagerClass *klass) +{ + GParamSpec *param_spec; + GObjectClass *object_class = (GObjectClass *) klass; + + object_class->constructed = constructed; + object_class->dispose = dispose; + object_class->get_property = get_property; + object_class->set_property = set_property; + + param_spec = g_param_spec_object ("connection", "Connection object", + "The connection that owns this channel manager", + TP_TYPE_BASE_CONNECTION, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); + + param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", + "Delay between simulated network events", + 0, G_MAXUINT32, 1000, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, + param_spec); + + g_type_class_add_private (klass, + sizeof (ExampleCallManagerPrivate)); +} + +static void +example_call_manager_foreach_channel (TpChannelManager *iface, + TpExportableChannelFunc callback, + gpointer user_data) +{ + ExampleCallManager *self = EXAMPLE_CALL_MANAGER (iface); + GHashTableIter iter; + gpointer chan; + + g_hash_table_iter_init (&iter, self->priv->channels); + + while (g_hash_table_iter_next (&iter, &chan, NULL)) + callback (chan, user_data); +} + +static void +channel_closed_cb (ExampleCallChannel *chan, + ExampleCallManager *self) +{ + tp_channel_manager_emit_channel_closed_for_object (self, + TP_EXPORTABLE_CHANNEL (chan)); + + if (self->priv->channels != NULL) + g_hash_table_remove (self->priv->channels, chan); +} + +static ExampleCallChannel * +new_channel (ExampleCallManager *self, + TpHandle handle, + TpHandle initiator, + gpointer request_token, + gboolean initial_audio, + gboolean initial_video) +{ + ExampleCallChannel *chan; + gchar *object_path; + GSList *requests = NULL; + + /* FIXME: This could potentially wrap around, but only after 4 billion + * calls, which is probably plenty. */ + object_path = g_strdup_printf ("%s/CallChannel%u", + self->priv->conn->object_path, self->priv->next_channel_index++); + + chan = g_object_new (EXAMPLE_TYPE_CALL_CHANNEL, + "connection", self->priv->conn, + "object-path", object_path, + "handle", handle, + "initiator-handle", initiator, + "requested", (self->priv->conn->self_handle == initiator), + "simulation-delay", self->priv->simulation_delay, + "initial-audio", initial_audio, + "initial-video", initial_video, + "mutable-contents", TRUE, + NULL); + + g_free (object_path); + + g_signal_connect (chan, "closed", G_CALLBACK (channel_closed_cb), self); + + g_hash_table_insert (self->priv->channels, chan, chan); + + if (request_token != NULL) + requests = g_slist_prepend (requests, request_token); + + tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan), + requests); + g_slist_free (requests); + + return chan; +} + +static const gchar * const audio_fixed_properties[] = { + TP_PROP_CHANNEL_CHANNEL_TYPE, + TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, + NULL +}; + +static const gchar * const video_fixed_properties[] = { + TP_PROP_CHANNEL_CHANNEL_TYPE, + TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, + NULL +}; + +static const gchar * const audio_allowed_properties[] = { + TP_PROP_CHANNEL_TARGET_HANDLE, + TP_PROP_CHANNEL_TARGET_ID, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, + NULL +}; + +static const gchar * const video_allowed_properties[] = { + TP_PROP_CHANNEL_TARGET_HANDLE, + TP_PROP_CHANNEL_TARGET_ID, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, + NULL +}; + +static void +example_call_manager_type_foreach_channel_class (GType type, + TpChannelManagerTypeChannelClassFunc func, + gpointer user_data) +{ + GHashTable *table = tp_asv_new ( + TP_PROP_CHANNEL_CHANNEL_TYPE, + G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_CALL, + TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, G_TYPE_BOOLEAN, TRUE, + NULL); + + func (type, table, audio_allowed_properties, user_data); + + g_hash_table_remove (table, TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO); + tp_asv_set_boolean (table, TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, + TRUE); + + func (type, table, video_allowed_properties, user_data); + + g_hash_table_unref (table); +} + +static gboolean +example_call_manager_request (ExampleCallManager *self, + gpointer request_token, + GHashTable *request_properties, + gboolean require_new) +{ + TpHandle handle; + GError *error = NULL; + gboolean initial_audio, initial_video; + + if (tp_strdiff (tp_asv_get_string (request_properties, + TP_PROP_CHANNEL_CHANNEL_TYPE), + TP_IFACE_CHANNEL_TYPE_CALL)) + { + return FALSE; + } + + if (tp_asv_get_uint32 (request_properties, + TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL) != TP_HANDLE_TYPE_CONTACT) + { + return FALSE; + } + + handle = tp_asv_get_uint32 (request_properties, + TP_PROP_CHANNEL_TARGET_HANDLE, NULL); + g_assert (handle != 0); + + initial_audio = tp_asv_get_boolean (request_properties, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, NULL); + initial_video = tp_asv_get_boolean (request_properties, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, NULL); + + if (!initial_audio && !initial_video) + { + g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_IMPLEMENTED, + "Call channels must initially have either audio or video content"); + goto error; + } + + /* the set of (fixed | allowed) properties is the same for audio and video, + * so we only need to check with one set */ + if (tp_channel_manager_asv_has_unknown_properties (request_properties, + audio_fixed_properties, audio_allowed_properties, &error)) + { + goto error; + } + + if (handle == self->priv->conn->self_handle) + { + /* In protocols with a concept of multiple "resources" signed in to + * one account (XMPP, and possibly MSN) it is technically possible to + * call yourself - e.g. if you're signed in on two PCs, you can call one + * from the other. For simplicity, this example simulates a protocol + * where this is not the case. + */ + g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_IMPLEMENTED, + "In this protocol, you can't call yourself"); + goto error; + } + + if (!require_new) + { + /* see if we're already calling that handle */ + GHashTableIter iter; + gpointer chan; + + g_hash_table_iter_init (&iter, self->priv->channels); + + while (g_hash_table_iter_next (&iter, &chan, NULL)) + { + guint its_handle; + + g_object_get (chan, + "handle", &its_handle, + NULL); + + if (its_handle == handle) + { + tp_channel_manager_emit_request_already_satisfied (self, + request_token, TP_EXPORTABLE_CHANNEL (chan)); + return TRUE; + } + } + } + + new_channel (self, handle, self->priv->conn->self_handle, request_token, + initial_audio, initial_video); + return TRUE; + +error: + tp_channel_manager_emit_request_failed (self, request_token, + error->domain, error->code, error->message); + g_error_free (error); + return TRUE; +} + +static gboolean +example_call_manager_create_channel (TpChannelManager *manager, + gpointer request_token, + GHashTable *request_properties) +{ + return example_call_manager_request ( + EXAMPLE_CALL_MANAGER (manager), + request_token, request_properties, TRUE); +} + +static gboolean +example_call_manager_ensure_channel (TpChannelManager *manager, + gpointer request_token, + GHashTable *request_properties) +{ + return example_call_manager_request ( + EXAMPLE_CALL_MANAGER (manager), + request_token, request_properties, FALSE); +} + +static void +channel_manager_iface_init (gpointer g_iface, + gpointer iface_data G_GNUC_UNUSED) +{ + TpChannelManagerIface *iface = g_iface; + + iface->foreach_channel = example_call_manager_foreach_channel; + iface->type_foreach_channel_class = + example_call_manager_type_foreach_channel_class; + iface->create_channel = example_call_manager_create_channel; + iface->ensure_channel = example_call_manager_ensure_channel; + /* In this channel manager, RequestChannel is not supported; Call is not + * designed to work with the old RequestChannel API. */ + iface->request_channel = NULL; +} diff -Nru telepathy-glib-0.17.4/examples/cm/call/call-manager.h telepathy-glib-0.17.5/examples/cm/call/call-manager.h --- telepathy-glib-0.17.4/examples/cm/call/call-manager.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/call-manager.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,71 @@ +/* + * media-manager.h - header for an example channel manager + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef EXAMPLE_CALL_MANAGER_H +#define EXAMPLE_CALL_MANAGER_H + +#include + +G_BEGIN_DECLS + +typedef struct _ExampleCallManager ExampleCallManager; +typedef struct _ExampleCallManagerPrivate + ExampleCallManagerPrivate; + +typedef struct _ExampleCallManagerClass + ExampleCallManagerClass; +typedef struct _ExampleCallManagerClassPrivate + ExampleCallManagerClassPrivate; + +struct _ExampleCallManagerClass { + GObjectClass parent_class; + + ExampleCallManagerClassPrivate *priv; +}; + +struct _ExampleCallManager { + GObject parent; + + ExampleCallManagerPrivate *priv; +}; + +GType example_call_manager_get_type (void); + +/* TYPE MACROS */ +#define EXAMPLE_TYPE_CALL_MANAGER \ + (example_call_manager_get_type ()) +#define EXAMPLE_CALL_MANAGER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALL_MANAGER, \ + ExampleCallManager)) +#define EXAMPLE_CALL_MANAGER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALL_MANAGER, \ + ExampleCallManagerClass)) +#define EXAMPLE_IS_CALL_MANAGER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALL_MANAGER)) +#define EXAMPLE_IS_CALL_MANAGER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALL_MANAGER)) +#define EXAMPLE_CALL_MANAGER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_MANAGER, \ + ExampleCallManagerClass)) + +G_END_DECLS + +#endif diff -Nru telepathy-glib-0.17.4/examples/cm/call/call-stream.c telepathy-glib-0.17.5/examples/cm/call/call-stream.c --- telepathy-glib-0.17.4/examples/cm/call/call-stream.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/call-stream.c 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,481 @@ +/* + * call-stream.c - a stream in a call. + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "call-stream.h" + +#include +#include +#include + +G_DEFINE_TYPE (ExampleCallStream, + example_call_stream, + TP_TYPE_BASE_MEDIA_CALL_STREAM) + +enum +{ + PROP_SIMULATION_DELAY = 1, + PROP_LOCALLY_REQUESTED, + PROP_HANDLE, + N_PROPS +}; + +struct _ExampleCallStreamPrivate +{ + guint simulation_delay; + gboolean locally_requested; + TpHandle handle; + guint agreed_delay_id; +}; + +static void +example_call_stream_init (ExampleCallStream *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EXAMPLE_TYPE_CALL_STREAM, + ExampleCallStreamPrivate); +} + +static void example_call_stream_receive_direction_request ( + ExampleCallStream *self, gboolean local_send, gboolean remote_send); +static void example_call_stream_change_direction (ExampleCallStream *self, + gboolean want_to_send, gboolean want_to_receive); + +static void +constructed (GObject *object) +{ + ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); + void (*chain_up) (GObject *) = + ((GObjectClass *) example_call_stream_parent_class)->constructed; + static guint count = 0; + TpBaseConnection *conn; + TpDBusDaemon *dbus; + gchar *object_path; + TpCallStreamEndpoint *endpoint; + + if (chain_up != NULL) + chain_up (object); + + conn = tp_base_call_stream_get_connection ((TpBaseCallStream *) self); + dbus = tp_base_connection_get_dbus_daemon (conn); + object_path = g_strdup_printf ("%s/Endpoint%d", + tp_base_call_stream_get_object_path ((TpBaseCallStream *) self), + count++); + endpoint = tp_call_stream_endpoint_new (dbus, object_path, + TP_STREAM_TRANSPORT_TYPE_RAW_UDP, FALSE); + + tp_base_media_call_stream_add_endpoint ((TpBaseMediaCallStream *) self, + endpoint); + + if (self->priv->locally_requested) + { + example_call_stream_change_direction (self, TRUE, TRUE); + } + else + { + example_call_stream_receive_direction_request (self, TRUE, TRUE); + } + + g_object_unref (endpoint); + g_free (object_path); +} + +static void +get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); + + switch (property_id) + { + case PROP_SIMULATION_DELAY: + g_value_set_uint (value, self->priv->simulation_delay); + break; + + case PROP_LOCALLY_REQUESTED: + g_value_set_boolean (value, self->priv->locally_requested); + break; + + case PROP_HANDLE: + g_value_set_uint (value, self->priv->handle); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); + + switch (property_id) + { + case PROP_SIMULATION_DELAY: + self->priv->simulation_delay = g_value_get_uint (value); + break; + + case PROP_LOCALLY_REQUESTED: + self->priv->locally_requested = g_value_get_boolean (value); + break; + + case PROP_HANDLE: + self->priv->handle = g_value_get_uint (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static gboolean stream_request_receiving (TpBaseCallStream *base, + TpHandle contact, + gboolean receive, + GError **error); +static gboolean stream_set_sending (TpBaseCallStream *base, + gboolean sending, + GError **error); + +static void +finalize (GObject *object) +{ + ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); + + if (self->priv->agreed_delay_id != 0) + g_source_remove (self->priv->agreed_delay_id); + + G_OBJECT_CLASS (example_call_stream_parent_class)->finalize (object); +} + +static void +example_call_stream_class_init (ExampleCallStreamClass *klass) +{ + GObjectClass *object_class = (GObjectClass *) klass; + TpBaseCallStreamClass *stream_class = (TpBaseCallStreamClass *) klass; + GParamSpec *param_spec; + + g_type_class_add_private (klass, sizeof (ExampleCallStreamPrivate)); + + object_class->constructed = constructed; + object_class->set_property = set_property; + object_class->get_property = get_property; + object_class->finalize = finalize; + + stream_class->request_receiving = stream_request_receiving; + stream_class->set_sending = stream_set_sending; + + param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", + "Delay between simulated network events", + 0, G_MAXUINT32, 1000, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, + param_spec); + + param_spec = g_param_spec_boolean ("locally-requested", "Locally requested?", + "True if this channel was requested by the local user", + FALSE, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_LOCALLY_REQUESTED, + param_spec); + + param_spec = g_param_spec_uint ("handle", "Peer's TpHandle", + "The handle with which this stream communicates or 0 if not applicable", + 0, G_MAXUINT32, 0, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_HANDLE, param_spec); +} + +void +example_call_stream_accept_proposed_direction (ExampleCallStream *self) +{ + TpBaseCallStream *base = (TpBaseCallStream *) self; + TpSendingState state = tp_base_call_stream_get_local_sending_state (base); + + if (state != TP_SENDING_STATE_PENDING_SEND) + return; + + tp_base_call_stream_update_local_sending_state (base, + TP_SENDING_STATE_SENDING, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, + "", ""); +} + +void +example_call_stream_simulate_contact_agreed_to_send (ExampleCallStream *self) +{ + TpBaseCallStream *base = (TpBaseCallStream *) self; + TpSendingState state = tp_base_call_stream_get_remote_sending_state (base, + self->priv->handle); + + if (state != TP_SENDING_STATE_PENDING_SEND) + + g_message ("%s: SIGNALLING: Sending to server: OK, I'll send you media", + tp_base_call_stream_get_object_path (base)); + + tp_base_call_stream_update_remote_sending_state ((TpBaseCallStream *) self, + self->priv->handle, TP_SENDING_STATE_SENDING, 0, + TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); +} + +static gboolean +simulate_contact_agreed_to_send_cb (gpointer p) +{ + example_call_stream_simulate_contact_agreed_to_send (p); + return FALSE; +} + +static void +example_call_stream_change_direction (ExampleCallStream *self, + gboolean want_to_send, gboolean want_to_receive) +{ + TpBaseCallStream *base = (TpBaseCallStream *) self; + TpSendingState local_sending_state = + tp_base_call_stream_get_local_sending_state (base); + TpSendingState remote_sending_state = + tp_base_call_stream_get_remote_sending_state (base, self->priv->handle); + + if (want_to_send) + { + if (local_sending_state != TP_SENDING_STATE_SENDING) + { + if (local_sending_state == TP_SENDING_STATE_PENDING_SEND) + { + g_message ("%s: SIGNALLING: send: I will now send you media", + tp_base_call_stream_get_object_path (base)); + } + + g_message ("%s: MEDIA: sending media to peer", + tp_base_call_stream_get_object_path (base)); + + tp_base_call_stream_update_local_sending_state (base, + TP_SENDING_STATE_SENDING, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, + "", ""); + } + } + else + { + if (local_sending_state == TP_SENDING_STATE_SENDING) + { + g_message ("%s: SIGNALLING: send: I will no longer send you media", + tp_base_call_stream_get_object_path (base)); + g_message ("%s: MEDIA: no longer sending media to peer", + tp_base_call_stream_get_object_path (base)); + + tp_base_call_stream_update_local_sending_state (base, + TP_SENDING_STATE_NONE, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, + "", ""); + } + else if (local_sending_state == TP_SENDING_STATE_PENDING_SEND) + { + g_message ("%s: SIGNALLING: send: refusing to send you media", + tp_base_call_stream_get_object_path (base)); + + tp_base_call_stream_update_local_sending_state (base, + TP_SENDING_STATE_NONE, 0, TP_CALL_STATE_CHANGE_REASON_UNKNOWN, + "", ""); + } + } + + if (want_to_receive) + { + if (remote_sending_state == TP_SENDING_STATE_NONE) + { + g_message ("%s: SIGNALLING: send: send me media, please?", + tp_base_call_stream_get_object_path (base)); + + tp_base_call_stream_update_remote_sending_state ( + (TpBaseCallStream *) self, + self->priv->handle, TP_SENDING_STATE_PENDING_SEND, 0, + TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); + + if (self->priv->agreed_delay_id == 0) + { + self->priv->agreed_delay_id = g_timeout_add ( + self->priv->simulation_delay, + simulate_contact_agreed_to_send_cb, self); + } + } + } + else + { + if (remote_sending_state != TP_SENDING_STATE_NONE) + { + g_message ("%s: SIGNALLING: send: Please stop sending me media", + tp_base_call_stream_get_object_path (base)); + g_message ("%s: MEDIA: suppressing output of stream", + tp_base_call_stream_get_object_path (base)); + + tp_base_call_stream_update_remote_sending_state ( + (TpBaseCallStream *) self, + self->priv->handle, TP_SENDING_STATE_NONE, 0, + TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); + } + } +} + +/* The remote user wants to change the direction of this stream according + * to @local_send and @remote_send. Shall we let him? */ +static void +example_call_stream_receive_direction_request (ExampleCallStream *self, + gboolean local_send, + gboolean remote_send) +{ + TpBaseCallStream *base = (TpBaseCallStream *) self; + TpSendingState local_sending_state = + tp_base_call_stream_get_local_sending_state (base); + TpSendingState remote_sending_state = + tp_base_call_stream_get_remote_sending_state (base, self->priv->handle); + + /* In some protocols, streams cannot be neither sending nor receiving, so + * if a stream is set to TP_MEDIA_STREAM_DIRECTION_NONE, this is equivalent + * to removing it. (This is true in XMPP, for instance.) + * + * However, for this example we'll emulate a protocol where streams can be + * directionless. + */ + + if (local_send) + { + g_message ("%s: SIGNALLING: send: Please start sending me media", + tp_base_call_stream_get_object_path (base)); + + if (local_sending_state == TP_SENDING_STATE_NONE) + { + /* ask the user for permission */ + tp_base_call_stream_update_local_sending_state (base, + TP_SENDING_STATE_PENDING_SEND, 0, + TP_CALL_STATE_CHANGE_REASON_UNKNOWN, + "", ""); + } + else + { + /* nothing to do, we're already sending (or asking the user for + * permission to do so) on that stream */ + } + } + else + { + g_message ("%s: SIGNALLING: receive: Please stop sending me media", + tp_base_call_stream_get_object_path (base)); + g_message ("%s: SIGNALLING: reply: OK!", + tp_base_call_stream_get_object_path (base)); + + if (local_sending_state == TP_SENDING_STATE_SENDING) + { + g_message ("%s: MEDIA: no longer sending media to peer", + tp_base_call_stream_get_object_path (base)); + + tp_base_call_stream_update_local_sending_state (base, + TP_SENDING_STATE_NONE, 0, + TP_CALL_STATE_CHANGE_REASON_UNKNOWN, + "", ""); + } + else if (local_sending_state == TP_SENDING_STATE_PENDING_SEND) + { + tp_base_call_stream_update_local_sending_state (base, + TP_SENDING_STATE_NONE, 0, + TP_CALL_STATE_CHANGE_REASON_UNKNOWN, + "", ""); + } + else + { + /* nothing to do, we're not sending on that stream anyway */ + } + } + + if (remote_send) + { + g_message ("%s: SIGNALLING: receive: I will now send you media", + tp_base_call_stream_get_object_path (base)); + + if (remote_sending_state != TP_SENDING_STATE_SENDING) + { + tp_base_call_stream_update_remote_sending_state ( + (TpBaseCallStream *) self, + self->priv->handle, TP_SENDING_STATE_SENDING, 0, + TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); + } + } + else + { + if (remote_sending_state == TP_SENDING_STATE_PENDING_SEND) + { + g_message ("%s: SIGNALLING: receive: No, I refuse to send you media", + tp_base_call_stream_get_object_path (base)); + + tp_base_call_stream_update_remote_sending_state ( + (TpBaseCallStream *) self, + self->priv->handle, TP_SENDING_STATE_NONE, 0, + TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); + } + else if (remote_sending_state == TP_SENDING_STATE_SENDING) + { + g_message ("%s: SIGNALLING: receive: I will no longer send media", + tp_base_call_stream_get_object_path (base)); + + tp_base_call_stream_update_remote_sending_state ( + (TpBaseCallStream *) self, + self->priv->handle, TP_SENDING_STATE_NONE, 0, + TP_CALL_STATE_CHANGE_REASON_UNKNOWN, "", ""); + } + } +} + +static gboolean +stream_set_sending (TpBaseCallStream *base, + gboolean sending, + GError **error) +{ + ExampleCallStream *self = EXAMPLE_CALL_STREAM (base); + TpSendingState remote_sending_state = + tp_base_call_stream_get_remote_sending_state (base, self->priv->handle); + + example_call_stream_change_direction (self, sending, + (remote_sending_state == TP_SENDING_STATE_SENDING)); + + return TRUE; +} + +static gboolean +stream_request_receiving (TpBaseCallStream *base, + TpHandle contact, + gboolean receive, + GError **error) +{ + ExampleCallStream *self = EXAMPLE_CALL_STREAM (base); + TpSendingState local_sending_state = + tp_base_call_stream_get_local_sending_state (base); + + /* This is the only member */ + g_assert (contact == self->priv->handle); + + example_call_stream_change_direction (self, + (local_sending_state == TP_SENDING_STATE_SENDING), + receive); + + return TRUE; +} diff -Nru telepathy-glib-0.17.4/examples/cm/call/call-stream.h telepathy-glib-0.17.5/examples/cm/call/call-stream.h --- telepathy-glib-0.17.4/examples/cm/call/call-stream.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/call-stream.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,80 @@ +/* + * call-stream.h - header for an example stream + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef EXAMPLE_CALL_STREAM_H +#define EXAMPLE_CALL_STREAM_H + +#include + +#include + +G_BEGIN_DECLS + +typedef struct _ExampleCallStream ExampleCallStream; +typedef struct _ExampleCallStreamPrivate + ExampleCallStreamPrivate; + +typedef struct _ExampleCallStreamClass + ExampleCallStreamClass; +typedef struct _ExampleCallStreamClassPrivate + ExampleCallStreamClassPrivate; + +GType example_call_stream_get_type (void); + +#define EXAMPLE_TYPE_CALL_STREAM \ + (example_call_stream_get_type ()) +#define EXAMPLE_CALL_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALL_STREAM, \ + ExampleCallStream)) +#define EXAMPLE_CALL_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALL_STREAM, \ + ExampleCallStreamClass)) +#define EXAMPLE_IS_CALL_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALL_STREAM)) +#define EXAMPLE_IS_CALL_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALL_STREAM)) +#define EXAMPLE_CALL_STREAM_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_STREAM, \ + ExampleCallStreamClass)) + +struct _ExampleCallStreamClass { + TpBaseMediaCallStreamClass parent_class; + + ExampleCallStreamClassPrivate *priv; +}; + +struct _ExampleCallStream { + TpBaseMediaCallStream parent; + + ExampleCallStreamPrivate *priv; +}; + +void example_call_stream_accept_proposed_direction (ExampleCallStream *self); +void example_call_stream_connect (ExampleCallStream *self); + +/* This controls receiving emulated network events, so it wouldn't exist in + * a real connection manager */ +void example_call_stream_simulate_contact_agreed_to_send ( + ExampleCallStream *self); + +G_END_DECLS + +#endif diff -Nru telepathy-glib-0.17.4/examples/cm/call/cm.c telepathy-glib-0.17.5/examples/cm/call/cm.c --- telepathy-glib-0.17.4/examples/cm/call/cm.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/cm.c 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * manager.c - an example connection manager + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "cm.h" + +#include + +#include +#include + +#include "conn.h" +#include "protocol.h" + +G_DEFINE_TYPE (ExampleCallConnectionManager, + example_call_connection_manager, + TP_TYPE_BASE_CONNECTION_MANAGER) + +struct _ExampleCallConnectionManagerPrivate +{ + int dummy; +}; + +static void +example_call_connection_manager_init (ExampleCallConnectionManager *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, + ExampleCallConnectionManagerPrivate); +} + +static void +example_call_connection_manager_constructed (GObject *object) +{ + ExampleCallConnectionManager *self = + EXAMPLE_CALL_CONNECTION_MANAGER (object); + TpBaseConnectionManager *base = (TpBaseConnectionManager *) self; + void (*constructed) (GObject *) = + ((GObjectClass *) example_call_connection_manager_parent_class)->constructed; + TpBaseProtocol *protocol; + + if (constructed != NULL) + constructed (object); + + protocol = g_object_new (EXAMPLE_TYPE_CALL_PROTOCOL, + "name", "example", + NULL); + tp_base_connection_manager_add_protocol (base, protocol); + g_object_unref (protocol); +} + +static void +example_call_connection_manager_class_init ( + ExampleCallConnectionManagerClass *klass) +{ + GObjectClass *object_class = (GObjectClass *) klass; + TpBaseConnectionManagerClass *base_class = + (TpBaseConnectionManagerClass *) klass; + + g_type_class_add_private (klass, + sizeof (ExampleCallConnectionManagerPrivate)); + + object_class->constructed = example_call_connection_manager_constructed; + base_class->cm_dbus_name = "example_call"; +} diff -Nru telepathy-glib-0.17.4/examples/cm/call/cm.h telepathy-glib-0.17.5/examples/cm/call/cm.h --- telepathy-glib-0.17.4/examples/cm/call/cm.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/cm.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * manager.h - header for an example connection manager + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef EXAMPLE_CALL_CM_H +#define EXAMPLE_CALL_CM_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct _ExampleCallConnectionManager + ExampleCallConnectionManager; +typedef struct _ExampleCallConnectionManagerPrivate + ExampleCallConnectionManagerPrivate; + +typedef struct _ExampleCallConnectionManagerClass + ExampleCallConnectionManagerClass; +typedef struct _ExampleCallConnectionManagerClassPrivate + ExampleCallConnectionManagerClassPrivate; + +struct _ExampleCallConnectionManagerClass { + TpBaseConnectionManagerClass parent_class; + + ExampleCallConnectionManagerClassPrivate *priv; +}; + +struct _ExampleCallConnectionManager { + TpBaseConnectionManager parent; + + ExampleCallConnectionManagerPrivate *priv; +}; + +GType example_call_connection_manager_get_type (void); + +/* TYPE MACROS */ +#define EXAMPLE_TYPE_CALL_CONNECTION_MANAGER \ + (example_call_connection_manager_get_type ()) +#define EXAMPLE_CALL_CONNECTION_MANAGER(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, \ + ExampleCallConnectionManager)) +#define EXAMPLE_CALL_CONNECTION_MANAGER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, \ + ExampleCallConnectionManagerClass)) +#define EXAMPLE_IS_CALL_CONNECTION_MANAGER(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER)) +#define EXAMPLE_IS_CALL_CONNECTION_MANAGER_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER)) +#define EXAMPLE_CALL_CONNECTION_MANAGER_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, \ + ExampleCallConnectionManagerClass)) + +G_END_DECLS + +#endif diff -Nru telepathy-glib-0.17.4/examples/cm/call/conn.c telepathy-glib-0.17.5/examples/cm/call/conn.c --- telepathy-glib-0.17.4/examples/cm/call/conn.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/conn.c 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,429 @@ +/* + * conn.c - an example connection + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "conn.h" + +#include + +#include +#include +#include + +#include "call-manager.h" +#include "protocol.h" + +G_DEFINE_TYPE_WITH_CODE (ExampleCallConnection, + example_call_connection, + TP_TYPE_BASE_CONNECTION, + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACTS, + tp_contacts_mixin_iface_init); + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE, + tp_presence_mixin_iface_init); + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_SIMPLE_PRESENCE, + tp_presence_mixin_simple_presence_iface_init)) + +enum +{ + PROP_ACCOUNT = 1, + PROP_SIMULATION_DELAY, + N_PROPS +}; + +enum +{ + SIGNAL_AVAILABLE, + N_SIGNALS +}; + +static guint signals[N_SIGNALS] = { 0 }; + +struct _ExampleCallConnectionPrivate +{ + gchar *account; + guint simulation_delay; + gboolean away; + gchar *presence_message; +}; + +static void +example_call_connection_init (ExampleCallConnection *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + EXAMPLE_TYPE_CALL_CONNECTION, + ExampleCallConnectionPrivate); + self->priv->away = FALSE; + self->priv->presence_message = g_strdup (""); +} + +static void +get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *spec) +{ + ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (object); + + switch (property_id) + { + case PROP_ACCOUNT: + g_value_set_string (value, self->priv->account); + break; + + case PROP_SIMULATION_DELAY: + g_value_set_uint (value, self->priv->simulation_delay); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); + } +} + +static void +set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *spec) +{ + ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (object); + + switch (property_id) + { + case PROP_ACCOUNT: + g_free (self->priv->account); + self->priv->account = g_value_dup_string (value); + break; + + case PROP_SIMULATION_DELAY: + self->priv->simulation_delay = g_value_get_uint (value); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); + } +} + +static void +finalize (GObject *object) +{ + ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (object); + + tp_contacts_mixin_finalize (object); + g_free (self->priv->account); + g_free (self->priv->presence_message); + + G_OBJECT_CLASS (example_call_connection_parent_class)->finalize (object); +} + +static gchar * +get_unique_connection_name (TpBaseConnection *conn) +{ + ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (conn); + + return g_strdup_printf ("%s@%p", self->priv->account, self); +} + +static gchar * +example_call_normalize_contact (TpHandleRepoIface *repo, + const gchar *id, + gpointer context, + GError **error) +{ + gchar *normal = NULL; + + if (example_call_protocol_check_contact_id (id, &normal, error)) + return normal; + else + return NULL; +} + +static void +create_handle_repos (TpBaseConnection *conn, + TpHandleRepoIface *repos[NUM_TP_HANDLE_TYPES]) +{ + repos[TP_HANDLE_TYPE_CONTACT] = tp_dynamic_handle_repo_new + (TP_HANDLE_TYPE_CONTACT, example_call_normalize_contact, NULL); +} + +static GPtrArray * +create_channel_managers (TpBaseConnection *conn) +{ + ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (conn); + GPtrArray *ret = g_ptr_array_sized_new (1); + + g_ptr_array_add (ret, + g_object_new (EXAMPLE_TYPE_CALL_MANAGER, + "connection", conn, + "simulation-delay", self->priv->simulation_delay, + NULL)); + + return ret; +} + +static gboolean +start_connecting (TpBaseConnection *conn, + GError **error) +{ + ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (conn); + TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, + TP_HANDLE_TYPE_CONTACT); + + /* In a real connection manager we'd ask the underlying implementation to + * start connecting, then go to state CONNECTED when finished, but here + * we can do it immediately. */ + + conn->self_handle = tp_handle_ensure (contact_repo, self->priv->account, + NULL, error); + + if (conn->self_handle == 0) + return FALSE; + + tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTED, + TP_CONNECTION_STATUS_REASON_REQUESTED); + + return TRUE; +} + +static void +shut_down (TpBaseConnection *conn) +{ + /* In a real connection manager we'd ask the underlying implementation to + * start shutting down, then call this function when finished, but here + * we can do it immediately. */ + tp_base_connection_finish_shutdown (conn); +} + +static void +constructed (GObject *object) +{ + TpBaseConnection *base = TP_BASE_CONNECTION (object); + void (*chain_up) (GObject *) = + G_OBJECT_CLASS (example_call_connection_parent_class)->constructed; + + if (chain_up != NULL) + chain_up (object); + + tp_contacts_mixin_init (object, + G_STRUCT_OFFSET (ExampleCallConnection, contacts_mixin)); + tp_base_connection_register_with_contacts_mixin (base); + + tp_presence_mixin_init (object, + G_STRUCT_OFFSET (ExampleCallConnection, presence_mixin)); + tp_presence_mixin_simple_presence_register_with_contacts_mixin (object); +} + +static gboolean +status_available (GObject *object, + guint index_) +{ + TpBaseConnection *base = TP_BASE_CONNECTION (object); + + if (base->status != TP_CONNECTION_STATUS_CONNECTED) + return FALSE; + + return TRUE; +} + +static GHashTable * +get_contact_statuses (GObject *object, + const GArray *contacts, + GError **error) +{ + ExampleCallConnection *self = + EXAMPLE_CALL_CONNECTION (object); + TpBaseConnection *base = TP_BASE_CONNECTION (object); + guint i; + GHashTable *result = g_hash_table_new_full (g_direct_hash, g_direct_equal, + NULL, (GDestroyNotify) tp_presence_status_free); + + for (i = 0; i < contacts->len; i++) + { + TpHandle contact = g_array_index (contacts, guint, i); + ExampleCallPresence presence; + GHashTable *parameters; + + parameters = g_hash_table_new_full (g_str_hash, + g_str_equal, NULL, (GDestroyNotify) tp_g_value_slice_free); + + /* we know our own status from the connection; for this example CM, + * everyone else's status is assumed to be "available" */ + if (contact == base->self_handle) + { + presence = (self->priv->away ? EXAMPLE_CALL_PRESENCE_AWAY + : EXAMPLE_CALL_PRESENCE_AVAILABLE); + + if (self->priv->presence_message[0] != '\0') + g_hash_table_insert (parameters, "message", + tp_g_value_slice_new_string (self->priv->presence_message)); + } + else + { + presence = EXAMPLE_CALL_PRESENCE_AVAILABLE; + } + + g_hash_table_insert (result, GUINT_TO_POINTER (contact), + tp_presence_status_new (presence, parameters)); + g_hash_table_unref (parameters); + } + + return result; +} + +static gboolean +set_own_status (GObject *object, + const TpPresenceStatus *status, + GError **error) +{ + ExampleCallConnection *self = + EXAMPLE_CALL_CONNECTION (object); + TpBaseConnection *base = TP_BASE_CONNECTION (object); + GHashTable *presences; + const gchar *message = ""; + + if (status->optional_arguments != NULL) + { + GValue *v = g_hash_table_lookup (status->optional_arguments, "message"); + + if (v != NULL && G_VALUE_HOLDS_STRING (v)) + { + message = g_value_get_string (v); + + if (message == NULL) + message = ""; + } + } + + if (status->index == EXAMPLE_CALL_PRESENCE_AWAY) + { + if (self->priv->away && !tp_strdiff (message, + self->priv->presence_message)) + return TRUE; + + self->priv->away = TRUE; + } + else + { + if (!self->priv->away && !tp_strdiff (message, + self->priv->presence_message)) + return TRUE; + + self->priv->away = FALSE; + } + + g_free (self->priv->presence_message); + self->priv->presence_message = g_strdup (message); + + presences = g_hash_table_new_full (g_direct_hash, g_direct_equal, + NULL, NULL); + g_hash_table_insert (presences, GUINT_TO_POINTER (base->self_handle), + (gpointer) status); + tp_presence_mixin_emit_presence_update (object, presences); + g_hash_table_unref (presences); + + if (!self->priv->away) + { + g_signal_emit (self, signals[SIGNAL_AVAILABLE], 0, message); + } + + return TRUE; +} + +static const TpPresenceStatusOptionalArgumentSpec can_have_message[] = { + { "message", "s", NULL, NULL }, + { NULL } +}; + +/* Must be kept in sync with ExampleCallPresence enum in header */ +static const TpPresenceStatusSpec presence_statuses[] = { + { "offline", TP_CONNECTION_PRESENCE_TYPE_OFFLINE, FALSE, NULL }, + { "unknown", TP_CONNECTION_PRESENCE_TYPE_UNKNOWN, FALSE, NULL }, + { "error", TP_CONNECTION_PRESENCE_TYPE_ERROR, FALSE, NULL }, + { "away", TP_CONNECTION_PRESENCE_TYPE_AWAY, TRUE, can_have_message }, + { "available", TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, TRUE, + can_have_message }, + { NULL } +}; + +static const gchar *interfaces_always_present[] = { + TP_IFACE_CONNECTION_INTERFACE_CONTACTS, + TP_IFACE_CONNECTION_INTERFACE_PRESENCE, + TP_IFACE_CONNECTION_INTERFACE_REQUESTS, + TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, + NULL }; + +const gchar * const * +example_call_connection_get_possible_interfaces (void) +{ + /* in this example CM we don't have any extra interfaces that are sometimes, + * but not always, present */ + return interfaces_always_present; +} + +static void +example_call_connection_class_init ( + ExampleCallConnectionClass *klass) +{ + TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; + GObjectClass *object_class = (GObjectClass *) klass; + GParamSpec *param_spec; + + object_class->get_property = get_property; + object_class->set_property = set_property; + object_class->constructed = constructed; + object_class->finalize = finalize; + g_type_class_add_private (klass, + sizeof (ExampleCallConnectionPrivate)); + + base_class->create_handle_repos = create_handle_repos; + base_class->get_unique_connection_name = get_unique_connection_name; + base_class->create_channel_managers = create_channel_managers; + base_class->start_connecting = start_connecting; + base_class->shut_down = shut_down; + base_class->interfaces_always_present = interfaces_always_present; + + param_spec = g_param_spec_string ("account", "Account name", + "The username of this user", NULL, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); + + param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", + "Delay between simulated network events", + 0, G_MAXUINT32, 1000, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, + param_spec); + + /* Used in the call manager, to simulate an incoming call when we become + * available */ + signals[SIGNAL_AVAILABLE] = g_signal_new ("available", + G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + + tp_contacts_mixin_class_init (object_class, + G_STRUCT_OFFSET (ExampleCallConnectionClass, contacts_mixin)); + tp_presence_mixin_class_init (object_class, + G_STRUCT_OFFSET (ExampleCallConnectionClass, presence_mixin), + status_available, get_contact_statuses, set_own_status, + presence_statuses); + tp_presence_mixin_simple_presence_init_dbus_properties (object_class); +} diff -Nru telepathy-glib-0.17.4/examples/cm/call/conn.h telepathy-glib-0.17.5/examples/cm/call/conn.h --- telepathy-glib-0.17.4/examples/cm/call/conn.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/conn.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * conn.h - header for an example connection + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * Copying and distribution of this file, with or without modification, + * are permitted in any medium without royalty provided the copyright + * notice and this notice are preserved. + */ + +#ifndef EXAMPLE_CALL_CONN_H +#define EXAMPLE_CALL_CONN_H + +#include +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct _ExampleCallConnection ExampleCallConnection; +typedef struct _ExampleCallConnectionPrivate + ExampleCallConnectionPrivate; + +typedef struct _ExampleCallConnectionClass ExampleCallConnectionClass; +typedef struct _ExampleCallConnectionClassPrivate + ExampleCallConnectionClassPrivate; + +struct _ExampleCallConnectionClass { + TpBaseConnectionClass parent_class; + TpPresenceMixinClass presence_mixin; + TpContactsMixinClass contacts_mixin; + + ExampleCallConnectionClassPrivate *priv; +}; + +struct _ExampleCallConnection { + TpBaseConnection parent; + TpPresenceMixin presence_mixin; + TpContactsMixin contacts_mixin; + + ExampleCallConnectionPrivate *priv; +}; + +GType example_call_connection_get_type (void); + +#define EXAMPLE_TYPE_CALL_CONNECTION \ + (example_call_connection_get_type ()) +#define EXAMPLE_CALL_CONNECTION(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALL_CONNECTION, \ + ExampleCallConnection)) +#define EXAMPLE_CALL_CONNECTION_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALL_CONNECTION, \ + ExampleCallConnectionClass)) +#define EXAMPLE_IS_CALL_CONNECTION(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALL_CONNECTION)) +#define EXAMPLE_IS_CALL_CONNECTION_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALL_CONNECTION)) +#define EXAMPLE_CALL_CONNECTION_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CONNECTION, \ + ExampleCallConnectionClass)) + +/* Must be kept in sync with the array presence_statuses in conn.c */ +typedef enum { + EXAMPLE_CALL_PRESENCE_OFFLINE = 0, + EXAMPLE_CALL_PRESENCE_UNKNOWN, + EXAMPLE_CALL_PRESENCE_ERROR, + EXAMPLE_CALL_PRESENCE_AWAY, + EXAMPLE_CALL_PRESENCE_AVAILABLE +} ExampleCallPresence; + +const gchar * const *example_call_connection_get_possible_interfaces (void); + +G_END_DECLS + +#endif diff -Nru telepathy-glib-0.17.4/examples/cm/call/example_call.manager telepathy-glib-0.17.5/examples/cm/call/example_call.manager --- telepathy-glib-0.17.4/examples/cm/call/example_call.manager 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/example_call.manager 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,25 @@ +[ConnectionManager] +Interfaces= + +[Protocol example] +Interfaces= +ConnectionInterfaces=org.freedesktop.Telepathy.Connection.Interface.Requests;org.freedesktop.Telepathy.Connection.Interface.Contacts;org.freedesktop.Telepathy.Connection.Interface.Presence;org.freedesktop.Telepathy.Connection.Interface.SimplePresence; +param-account=s required register +param-simulation-delay=u +default-simulation-delay=1000 +RequestableChannelClasses=audio;video; +VCardField=x-telepathy-example +EnglishName=Example with Call channels +Icon=face-smile + +[audio] +org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Call.DRAFT +org.freedesktop.Telepathy.Channel.TargetHandleType u=1 +org.freedesktop.Telepathy.Channel.Type.Call.DRAFT.InitialAudio b=1 +allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID;org.freedesktop.Telepathy.Channel.Type.Call.DRAFT.InitialVideo; + +[video] +org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Call.DRAFT +org.freedesktop.Telepathy.Channel.TargetHandleType u=1 +org.freedesktop.Telepathy.Channel.Type.Call.DRAFT.InitialVideo b=1 +allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID;org.freedesktop.Telepathy.Channel.Type.Call.DRAFT.InitialAudio; diff -Nru telepathy-glib-0.17.4/examples/cm/call/main.c telepathy-glib-0.17.5/examples/cm/call/main.c --- telepathy-glib-0.17.4/examples/cm/call/main.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/main.c 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,60 @@ +/* + * main.c - entry point for an example Telepathy connection manager + * + * Copyright © 2007-2009 Collabora Ltd. + * Copyright © 2007-2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "config.h" + +#include "config.h" + +#include +#include + +#include "cm.h" + +static TpBaseConnectionManager * +construct_cm (void) +{ + return (TpBaseConnectionManager *) g_object_new ( + EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, + NULL); +} + +int +main (int argc, + char **argv) +{ +#ifdef ENABLE_DEBUG + tp_debug_divert_messages (g_getenv ("EXAMPLE_CM_LOGFILE")); + tp_debug_set_flags (g_getenv ("EXAMPLE_DEBUG")); + + if (g_getenv ("EXAMPLE_TIMING") != NULL) + g_log_set_default_handler (tp_debug_timestamped_log_handler, NULL); + + if (g_getenv ("EXAMPLE_PERSIST") != NULL) + tp_debug_set_persistent (TRUE); +#endif + + /* strictly speaking, this is only necessary for client code, but it's + * harmless here */ + g_type_init (); + + return tp_run_connection_manager ("telepathy-example-cm-call", + VERSION, construct_cm, argc, argv); +} diff -Nru telepathy-glib-0.17.4/examples/cm/call/Makefile.am telepathy-glib-0.17.5/examples/cm/call/Makefile.am --- telepathy-glib-0.17.4/examples/cm/call/Makefile.am 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/Makefile.am 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,74 @@ +# Example connection manager with audio/video calls. + +EXAMPLES = telepathy-example-cm-call +noinst_LTLIBRARIES = libexample-cm-call.la + +if INSTALL_EXAMPLES +libexec_PROGRAMS = $(EXAMPLES) +else +noinst_PROGRAMS = $(EXAMPLES) +endif + +libexample_cm_call_la_SOURCES = \ + cm.c \ + cm.h \ + conn.c \ + conn.h \ + call-channel.c \ + call-channel.h \ + call-manager.c \ + call-manager.h \ + call-content.c \ + call-content.h \ + call-stream.c \ + call-stream.h \ + protocol.c \ + protocol.h + +libexample_cm_call_la_LIBADD = $(LDADD) + +telepathy_example_cm_call_SOURCES = \ + main.c + +telepathy_example_cm_call_LDADD = \ + $(noinst_LTLIBRARIES) + +servicedir = ${datadir}/dbus-1/services + +if INSTALL_EXAMPLES +service_DATA = _gen/org.freedesktop.Telepathy.ConnectionManager.example_call.service +$(service_DATA): %: Makefile + $(mkdir_p) _gen + { echo "[D-BUS Service]" && \ + echo "Name=org.freedesktop.Telepathy.ConnectionManager.example_call" && \ + echo "Exec=${libexecdir}/telepathy-example-cm-call"; } > $@ + +managerdir = ${datadir}/telepathy/managers +dist_manager_DATA = example_call.manager +endif + +clean-local: + rm -rf _gen + +# In an external project you'd use $(TP_GLIB_LIBS) (obtained from +# pkg-config via autoconf) instead of the .la path, and put it last; we use +# a different format here because we're part of the telepathy-glib source tree. +LDADD = \ + $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ + $(GLIB_LIBS) \ + $(DBUS_LIBS) \ + $(NULL) + +# Similarly, in an external project you'd put $(TP_GLIB_CFLAGS) at the end of +# AM_CPPFLAGS. +AM_CPPFLAGS = \ + -I${top_srcdir} -I${top_builddir} \ + $(GLIB_CFLAGS) \ + $(DBUS_CFLAGS) \ + $(NULL) +AM_LDFLAGS = \ + $(ERROR_LDFLAGS) \ + $(NULL) + +AM_CFLAGS = $(ERROR_CFLAGS) + diff -Nru telepathy-glib-0.17.4/examples/cm/call/Makefile.in telepathy-glib-0.17.5/examples/cm/call/Makefile.in --- telepathy-glib-0.17.4/examples/cm/call/Makefile.in 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -0,0 +1,765 @@ +# Makefile.in generated by automake 1.11.3 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Example connection manager with audio/video calls. + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@INSTALL_EXAMPLES_TRUE@libexec_PROGRAMS = $(am__EXEEXT_1) +@INSTALL_EXAMPLES_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1) +subdir = examples/cm/call +DIST_COMMON = $(am__dist_manager_DATA_DIST) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/compiler.m4 \ + $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/introspection.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/linker.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/tp-compiler-flag.m4 \ + $(top_srcdir)/m4/tp-compiler-warnings.m4 \ + $(top_srcdir)/m4/tp-linker-flag.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +am__DEPENDENCIES_2 = \ + $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +libexample_cm_call_la_DEPENDENCIES = $(am__DEPENDENCIES_2) +am_libexample_cm_call_la_OBJECTS = cm.lo conn.lo call-channel.lo \ + call-manager.lo call-content.lo call-stream.lo protocol.lo +libexample_cm_call_la_OBJECTS = $(am_libexample_cm_call_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__EXEEXT_1 = telepathy-example-cm-call$(EXEEXT) +am__installdirs = "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(managerdir)" \ + "$(DESTDIR)$(servicedir)" +PROGRAMS = $(libexec_PROGRAMS) $(noinst_PROGRAMS) +am_telepathy_example_cm_call_OBJECTS = main.$(OBJEXT) +telepathy_example_cm_call_OBJECTS = \ + $(am_telepathy_example_cm_call_OBJECTS) +telepathy_example_cm_call_DEPENDENCIES = $(noinst_LTLIBRARIES) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +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_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +SOURCES = $(libexample_cm_call_la_SOURCES) \ + $(telepathy_example_cm_call_SOURCES) +DIST_SOURCES = $(libexample_cm_call_la_SOURCES) \ + $(telepathy_example_cm_call_SOURCES) +am__dist_manager_DATA_DIST = example_call.manager +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +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; }; \ + } +DATA = $(dist_manager_DATA) $(service_DATA) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DBUS_CFLAGS = @DBUS_CFLAGS@ +DBUS_LIBS = @DBUS_LIBS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +ENABLE_CODING_STYLE_CHECKS = @ENABLE_CODING_STYLE_CHECKS@ +ENABLE_DOC_CHECKS = @ENABLE_DOC_CHECKS@ +ERROR_CFLAGS = @ERROR_CFLAGS@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@ +GIO_UNIX_LIBS = @GIO_UNIX_LIBS@ +GLIB_CFLAGS = @GLIB_CFLAGS@ +GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ +GLIB_LIBS = @GLIB_LIBS@ +GLIB_MKENUMS = @GLIB_MKENUMS@ +GREP = @GREP@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +HAVE_VALA = @HAVE_VALA@ +HTML_DIR = @HTML_DIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ +INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ +INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ +INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ +INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ +INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ +INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ +INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_REVISION = @LT_REVISION@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +TP_GLIB_CFLAGS = @TP_GLIB_CFLAGS@ +VALAC = @VALAC@ +VALAFLAGS = @VALAFLAGS@ +VAPIGEN = @VAPIGEN@ +VERSION = @VERSION@ +VERSION_SCRIPT_ARG = @VERSION_SCRIPT_ARG@ +XSLTPROC = @XSLTPROC@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +tpglibtestsdir = @tpglibtestsdir@ +EXAMPLES = telepathy-example-cm-call +noinst_LTLIBRARIES = libexample-cm-call.la +libexample_cm_call_la_SOURCES = \ + cm.c \ + cm.h \ + conn.c \ + conn.h \ + call-channel.c \ + call-channel.h \ + call-manager.c \ + call-manager.h \ + call-content.c \ + call-content.h \ + call-stream.c \ + call-stream.h \ + protocol.c \ + protocol.h + +libexample_cm_call_la_LIBADD = $(LDADD) +telepathy_example_cm_call_SOURCES = \ + main.c + +telepathy_example_cm_call_LDADD = \ + $(noinst_LTLIBRARIES) + +servicedir = ${datadir}/dbus-1/services +@INSTALL_EXAMPLES_TRUE@service_DATA = _gen/org.freedesktop.Telepathy.ConnectionManager.example_call.service +@INSTALL_EXAMPLES_TRUE@managerdir = ${datadir}/telepathy/managers +@INSTALL_EXAMPLES_TRUE@dist_manager_DATA = example_call.manager + +# In an external project you'd use $(TP_GLIB_LIBS) (obtained from +# pkg-config via autoconf) instead of the .la path, and put it last; we use +# a different format here because we're part of the telepathy-glib source tree. +LDADD = \ + $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ + $(GLIB_LIBS) \ + $(DBUS_LIBS) \ + $(NULL) + + +# Similarly, in an external project you'd put $(TP_GLIB_CFLAGS) at the end of +# AM_CPPFLAGS. +AM_CPPFLAGS = \ + -I${top_srcdir} -I${top_builddir} \ + $(GLIB_CFLAGS) \ + $(DBUS_CFLAGS) \ + $(NULL) + +AM_LDFLAGS = \ + $(ERROR_LDFLAGS) \ + $(NULL) + +AM_CFLAGS = $(ERROR_CFLAGS) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/cm/call/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu examples/cm/call/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_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 +libexample-cm-call.la: $(libexample_cm_call_la_OBJECTS) $(libexample_cm_call_la_DEPENDENCIES) $(EXTRA_libexample_cm_call_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libexample_cm_call_la_OBJECTS) $(libexample_cm_call_la_LIBADD) $(LIBS) +install-libexecPROGRAMS: $(libexec_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)" + @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p || test -f $$p1; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-libexecPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(libexecdir)" && rm -f $$files + +clean-libexecPROGRAMS: + @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +telepathy-example-cm-call$(EXEEXT): $(telepathy_example_cm_call_OBJECTS) $(telepathy_example_cm_call_DEPENDENCIES) $(EXTRA_telepathy_example_cm_call_DEPENDENCIES) + @rm -f telepathy-example-cm-call$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(telepathy_example_cm_call_OBJECTS) $(telepathy_example_cm_call_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-channel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-content.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-manager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-stream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protocol.Plo@am__quote@ + +.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 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@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 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@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 +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-dist_managerDATA: $(dist_manager_DATA) + @$(NORMAL_INSTALL) + test -z "$(managerdir)" || $(MKDIR_P) "$(DESTDIR)$(managerdir)" + @list='$(dist_manager_DATA)'; test -n "$(managerdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(managerdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(managerdir)" || exit $$?; \ + done + +uninstall-dist_managerDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_manager_DATA)'; test -n "$(managerdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(managerdir)'; $(am__uninstall_files_from_dir) +install-serviceDATA: $(service_DATA) + @$(NORMAL_INSTALL) + test -z "$(servicedir)" || $(MKDIR_P) "$(DESTDIR)$(servicedir)" + @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(servicedir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(servicedir)" || exit $$?; \ + done + +uninstall-serviceDATA: + @$(NORMAL_UNINSTALL) + @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(servicedir)'; $(am__uninstall_files_from_dir) + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(managerdir)" "$(DESTDIR)$(servicedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + 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: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ + clean-local clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_managerDATA install-serviceDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libexecPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_managerDATA uninstall-libexecPROGRAMS \ + uninstall-serviceDATA + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libexecPROGRAMS clean-libtool clean-local \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS 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-dist_managerDATA install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-libexecPROGRAMS \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-serviceDATA install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-dist_managerDATA \ + uninstall-libexecPROGRAMS uninstall-serviceDATA + +@INSTALL_EXAMPLES_TRUE@$(service_DATA): %: Makefile +@INSTALL_EXAMPLES_TRUE@ $(mkdir_p) _gen +@INSTALL_EXAMPLES_TRUE@ { echo "[D-BUS Service]" && \ +@INSTALL_EXAMPLES_TRUE@ echo "Name=org.freedesktop.Telepathy.ConnectionManager.example_call" && \ +@INSTALL_EXAMPLES_TRUE@ echo "Exec=${libexecdir}/telepathy-example-cm-call"; } > $@ + +clean-local: + rm -rf _gen + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff -Nru telepathy-glib-0.17.4/examples/cm/call/protocol.c telepathy-glib-0.17.5/examples/cm/call/protocol.c --- telepathy-glib-0.17.4/examples/cm/call/protocol.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/protocol.c 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,188 @@ +/* + * protocol.c - an example Protocol + * + * Copyright © 2007-2010 Collabora Ltd. + * + * Copying and distribution of this file, with or without modification, + * are permitted in any medium without royalty provided the copyright + * notice and this notice are preserved. + */ + +#include "config.h" + +#include "protocol.h" + +#include + +#include "call-manager.h" +#include "conn.h" + +G_DEFINE_TYPE (ExampleCallProtocol, + example_call_protocol, + TP_TYPE_BASE_PROTOCOL) + +static void +example_call_protocol_init ( + ExampleCallProtocol *self) +{ +} + +gboolean +example_call_protocol_check_contact_id (const gchar *id, + gchar **normal, + GError **error) +{ + g_return_val_if_fail (id != NULL, FALSE); + + if (id[0] == '\0') + { + g_set_error (error, TP_ERRORS, TP_ERROR_INVALID_HANDLE, + "ID must not be empty"); + return FALSE; + } + + if (normal != NULL) + *normal = g_utf8_normalize (id, -1, G_NORMALIZE_ALL_COMPOSE); + + return TRUE; +} + +static gboolean +account_param_filter (const TpCMParamSpec *paramspec, + GValue *value, + GError **error) +{ + const gchar *id = g_value_get_string (value); + + return example_call_protocol_check_contact_id (id, NULL, error); +} + +static const TpCMParamSpec example_call_example_params[] = { + { "account", "s", G_TYPE_STRING, + TP_CONN_MGR_PARAM_FLAG_REQUIRED | TP_CONN_MGR_PARAM_FLAG_REGISTER, + NULL, /* no default */ + 0, /* unused, formerly struct offset */ + account_param_filter, + NULL, /* filter data, unused here */ + NULL }, /* setter data, now unused */ + { "simulation-delay", "u", G_TYPE_UINT, + TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, + GUINT_TO_POINTER (1000), /* default */ + 0, /* unused, formerly struct offset */ + NULL, /* no filter */ + NULL, /* filter data, unused here */ + NULL }, /* setter data, now unused */ + { NULL } +}; + +static const TpCMParamSpec * +get_parameters (TpBaseProtocol *self) +{ + return example_call_example_params; +} + +static TpBaseConnection * +new_connection (TpBaseProtocol *protocol, + GHashTable *asv, + GError **error) +{ + ExampleCallConnection *conn; + const gchar *account; + guint sim_delay; + + account = tp_asv_get_string (asv, "account"); + /* telepathy-glib checked this for us */ + g_assert (account != NULL); + + sim_delay = tp_asv_get_uint32 (asv, "simulation-delay", NULL); + + conn = EXAMPLE_CALL_CONNECTION ( + g_object_new (EXAMPLE_TYPE_CALL_CONNECTION, + "account", account, + "protocol", tp_base_protocol_get_name (protocol), + "simulation-delay", sim_delay, + NULL)); + + return (TpBaseConnection *) conn; +} + +static gchar * +normalize_contact (TpBaseProtocol *self G_GNUC_UNUSED, + const gchar *contact, + GError **error) +{ + gchar *normal; + + if (example_call_protocol_check_contact_id (contact, &normal, error)) + return normal; + else + return NULL; +} + +static gchar * +identify_account (TpBaseProtocol *self G_GNUC_UNUSED, + GHashTable *asv, + GError **error) +{ + const gchar *account = tp_asv_get_string (asv, "account"); + + if (account != NULL) + return normalize_contact (self, account, error); + + g_set_error (error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "'account' parameter not given"); + return NULL; +} + +static GStrv +get_interfaces (TpBaseProtocol *self) +{ + return NULL; +} + +static void +get_connection_details (TpBaseProtocol *self G_GNUC_UNUSED, + GStrv *connection_interfaces, + GType **channel_managers, + gchar **icon_name, + gchar **english_name, + gchar **vcard_field) +{ + if (connection_interfaces != NULL) + { + *connection_interfaces = g_strdupv ( + (GStrv) example_call_connection_get_possible_interfaces ()); + } + + if (channel_managers != NULL) + { + GType types[] = { EXAMPLE_TYPE_CALL_MANAGER, G_TYPE_INVALID }; + + *channel_managers = g_memdup (types, sizeof (types)); + } + + if (icon_name != NULL) + *icon_name = g_strdup ("face-smile"); + + if (english_name != NULL) + *english_name = g_strdup ("Example with Call channels"); + + if (vcard_field != NULL) + *vcard_field = g_strdup ("x-telepathy-example"); +} + +static void +example_call_protocol_class_init ( + ExampleCallProtocolClass *klass) +{ + TpBaseProtocolClass *base_class = + (TpBaseProtocolClass *) klass; + + base_class->get_parameters = get_parameters; + base_class->new_connection = new_connection; + + base_class->normalize_contact = normalize_contact; + base_class->identify_account = identify_account; + base_class->get_interfaces = get_interfaces; + base_class->get_connection_details = get_connection_details; +} diff -Nru telepathy-glib-0.17.4/examples/cm/call/protocol.h telepathy-glib-0.17.5/examples/cm/call/protocol.h --- telepathy-glib-0.17.4/examples/cm/call/protocol.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/call/protocol.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * protocol.h - header for an example Protocol + * Copyright © 2007-2010 Collabora Ltd. + * + * Copying and distribution of this file, with or without modification, + * are permitted in any medium without royalty provided the copyright + * notice and this notice are preserved. + */ + +#ifndef EXAMPLE_CALL_PROTOCOL_H +#define EXAMPLE_CALL_PROTOCOL_H + +#include +#include + +G_BEGIN_DECLS + +typedef struct _ExampleCallProtocol ExampleCallProtocol; +typedef struct _ExampleCallProtocolPrivate ExampleCallProtocolPrivate; +typedef struct _ExampleCallProtocolClass ExampleCallProtocolClass; +typedef struct _ExampleCallProtocolClassPrivate ExampleCallProtocolClassPrivate; + +struct _ExampleCallProtocolClass { + TpBaseProtocolClass parent_class; + + ExampleCallProtocolClassPrivate *priv; +}; + +struct _ExampleCallProtocol { + TpBaseProtocol parent; + + ExampleCallProtocolPrivate *priv; +}; + +GType example_call_protocol_get_type (void); + +#define EXAMPLE_TYPE_CALL_PROTOCOL \ + (example_call_protocol_get_type ()) +#define EXAMPLE_CALL_PROTOCOL(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + EXAMPLE_TYPE_CALL_PROTOCOL, \ + ExampleCallProtocol)) +#define EXAMPLE_CALL_PROTOCOL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST ((klass), \ + EXAMPLE_TYPE_CALL_PROTOCOL, \ + ExampleCallProtocolClass)) +#define EXAMPLE_IS_CALL_PROTOCOL(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ + EXAMPLE_TYPE_CALL_PROTOCOL)) +#define EXAMPLE_IS_CALL_PROTOCOL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE ((klass), \ + EXAMPLE_TYPE_CALL_PROTOCOL)) +#define EXAMPLE_CALL_PROTOCOL_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + EXAMPLE_TYPE_CALL_PROTOCOL, \ + ExampleCallProtocolClass)) + +gboolean example_call_protocol_check_contact_id (const gchar *id, + gchar **normal, + GError **error); + +G_END_DECLS + +#endif diff -Nru telepathy-glib-0.17.4/examples/cm/callable/conn.c telepathy-glib-0.17.5/examples/cm/callable/conn.c --- telepathy-glib-0.17.4/examples/cm/callable/conn.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/conn.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,427 +0,0 @@ -/* - * conn.c - an example connection - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "conn.h" - -#include - -#include -#include -#include - -#include "media-manager.h" -#include "protocol.h" - -G_DEFINE_TYPE_WITH_CODE (ExampleCallableConnection, - example_callable_connection, - TP_TYPE_BASE_CONNECTION, - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACTS, - tp_contacts_mixin_iface_init); - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE, - tp_presence_mixin_iface_init); - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_SIMPLE_PRESENCE, - tp_presence_mixin_simple_presence_iface_init)) - -enum -{ - PROP_ACCOUNT = 1, - PROP_SIMULATION_DELAY, - N_PROPS -}; - -enum -{ - SIGNAL_AVAILABLE, - N_SIGNALS -}; - -static guint signals[N_SIGNALS] = { 0 }; - -struct _ExampleCallableConnectionPrivate -{ - gchar *account; - guint simulation_delay; - gboolean away; - gchar *presence_message; -}; - -static void -example_callable_connection_init (ExampleCallableConnection *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - EXAMPLE_TYPE_CALLABLE_CONNECTION, - ExampleCallableConnectionPrivate); - self->priv->away = FALSE; - self->priv->presence_message = g_strdup (""); -} - -static void -get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *spec) -{ - ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (object); - - switch (property_id) - { - case PROP_ACCOUNT: - g_value_set_string (value, self->priv->account); - break; - - case PROP_SIMULATION_DELAY: - g_value_set_uint (value, self->priv->simulation_delay); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); - } -} - -static void -set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *spec) -{ - ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (object); - - switch (property_id) - { - case PROP_ACCOUNT: - g_free (self->priv->account); - self->priv->account = g_value_dup_string (value); - break; - - case PROP_SIMULATION_DELAY: - self->priv->simulation_delay = g_value_get_uint (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); - } -} - -static void -finalize (GObject *object) -{ - ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (object); - - tp_contacts_mixin_finalize (object); - g_free (self->priv->account); - g_free (self->priv->presence_message); - - G_OBJECT_CLASS (example_callable_connection_parent_class)->finalize (object); -} - -static gchar * -get_unique_connection_name (TpBaseConnection *conn) -{ - ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (conn); - - return g_strdup_printf ("%s@%p", self->priv->account, self); -} - -gchar * -example_callable_normalize_contact (TpHandleRepoIface *repo, - const gchar *id, - gpointer context, - GError **error) -{ - gchar *normal = NULL; - - if (example_callable_protocol_check_contact_id (id, &normal, error)) - return normal; - else - return NULL; -} - -static void -create_handle_repos (TpBaseConnection *conn, - TpHandleRepoIface *repos[NUM_TP_HANDLE_TYPES]) -{ - repos[TP_HANDLE_TYPE_CONTACT] = tp_dynamic_handle_repo_new - (TP_HANDLE_TYPE_CONTACT, example_callable_normalize_contact, NULL); -} - -static GPtrArray * -create_channel_managers (TpBaseConnection *conn) -{ - ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (conn); - GPtrArray *ret = g_ptr_array_sized_new (1); - - g_ptr_array_add (ret, - g_object_new (EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER, - "connection", conn, - "simulation-delay", self->priv->simulation_delay, - NULL)); - - return ret; -} - -static gboolean -start_connecting (TpBaseConnection *conn, - GError **error) -{ - ExampleCallableConnection *self = EXAMPLE_CALLABLE_CONNECTION (conn); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, - TP_HANDLE_TYPE_CONTACT); - - /* In a real connection manager we'd ask the underlying implementation to - * start connecting, then go to state CONNECTED when finished, but here - * we can do it immediately. */ - - conn->self_handle = tp_handle_ensure (contact_repo, self->priv->account, - NULL, error); - - if (conn->self_handle == 0) - return FALSE; - - tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTED, - TP_CONNECTION_STATUS_REASON_REQUESTED); - - return TRUE; -} - -static void -shut_down (TpBaseConnection *conn) -{ - /* In a real connection manager we'd ask the underlying implementation to - * start shutting down, then call this function when finished, but here - * we can do it immediately. */ - tp_base_connection_finish_shutdown (conn); -} - -static void -constructed (GObject *object) -{ - TpBaseConnection *base = TP_BASE_CONNECTION (object); - void (*chain_up) (GObject *) = - G_OBJECT_CLASS (example_callable_connection_parent_class)->constructed; - - if (chain_up != NULL) - chain_up (object); - - tp_contacts_mixin_init (object, - G_STRUCT_OFFSET (ExampleCallableConnection, contacts_mixin)); - tp_base_connection_register_with_contacts_mixin (base); - - tp_presence_mixin_init (object, - G_STRUCT_OFFSET (ExampleCallableConnection, presence_mixin)); - tp_presence_mixin_simple_presence_register_with_contacts_mixin (object); -} - -static gboolean -status_available (GObject *object, - guint index_) -{ - TpBaseConnection *base = TP_BASE_CONNECTION (object); - - if (base->status != TP_CONNECTION_STATUS_CONNECTED) - return FALSE; - - return TRUE; -} - -static GHashTable * -get_contact_statuses (GObject *object, - const GArray *contacts, - GError **error) -{ - ExampleCallableConnection *self = - EXAMPLE_CALLABLE_CONNECTION (object); - TpBaseConnection *base = TP_BASE_CONNECTION (object); - guint i; - GHashTable *result = g_hash_table_new_full (g_direct_hash, g_direct_equal, - NULL, (GDestroyNotify) tp_presence_status_free); - - for (i = 0; i < contacts->len; i++) - { - TpHandle contact = g_array_index (contacts, guint, i); - ExampleCallablePresence presence; - GHashTable *parameters; - - parameters = g_hash_table_new_full (g_str_hash, - g_str_equal, NULL, (GDestroyNotify) tp_g_value_slice_free); - - /* we know our own status from the connection; for this example CM, - * everyone else's status is assumed to be "available" */ - if (contact == base->self_handle) - { - presence = (self->priv->away ? EXAMPLE_CALLABLE_PRESENCE_AWAY - : EXAMPLE_CALLABLE_PRESENCE_AVAILABLE); - - if (self->priv->presence_message[0] != '\0') - g_hash_table_insert (parameters, "message", - tp_g_value_slice_new_string (self->priv->presence_message)); - } - else - { - presence = EXAMPLE_CALLABLE_PRESENCE_AVAILABLE; - } - - g_hash_table_insert (result, GUINT_TO_POINTER (contact), - tp_presence_status_new (presence, parameters)); - g_hash_table_unref (parameters); - } - - return result; -} - -static gboolean -set_own_status (GObject *object, - const TpPresenceStatus *status, - GError **error) -{ - ExampleCallableConnection *self = - EXAMPLE_CALLABLE_CONNECTION (object); - TpBaseConnection *base = TP_BASE_CONNECTION (object); - GHashTable *presences; - const gchar *message = ""; - - if (status->optional_arguments != NULL) - { - GValue *v = g_hash_table_lookup (status->optional_arguments, "message"); - - if (v != NULL && G_VALUE_HOLDS_STRING (v)) - { - message = g_value_get_string (v); - - if (message == NULL) - message = ""; - } - } - - if (status->index == EXAMPLE_CALLABLE_PRESENCE_AWAY) - { - if (self->priv->away && !tp_strdiff (message, - self->priv->presence_message)) - return TRUE; - - self->priv->away = TRUE; - } - else - { - if (!self->priv->away && !tp_strdiff (message, - self->priv->presence_message)) - return TRUE; - - self->priv->away = FALSE; - } - - g_free (self->priv->presence_message); - self->priv->presence_message = g_strdup (message); - - presences = g_hash_table_new_full (g_direct_hash, g_direct_equal, - NULL, NULL); - g_hash_table_insert (presences, GUINT_TO_POINTER (base->self_handle), - (gpointer) status); - tp_presence_mixin_emit_presence_update (object, presences); - g_hash_table_unref (presences); - - if (!self->priv->away) - { - g_signal_emit (self, signals[SIGNAL_AVAILABLE], 0, message); - } - - return TRUE; -} - -static const TpPresenceStatusOptionalArgumentSpec can_have_message[] = { - { "message", "s", NULL, NULL }, - { NULL } -}; - -/* Must be kept in sync with ExampleCallablePresence enum in header */ -static const TpPresenceStatusSpec presence_statuses[] = { - { "offline", TP_CONNECTION_PRESENCE_TYPE_OFFLINE, FALSE, NULL }, - { "unknown", TP_CONNECTION_PRESENCE_TYPE_UNKNOWN, FALSE, NULL }, - { "error", TP_CONNECTION_PRESENCE_TYPE_ERROR, FALSE, NULL }, - { "away", TP_CONNECTION_PRESENCE_TYPE_AWAY, TRUE, can_have_message }, - { "available", TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, TRUE, - can_have_message }, - { NULL } -}; - -static const gchar *interfaces_always_present[] = { - TP_IFACE_CONNECTION_INTERFACE_CONTACTS, - TP_IFACE_CONNECTION_INTERFACE_PRESENCE, - TP_IFACE_CONNECTION_INTERFACE_REQUESTS, - TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, - NULL }; - -const gchar * const * -example_callable_connection_get_possible_interfaces (void) -{ - /* in this example CM we don't have any extra interfaces that are sometimes, - * but not always, present */ - return interfaces_always_present; -} - -static void -example_callable_connection_class_init ( - ExampleCallableConnectionClass *klass) -{ - TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; - GObjectClass *object_class = (GObjectClass *) klass; - GParamSpec *param_spec; - - object_class->get_property = get_property; - object_class->set_property = set_property; - object_class->constructed = constructed; - object_class->finalize = finalize; - g_type_class_add_private (klass, - sizeof (ExampleCallableConnectionPrivate)); - - base_class->create_handle_repos = create_handle_repos; - base_class->get_unique_connection_name = get_unique_connection_name; - base_class->create_channel_managers = create_channel_managers; - base_class->start_connecting = start_connecting; - base_class->shut_down = shut_down; - base_class->interfaces_always_present = interfaces_always_present; - - param_spec = g_param_spec_string ("account", "Account name", - "The username of this user", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); - - param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", - "Delay between simulated network events", - 0, G_MAXUINT32, 1000, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, - param_spec); - - /* Used in the media manager, to simulate an incoming call when we become - * available */ - signals[SIGNAL_AVAILABLE] = g_signal_new ("available", - G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, - g_cclosure_marshal_VOID__STRING, - G_TYPE_NONE, 1, G_TYPE_STRING); - - tp_contacts_mixin_class_init (object_class, - G_STRUCT_OFFSET (ExampleCallableConnectionClass, contacts_mixin)); - tp_presence_mixin_class_init (object_class, - G_STRUCT_OFFSET (ExampleCallableConnectionClass, presence_mixin), - status_available, get_contact_statuses, set_own_status, - presence_statuses); - tp_presence_mixin_simple_presence_init_dbus_properties (object_class); -} diff -Nru telepathy-glib-0.17.4/examples/cm/callable/connection-manager.c telepathy-glib-0.17.5/examples/cm/callable/connection-manager.c --- telepathy-glib-0.17.4/examples/cm/callable/connection-manager.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/connection-manager.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,83 +0,0 @@ -/* - * manager.c - an example connection manager - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "connection-manager.h" - -#include - -#include -#include - -#include "conn.h" -#include "protocol.h" - -G_DEFINE_TYPE (ExampleCallableConnectionManager, - example_callable_connection_manager, - TP_TYPE_BASE_CONNECTION_MANAGER) - -struct _ExampleCallableConnectionManagerPrivate -{ - int dummy; -}; - -static void -example_callable_connection_manager_init ( - ExampleCallableConnectionManager *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER, - ExampleCallableConnectionManagerPrivate); -} - -static void -example_callable_connection_manager_constructed (GObject *object) -{ - ExampleCallableConnectionManager *self = - EXAMPLE_CALLABLE_CONNECTION_MANAGER (object); - TpBaseConnectionManager *base = (TpBaseConnectionManager *) self; - void (*constructed) (GObject *) = - ((GObjectClass *) example_callable_connection_manager_parent_class)->constructed; - TpBaseProtocol *protocol; - - if (constructed != NULL) - constructed (object); - - protocol = g_object_new (EXAMPLE_TYPE_CALLABLE_PROTOCOL, - "name", "example", - NULL); - tp_base_connection_manager_add_protocol (base, protocol); - g_object_unref (protocol); -} - -static void -example_callable_connection_manager_class_init ( - ExampleCallableConnectionManagerClass *klass) -{ - GObjectClass *object_class = (GObjectClass *) klass; - TpBaseConnectionManagerClass *base_class = - (TpBaseConnectionManagerClass *) klass; - - g_type_class_add_private (klass, - sizeof (ExampleCallableConnectionManagerPrivate)); - - object_class->constructed = example_callable_connection_manager_constructed; - base_class->cm_dbus_name = "example_callable"; -} diff -Nru telepathy-glib-0.17.4/examples/cm/callable/connection-manager.h telepathy-glib-0.17.5/examples/cm/callable/connection-manager.h --- telepathy-glib-0.17.4/examples/cm/callable/connection-manager.h 2009-04-02 15:11:50.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/connection-manager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* - * manager.h - header for an example connection manager - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef __EXAMPLE_CALLABLE_CONNECTION_MANAGER_H__ -#define __EXAMPLE_CALLABLE_CONNECTION_MANAGER_H__ - -#include -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallableConnectionManager - ExampleCallableConnectionManager; -typedef struct _ExampleCallableConnectionManagerPrivate - ExampleCallableConnectionManagerPrivate; - -typedef struct _ExampleCallableConnectionManagerClass - ExampleCallableConnectionManagerClass; -typedef struct _ExampleCallableConnectionManagerClassPrivate - ExampleCallableConnectionManagerClassPrivate; - -struct _ExampleCallableConnectionManagerClass { - TpBaseConnectionManagerClass parent_class; - - ExampleCallableConnectionManagerClassPrivate *priv; -}; - -struct _ExampleCallableConnectionManager { - TpBaseConnectionManager parent; - - ExampleCallableConnectionManagerPrivate *priv; -}; - -GType example_callable_connection_manager_get_type (void); - -/* TYPE MACROS */ -#define EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER \ - (example_callable_connection_manager_get_type ()) -#define EXAMPLE_CALLABLE_CONNECTION_MANAGER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER, \ - ExampleCallableConnectionManager)) -#define EXAMPLE_CALLABLE_CONNECTION_MANAGER_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER, \ - ExampleCallableConnectionManagerClass)) -#define EXAMPLE_IS_CALLABLE_CONNECTION_MANAGER(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER)) -#define EXAMPLE_IS_CALLABLE_CONNECTION_MANAGER_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER)) -#define EXAMPLE_CALLABLE_CONNECTION_MANAGER_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER, \ - ExampleCallableConnectionManagerClass)) - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/cm/callable/conn.h telepathy-glib-0.17.5/examples/cm/callable/conn.h --- telepathy-glib-0.17.4/examples/cm/callable/conn.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/conn.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -/* - * conn.h - header for an example connection - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * Copying and distribution of this file, with or without modification, - * are permitted in any medium without royalty provided the copyright - * notice and this notice are preserved. - */ - -#ifndef __EXAMPLE_CALLABLE_CONN_H__ -#define __EXAMPLE_CALLABLE_CONN_H__ - -#include -#include -#include -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallableConnection ExampleCallableConnection; -typedef struct _ExampleCallableConnectionPrivate - ExampleCallableConnectionPrivate; - -typedef struct _ExampleCallableConnectionClass ExampleCallableConnectionClass; -typedef struct _ExampleCallableConnectionClassPrivate - ExampleCallableConnectionClassPrivate; - -struct _ExampleCallableConnectionClass { - TpBaseConnectionClass parent_class; - TpPresenceMixinClass presence_mixin; - TpContactsMixinClass contacts_mixin; - - ExampleCallableConnectionClassPrivate *priv; -}; - -struct _ExampleCallableConnection { - TpBaseConnection parent; - TpPresenceMixin presence_mixin; - TpContactsMixin contacts_mixin; - - ExampleCallableConnectionPrivate *priv; -}; - -GType example_callable_connection_get_type (void); - -#define EXAMPLE_TYPE_CALLABLE_CONNECTION \ - (example_callable_connection_get_type ()) -#define EXAMPLE_CALLABLE_CONNECTION(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION, \ - ExampleCallableConnection)) -#define EXAMPLE_CALLABLE_CONNECTION_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALLABLE_CONNECTION, \ - ExampleCallableConnectionClass)) -#define EXAMPLE_IS_CALLABLE_CONNECTION(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION)) -#define EXAMPLE_IS_CALLABLE_CONNECTION_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALLABLE_CONNECTION)) -#define EXAMPLE_CALLABLE_CONNECTION_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALLABLE_CONNECTION, \ - ExampleCallableConnectionClass)) - -gchar *example_callable_normalize_contact (TpHandleRepoIface *repo, - const gchar *id, gpointer context, GError **error); - -/* Must be kept in sync with the array presence_statuses in conn.c */ -typedef enum { - EXAMPLE_CALLABLE_PRESENCE_OFFLINE = 0, - EXAMPLE_CALLABLE_PRESENCE_UNKNOWN, - EXAMPLE_CALLABLE_PRESENCE_ERROR, - EXAMPLE_CALLABLE_PRESENCE_AWAY, - EXAMPLE_CALLABLE_PRESENCE_AVAILABLE -} ExampleCallablePresence; - -const gchar * const * example_callable_connection_get_possible_interfaces ( - void); - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/cm/callable/example_callable.manager telepathy-glib-0.17.5/examples/cm/callable/example_callable.manager --- telepathy-glib-0.17.4/examples/cm/callable/example_callable.manager 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/example_callable.manager 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -[ConnectionManager] -Interfaces= - -[Protocol example] -Interfaces= -ConnectionInterfaces=org.freedesktop.Telepathy.Connection.Interface.Requests;org.freedesktop.Telepathy.Connection.Interface.Contacts;org.freedesktop.Telepathy.Connection.Interface.Presence;org.freedesktop.Telepathy.Connection.Interface.SimplePresence; -param-account=s required register -param-simulation-delay=u -default-simulation-delay=1000 -RequestableChannelClasses=streamedmedia; -VCardField=x-telepathy-example -EnglishName=Example with StreamedMedia calls -Icon=face-smile - -[streamedmedia] -org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.StreamedMedia -org.freedesktop.Telepathy.Channel.TargetHandleType u=1 -allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID; - diff -Nru telepathy-glib-0.17.4/examples/cm/callable/main.c telepathy-glib-0.17.5/examples/cm/callable/main.c --- telepathy-glib-0.17.4/examples/cm/callable/main.c 2009-04-02 15:11:50.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/main.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -/* - * main.c - entry point for an example Telepathy connection manager - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" - -#include -#include - -#include "connection-manager.h" - -static TpBaseConnectionManager * -construct_cm (void) -{ - return (TpBaseConnectionManager *) g_object_new ( - EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER, - NULL); -} - -int -main (int argc, - char **argv) -{ -#ifdef ENABLE_DEBUG - tp_debug_divert_messages (g_getenv ("EXAMPLE_CM_LOGFILE")); - tp_debug_set_flags (g_getenv ("EXAMPLE_DEBUG")); - - if (g_getenv ("EXAMPLE_TIMING") != NULL) - g_log_set_default_handler (tp_debug_timestamped_log_handler, NULL); - - if (g_getenv ("EXAMPLE_PERSIST") != NULL) - tp_debug_set_persistent (TRUE); -#endif - - return tp_run_connection_manager ("telepathy-example-cm-callable", - VERSION, construct_cm, argc, argv); -} diff -Nru telepathy-glib-0.17.4/examples/cm/callable/Makefile.am telepathy-glib-0.17.5/examples/cm/callable/Makefile.am --- telepathy-glib-0.17.4/examples/cm/callable/Makefile.am 2011-04-26 09:30:09.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -# Example connection manager with audio/video calls. - -EXAMPLES = telepathy-example-cm-callable -noinst_LTLIBRARIES = libexample-cm-callable.la - -if INSTALL_EXAMPLES -libexec_PROGRAMS = $(EXAMPLES) -else -noinst_PROGRAMS = $(EXAMPLES) -endif - -libexample_cm_callable_la_SOURCES = \ - conn.c \ - conn.h \ - connection-manager.c \ - connection-manager.h \ - media-channel.c \ - media-channel.h \ - media-manager.c \ - media-manager.h \ - media-stream.c \ - media-stream.h \ - protocol.c \ - protocol.h - -libexample_cm_callable_la_LIBADD = $(LDADD) - -telepathy_example_cm_callable_SOURCES = \ - main.c - -telepathy_example_cm_callable_LDADD = \ - $(noinst_LTLIBRARIES) - -servicedir = ${datadir}/dbus-1/services - -if INSTALL_EXAMPLES -service_DATA = _gen/org.freedesktop.Telepathy.ConnectionManager.example_callable.service -$(service_DATA): %: Makefile - $(mkdir_p) _gen - { echo "[D-BUS Service]" && \ - echo "Name=org.freedesktop.Telepathy.ConnectionManager.example_callable" && \ - echo "Exec=${libexecdir}/telepathy-example-cm-callable"; } > $@ - -managerdir = ${datadir}/telepathy/managers -dist_manager_DATA = example_callable.manager -endif - -clean-local: - rm -rf _gen - -# In an external project you'd use $(TP_GLIB_LIBS) (obtained from -# pkg-config via autoconf) instead of the .la path, and put it last; we use -# a different format here because we're part of the telepathy-glib source tree. -LDADD = \ - $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ - $(GLIB_LIBS) \ - $(DBUS_LIBS) \ - $(NULL) - -# Similarly, in an external project you'd put $(TP_GLIB_CFLAGS) at the end of -# AM_CPPFLAGS. -AM_CPPFLAGS = \ - -I${top_srcdir} -I${top_builddir} \ - $(GLIB_CFLAGS) \ - $(DBUS_CFLAGS) \ - $(NULL) - -AM_CFLAGS = $(ERROR_CFLAGS) -AM_LDFLAGS = \ - $(ERROR_LDFLAGS) \ - $(NULL) diff -Nru telepathy-glib-0.17.4/examples/cm/callable/Makefile.in telepathy-glib-0.17.5/examples/cm/callable/Makefile.in --- telepathy-glib-0.17.4/examples/cm/callable/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,759 +0,0 @@ -# Makefile.in generated by automake 1.11.1 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. -# 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. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Example connection manager with audio/video calls. - - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@INSTALL_EXAMPLES_TRUE@libexec_PROGRAMS = $(am__EXEEXT_1) -@INSTALL_EXAMPLES_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1) -subdir = examples/cm/callable -DIST_COMMON = $(am__dist_manager_DATA_DIST) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/compiler.m4 \ - $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/introspection.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/linker.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/tp-compiler-flag.m4 \ - $(top_srcdir)/m4/tp-compiler-warnings.m4 \ - $(top_srcdir)/m4/tp-linker-flag.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -am__DEPENDENCIES_1 = -am__DEPENDENCIES_2 = \ - $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -libexample_cm_callable_la_DEPENDENCIES = $(am__DEPENDENCIES_2) -am_libexample_cm_callable_la_OBJECTS = conn.lo connection-manager.lo \ - media-channel.lo media-manager.lo media-stream.lo protocol.lo -libexample_cm_callable_la_OBJECTS = \ - $(am_libexample_cm_callable_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) -am__v_lt_0 = --silent -am__EXEEXT_1 = telepathy-example-cm-callable$(EXEEXT) -am__installdirs = "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(managerdir)" \ - "$(DESTDIR)$(servicedir)" -PROGRAMS = $(libexec_PROGRAMS) $(noinst_PROGRAMS) -am_telepathy_example_cm_callable_OBJECTS = main.$(OBJEXT) -telepathy_example_cm_callable_OBJECTS = \ - $(am_telepathy_example_cm_callable_OBJECTS) -telepathy_example_cm_callable_DEPENDENCIES = $(noinst_LTLIBRARIES) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -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_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -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_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libexample_cm_callable_la_SOURCES) \ - $(telepathy_example_cm_callable_SOURCES) -DIST_SOURCES = $(libexample_cm_callable_la_SOURCES) \ - $(telepathy_example_cm_callable_SOURCES) -am__dist_manager_DATA_DIST = example_callable.manager -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -DATA = $(dist_manager_DATA) $(service_DATA) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DBUS_CFLAGS = @DBUS_CFLAGS@ -DBUS_LIBS = @DBUS_LIBS@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENABLE_CODING_STYLE_CHECKS = @ENABLE_CODING_STYLE_CHECKS@ -ENABLE_DOC_CHECKS = @ENABLE_DOC_CHECKS@ -ERROR_CFLAGS = @ERROR_CFLAGS@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@ -GIO_UNIX_LIBS = @GIO_UNIX_LIBS@ -GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ -GLIB_LIBS = @GLIB_LIBS@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GREP = @GREP@ -GTKDOC_CHECK = @GTKDOC_CHECK@ -GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ -GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ -GTKDOC_MKPDF = @GTKDOC_MKPDF@ -GTKDOC_REBASE = @GTKDOC_REBASE@ -HAVE_VALA = @HAVE_VALA@ -HTML_DIR = @HTML_DIR@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_AGE = @LT_AGE@ -LT_CURRENT = @LT_CURRENT@ -LT_REVISION = @LT_REVISION@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TP_GLIB_CFLAGS = @TP_GLIB_CFLAGS@ -VALAC = @VALAC@ -VALAFLAGS = @VALAFLAGS@ -VAPIGEN = @VAPIGEN@ -VERSION = @VERSION@ -VERSION_SCRIPT_ARG = @VERSION_SCRIPT_ARG@ -XSLTPROC = @XSLTPROC@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -tpglibtestsdir = @tpglibtestsdir@ -EXAMPLES = telepathy-example-cm-callable -noinst_LTLIBRARIES = libexample-cm-callable.la -libexample_cm_callable_la_SOURCES = \ - conn.c \ - conn.h \ - connection-manager.c \ - connection-manager.h \ - media-channel.c \ - media-channel.h \ - media-manager.c \ - media-manager.h \ - media-stream.c \ - media-stream.h \ - protocol.c \ - protocol.h - -libexample_cm_callable_la_LIBADD = $(LDADD) -telepathy_example_cm_callable_SOURCES = \ - main.c - -telepathy_example_cm_callable_LDADD = \ - $(noinst_LTLIBRARIES) - -servicedir = ${datadir}/dbus-1/services -@INSTALL_EXAMPLES_TRUE@service_DATA = _gen/org.freedesktop.Telepathy.ConnectionManager.example_callable.service -@INSTALL_EXAMPLES_TRUE@managerdir = ${datadir}/telepathy/managers -@INSTALL_EXAMPLES_TRUE@dist_manager_DATA = example_callable.manager - -# In an external project you'd use $(TP_GLIB_LIBS) (obtained from -# pkg-config via autoconf) instead of the .la path, and put it last; we use -# a different format here because we're part of the telepathy-glib source tree. -LDADD = \ - $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ - $(GLIB_LIBS) \ - $(DBUS_LIBS) \ - $(NULL) - - -# Similarly, in an external project you'd put $(TP_GLIB_CFLAGS) at the end of -# AM_CPPFLAGS. -AM_CPPFLAGS = \ - -I${top_srcdir} -I${top_builddir} \ - $(GLIB_CFLAGS) \ - $(DBUS_CFLAGS) \ - $(NULL) - -AM_CFLAGS = $(ERROR_CFLAGS) -AM_LDFLAGS = \ - $(ERROR_LDFLAGS) \ - $(NULL) - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/cm/callable/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu examples/cm/callable/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_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 -libexample-cm-callable.la: $(libexample_cm_callable_la_OBJECTS) $(libexample_cm_callable_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libexample_cm_callable_la_OBJECTS) $(libexample_cm_callable_la_LIBADD) $(LIBS) -install-libexecPROGRAMS: $(libexec_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)" - @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-libexecPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(libexecdir)" && rm -f $$files - -clean-libexecPROGRAMS: - @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -telepathy-example-cm-callable$(EXEEXT): $(telepathy_example_cm_callable_OBJECTS) $(telepathy_example_cm_callable_DEPENDENCIES) - @rm -f telepathy-example-cm-callable$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(telepathy_example_cm_callable_OBJECTS) $(telepathy_example_cm_callable_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conn.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connection-manager.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/media-channel.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/media-manager.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/media-stream.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protocol.Plo@am__quote@ - -.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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-dist_managerDATA: $(dist_manager_DATA) - @$(NORMAL_INSTALL) - test -z "$(managerdir)" || $(MKDIR_P) "$(DESTDIR)$(managerdir)" - @list='$(dist_manager_DATA)'; test -n "$(managerdir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(managerdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(managerdir)" || exit $$?; \ - done - -uninstall-dist_managerDATA: - @$(NORMAL_UNINSTALL) - @list='$(dist_manager_DATA)'; test -n "$(managerdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(managerdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(managerdir)" && rm -f $$files -install-serviceDATA: $(service_DATA) - @$(NORMAL_INSTALL) - test -z "$(servicedir)" || $(MKDIR_P) "$(DESTDIR)$(servicedir)" - @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(servicedir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(servicedir)" || exit $$?; \ - done - -uninstall-serviceDATA: - @$(NORMAL_UNINSTALL) - @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(servicedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(servicedir)" && rm -f $$files - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) -installdirs: - for dir in "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(managerdir)" "$(DESTDIR)$(servicedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-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 -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ - clean-local clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-dist_managerDATA install-serviceDATA - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libexecPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-dist_managerDATA uninstall-libexecPROGRAMS \ - uninstall-serviceDATA - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libexecPROGRAMS clean-libtool clean-local \ - clean-noinstLTLIBRARIES clean-noinstPROGRAMS 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-dist_managerDATA install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-libexecPROGRAMS \ - install-man install-pdf install-pdf-am install-ps \ - install-ps-am install-serviceDATA install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-dist_managerDATA \ - uninstall-libexecPROGRAMS uninstall-serviceDATA - -@INSTALL_EXAMPLES_TRUE@$(service_DATA): %: Makefile -@INSTALL_EXAMPLES_TRUE@ $(mkdir_p) _gen -@INSTALL_EXAMPLES_TRUE@ { echo "[D-BUS Service]" && \ -@INSTALL_EXAMPLES_TRUE@ echo "Name=org.freedesktop.Telepathy.ConnectionManager.example_callable" && \ -@INSTALL_EXAMPLES_TRUE@ echo "Exec=${libexecdir}/telepathy-example-cm-callable"; } > $@ - -clean-local: - rm -rf _gen - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru telepathy-glib-0.17.4/examples/cm/callable/media-channel.c telepathy-glib-0.17.5/examples/cm/callable/media-channel.c --- telepathy-glib-0.17.4/examples/cm/callable/media-channel.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/media-channel.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1242 +0,0 @@ -/* - * media-channel.c - an example 1-1 streamed media call. - * - * For simplicity, this channel emulates a device with its own - * audio/video user interface, like a video-equipped form of the phones - * manipulated by telepathy-snom or gnome-phone-manager. - * - * As a result, this channel does not have the MediaSignalling interface, and - * clients should not attempt to do their own streaming using - * telepathy-farsight, telepathy-stream-engine or maemo-stream-engine. - * - * In practice, nearly all connection managers also have the MediaSignalling - * interface on their streamed media channels. Usage for those CMs is the - * same, except that whichever client is the primary handler for the channel - * should also hand the channel over to telepathy-farsight or - * telepathy-stream-engine to implement the actual streaming. - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "media-channel.h" - -#include "media-stream.h" - -#include - -#include -#include -#include -#include -#include -#include -#include - -static void media_iface_init (gpointer iface, gpointer data); -static void hold_iface_init (gpointer iface, gpointer data); -static void dtmf_iface_init (gpointer iface, gpointer data); - -G_DEFINE_TYPE_WITH_CODE (ExampleCallableMediaChannel, - example_callable_media_channel, - TP_TYPE_BASE_CHANNEL, - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_STREAMED_MEDIA, - media_iface_init); - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_GROUP, - tp_group_mixin_iface_init); - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_HOLD, - hold_iface_init); - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_DTMF, - dtmf_iface_init);) - -enum -{ - PROP_SIMULATION_DELAY = 1, - PROP_INITIAL_AUDIO, - PROP_INITIAL_VIDEO, - N_PROPS -}; - -enum -{ - SIGNAL_CALL_TERMINATED, - N_SIGNALS -}; - -typedef enum { - PROGRESS_NONE, - PROGRESS_CALLING, - PROGRESS_ACTIVE, - PROGRESS_ENDED -} ExampleCallableCallProgress; - -static guint signals[N_SIGNALS] = { 0 }; - -struct _ExampleCallableMediaChannelPrivate -{ - ExampleCallableCallProgress progress; - - guint simulation_delay; - - guint next_stream_id; - - GHashTable *streams; - - guint hold_state; - guint hold_state_reason; - - gboolean initial_audio; - gboolean initial_video; - gboolean disposed; -}; - -static const char * example_callable_media_channel_interfaces[] = { - TP_IFACE_CHANNEL_INTERFACE_GROUP, - TP_IFACE_CHANNEL_INTERFACE_HOLD, - TP_IFACE_CHANNEL_INTERFACE_DTMF, - NULL -}; - -static void -example_callable_media_channel_init (ExampleCallableMediaChannel *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, - ExampleCallableMediaChannelPrivate); - - self->priv->next_stream_id = 1; - self->priv->streams = g_hash_table_new_full (g_direct_hash, g_direct_equal, - NULL, g_object_unref); - - self->priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD; - self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_NONE; -} - -static ExampleCallableMediaStream *example_callable_media_channel_add_stream ( - ExampleCallableMediaChannel *self, TpMediaStreamType media_type, - gboolean locally_requested); - -static void -constructed (GObject *object) -{ - void (*chain_up) (GObject *) = - ((GObjectClass *) example_callable_media_channel_parent_class)->constructed; - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); - TpBaseChannel *base_chan = TP_BASE_CHANNEL (self); - TpBaseConnection *connection = tp_base_channel_get_connection (base_chan); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles - (connection, TP_HANDLE_TYPE_CONTACT); - TpIntset *members; - TpIntset *local_pending; - gboolean requested; - - if (chain_up != NULL) - chain_up (object); - - tp_base_channel_register (base_chan); - - tp_group_mixin_init (object, - G_STRUCT_OFFSET (ExampleCallableMediaChannel, group), - contact_repo, - connection->self_handle); - - /* Initially, the channel contains the initiator as a member; they are also - * the actor for the change that adds any initial members. */ - - members = tp_intset_new_containing (tp_base_channel_get_initiator (base_chan)); - requested = tp_base_channel_is_requested (base_chan); - - if (requested) - { - /* Nobody is locally pending. The remote peer will turn up in - * remote-pending state when we actually contact them, which is done - * in RequestStreams */ - self->priv->progress = PROGRESS_NONE; - local_pending = NULL; - } - else - { - /* This is an incoming call, so the self-handle is locally - * pending, to indicate that we need to answer. */ - self->priv->progress = PROGRESS_CALLING; - local_pending = tp_intset_new_containing (connection->self_handle); - } - - tp_group_mixin_change_members (object, "", - members /* added */, - NULL /* nobody removed */, - local_pending, /* added to local-pending */ - NULL /* nobody added to remote-pending */, - tp_base_channel_get_initiator (base_chan) /* actor */, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); - tp_intset_destroy (members); - - if (local_pending != NULL) - tp_intset_destroy (local_pending); - - /* We don't need to allow adding or removing members to this Group in ways - * that need flags set, so the only flag we set is to say we support the - * Properties interface to the Group. - * - * It doesn't make sense to add anyone to the Group, since we already know - * who we're going to call (or were called by). The only call to AddMembers - * we need to support is to move ourselves from local-pending to member in - * the incoming call case, and that's always allowed anyway. - * - * (Connection managers that support the various backwards-compatible - * ways to make an outgoing StreamedMedia channel have to support adding the - * peer to remote-pending, but that has no actual effect other than to - * obscure what's going on; in this one, there's no need to support that - * usage.) - * - * Similarly, it doesn't make sense to remove anyone from this Group apart - * from ourselves (to hang up), and removing the SelfHandle is always - * allowed anyway. - */ - tp_group_mixin_change_flags (object, TP_CHANNEL_GROUP_FLAG_PROPERTIES, 0); - - /* Future versions of telepathy-spec will allow a channel request to - * say "initially include an audio stream" and/or "initially include a video - * stream", which would be represented like this; we don't support this - * usage yet, though, so ExampleCallableMediaManager will never invoke - * our constructor in this way. */ - g_assert (!(requested && self->priv->initial_audio)); - g_assert (!(requested && self->priv->initial_video)); - - if (!requested) - { - /* the caller has almost certainly asked us for some streams - there's - * not much point in having a call otherwise */ - - if (self->priv->initial_audio) - { - g_message ("Channel initially has an audio stream"); - example_callable_media_channel_add_stream (self, - TP_MEDIA_STREAM_TYPE_AUDIO, FALSE); - } - - if (self->priv->initial_video) - { - g_message ("Channel initially has a video stream"); - example_callable_media_channel_add_stream (self, - TP_MEDIA_STREAM_TYPE_VIDEO, FALSE); - } - } -} - -static void -get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); - - switch (property_id) - { - case PROP_SIMULATION_DELAY: - g_value_set_uint (value, self->priv->simulation_delay); - break; - - case PROP_INITIAL_AUDIO: - g_value_set_boolean (value, self->priv->initial_audio); - break; - - case PROP_INITIAL_VIDEO: - g_value_set_boolean (value, self->priv->initial_video); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); - - switch (property_id) - { - case PROP_SIMULATION_DELAY: - self->priv->simulation_delay = g_value_get_uint (value); - break; - - case PROP_INITIAL_AUDIO: - self->priv->initial_audio = g_value_get_boolean (value); - break; - - case PROP_INITIAL_VIDEO: - self->priv->initial_video = g_value_get_boolean (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -example_callable_media_channel_close (ExampleCallableMediaChannel *self, - TpHandle actor, - TpChannelGroupChangeReason reason) -{ - if (self->priv->progress != PROGRESS_ENDED) - { - TpIntset *everyone; - - self->priv->progress = PROGRESS_ENDED; - - if (actor == self->group.self_handle) - { - const gchar *send_reason; - - /* In a real protocol these would be some sort of real protocol - * construct, like an XMPP error stanza or a SIP error code */ - switch (reason) - { - case TP_CHANNEL_GROUP_CHANGE_REASON_BUSY: - send_reason = ""; - break; - - case TP_CHANNEL_GROUP_CHANGE_REASON_NO_ANSWER: - send_reason = ""; - break; - - default: - send_reason = ""; - } - - g_message ("SIGNALLING: send: Terminating call: %s", send_reason); - } - - everyone = tp_intset_new_containing (tp_base_channel_get_target_handle - (TP_BASE_CHANNEL (self))); - tp_intset_add (everyone, self->group.self_handle); - tp_group_mixin_change_members ((GObject *) self, "", - NULL /* nobody added */, - everyone /* removed */, - NULL /* nobody locally pending */, - NULL /* nobody remotely pending */, - actor, - reason); - tp_intset_destroy (everyone); - - g_signal_emit (self, signals[SIGNAL_CALL_TERMINATED], 0); - tp_base_channel_destroyed (TP_BASE_CHANNEL (self)); - } -} - -static void -dispose (GObject *object) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); - - if (self->priv->disposed) - return; - - self->priv->disposed = TRUE; - - g_hash_table_unref (self->priv->streams); - self->priv->streams = NULL; - - example_callable_media_channel_close (self, self->group.self_handle, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); - - ((GObjectClass *) example_callable_media_channel_parent_class)->dispose (object); -} - -static void -finalize (GObject *object) -{ - tp_group_mixin_finalize (object); - - ((GObjectClass *) example_callable_media_channel_parent_class)->finalize (object); -} - -static gboolean -add_member (GObject *object, - TpHandle member, - const gchar *message, - GError **error) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles - (tp_base_channel_get_connection (TP_BASE_CHANNEL (self)), - TP_HANDLE_TYPE_CONTACT); - - /* In connection managers that supported the RequestChannel method for - * streamed media channels, it would be necessary to support adding the - * called contact to the members of an outgoing call. However, in this - * legacy-free example, we don't support that usage, so the only use for - * AddMembers is to accept an incoming call. - */ - - if (member == self->group.self_handle && - tp_handle_set_is_member (self->group.local_pending, member)) - { - /* We're in local-pending, move to members to accept. */ - TpIntset *set = tp_intset_new_containing (member); - GHashTableIter iter; - gpointer v; - - g_assert (self->priv->progress == PROGRESS_CALLING); - - g_message ("SIGNALLING: send: Accepting incoming call from %s", - tp_handle_inspect (contact_repo, tp_base_channel_get_target_handle - (TP_BASE_CHANNEL (self)))); - - self->priv->progress = PROGRESS_ACTIVE; - - tp_group_mixin_change_members (object, "", - set /* added */, - NULL /* nobody removed */, - NULL /* nobody added to local pending */, - NULL /* nobody added to remote pending */, - member /* actor */, TP_CHANNEL_GROUP_CHANGE_REASON_NONE); - - tp_intset_destroy (set); - - g_hash_table_iter_init (&iter, self->priv->streams); - - while (g_hash_table_iter_next (&iter, NULL, &v)) - { - /* we accept the proposed stream direction... */ - example_callable_media_stream_accept_proposed_direction (v); - /* ... and the stream tries to connect */ - example_callable_media_stream_connect (v); - } - - return TRUE; - } - - /* Otherwise it's a meaningless request, so reject it. */ - g_set_error (error, TP_ERRORS, TP_ERROR_NOT_AVAILABLE, - "Cannot add handle %u to channel", member); - return FALSE; -} - -static gboolean -remove_member_with_reason (GObject *object, - TpHandle member, - const gchar *message, - guint reason, - GError **error) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (object); - - /* The TpGroupMixin won't call this unless removing the member is allowed - * by the group flags, which in this case means it must be our own handle - * (because the other user never appears in local-pending). - */ - - g_assert (member == self->group.self_handle); - - example_callable_media_channel_close (self, self->group.self_handle, reason); - return TRUE; -} - -static void -channel_close (TpBaseChannel *channel) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (channel); - - example_callable_media_channel_close (self, self->group.self_handle, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); -} - -static void -example_callable_media_channel_class_init (ExampleCallableMediaChannelClass *klass) -{ - GObjectClass *object_class = (GObjectClass *) klass; - GParamSpec *param_spec; - TpBaseChannelClass *base_class = TP_BASE_CHANNEL_CLASS (klass); - - g_type_class_add_private (klass, - sizeof (ExampleCallableMediaChannelPrivate)); - - object_class->constructed = constructed; - object_class->set_property = set_property; - object_class->get_property = get_property; - object_class->dispose = dispose; - object_class->finalize = finalize; - - base_class->channel_type = TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA; - base_class->target_handle_type = TP_HANDLE_TYPE_CONTACT; - base_class->interfaces = example_callable_media_channel_interfaces; - - base_class->close = channel_close; - - param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", - "Delay between simulated network events", - 0, G_MAXUINT32, 1000, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, - param_spec); - - param_spec = g_param_spec_boolean ("initial-audio", "Initial audio?", - "True if this channel had an audio stream when first announced", - FALSE, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_INITIAL_AUDIO, - param_spec); - - param_spec = g_param_spec_boolean ("initial-video", "Initial video?", - "True if this channel had a video stream when first announced", - FALSE, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_INITIAL_VIDEO, - param_spec); - - signals[SIGNAL_CALL_TERMINATED] = g_signal_new ("call-terminated", - G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - tp_group_mixin_class_init (object_class, - G_STRUCT_OFFSET (ExampleCallableMediaChannelClass, group_class), - add_member, - NULL); - tp_group_mixin_class_allow_self_removal (object_class); - tp_group_mixin_class_set_remove_with_reason_func (object_class, - remove_member_with_reason); - tp_group_mixin_init_dbus_properties (object_class); -} - -static void -media_list_streams (TpSvcChannelTypeStreamedMedia *iface, - DBusGMethodInvocation *context) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); - GPtrArray *array = g_ptr_array_sized_new (g_hash_table_size ( - self->priv->streams)); - GHashTableIter iter; - gpointer v; - - g_hash_table_iter_init (&iter, self->priv->streams); - - while (g_hash_table_iter_next (&iter, NULL, &v)) - { - ExampleCallableMediaStream *stream = v; - GValueArray *va; - - g_object_get (stream, - "stream-info", &va, - NULL); - - g_ptr_array_add (array, va); - } - - tp_svc_channel_type_streamed_media_return_from_list_streams (context, - array); - g_ptr_array_foreach (array, (GFunc) g_value_array_free, NULL); - g_ptr_array_unref (array); -} - -static void -media_remove_streams (TpSvcChannelTypeStreamedMedia *iface, - const GArray *stream_ids, - DBusGMethodInvocation *context) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); - guint i; - - for (i = 0; i < stream_ids->len; i++) - { - guint id = g_array_index (stream_ids, guint, i); - - if (g_hash_table_lookup (self->priv->streams, - GUINT_TO_POINTER (id)) == NULL) - { - GError *error = g_error_new (TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "No stream with ID %u in this channel", id); - - dbus_g_method_return_error (context, error); - g_error_free (error); - return; - } - } - - for (i = 0; i < stream_ids->len; i++) - { - guint id = g_array_index (stream_ids, guint, i); - - example_callable_media_stream_close ( - g_hash_table_lookup (self->priv->streams, GUINT_TO_POINTER (id))); - } - - tp_svc_channel_type_streamed_media_return_from_remove_streams (context); -} - -static void -media_request_stream_direction (TpSvcChannelTypeStreamedMedia *iface, - guint stream_id, - guint stream_direction, - DBusGMethodInvocation *context) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); - ExampleCallableMediaStream *stream = g_hash_table_lookup ( - self->priv->streams, GUINT_TO_POINTER (stream_id)); - GError *error = NULL; - - if (stream == NULL) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "No stream with ID %u in this channel", stream_id); - goto error; - } - - if (stream_direction > TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "Stream direction %u is not valid", stream_direction); - goto error; - } - - /* In some protocols, streams cannot be neither sending nor receiving, so - * if a stream is set to TP_MEDIA_STREAM_DIRECTION_NONE, this is equivalent - * to removing it with RemoveStreams. (This is true in XMPP, for instance.) - * - * If this was the case, there would be code like this here: - * - * if (stream_direction == TP_MEDIA_STREAM_DIRECTION_NONE) - * { - * example_callable_media_stream_close (stream); - * tp_svc_channel_type_streamed_media_return_from_request_stream_direction ( - * context); - * return; - * } - * - * However, for this example we'll emulate a protocol where streams can be - * directionless. - */ - - if (!example_callable_media_stream_change_direction (stream, - stream_direction, &error)) - goto error; - - tp_svc_channel_type_streamed_media_return_from_request_stream_direction ( - context); - return; - -error: - dbus_g_method_return_error (context, error); - g_error_free (error); -} - -static void -stream_removed_cb (ExampleCallableMediaStream *stream, - ExampleCallableMediaChannel *self) -{ - guint id; - - g_object_get (stream, - "id", &id, - NULL); - - g_signal_handlers_disconnect_matched (stream, G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, self); - g_hash_table_remove (self->priv->streams, GUINT_TO_POINTER (id)); - tp_svc_channel_type_streamed_media_emit_stream_removed (self, id); - - if (g_hash_table_size (self->priv->streams) == 0) - { - /* no streams left, so the call terminates */ - example_callable_media_channel_close (self, 0, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); - } -} - -static void -stream_direction_changed_cb (ExampleCallableMediaStream *stream, - ExampleCallableMediaChannel *self) -{ - guint id, direction, pending; - - g_object_get (stream, - "id", &id, - "direction", &direction, - "pending-send", &pending, - NULL); - - tp_svc_channel_type_streamed_media_emit_stream_direction_changed (self, id, - direction, pending); -} - -static void -stream_state_changed_cb (ExampleCallableMediaStream *stream, - GParamSpec *spec G_GNUC_UNUSED, - ExampleCallableMediaChannel *self) -{ - guint id, state; - - g_object_get (stream, - "id", &id, - "state", &state, - NULL); - - tp_svc_channel_type_streamed_media_emit_stream_state_changed (self, id, - state); -} - -static gboolean -simulate_contact_ended_cb (gpointer p) -{ - ExampleCallableMediaChannel *self = p; - - /* if the call has been cancelled while we were waiting for the - * contact to do so, do nothing! */ - if (self->priv->progress == PROGRESS_ENDED) - return FALSE; - - g_message ("SIGNALLING: receive: call terminated: "); - - example_callable_media_channel_close (self, - tp_base_channel_get_target_handle (TP_BASE_CHANNEL (self)), - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); - - return FALSE; -} - -static gboolean -simulate_contact_answered_cb (gpointer p) -{ - ExampleCallableMediaChannel *self = p; - TpIntset *peer_set; - GHashTableIter iter; - gpointer v; - TpHandleRepoIface *contact_repo; - const gchar *peer; - TpHandle target; - - /* if the call has been cancelled while we were waiting for the - * contact to answer, do nothing */ - if (self->priv->progress == PROGRESS_ENDED) - return FALSE; - - /* otherwise, we're waiting for a response from the contact, which now - * arrives */ - g_assert (self->priv->progress == PROGRESS_CALLING); - - g_message ("SIGNALLING: receive: contact answered our call"); - - self->priv->progress = PROGRESS_ACTIVE; - - target = tp_base_channel_get_target_handle (TP_BASE_CHANNEL (self)); - peer_set = tp_intset_new_containing (target); - tp_group_mixin_change_members ((GObject *) self, "", - peer_set /* added */, - NULL /* nobody removed */, - NULL /* nobody added to local-pending */, - NULL /* nobody added to remote-pending */, - target /* actor */, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); - tp_intset_destroy (peer_set); - - g_hash_table_iter_init (&iter, self->priv->streams); - - while (g_hash_table_iter_next (&iter, NULL, &v)) - { - /* remote contact accepts our proposed stream direction... */ - example_callable_media_stream_simulate_contact_agreed_to_send (v); - /* ... and the stream tries to connect */ - example_callable_media_stream_connect (v); - } - - contact_repo = tp_base_connection_get_handles - (tp_base_channel_get_connection (TP_BASE_CHANNEL (self)), - TP_HANDLE_TYPE_CONTACT); - peer = tp_handle_inspect (contact_repo, target); - - /* If the contact's ID contains the magic string "(terminate)", simulate - * them hanging up after a moment. */ - if (strstr (peer, "(terminate)") != NULL) - { - g_timeout_add_full (G_PRIORITY_DEFAULT, - self->priv->simulation_delay, - simulate_contact_ended_cb, g_object_ref (self), - g_object_unref); - } - - return FALSE; -} - -static gboolean -simulate_contact_busy_cb (gpointer p) -{ - ExampleCallableMediaChannel *self = p; - - /* if the call has been cancelled while we were waiting for the - * contact to answer, do nothing */ - if (self->priv->progress == PROGRESS_ENDED) - return FALSE; - - /* otherwise, we're waiting for a response from the contact, which now - * arrives */ - g_assert (self->priv->progress == PROGRESS_CALLING); - - g_message ("SIGNALLING: receive: call terminated: "); - - example_callable_media_channel_close (self, - tp_base_channel_get_target_handle (TP_BASE_CHANNEL (self)), - TP_CHANNEL_GROUP_CHANGE_REASON_BUSY); - - return FALSE; -} - -static ExampleCallableMediaStream * -example_callable_media_channel_add_stream (ExampleCallableMediaChannel *self, - TpMediaStreamType media_type, - gboolean locally_requested) -{ - ExampleCallableMediaStream *stream; - guint id = self->priv->next_stream_id++; - guint state, direction, pending_send; - TpHandle target; - - if (locally_requested) - { - g_message ("SIGNALLING: send: new %s stream", - media_type == TP_MEDIA_STREAM_TYPE_AUDIO ? "audio" : "video"); - } - - target = tp_base_channel_get_target_handle (TP_BASE_CHANNEL (self)); - stream = g_object_new (EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM, - "channel", self, - "id", id, - "handle", target, - "type", media_type, - "locally-requested", locally_requested, - NULL); - - g_hash_table_insert (self->priv->streams, GUINT_TO_POINTER (id), stream); - - tp_svc_channel_type_streamed_media_emit_stream_added (self, id, - target, media_type); - - g_object_get (stream, - "state", &state, - "direction", &direction, - "pending-send", &pending_send, - NULL); - - /* this is the "implicit" initial state mandated by telepathy-spec */ - if (state != TP_MEDIA_STREAM_STATE_DISCONNECTED) - { - tp_svc_channel_type_streamed_media_emit_stream_state_changed (self, id, - state); - } - - /* this is the "implicit" initial direction mandated by telepathy-spec */ - if (direction != TP_MEDIA_STREAM_DIRECTION_RECEIVE || - pending_send != TP_MEDIA_STREAM_PENDING_LOCAL_SEND) - { - tp_svc_channel_type_streamed_media_emit_stream_direction_changed (self, - id, direction, pending_send); - } - - g_signal_connect (stream, "removed", G_CALLBACK (stream_removed_cb), - self); - g_signal_connect (stream, "notify::state", - G_CALLBACK (stream_state_changed_cb), self); - g_signal_connect (stream, "direction-changed", - G_CALLBACK (stream_direction_changed_cb), self); - - if (self->priv->progress == PROGRESS_ACTIVE) - { - example_callable_media_stream_connect (stream); - } - - return stream; -} - -static void -media_request_streams (TpSvcChannelTypeStreamedMedia *iface, - guint contact_handle, - const GArray *media_types, - DBusGMethodInvocation *context) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles - (tp_base_channel_get_connection (TP_BASE_CHANNEL (self)), - TP_HANDLE_TYPE_CONTACT); - GPtrArray *array; - guint i; - GError *error = NULL; - TpHandle target; - - if (!tp_handle_is_valid (contact_repo, contact_handle, &error)) - goto error; - - target = tp_base_channel_get_target_handle (TP_BASE_CHANNEL (self)); - if (contact_handle != target) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "This channel is for handle #%u, we can't make a stream to #%u", - target, contact_handle); - goto error; - } - - if (self->priv->progress == PROGRESS_ENDED) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_AVAILABLE, - "Call has terminated"); - goto error; - } - - for (i = 0; i < media_types->len; i++) - { - guint media_type = g_array_index (media_types, guint, i); - - switch (media_type) - { - case TP_MEDIA_STREAM_TYPE_AUDIO: - case TP_MEDIA_STREAM_TYPE_VIDEO: - break; - default: - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "%u is not a valid Media_Stream_Type", media_type); - goto error; - } - } - - array = g_ptr_array_sized_new (media_types->len); - - for (i = 0; i < media_types->len; i++) - { - guint media_type = g_array_index (media_types, guint, i); - ExampleCallableMediaStream *stream; - GValueArray *info; - - if (self->priv->progress < PROGRESS_CALLING) - { - TpIntset *peer_set = tp_intset_new_containing (target); - const gchar *peer; - - g_message ("SIGNALLING: send: new streamed media call"); - self->priv->progress = PROGRESS_CALLING; - - tp_group_mixin_change_members ((GObject *) self, "", - NULL /* nobody added */, - NULL /* nobody removed */, - NULL /* nobody added to local-pending */, - peer_set /* added to remote-pending */, - self->group.self_handle /* actor */, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); - - tp_intset_destroy (peer_set); - - /* In this example there is no real contact, so just simulate them - * answering after a short time - unless the contact's name - * contains "(no answer)" or "(busy)" */ - - peer = tp_handle_inspect (contact_repo, target); - - if (strstr (peer, "(busy)") != NULL) - { - g_timeout_add_full (G_PRIORITY_DEFAULT, - self->priv->simulation_delay, - simulate_contact_busy_cb, g_object_ref (self), - g_object_unref); - } - else if (strstr (peer, "(no answer)") != NULL) - { - /* do nothing - the call just rings forever */ - } - else - { - g_timeout_add_full (G_PRIORITY_DEFAULT, - self->priv->simulation_delay, - simulate_contact_answered_cb, g_object_ref (self), - g_object_unref); - } - } - - stream = example_callable_media_channel_add_stream (self, media_type, - TRUE); - - g_object_get (stream, - "stream-info", &info, - NULL); - - g_ptr_array_add (array, info); - } - - tp_svc_channel_type_streamed_media_return_from_request_streams (context, - array); - g_boxed_free (TP_ARRAY_TYPE_MEDIA_STREAM_INFO_LIST, array); - - return; - -error: - dbus_g_method_return_error (context, error); - g_error_free (error); -} - -static void -media_iface_init (gpointer iface, - gpointer data) -{ - TpSvcChannelTypeStreamedMediaClass *klass = iface; - -#define IMPLEMENT(x) \ - tp_svc_channel_type_streamed_media_implement_##x (klass, media_##x) - IMPLEMENT (list_streams); - IMPLEMENT (remove_streams); - IMPLEMENT (request_stream_direction); - IMPLEMENT (request_streams); -#undef IMPLEMENT -} - -static gboolean -simulate_hold (gpointer p) -{ - ExampleCallableMediaChannel *self = p; - - self->priv->hold_state = TP_LOCAL_HOLD_STATE_HELD; - g_message ("SIGNALLING: hold state changed to held"); - tp_svc_channel_interface_hold_emit_hold_state_changed (self, - self->priv->hold_state, self->priv->hold_state_reason); - return FALSE; -} - -static gboolean -simulate_unhold (gpointer p) -{ - ExampleCallableMediaChannel *self = p; - - self->priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD; - g_message ("SIGNALLING: hold state changed to unheld"); - tp_svc_channel_interface_hold_emit_hold_state_changed (self, - self->priv->hold_state, self->priv->hold_state_reason); - return FALSE; -} - -static gboolean -simulate_inability_to_unhold (gpointer p) -{ - ExampleCallableMediaChannel *self = p; - - self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_HOLD; - g_message ("SIGNALLING: unable to unhold - hold state changed to " - "pending hold"); - tp_svc_channel_interface_hold_emit_hold_state_changed (self, - self->priv->hold_state, self->priv->hold_state_reason); - /* hold again */ - g_timeout_add_full (G_PRIORITY_DEFAULT, - self->priv->simulation_delay, - simulate_hold, g_object_ref (self), - g_object_unref); - return FALSE; -} - -static void -hold_get_hold_state (TpSvcChannelInterfaceHold *iface, - DBusGMethodInvocation *context) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); - - tp_svc_channel_interface_hold_return_from_get_hold_state (context, - self->priv->hold_state, self->priv->hold_state_reason); -} - -static void -hold_request_hold (TpSvcChannelInterfaceHold *iface, - gboolean hold, - DBusGMethodInvocation *context) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles - (tp_base_channel_get_connection (TP_BASE_CHANNEL (self)), - TP_HANDLE_TYPE_CONTACT); - GError *error = NULL; - const gchar *peer; - GSourceFunc callback; - TpHandle target; - - if ((hold && self->priv->hold_state == TP_LOCAL_HOLD_STATE_HELD) || - (!hold && self->priv->hold_state == TP_LOCAL_HOLD_STATE_UNHELD)) - { - tp_svc_channel_interface_hold_return_from_request_hold (context); - return; - } - - target = tp_base_channel_get_target_handle (TP_BASE_CHANNEL (self)); - peer = tp_handle_inspect (contact_repo, target); - - if (!hold && strstr (peer, "(no unhold)") != NULL) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "unable to unhold"); - goto error; - } - - self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_REQUESTED; - - if (hold) - { - self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_HOLD; - callback = simulate_hold; - } - else - { - self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_UNHOLD; - - peer = tp_handle_inspect (contact_repo, target); - - if (strstr (peer, "(inability to unhold)") != NULL) - { - callback = simulate_inability_to_unhold; - } - else - { - callback = simulate_unhold; - } - } - - g_message ("SIGNALLING: hold state changed to pending %s", - (hold ? "hold" : "unhold")); - tp_svc_channel_interface_hold_emit_hold_state_changed (iface, - self->priv->hold_state, self->priv->hold_state_reason); - - g_timeout_add_full (G_PRIORITY_DEFAULT, - self->priv->simulation_delay, - callback, g_object_ref (self), - g_object_unref); - - tp_svc_channel_interface_hold_return_from_request_hold (context); - return; - -error: - dbus_g_method_return_error (context, error); - g_error_free (error); -} - - -void -hold_iface_init (gpointer iface, - gpointer data) -{ - TpSvcChannelInterfaceHoldClass *klass = iface; - -#define IMPLEMENT(x) \ - tp_svc_channel_interface_hold_implement_##x (klass, hold_##x) - IMPLEMENT (get_hold_state); - IMPLEMENT (request_hold); -#undef IMPLEMENT -} - -static void -dtmf_start_tone (TpSvcChannelInterfaceDTMF *iface, - guint stream_id, - guchar event, - DBusGMethodInvocation *context) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); - ExampleCallableMediaStream *stream = g_hash_table_lookup (self->priv->streams, - GUINT_TO_POINTER (stream_id)); - GError *error = NULL; - guint media_type; - - if (stream == NULL) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "No stream with ID %u in this channel", stream_id); - goto error; - } - - g_object_get (G_OBJECT (stream), "type", &media_type, NULL); - if (media_type != TP_MEDIA_STREAM_TYPE_AUDIO) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "DTMF is only supported by audio streams"); - goto error; - } - - tp_svc_channel_interface_dtmf_return_from_start_tone (context); - - return; - -error: - dbus_g_method_return_error (context, error); - g_error_free (error); -} - -static void -dtmf_stop_tone (TpSvcChannelInterfaceDTMF *iface, - guint stream_id, - DBusGMethodInvocation *context) -{ - ExampleCallableMediaChannel *self = EXAMPLE_CALLABLE_MEDIA_CHANNEL (iface); - ExampleCallableMediaStream *stream = g_hash_table_lookup (self->priv->streams, - GUINT_TO_POINTER (stream_id)); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles - (tp_base_channel_get_connection (TP_BASE_CHANNEL (self)), - TP_HANDLE_TYPE_CONTACT); - GError *error = NULL; - const gchar *peer; - guint media_type; - - if (stream == NULL) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "No stream with ID %u in this channel", stream_id); - goto error; - } - - g_object_get (G_OBJECT (stream), "type", &media_type, NULL); - if (media_type != TP_MEDIA_STREAM_TYPE_AUDIO) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "DTMF is only supported by audio streams"); - goto error; - } - - peer = tp_handle_inspect (contact_repo, - tp_base_channel_get_target_handle (TP_BASE_CHANNEL (self))); - if (strstr (peer, "(no continuous tone)") != NULL) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_AVAILABLE, - "Continuous tones are not supported by this stream"); - goto error; - } - - tp_svc_channel_interface_dtmf_return_from_stop_tone (context); - - return; - -error: - dbus_g_method_return_error (context, error); - g_error_free (error); -} - -static void -dtmf_iface_init (gpointer iface, - gpointer data) -{ - TpSvcChannelInterfaceDTMFClass *klass = iface; - -#define IMPLEMENT(x) \ - tp_svc_channel_interface_dtmf_implement_##x (klass, dtmf_##x) - IMPLEMENT (start_tone); - IMPLEMENT (stop_tone); -#undef IMPLEMENT -} diff -Nru telepathy-glib-0.17.4/examples/cm/callable/media-channel.h telepathy-glib-0.17.5/examples/cm/callable/media-channel.h --- telepathy-glib-0.17.4/examples/cm/callable/media-channel.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/media-channel.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* - * media-channel.h - header for an example channel - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef __EXAMPLE_CALLABLE_MEDIA_CHANNEL_H__ -#define __EXAMPLE_CALLABLE_MEDIA_CHANNEL_H__ - -#include -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallableMediaChannel ExampleCallableMediaChannel; -typedef struct _ExampleCallableMediaChannelPrivate - ExampleCallableMediaChannelPrivate; - -typedef struct _ExampleCallableMediaChannelClass - ExampleCallableMediaChannelClass; -typedef struct _ExampleCallableMediaChannelClassPrivate - ExampleCallableMediaChannelClassPrivate; - -GType example_callable_media_channel_get_type (void); - -#define EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL \ - (example_callable_media_channel_get_type ()) -#define EXAMPLE_CALLABLE_MEDIA_CHANNEL(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, \ - ExampleCallableMediaChannel)) -#define EXAMPLE_CALLABLE_MEDIA_CHANNEL_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, \ - ExampleCallableMediaChannelClass)) -#define EXAMPLE_IS_CALLABLE_MEDIA_CHANNEL(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL)) -#define EXAMPLE_IS_CALLABLE_MEDIA_CHANNEL_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL)) -#define EXAMPLE_CALLABLE_MEDIA_CHANNEL_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, \ - ExampleCallableMediaChannelClass)) - -struct _ExampleCallableMediaChannelClass { - TpBaseChannelClass parent_class; - TpGroupMixinClass group_class; - - ExampleCallableMediaChannelClassPrivate *priv; -}; - -struct _ExampleCallableMediaChannel { - TpBaseChannel parent; - TpGroupMixin group; - - ExampleCallableMediaChannelPrivate *priv; -}; - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/cm/callable/media-manager.c telepathy-glib-0.17.5/examples/cm/callable/media-manager.c --- telepathy-glib-0.17.4/examples/cm/callable/media-manager.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/media-manager.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,495 +0,0 @@ -/* - * media-manager.c - an example channel manager for StreamedMedia calls. - * This channel manager emulates a protocol like XMPP Jingle, where you can - * make several simultaneous calls to the same or different contacts. - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "media-manager.h" - -#include - -#include -#include -#include -#include -#include - -#include "media-channel.h" - -static void channel_manager_iface_init (gpointer, gpointer); - -G_DEFINE_TYPE_WITH_CODE (ExampleCallableMediaManager, - example_callable_media_manager, - G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_MANAGER, - channel_manager_iface_init)) - -/* type definition stuff */ - -enum -{ - PROP_CONNECTION = 1, - PROP_SIMULATION_DELAY, - N_PROPS -}; - -struct _ExampleCallableMediaManagerPrivate -{ - TpBaseConnection *conn; - guint simulation_delay; - - /* Map from reffed ExampleCallableMediaChannel to the same pointer; used as a - * set. - */ - GHashTable *channels; - - /* Next channel will be ("MediaChannel%u", next_channel_index) */ - guint next_channel_index; - - gulong status_changed_id; - gulong available_id; -}; - -static void -example_callable_media_manager_init (ExampleCallableMediaManager *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER, - ExampleCallableMediaManagerPrivate); - - self->priv->conn = NULL; - self->priv->channels = g_hash_table_new_full (NULL, NULL, g_object_unref, - NULL); - self->priv->status_changed_id = 0; - self->priv->available_id = 0; -} - -static void -example_callable_media_manager_close_all (ExampleCallableMediaManager *self) -{ - if (self->priv->channels != NULL) - { - GHashTable *tmp = self->priv->channels; - - self->priv->channels = NULL; - - g_hash_table_unref (tmp); - } - - if (self->priv->available_id != 0) - { - g_signal_handler_disconnect (self->priv->conn, - self->priv->available_id); - self->priv->available_id = 0; - } - - if (self->priv->status_changed_id != 0) - { - g_signal_handler_disconnect (self->priv->conn, - self->priv->status_changed_id); - self->priv->status_changed_id = 0; - } -} - -static void -dispose (GObject *object) -{ - ExampleCallableMediaManager *self = EXAMPLE_CALLABLE_MEDIA_MANAGER (object); - - example_callable_media_manager_close_all (self); - g_assert (self->priv->channels == NULL); - - ((GObjectClass *) example_callable_media_manager_parent_class)->dispose ( - object); -} - -static void -get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - ExampleCallableMediaManager *self = EXAMPLE_CALLABLE_MEDIA_MANAGER (object); - - switch (property_id) - { - case PROP_CONNECTION: - g_value_set_object (value, self->priv->conn); - break; - - case PROP_SIMULATION_DELAY: - g_value_set_uint (value, self->priv->simulation_delay); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - } -} - -static void -set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - ExampleCallableMediaManager *self = EXAMPLE_CALLABLE_MEDIA_MANAGER (object); - - switch (property_id) - { - case PROP_CONNECTION: - /* We don't ref the connection, because it owns a reference to the - * channel manager, and it guarantees that the manager's lifetime is - * less than its lifetime */ - self->priv->conn = g_value_get_object (value); - break; - - case PROP_SIMULATION_DELAY: - self->priv->simulation_delay = g_value_get_uint (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - } -} - -static void -status_changed_cb (TpBaseConnection *conn, - guint status, - guint reason, - ExampleCallableMediaManager *self) -{ - switch (status) - { - case TP_CONNECTION_STATUS_DISCONNECTED: - { - example_callable_media_manager_close_all (self); - } - break; - - default: - break; - } -} - -static ExampleCallableMediaChannel *new_channel ( - ExampleCallableMediaManager *self, TpHandle handle, TpHandle initiator, - gpointer request_token, gboolean initial_audio, gboolean initial_video); - -static gboolean -simulate_incoming_call_cb (gpointer p) -{ - ExampleCallableMediaManager *self = p; - TpHandleRepoIface *contact_repo; - TpHandle caller; - - /* do nothing if we've been disconnected while waiting for the contact to - * call us */ - if (self->priv->available_id == 0) - return FALSE; - - /* We're called by someone whose ID on the IM service is "caller" */ - contact_repo = tp_base_connection_get_handles (self->priv->conn, - TP_HANDLE_TYPE_CONTACT); - caller = tp_handle_ensure (contact_repo, "caller", NULL, NULL); - - new_channel (self, caller, caller, NULL, TRUE, FALSE); - - return FALSE; -} - -/* Whenever our presence changes from away to available, and whenever our - * presence message changes while remaining available, simulate a call from - * a contact */ -static void -available_cb (GObject *conn G_GNUC_UNUSED, - const gchar *message, - ExampleCallableMediaManager *self) -{ - g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, - simulate_incoming_call_cb, g_object_ref (self), g_object_unref); -} - -static void -constructed (GObject *object) -{ - ExampleCallableMediaManager *self = EXAMPLE_CALLABLE_MEDIA_MANAGER (object); - void (*chain_up) (GObject *) = - ((GObjectClass *) example_callable_media_manager_parent_class)->constructed; - - if (chain_up != NULL) - { - chain_up (object); - } - - self->priv->status_changed_id = g_signal_connect (self->priv->conn, - "status-changed", (GCallback) status_changed_cb, self); - - self->priv->available_id = g_signal_connect (self->priv->conn, - "available", (GCallback) available_cb, self); -} - -static void -example_callable_media_manager_class_init ( - ExampleCallableMediaManagerClass *klass) -{ - GParamSpec *param_spec; - GObjectClass *object_class = (GObjectClass *) klass; - - object_class->constructed = constructed; - object_class->dispose = dispose; - object_class->get_property = get_property; - object_class->set_property = set_property; - - param_spec = g_param_spec_object ("connection", "Connection object", - "The connection that owns this channel manager", - TP_TYPE_BASE_CONNECTION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); - - param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", - "Delay between simulated network events", - 0, G_MAXUINT32, 1000, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, - param_spec); - - g_type_class_add_private (klass, - sizeof (ExampleCallableMediaManagerPrivate)); -} - -static void -example_callable_media_manager_foreach_channel ( - TpChannelManager *iface, - TpExportableChannelFunc callback, - gpointer user_data) -{ - ExampleCallableMediaManager *self = EXAMPLE_CALLABLE_MEDIA_MANAGER (iface); - GHashTableIter iter; - gpointer chan; - - g_hash_table_iter_init (&iter, self->priv->channels); - - while (g_hash_table_iter_next (&iter, &chan, NULL)) - callback (chan, user_data); -} - -static void -channel_closed_cb (ExampleCallableMediaChannel *chan, - ExampleCallableMediaManager *self) -{ - tp_channel_manager_emit_channel_closed_for_object (self, - TP_EXPORTABLE_CHANNEL (chan)); - - if (self->priv->channels != NULL) - g_hash_table_remove (self->priv->channels, chan); -} - -static ExampleCallableMediaChannel * -new_channel (ExampleCallableMediaManager *self, - TpHandle handle, - TpHandle initiator, - gpointer request_token, - gboolean initial_audio, - gboolean initial_video) -{ - ExampleCallableMediaChannel *chan; - gchar *object_path; - GSList *requests = NULL; - - /* FIXME: This could potentially wrap around, but only after 4 billion - * calls, which is probably plenty. */ - object_path = g_strdup_printf ("%s/MediaChannel%u", - self->priv->conn->object_path, self->priv->next_channel_index++); - - chan = g_object_new (EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, - "connection", self->priv->conn, - "object-path", object_path, - "handle", handle, - "initiator-handle", initiator, - "requested", (self->priv->conn->self_handle == initiator), - "simulation-delay", self->priv->simulation_delay, - "initial-audio", initial_audio, - "initial-video", initial_video, - NULL); - - g_free (object_path); - - g_signal_connect (chan, "closed", G_CALLBACK (channel_closed_cb), self); - - g_hash_table_insert (self->priv->channels, chan, chan); - - if (request_token != NULL) - requests = g_slist_prepend (requests, request_token); - - tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan), - requests); - g_slist_free (requests); - - return chan; -} - -static const gchar * const fixed_properties[] = { - TP_PROP_CHANNEL_CHANNEL_TYPE, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, - NULL -}; - -static const gchar * const allowed_properties[] = { - TP_PROP_CHANNEL_TARGET_HANDLE, - TP_PROP_CHANNEL_TARGET_ID, - NULL -}; - -static void -example_callable_media_manager_type_foreach_channel_class (GType type, - TpChannelManagerTypeChannelClassFunc func, - gpointer user_data) -{ - GHashTable *table = tp_asv_new ( - TP_PROP_CHANNEL_CHANNEL_TYPE, - G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, - NULL); - - func (type, table, allowed_properties, user_data); - - g_hash_table_unref (table); -} - -static gboolean -example_callable_media_manager_request (ExampleCallableMediaManager *self, - gpointer request_token, - GHashTable *request_properties, - gboolean require_new) -{ - TpHandle handle; - GError *error = NULL; - - if (tp_strdiff (tp_asv_get_string (request_properties, - TP_PROP_CHANNEL_CHANNEL_TYPE), - TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA)) - { - return FALSE; - } - - if (tp_asv_get_uint32 (request_properties, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL) != TP_HANDLE_TYPE_CONTACT) - { - return FALSE; - } - - handle = tp_asv_get_uint32 (request_properties, - TP_PROP_CHANNEL_TARGET_HANDLE, NULL); - g_assert (handle != 0); - - if (tp_channel_manager_asv_has_unknown_properties (request_properties, - fixed_properties, allowed_properties, &error)) - { - goto error; - } - - if (handle == self->priv->conn->self_handle) - { - /* In protocols with a concept of multiple "resources" signed in to - * one account (XMPP, and possibly MSN) it is technically possible to - * call yourself - e.g. if you're signed in on two PCs, you can call one - * from the other. For simplicity, this example simulates a protocol - * where this is not the case. - */ - g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_IMPLEMENTED, - "In this protocol, you can't call yourself"); - goto error; - } - - if (!require_new) - { - /* see if we're already calling that handle */ - GHashTableIter iter; - gpointer chan; - - g_hash_table_iter_init (&iter, self->priv->channels); - - while (g_hash_table_iter_next (&iter, &chan, NULL)) - { - guint its_handle; - - g_object_get (chan, - "handle", &its_handle, - NULL); - - if (its_handle == handle) - { - tp_channel_manager_emit_request_already_satisfied (self, - request_token, TP_EXPORTABLE_CHANNEL (chan)); - return TRUE; - } - } - } - - new_channel (self, handle, self->priv->conn->self_handle, - request_token, FALSE, FALSE); - return TRUE; - -error: - tp_channel_manager_emit_request_failed (self, request_token, - error->domain, error->code, error->message); - g_error_free (error); - return TRUE; -} - -static gboolean -example_callable_media_manager_create_channel (TpChannelManager *manager, - gpointer request_token, - GHashTable *request_properties) -{ - return example_callable_media_manager_request ( - EXAMPLE_CALLABLE_MEDIA_MANAGER (manager), - request_token, request_properties, TRUE); -} - -static gboolean -example_callable_media_manager_ensure_channel (TpChannelManager *manager, - gpointer request_token, - GHashTable *request_properties) -{ - return example_callable_media_manager_request ( - EXAMPLE_CALLABLE_MEDIA_MANAGER (manager), - request_token, request_properties, FALSE); -} - -static void -channel_manager_iface_init (gpointer g_iface, - gpointer iface_data G_GNUC_UNUSED) -{ - TpChannelManagerIface *iface = g_iface; - - iface->foreach_channel = example_callable_media_manager_foreach_channel; - iface->type_foreach_channel_class = - example_callable_media_manager_type_foreach_channel_class; - iface->create_channel = example_callable_media_manager_create_channel; - iface->ensure_channel = example_callable_media_manager_ensure_channel; - /* In this channel manager, RequestChannel is not supported (it's new - * code so there's no reason to be backwards compatible). The requirements - * for RequestChannel are somewhat complicated for backwards compatibility - * reasons: see telepathy-gabble or - * http://telepathy.freedesktop.org/wiki/Requesting%20StreamedMedia%20channels - * for the gory details. */ - iface->request_channel = NULL; -} diff -Nru telepathy-glib-0.17.4/examples/cm/callable/media-manager.h telepathy-glib-0.17.5/examples/cm/callable/media-manager.h --- telepathy-glib-0.17.4/examples/cm/callable/media-manager.h 2009-04-02 15:11:50.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/media-manager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -/* - * media-manager.h - header for an example channel manager - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef __EXAMPLE_CALLABLE_MEDIA_MANAGER_H__ -#define __EXAMPLE_CALLABLE_MEDIA_MANAGER_H__ - -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallableMediaManager ExampleCallableMediaManager; -typedef struct _ExampleCallableMediaManagerPrivate - ExampleCallableMediaManagerPrivate; - -typedef struct _ExampleCallableMediaManagerClass - ExampleCallableMediaManagerClass; -typedef struct _ExampleCallableMediaManagerClassPrivate - ExampleCallableMediaManagerClassPrivate; - -struct _ExampleCallableMediaManagerClass { - GObjectClass parent_class; - - ExampleCallableMediaManagerClassPrivate *priv; -}; - -struct _ExampleCallableMediaManager { - GObject parent; - - ExampleCallableMediaManagerPrivate *priv; -}; - -GType example_callable_media_manager_get_type (void); - -/* TYPE MACROS */ -#define EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER \ - (example_callable_media_manager_get_type ()) -#define EXAMPLE_CALLABLE_MEDIA_MANAGER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER, \ - ExampleCallableMediaManager)) -#define EXAMPLE_CALLABLE_MEDIA_MANAGER_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER, \ - ExampleCallableMediaManagerClass)) -#define EXAMPLE_IS_CALLABLE_MEDIA_MANAGER(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER)) -#define EXAMPLE_IS_CALLABLE_MEDIA_MANAGER_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER)) -#define EXAMPLE_CALLABLE_MEDIA_MANAGER_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER, \ - ExampleCallableMediaManagerClass)) - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/cm/callable/media-stream.c telepathy-glib-0.17.5/examples/cm/callable/media-stream.c --- telepathy-glib-0.17.4/examples/cm/callable/media-stream.c 2010-04-02 09:22:21.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/media-stream.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,650 +0,0 @@ -/* - * media-stream.c - a stream in a streamed media call. - * - * In connection managers with MediaSignalling, this object would be a D-Bus - * object in its own right. In this CM, MediaSignalling is not used, and this - * object just represents internal state of the MediaChannel. - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "media-stream.h" - -#include -#include - -#include "media-channel.h" - -G_DEFINE_TYPE (ExampleCallableMediaStream, - example_callable_media_stream, - G_TYPE_OBJECT) - -enum -{ - PROP_CHANNEL = 1, - PROP_ID, - PROP_HANDLE, - PROP_TYPE, - PROP_STATE, - PROP_PENDING_SEND, - PROP_DIRECTION, - PROP_STREAM_INFO, - PROP_SIMULATION_DELAY, - PROP_LOCALLY_REQUESTED, - N_PROPS -}; - -enum -{ - SIGNAL_REMOVED, - SIGNAL_DIRECTION_CHANGED, - N_SIGNALS -}; - -static guint signals[N_SIGNALS] = { 0 }; - -struct _ExampleCallableMediaStreamPrivate -{ - TpBaseConnection *conn; - ExampleCallableMediaChannel *channel; - guint id; - TpHandle handle; - TpMediaStreamType type; - TpMediaStreamState state; - TpMediaStreamDirection direction; - TpMediaStreamPendingSend pending_send; - - guint simulation_delay; - - gulong call_terminated_id; - - guint connected_event_id; - - gboolean locally_requested; - gboolean removed; -}; - -static void -example_callable_media_stream_init (ExampleCallableMediaStream *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM, - ExampleCallableMediaStreamPrivate); - - /* start off directionless */ - self->priv->direction = TP_MEDIA_STREAM_DIRECTION_NONE; - self->priv->pending_send = 0; - self->priv->state = TP_MEDIA_STREAM_STATE_DISCONNECTED; -} - -static void -call_terminated_cb (ExampleCallableMediaChannel *channel, - ExampleCallableMediaStream *self) -{ - g_signal_handler_disconnect (channel, self->priv->call_terminated_id); - self->priv->call_terminated_id = 0; - example_callable_media_stream_close (self); -} - -static void -constructed (GObject *object) -{ - ExampleCallableMediaStream *self = EXAMPLE_CALLABLE_MEDIA_STREAM (object); - void (*chain_up) (GObject *) = - ((GObjectClass *) example_callable_media_stream_parent_class)->constructed; - - if (chain_up != NULL) - chain_up (object); - - g_object_get (self->priv->channel, - "connection", &self->priv->conn, - NULL); - self->priv->call_terminated_id = g_signal_connect (self->priv->channel, - "call-terminated", G_CALLBACK (call_terminated_cb), self); - - if (self->priv->handle != 0) - { - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( - self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - tp_handle_ref (contact_repo, self->priv->handle); - } -} - -static void -get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - ExampleCallableMediaStream *self = EXAMPLE_CALLABLE_MEDIA_STREAM (object); - - switch (property_id) - { - case PROP_ID: - g_value_set_uint (value, self->priv->id); - break; - - case PROP_HANDLE: - g_value_set_uint (value, self->priv->handle); - break; - - case PROP_TYPE: - g_value_set_uint (value, self->priv->type); - break; - - case PROP_STATE: - g_value_set_uint (value, self->priv->state); - break; - - case PROP_PENDING_SEND: - g_value_set_uint (value, self->priv->pending_send); - break; - - case PROP_DIRECTION: - g_value_set_uint (value, self->priv->direction); - break; - - case PROP_CHANNEL: - g_value_set_object (value, self->priv->channel); - break; - - case PROP_STREAM_INFO: - { - GValueArray *va = g_value_array_new (6); - guint i; - - for (i = 0; i < 6; i++) - { - g_value_array_append (va, NULL); - g_value_init (va->values + i, G_TYPE_UINT); - } - - g_value_set_uint (va->values + 0, self->priv->id); - g_value_set_uint (va->values + 1, self->priv->handle); - g_value_set_uint (va->values + 2, self->priv->type); - g_value_set_uint (va->values + 3, self->priv->state); - g_value_set_uint (va->values + 4, self->priv->direction); - g_value_set_uint (va->values + 5, self->priv->pending_send); - - g_value_take_boxed (value, va); - } - break; - - case PROP_SIMULATION_DELAY: - g_value_set_uint (value, self->priv->simulation_delay); - break; - - case PROP_LOCALLY_REQUESTED: - g_value_set_boolean (value, self->priv->locally_requested); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - ExampleCallableMediaStream *self = EXAMPLE_CALLABLE_MEDIA_STREAM (object); - - switch (property_id) - { - case PROP_ID: - self->priv->id = g_value_get_uint (value); - break; - - case PROP_HANDLE: - self->priv->handle = g_value_get_uint (value); - break; - - case PROP_TYPE: - self->priv->type = g_value_get_uint (value); - break; - - case PROP_CHANNEL: - g_assert (self->priv->channel == NULL); - self->priv->channel = g_value_dup_object (value); - break; - - case PROP_SIMULATION_DELAY: - self->priv->simulation_delay = g_value_get_uint (value); - break; - - case PROP_LOCALLY_REQUESTED: - self->priv->locally_requested = g_value_get_boolean (value); - - if (self->priv->locally_requested) - { - example_callable_media_stream_change_direction (self, - TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL, NULL); - } - else - { - example_callable_media_stream_receive_direction_request (self, - TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL); - } - - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -dispose (GObject *object) -{ - ExampleCallableMediaStream *self = EXAMPLE_CALLABLE_MEDIA_STREAM (object); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( - self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - example_callable_media_stream_close (self); - - if (self->priv->handle != 0) - { - tp_handle_unref (contact_repo, self->priv->handle); - self->priv->handle = 0; - } - - if (self->priv->channel != NULL) - { - if (self->priv->call_terminated_id != 0) - { - g_signal_handler_disconnect (self->priv->channel, - self->priv->call_terminated_id); - self->priv->call_terminated_id = 0; - } - - g_object_unref (self->priv->channel); - self->priv->channel = NULL; - } - - if (self->priv->conn != NULL) - { - g_object_unref (self->priv->conn); - self->priv->conn = NULL; - } - - ((GObjectClass *) example_callable_media_stream_parent_class)->dispose (object); -} - -static void -example_callable_media_stream_class_init (ExampleCallableMediaStreamClass *klass) -{ - GObjectClass *object_class = (GObjectClass *) klass; - GParamSpec *param_spec; - - g_type_class_add_private (klass, - sizeof (ExampleCallableMediaStreamPrivate)); - - object_class->constructed = constructed; - object_class->set_property = set_property; - object_class->get_property = get_property; - object_class->dispose = dispose; - - param_spec = g_param_spec_object ("channel", "ExampleCallableMediaChannel", - "Media channel that owns this stream", - EXAMPLE_TYPE_CALLABLE_MEDIA_CHANNEL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CHANNEL, param_spec); - - param_spec = g_param_spec_uint ("id", "Stream ID", - "ID of this stream", - 0, G_MAXUINT32, 0, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_ID, param_spec); - - param_spec = g_param_spec_uint ("handle", "Peer's TpHandle", - "The handle with which this stream communicates or 0 if not applicable", - 0, G_MAXUINT32, 0, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_HANDLE, param_spec); - - param_spec = g_param_spec_uint ("type", "TpMediaStreamType", - "Media stream type", - 0, NUM_TP_MEDIA_STREAM_TYPES - 1, 0, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_TYPE, param_spec); - - param_spec = g_param_spec_uint ("state", "TpMediaStreamState", - "Media stream connection state", - 0, NUM_TP_MEDIA_STREAM_STATES - 1, 0, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_STATE, param_spec); - - param_spec = g_param_spec_uint ("direction", "TpMediaStreamDirection", - "Media stream direction", - 0, NUM_TP_MEDIA_STREAM_DIRECTIONS - 1, 0, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_DIRECTION, param_spec); - - param_spec = g_param_spec_uint ("pending-send", "TpMediaStreamPendingSend", - "Requested media stream directions pending approval", - 0, - TP_MEDIA_STREAM_PENDING_LOCAL_SEND | TP_MEDIA_STREAM_PENDING_REMOTE_SEND, - 0, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_PENDING_SEND, param_spec); - - param_spec = g_param_spec_boxed ("stream-info", "Stream info", - "6-entry GValueArray as returned by ListStreams and RequestStreams", - TP_STRUCT_TYPE_MEDIA_STREAM_INFO, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_STREAM_INFO, param_spec); - - param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", - "Delay between simulated network events", - 0, G_MAXUINT32, 1000, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, - param_spec); - - param_spec = g_param_spec_boolean ("locally-requested", "Locally requested?", - "True if this channel was requested by the local user", - FALSE, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_LOCALLY_REQUESTED, - param_spec); - - signals[SIGNAL_REMOVED] = g_signal_new ("removed", - G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - signals[SIGNAL_DIRECTION_CHANGED] = g_signal_new ("direction-changed", - G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); -} - -void -example_callable_media_stream_close (ExampleCallableMediaStream *self) -{ - if (!self->priv->removed) - { - self->priv->removed = TRUE; - - g_message ("Sending to server: Closing stream %u", - self->priv->id); - - if (self->priv->connected_event_id != 0) - { - g_source_remove (self->priv->connected_event_id); - } - - /* this has to come last, because the MediaChannel may unref us in - * response to the removed signal */ - g_signal_emit (self, signals[SIGNAL_REMOVED], 0); - } -} - -void -example_callable_media_stream_accept_proposed_direction ( - ExampleCallableMediaStream *self) -{ - if (self->priv->removed || - !(self->priv->pending_send & TP_MEDIA_STREAM_PENDING_LOCAL_SEND)) - return; - - g_message ("SIGNALLING: send: OK, I'll send you media on stream %u", - self->priv->id); - - self->priv->direction |= TP_MEDIA_STREAM_DIRECTION_SEND; - self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_LOCAL_SEND; - - g_signal_emit (self, signals[SIGNAL_DIRECTION_CHANGED], 0); -} - -void -example_callable_media_stream_simulate_contact_agreed_to_send ( - ExampleCallableMediaStream *self) -{ - if (self->priv->removed || - !(self->priv->pending_send & TP_MEDIA_STREAM_PENDING_REMOTE_SEND)) - return; - - g_message ("SIGNALLING: receive: OK, I'll send you media on stream %u", - self->priv->id); - - self->priv->direction |= TP_MEDIA_STREAM_DIRECTION_RECEIVE; - self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_REMOTE_SEND; - - g_signal_emit (self, signals[SIGNAL_DIRECTION_CHANGED], 0); -} - -static gboolean -simulate_contact_agreed_to_send_cb (gpointer p) -{ - example_callable_media_stream_simulate_contact_agreed_to_send (p); - return FALSE; -} - -gboolean -example_callable_media_stream_change_direction ( - ExampleCallableMediaStream *self, - TpMediaStreamDirection direction, - GError **error) -{ - gboolean sending = - ((self->priv->direction & TP_MEDIA_STREAM_DIRECTION_SEND) != 0); - gboolean receiving = - ((self->priv->direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE) != 0); - gboolean want_to_send = - ((direction & TP_MEDIA_STREAM_DIRECTION_SEND) != 0); - gboolean want_to_receive = - ((direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE) != 0); - gboolean pending_remote_send = - ((self->priv->pending_send & TP_MEDIA_STREAM_PENDING_REMOTE_SEND) != 0); - gboolean pending_local_send = - ((self->priv->pending_send & TP_MEDIA_STREAM_PENDING_LOCAL_SEND) != 0); - gboolean changed = FALSE; - - if (want_to_send) - { - if (!sending) - { - if (pending_local_send) - { - g_message ("SIGNALLING: send: I will now send you media on " - "stream %u", self->priv->id); - } - - g_message ("MEDIA: Sending media to peer for stream %u", - self->priv->id); - changed = TRUE; - self->priv->direction |= TP_MEDIA_STREAM_DIRECTION_SEND; - } - } - else - { - if (sending) - { - g_message ("SIGNALLING: send: I will no longer send you media on " - "stream %u", self->priv->id); - g_message ("MEDIA: No longer sending media to peer for stream %u", - self->priv->id); - changed = TRUE; - self->priv->direction &= ~TP_MEDIA_STREAM_DIRECTION_SEND; - } - else if (pending_local_send) - { - g_message ("SIGNALLING: send: No, I refuse to send you media on " - "stream %u", self->priv->id); - changed = TRUE; - self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_LOCAL_SEND; - } - } - - if (want_to_receive) - { - if (!receiving && !pending_remote_send) - { - g_message ("SIGNALLING: send: Please start sending me stream %u", - self->priv->id); - changed = TRUE; - self->priv->pending_send |= TP_MEDIA_STREAM_PENDING_REMOTE_SEND; - g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, - simulate_contact_agreed_to_send_cb, g_object_ref (self), - g_object_unref); - } - } - else - { - if (receiving) - { - g_message ("SIGNALLING: send: Please stop sending me stream %u", - self->priv->id); - g_message ("MEDIA: Suppressing output of stream %u", - self->priv->id); - changed = TRUE; - self->priv->direction &= ~TP_MEDIA_STREAM_DIRECTION_RECEIVE; - } - } - - if (changed) - g_signal_emit (self, signals[SIGNAL_DIRECTION_CHANGED], 0); - - return TRUE; -} - -static gboolean -simulate_stream_connected_cb (gpointer p) -{ - ExampleCallableMediaStream *self = EXAMPLE_CALLABLE_MEDIA_STREAM (p); - - g_message ("MEDIA: stream connected"); - self->priv->state = TP_MEDIA_STREAM_STATE_CONNECTED; - g_object_notify ((GObject *) self, "state"); - - return FALSE; -} - -void -example_callable_media_stream_connect (ExampleCallableMediaStream *self) -{ - /* if already trying to connect, do nothing */ - if (self->priv->connected_event_id != 0) - return; - - /* simulate it taking a short time to connect */ - self->priv->connected_event_id = g_timeout_add (self->priv->simulation_delay, - simulate_stream_connected_cb, self); -} - -void -example_callable_media_stream_receive_direction_request ( - ExampleCallableMediaStream *self, - TpMediaStreamDirection direction) -{ - /* The remote user wants to change the direction of this stream to - * @direction. Shall we let him? */ - gboolean sending = - ((self->priv->direction & TP_MEDIA_STREAM_DIRECTION_SEND) != 0); - gboolean receiving = - ((self->priv->direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE) != 0); - gboolean send_requested = - ((direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE) != 0); - gboolean receive_requested = - ((direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE) != 0); - gboolean pending_remote_send = - ((self->priv->pending_send & TP_MEDIA_STREAM_PENDING_REMOTE_SEND) != 0); - gboolean pending_local_send = - ((self->priv->pending_send & TP_MEDIA_STREAM_PENDING_LOCAL_SEND) != 0); - gboolean changed = FALSE; - - if (send_requested) - { - g_message ("SIGNALLING: receive: Please start sending me stream %u", - self->priv->id); - - if (!sending) - { - /* ask the user for permission */ - self->priv->pending_send |= TP_MEDIA_STREAM_PENDING_LOCAL_SEND; - changed = TRUE; - } - else - { - /* nothing to do, we're already sending on that stream */ - } - } - else - { - g_message ("SIGNALLING: receive: Please stop sending me stream %u", - self->priv->id); - g_message ("SIGNALLING: send: OK, not sending stream %u", - self->priv->id); - - if (sending) - { - g_message ("MEDIA: No longer sending media to peer for stream %u", - self->priv->id); - self->priv->direction &= ~TP_MEDIA_STREAM_DIRECTION_SEND; - changed = TRUE; - } - else if (pending_local_send) - { - self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_LOCAL_SEND; - changed = TRUE; - } - else - { - /* nothing to do, we're not sending on that stream anyway */ - } - } - - if (receive_requested) - { - g_message ("SIGNALLING: receive: I will now send you media on stream %u", - self->priv->id); - - if (!receiving) - { - self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_REMOTE_SEND; - self->priv->direction |= TP_MEDIA_STREAM_DIRECTION_RECEIVE; - changed = TRUE; - } - } - else - { - if (pending_remote_send) - { - g_message ("SIGNALLING: receive: No, I refuse to send you media on " - "stream %u", self->priv->id); - self->priv->pending_send &= ~TP_MEDIA_STREAM_PENDING_REMOTE_SEND; - changed = TRUE; - } - else if (receiving) - { - g_message ("SIGNALLING: receive: I will no longer send you media on " - "stream %u", self->priv->id); - self->priv->direction &= ~TP_MEDIA_STREAM_DIRECTION_RECEIVE; - changed = TRUE; - } - } - - if (changed) - g_signal_emit (self, signals[SIGNAL_DIRECTION_CHANGED], 0); -} diff -Nru telepathy-glib-0.17.4/examples/cm/callable/media-stream.h telepathy-glib-0.17.5/examples/cm/callable/media-stream.h --- telepathy-glib-0.17.4/examples/cm/callable/media-stream.h 2009-04-02 15:11:50.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/media-stream.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -/* - * media-stream.h - header for an example stream - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef __EXAMPLE_CALLABLE_MEDIA_STREAM_H__ -#define __EXAMPLE_CALLABLE_MEDIA_STREAM_H__ - -#include - -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallableMediaStream ExampleCallableMediaStream; -typedef struct _ExampleCallableMediaStreamPrivate - ExampleCallableMediaStreamPrivate; - -typedef struct _ExampleCallableMediaStreamClass - ExampleCallableMediaStreamClass; -typedef struct _ExampleCallableMediaStreamClassPrivate - ExampleCallableMediaStreamClassPrivate; - -GType example_callable_media_stream_get_type (void); - -#define EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM \ - (example_callable_media_stream_get_type ()) -#define EXAMPLE_CALLABLE_MEDIA_STREAM(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM, \ - ExampleCallableMediaStream)) -#define EXAMPLE_CALLABLE_MEDIA_STREAM_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM, \ - ExampleCallableMediaStreamClass)) -#define EXAMPLE_IS_CALLABLE_MEDIA_STREAM(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM)) -#define EXAMPLE_IS_CALLABLE_MEDIA_STREAM_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM)) -#define EXAMPLE_CALLABLE_MEDIA_STREAM_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALLABLE_MEDIA_STREAM, \ - ExampleCallableMediaStreamClass)) - -struct _ExampleCallableMediaStreamClass { - GObjectClass parent_class; - - ExampleCallableMediaStreamClassPrivate *priv; -}; - -struct _ExampleCallableMediaStream { - GObject parent; - - ExampleCallableMediaStreamPrivate *priv; -}; - -void example_callable_media_stream_close (ExampleCallableMediaStream *self); -gboolean example_callable_media_stream_change_direction ( - ExampleCallableMediaStream *self, TpMediaStreamDirection direction, - GError **error); -void example_callable_media_stream_accept_proposed_direction ( - ExampleCallableMediaStream *self); -void example_callable_media_stream_connect (ExampleCallableMediaStream *self); - -/* This controls receiving emulated network events, so it wouldn't exist in - * a real connection manager */ -void example_callable_media_stream_simulate_contact_agreed_to_send ( - ExampleCallableMediaStream *self); - -void example_callable_media_stream_receive_direction_request ( - ExampleCallableMediaStream *self, TpMediaStreamDirection direction); - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/cm/callable/protocol.c telepathy-glib-0.17.5/examples/cm/callable/protocol.c --- telepathy-glib-0.17.4/examples/cm/callable/protocol.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/protocol.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,186 +0,0 @@ -/* - * protocol.c - an example Protocol - * - * Copyright © 2007-2010 Collabora Ltd. - * - * Copying and distribution of this file, with or without modification, - * are permitted in any medium without royalty provided the copyright - * notice and this notice are preserved. - */ - -#include "protocol.h" - -#include - -#include "conn.h" -#include "media-manager.h" - -G_DEFINE_TYPE (ExampleCallableProtocol, - example_callable_protocol, - TP_TYPE_BASE_PROTOCOL) - -static void -example_callable_protocol_init ( - ExampleCallableProtocol *self) -{ -} - -gboolean -example_callable_protocol_check_contact_id (const gchar *id, - gchar **normal, - GError **error) -{ - g_return_val_if_fail (id != NULL, FALSE); - - if (id[0] == '\0') - { - g_set_error (error, TP_ERRORS, TP_ERROR_INVALID_HANDLE, - "ID must not be empty"); - return FALSE; - } - - if (normal != NULL) - *normal = g_utf8_normalize (id, -1, G_NORMALIZE_ALL_COMPOSE); - - return TRUE; -} - -static gboolean -account_param_filter (const TpCMParamSpec *paramspec, - GValue *value, - GError **error) -{ - const gchar *id = g_value_get_string (value); - - return example_callable_protocol_check_contact_id (id, NULL, error); -} - -static const TpCMParamSpec example_callable_example_params[] = { - { "account", "s", G_TYPE_STRING, - TP_CONN_MGR_PARAM_FLAG_REQUIRED | TP_CONN_MGR_PARAM_FLAG_REGISTER, - NULL, /* no default */ - 0, /* unused, formerly struct offset */ - account_param_filter, - NULL, /* filter data, unused here */ - NULL }, /* setter data, now unused */ - { "simulation-delay", "u", G_TYPE_UINT, - TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, - GUINT_TO_POINTER (1000), /* default */ - 0, /* unused, formerly struct offset */ - NULL, /* no filter */ - NULL, /* filter data, unused here */ - NULL }, /* setter data, now unused */ - { NULL } -}; - -static const TpCMParamSpec * -get_parameters (TpBaseProtocol *self) -{ - return example_callable_example_params; -} - -static TpBaseConnection * -new_connection (TpBaseProtocol *protocol, - GHashTable *asv, - GError **error) -{ - ExampleCallableConnection *conn; - const gchar *account; - guint sim_delay; - - account = tp_asv_get_string (asv, "account"); - /* telepathy-glib checked this for us */ - g_assert (account != NULL); - - sim_delay = tp_asv_get_uint32 (asv, "simulation-delay", NULL); - - conn = EXAMPLE_CALLABLE_CONNECTION ( - g_object_new (EXAMPLE_TYPE_CALLABLE_CONNECTION, - "account", account, - "protocol", tp_base_protocol_get_name (protocol), - "simulation-delay", sim_delay, - NULL)); - - return (TpBaseConnection *) conn; -} - -static gchar * -normalize_contact (TpBaseProtocol *self G_GNUC_UNUSED, - const gchar *contact, - GError **error) -{ - gchar *normal; - - if (example_callable_protocol_check_contact_id (contact, &normal, error)) - return normal; - else - return NULL; -} - -static gchar * -identify_account (TpBaseProtocol *self G_GNUC_UNUSED, - GHashTable *asv, - GError **error) -{ - const gchar *account = tp_asv_get_string (asv, "account"); - - if (account != NULL) - return normalize_contact (self, account, error); - - g_set_error (error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "'account' parameter not given"); - return NULL; -} - -static GStrv -get_interfaces (TpBaseProtocol *self) -{ - return NULL; -} - -static void -get_connection_details (TpBaseProtocol *self G_GNUC_UNUSED, - GStrv *connection_interfaces, - GType **channel_managers, - gchar **icon_name, - gchar **english_name, - gchar **vcard_field) -{ - if (connection_interfaces != NULL) - { - *connection_interfaces = g_strdupv ( - (GStrv) example_callable_connection_get_possible_interfaces ()); - } - - if (channel_managers != NULL) - { - GType types[] = { EXAMPLE_TYPE_CALLABLE_MEDIA_MANAGER, G_TYPE_INVALID }; - - *channel_managers = g_memdup (types, sizeof (types)); - } - - if (icon_name != NULL) - *icon_name = g_strdup ("face-smile"); - - if (english_name != NULL) - *english_name = g_strdup ("Example with StreamedMedia calls"); - - if (vcard_field != NULL) - *vcard_field = g_strdup ("x-telepathy-example"); -} - -static void -example_callable_protocol_class_init ( - ExampleCallableProtocolClass *klass) -{ - TpBaseProtocolClass *base_class = - (TpBaseProtocolClass *) klass; - - base_class->get_parameters = get_parameters; - base_class->new_connection = new_connection; - - base_class->normalize_contact = normalize_contact; - base_class->identify_account = identify_account; - base_class->get_interfaces = get_interfaces; - base_class->get_connection_details = get_connection_details; -} diff -Nru telepathy-glib-0.17.4/examples/cm/callable/protocol.h telepathy-glib-0.17.5/examples/cm/callable/protocol.h --- telepathy-glib-0.17.4/examples/cm/callable/protocol.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/callable/protocol.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* - * protocol.h - header for an example Protocol - * Copyright © 2007-2010 Collabora Ltd. - * - * Copying and distribution of this file, with or without modification, - * are permitted in any medium without royalty provided the copyright - * notice and this notice are preserved. - */ - -#ifndef EXAMPLE_CALLABLE_PROTOCOL_H -#define EXAMPLE_CALLABLE_PROTOCOL_H - -#include -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallableProtocol - ExampleCallableProtocol; -typedef struct _ExampleCallableProtocolPrivate - ExampleCallableProtocolPrivate; -typedef struct _ExampleCallableProtocolClass - ExampleCallableProtocolClass; -typedef struct _ExampleCallableProtocolClassPrivate - ExampleCallableProtocolClassPrivate; - -struct _ExampleCallableProtocolClass { - TpBaseProtocolClass parent_class; - - ExampleCallableProtocolClassPrivate *priv; -}; - -struct _ExampleCallableProtocol { - TpBaseProtocol parent; - - ExampleCallableProtocolPrivate *priv; -}; - -GType example_callable_protocol_get_type (void); - -#define EXAMPLE_TYPE_CALLABLE_PROTOCOL \ - (example_callable_protocol_get_type ()) -#define EXAMPLE_CALLABLE_PROTOCOL(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - EXAMPLE_TYPE_CALLABLE_PROTOCOL, \ - ExampleCallableProtocol)) -#define EXAMPLE_CALLABLE_PROTOCOL_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), \ - EXAMPLE_TYPE_CALLABLE_PROTOCOL, \ - ExampleCallableProtocolClass)) -#define EXAMPLE_IS_CALLABLE_PROTOCOL(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - EXAMPLE_TYPE_CALLABLE_PROTOCOL)) -#define EXAMPLE_IS_CALLABLE_PROTOCOL_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - EXAMPLE_TYPE_CALLABLE_PROTOCOL)) -#define EXAMPLE_CALLABLE_PROTOCOL_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - EXAMPLE_TYPE_CALLABLE_PROTOCOL, \ - ExampleCallableProtocolClass)) - -gboolean example_callable_protocol_check_contact_id (const gchar *id, - gchar **normal, - GError **error); - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/cm/channelspecific/conn.c telepathy-glib-0.17.5/examples/cm/channelspecific/conn.c --- telepathy-glib-0.17.4/examples/cm/channelspecific/conn.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/channelspecific/conn.c 2012-02-20 16:55:59.000000000 +0000 @@ -267,8 +267,7 @@ param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", diff -Nru telepathy-glib-0.17.4/examples/cm/channelspecific/Makefile.in telepathy-glib-0.17.5/examples/cm/channelspecific/Makefile.in --- telepathy-glib-0.17.4/examples/cm/channelspecific/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/channelspecific/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -68,8 +68,8 @@ am_libexample_cm_csh_la_OBJECTS = conn.lo connection-manager.lo \ protocol.lo room.lo room-manager.lo libexample_cm_csh_la_OBJECTS = $(am_libexample_cm_csh_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__EXEEXT_1 = telepathy-example-cm-csh$(EXEEXT) am__installdirs = "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(managerdir)" \ @@ -89,21 +89,21 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libexample_cm_csh_la_SOURCES) \ $(telepathy_example_cm_csh_SOURCES) @@ -131,6 +131,12 @@ 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; }; \ + } DATA = $(dist_manager_DATA) $(service_DATA) ETAGS = etags CTAGS = ctags @@ -395,7 +401,7 @@ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libexample-cm-csh.la: $(libexample_cm_csh_la_OBJECTS) $(libexample_cm_csh_la_DEPENDENCIES) +libexample-cm-csh.la: $(libexample_cm_csh_la_OBJECTS) $(libexample_cm_csh_la_DEPENDENCIES) $(EXTRA_libexample_cm_csh_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libexample_cm_csh_la_OBJECTS) $(libexample_cm_csh_la_LIBADD) $(LIBS) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) @@ -449,7 +455,7 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -telepathy-example-cm-csh$(EXEEXT): $(telepathy_example_cm_csh_OBJECTS) $(telepathy_example_cm_csh_DEPENDENCIES) +telepathy-example-cm-csh$(EXEEXT): $(telepathy_example_cm_csh_OBJECTS) $(telepathy_example_cm_csh_DEPENDENCIES) $(EXTRA_telepathy_example_cm_csh_DEPENDENCIES) @rm -f telepathy-example-cm-csh$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_cm_csh_OBJECTS) $(telepathy_example_cm_csh_LDADD) $(LIBS) @@ -469,26 +475,23 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -512,9 +515,7 @@ @$(NORMAL_UNINSTALL) @list='$(dist_manager_DATA)'; test -n "$(managerdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(managerdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(managerdir)" && rm -f $$files + dir='$(DESTDIR)$(managerdir)'; $(am__uninstall_files_from_dir) install-serviceDATA: $(service_DATA) @$(NORMAL_INSTALL) test -z "$(servicedir)" || $(MKDIR_P) "$(DESTDIR)$(servicedir)" @@ -532,9 +533,7 @@ @$(NORMAL_UNINSTALL) @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(servicedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(servicedir)" && rm -f $$files + dir='$(DESTDIR)$(servicedir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -635,10 +634,15 @@ 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 -Nru telepathy-glib-0.17.4/examples/cm/channelspecific/room-manager.c telepathy-glib-0.17.5/examples/cm/channelspecific/room-manager.c --- telepathy-glib-0.17.4/examples/cm/channelspecific/room-manager.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/channelspecific/room-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -156,8 +156,7 @@ param_spec = g_param_spec_object ("connection", "Connection object", "The connection that owns this channel manager", TP_TYPE_BASE_CONNECTION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", diff -Nru telepathy-glib-0.17.4/examples/cm/contactlist/conn.c telepathy-glib-0.17.5/examples/cm/contactlist/conn.c --- telepathy-glib-0.17.4/examples/cm/contactlist/conn.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/contactlist/conn.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "conn.h" #include @@ -433,8 +435,7 @@ param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", diff -Nru telepathy-glib-0.17.4/examples/cm/contactlist/connection-manager.c telepathy-glib-0.17.5/examples/cm/contactlist/connection-manager.c --- telepathy-glib-0.17.4/examples/cm/contactlist/connection-manager.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/contactlist/connection-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "connection-manager.h" #include diff -Nru telepathy-glib-0.17.4/examples/cm/contactlist/contact-list.c telepathy-glib-0.17.5/examples/cm/contactlist/contact-list.c --- telepathy-glib-0.17.4/examples/cm/contactlist/contact-list.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/contactlist/contact-list.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "contact-list.h" #include diff -Nru telepathy-glib-0.17.4/examples/cm/contactlist/Makefile.in telepathy-glib-0.17.5/examples/cm/contactlist/Makefile.in --- telepathy-glib-0.17.4/examples/cm/contactlist/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/contactlist/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -68,8 +68,8 @@ connection-manager.lo contact-list.lo protocol.lo libexample_cm_contactlist_la_OBJECTS = \ $(am_libexample_cm_contactlist_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__EXEEXT_1 = telepathy-example-cm-contactlist$(EXEEXT) am__installdirs = "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(managerdir)" \ @@ -89,21 +89,21 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libexample_cm_contactlist_la_SOURCES) \ $(telepathy_example_cm_contactlist_SOURCES) @@ -131,6 +131,12 @@ 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; }; \ + } DATA = $(dist_manager_DATA) $(service_DATA) ETAGS = etags CTAGS = ctags @@ -389,7 +395,7 @@ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libexample-cm-contactlist.la: $(libexample_cm_contactlist_la_OBJECTS) $(libexample_cm_contactlist_la_DEPENDENCIES) +libexample-cm-contactlist.la: $(libexample_cm_contactlist_la_OBJECTS) $(libexample_cm_contactlist_la_DEPENDENCIES) $(EXTRA_libexample_cm_contactlist_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libexample_cm_contactlist_la_OBJECTS) $(libexample_cm_contactlist_la_LIBADD) $(LIBS) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) @@ -443,7 +449,7 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -telepathy-example-cm-contactlist$(EXEEXT): $(telepathy_example_cm_contactlist_OBJECTS) $(telepathy_example_cm_contactlist_DEPENDENCIES) +telepathy-example-cm-contactlist$(EXEEXT): $(telepathy_example_cm_contactlist_OBJECTS) $(telepathy_example_cm_contactlist_DEPENDENCIES) $(EXTRA_telepathy_example_cm_contactlist_DEPENDENCIES) @rm -f telepathy-example-cm-contactlist$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_cm_contactlist_OBJECTS) $(telepathy_example_cm_contactlist_LDADD) $(LIBS) @@ -462,26 +468,23 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -505,9 +508,7 @@ @$(NORMAL_UNINSTALL) @list='$(dist_manager_DATA)'; test -n "$(managerdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(managerdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(managerdir)" && rm -f $$files + dir='$(DESTDIR)$(managerdir)'; $(am__uninstall_files_from_dir) install-serviceDATA: $(service_DATA) @$(NORMAL_INSTALL) test -z "$(servicedir)" || $(MKDIR_P) "$(DESTDIR)$(servicedir)" @@ -525,9 +526,7 @@ @$(NORMAL_UNINSTALL) @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(servicedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(servicedir)" && rm -f $$files + dir='$(DESTDIR)$(servicedir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -628,10 +627,15 @@ 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 -Nru telepathy-glib-0.17.4/examples/cm/contactlist/protocol.c telepathy-glib-0.17.5/examples/cm/contactlist/protocol.c --- telepathy-glib-0.17.4/examples/cm/contactlist/protocol.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/contactlist/protocol.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "protocol.h" #include diff -Nru telepathy-glib-0.17.4/examples/cm/echo-message-parts/conn.c telepathy-glib-0.17.5/examples/cm/echo-message-parts/conn.c --- telepathy-glib-0.17.4/examples/cm/echo-message-parts/conn.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/echo-message-parts/conn.c 2012-02-20 16:55:59.000000000 +0000 @@ -208,8 +208,7 @@ param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); tp_contacts_mixin_class_init (object_class, diff -Nru telepathy-glib-0.17.4/examples/cm/echo-message-parts/im-manager.c telepathy-glib-0.17.5/examples/cm/echo-message-parts/im-manager.c --- telepathy-glib-0.17.4/examples/cm/echo-message-parts/im-manager.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/echo-message-parts/im-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -146,8 +146,7 @@ param_spec = g_param_spec_object ("connection", "Connection object", "The connection that owns this channel manager", TP_TYPE_BASE_CONNECTION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); g_type_class_add_private (klass, sizeof (ExampleEcho2ImManagerPrivate)); diff -Nru telepathy-glib-0.17.4/examples/cm/echo-message-parts/Makefile.in telepathy-glib-0.17.5/examples/cm/echo-message-parts/Makefile.in --- telepathy-glib-0.17.4/examples/cm/echo-message-parts/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/echo-message-parts/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -66,8 +66,8 @@ connection-manager.lo im-manager.lo libexample_cm_echo_2_la_OBJECTS = \ $(am_libexample_cm_echo_2_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__EXEEXT_1 = telepathy-example-cm-echo-2$(EXEEXT) am__installdirs = "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(managerdir)" \ @@ -87,21 +87,21 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libexample_cm_echo_2_la_SOURCES) \ $(telepathy_example_cm_echo_2_SOURCES) @@ -129,6 +129,12 @@ 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; }; \ + } DATA = $(dist_manager_DATA) $(service_DATA) ETAGS = etags CTAGS = ctags @@ -393,7 +399,7 @@ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libexample-cm-echo-2.la: $(libexample_cm_echo_2_la_OBJECTS) $(libexample_cm_echo_2_la_DEPENDENCIES) +libexample-cm-echo-2.la: $(libexample_cm_echo_2_la_OBJECTS) $(libexample_cm_echo_2_la_DEPENDENCIES) $(EXTRA_libexample_cm_echo_2_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libexample_cm_echo_2_la_OBJECTS) $(libexample_cm_echo_2_la_LIBADD) $(LIBS) install-libexecPROGRAMS: $(libexec_PROGRAMS) @$(NORMAL_INSTALL) @@ -447,7 +453,7 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -telepathy-example-cm-echo-2$(EXEEXT): $(telepathy_example_cm_echo_2_OBJECTS) $(telepathy_example_cm_echo_2_DEPENDENCIES) +telepathy-example-cm-echo-2$(EXEEXT): $(telepathy_example_cm_echo_2_OBJECTS) $(telepathy_example_cm_echo_2_DEPENDENCIES) $(EXTRA_telepathy_example_cm_echo_2_DEPENDENCIES) @rm -f telepathy-example-cm-echo-2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_cm_echo_2_OBJECTS) $(telepathy_example_cm_echo_2_LDADD) $(LIBS) @@ -467,26 +473,23 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -510,9 +513,7 @@ @$(NORMAL_UNINSTALL) @list='$(dist_manager_DATA)'; test -n "$(managerdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(managerdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(managerdir)" && rm -f $$files + dir='$(DESTDIR)$(managerdir)'; $(am__uninstall_files_from_dir) install-serviceDATA: $(service_DATA) @$(NORMAL_INSTALL) test -z "$(servicedir)" || $(MKDIR_P) "$(DESTDIR)$(servicedir)" @@ -530,9 +531,7 @@ @$(NORMAL_UNINSTALL) @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(servicedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(servicedir)" && rm -f $$files + dir='$(DESTDIR)$(servicedir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -633,10 +632,15 @@ 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 -Nru telepathy-glib-0.17.4/examples/cm/extended/conn.c telepathy-glib-0.17.5/examples/cm/extended/conn.c --- telepathy-glib-0.17.4/examples/cm/extended/conn.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/extended/conn.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "conn.h" #include @@ -223,8 +225,7 @@ param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); tp_contacts_mixin_class_init (object_class, diff -Nru telepathy-glib-0.17.4/examples/cm/extended/connection-manager.c telepathy-glib-0.17.5/examples/cm/extended/connection-manager.c --- telepathy-glib-0.17.4/examples/cm/extended/connection-manager.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/extended/connection-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "connection-manager.h" #include diff -Nru telepathy-glib-0.17.4/examples/cm/extended/Makefile.in telepathy-glib-0.17.5/examples/cm/extended/Makefile.in --- telepathy-glib-0.17.4/examples/cm/extended/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/extended/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -69,8 +69,8 @@ $(top_builddir)/examples/extensions/libexample-extensions.la \ $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp @@ -82,21 +82,21 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(telepathy_example_cm_extended_SOURCES) DIST_SOURCES = $(telepathy_example_cm_extended_SOURCES) @@ -122,6 +122,12 @@ 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; }; \ + } DATA = $(dist_manager_DATA) $(service_DATA) ETAGS = etags CTAGS = ctags @@ -419,7 +425,7 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -telepathy-example-cm-extended$(EXEEXT): $(telepathy_example_cm_extended_OBJECTS) $(telepathy_example_cm_extended_DEPENDENCIES) +telepathy-example-cm-extended$(EXEEXT): $(telepathy_example_cm_extended_OBJECTS) $(telepathy_example_cm_extended_DEPENDENCIES) $(EXTRA_telepathy_example_cm_extended_DEPENDENCIES) @rm -f telepathy-example-cm-extended$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_cm_extended_OBJECTS) $(telepathy_example_cm_extended_LDADD) $(LIBS) @@ -437,26 +443,23 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -480,9 +483,7 @@ @$(NORMAL_UNINSTALL) @list='$(dist_manager_DATA)'; test -n "$(managerdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(managerdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(managerdir)" && rm -f $$files + dir='$(DESTDIR)$(managerdir)'; $(am__uninstall_files_from_dir) install-serviceDATA: $(service_DATA) @$(NORMAL_INSTALL) test -z "$(servicedir)" || $(MKDIR_P) "$(DESTDIR)$(servicedir)" @@ -500,9 +501,7 @@ @$(NORMAL_UNINSTALL) @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(servicedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(servicedir)" && rm -f $$files + dir='$(DESTDIR)$(servicedir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -603,10 +602,15 @@ 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 -Nru telepathy-glib-0.17.4/examples/cm/extended/protocol.c telepathy-glib-0.17.5/examples/cm/extended/protocol.c --- telepathy-glib-0.17.4/examples/cm/extended/protocol.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/extended/protocol.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "protocol.h" #include diff -Nru telepathy-glib-0.17.4/examples/cm/Makefile.am telepathy-glib-0.17.5/examples/cm/Makefile.am --- telepathy-glib-0.17.4/examples/cm/Makefile.am 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/Makefile.am 2012-02-20 16:56:41.000000000 +0000 @@ -1,5 +1,5 @@ SUBDIRS = \ - callable \ + call \ channelspecific \ contactlist \ echo-message-parts \ diff -Nru telepathy-glib-0.17.4/examples/cm/Makefile.in telepathy-glib-0.17.5/examples/cm/Makefile.in --- telepathy-glib-0.17.4/examples/cm/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -50,11 +50,11 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = 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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -268,7 +268,7 @@ top_srcdir = @top_srcdir@ tpglibtestsdir = @tpglibtestsdir@ SUBDIRS = \ - callable \ + call \ channelspecific \ contactlist \ echo-message-parts \ @@ -523,10 +523,15 @@ 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: diff -Nru telepathy-glib-0.17.4/examples/cm/no-protocols/Makefile.in telepathy-glib-0.17.5/examples/cm/no-protocols/Makefile.in --- telepathy-glib-0.17.4/examples/cm/no-protocols/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/cm/no-protocols/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -68,8 +68,8 @@ telepathy_example_no_protocols_DEPENDENCIES = \ $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp @@ -81,21 +81,21 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(telepathy_example_no_protocols_SOURCES) DIST_SOURCES = $(telepathy_example_no_protocols_SOURCES) @@ -121,6 +121,12 @@ 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; }; \ + } DATA = $(dist_manager_DATA) $(service_DATA) ETAGS = etags CTAGS = ctags @@ -413,7 +419,7 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -telepathy-example-no-protocols$(EXEEXT): $(telepathy_example_no_protocols_OBJECTS) $(telepathy_example_no_protocols_DEPENDENCIES) +telepathy-example-no-protocols$(EXEEXT): $(telepathy_example_no_protocols_OBJECTS) $(telepathy_example_no_protocols_DEPENDENCIES) $(EXTRA_telepathy_example_no_protocols_DEPENDENCIES) @rm -f telepathy-example-no-protocols$(EXEEXT) $(AM_V_CCLD)$(LINK) $(telepathy_example_no_protocols_OBJECTS) $(telepathy_example_no_protocols_LDADD) $(LIBS) @@ -429,26 +435,23 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -472,9 +475,7 @@ @$(NORMAL_UNINSTALL) @list='$(dist_manager_DATA)'; test -n "$(managerdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(managerdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(managerdir)" && rm -f $$files + dir='$(DESTDIR)$(managerdir)'; $(am__uninstall_files_from_dir) install-serviceDATA: $(service_DATA) @$(NORMAL_INSTALL) test -z "$(servicedir)" || $(MKDIR_P) "$(DESTDIR)$(servicedir)" @@ -492,9 +493,7 @@ @$(NORMAL_UNINSTALL) @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(servicedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(servicedir)" && rm -f $$files + dir='$(DESTDIR)$(servicedir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -595,10 +594,15 @@ 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 -Nru telepathy-glib-0.17.4/examples/extensions/extensions-cli.c telepathy-glib-0.17.5/examples/extensions/extensions-cli.c --- telepathy-glib-0.17.4/examples/extensions/extensions-cli.c 2009-04-02 15:11:50.000000000 +0000 +++ telepathy-glib-0.17.5/examples/extensions/extensions-cli.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include "extensions.h" #include diff -Nru telepathy-glib-0.17.4/examples/extensions/Makefile.in telepathy-glib-0.17.5/examples/extensions/Makefile.in --- telepathy-glib-0.17.4/examples/extensions/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/extensions/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -71,8 +71,8 @@ libexample_extensions_la_OBJECTS = \ $(am_libexample_extensions_la_OBJECTS) \ $(nodist_libexample_extensions_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp @@ -84,21 +84,21 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libexample_extensions_la_SOURCES) \ $(nodist_libexample_extensions_la_SOURCES) @@ -375,7 +375,7 @@ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libexample-extensions.la: $(libexample_extensions_la_OBJECTS) $(libexample_extensions_la_DEPENDENCIES) +libexample-extensions.la: $(libexample_extensions_la_OBJECTS) $(libexample_extensions_la_DEPENDENCIES) $(EXTRA_libexample_extensions_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libexample_extensions_la_OBJECTS) $(libexample_extensions_la_LIBADD) $(LIBS) mostlyclean-compile: @@ -392,42 +392,37 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< signals-marshal.lo: _gen/signals-marshal.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) $(AM_CFLAGS) $(CFLAGS) -MT signals-marshal.lo -MD -MP -MF $(DEPDIR)/signals-marshal.Tpo -c -o signals-marshal.lo `test -f '_gen/signals-marshal.c' || echo '$(srcdir)/'`_gen/signals-marshal.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/signals-marshal.Tpo $(DEPDIR)/signals-marshal.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/signals-marshal.c' object='signals-marshal.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/signals-marshal.c' object='signals-marshal.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o signals-marshal.lo `test -f '_gen/signals-marshal.c' || echo '$(srcdir)/'`_gen/signals-marshal.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o signals-marshal.lo `test -f '_gen/signals-marshal.c' || echo '$(srcdir)/'`_gen/signals-marshal.c svc-connection.lo: _gen/svc-connection.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) $(AM_CFLAGS) $(CFLAGS) -MT svc-connection.lo -MD -MP -MF $(DEPDIR)/svc-connection.Tpo -c -o svc-connection.lo `test -f '_gen/svc-connection.c' || echo '$(srcdir)/'`_gen/svc-connection.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/svc-connection.Tpo $(DEPDIR)/svc-connection.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/svc-connection.c' object='svc-connection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/svc-connection.c' object='svc-connection.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o svc-connection.lo `test -f '_gen/svc-connection.c' || echo '$(srcdir)/'`_gen/svc-connection.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o svc-connection.lo `test -f '_gen/svc-connection.c' || echo '$(srcdir)/'`_gen/svc-connection.c mostlyclean-libtool: -rm -f *.lo @@ -533,10 +528,15 @@ 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 -Nru telepathy-glib-0.17.4/examples/future/call-cm/call-channel.c telepathy-glib-0.17.5/examples/future/call-cm/call-channel.c --- telepathy-glib-0.17.4/examples/future/call-cm/call-channel.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/call-channel.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1647 +0,0 @@ -/* - * call-channel.c - an example 1-1 audio/video call - * - * For simplicity, this channel emulates a device with its own - * audio/video user interface, like a video-equipped form of the phones - * manipulated by telepathy-snom or gnome-phone-manager. - * - * As a result, this channel has the HardwareStreaming flag, its contents - * and streams do not have the Media interface, and clients should not attempt - * to do their own streaming using telepathy-farsight, telepathy-stream-engine - * or maemo-stream-engine. - * - * In practice, nearly all connection managers do not have HardwareStreaming, - * and do have the Media interface on their contents/streams. Usage for those - * CMs is the same, except that whichever client is the primary handler - * for the channel should also hand the channel over to telepathy-farsight or - * telepathy-stream-engine to implement the actual streaming. - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "call-channel.h" - -#include - -#include - -#include -#include -#include -#include - -#include "extensions/extensions.h" - -#include "call-content.h" -#include "call-stream.h" - -static void call_iface_init (gpointer iface, gpointer data); -static void channel_iface_init (gpointer iface, gpointer data); -static void hold_iface_init (gpointer iface, gpointer data); - -G_DEFINE_TYPE_WITH_CODE (ExampleCallChannel, - example_call_channel, - G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, - tp_dbus_properties_mixin_iface_init); - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL, channel_iface_init); - G_IMPLEMENT_INTERFACE (FUTURE_TYPE_SVC_CHANNEL_TYPE_CALL, - call_iface_init); - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_HOLD, - hold_iface_init); - G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_IFACE, NULL); - G_IMPLEMENT_INTERFACE (TP_TYPE_EXPORTABLE_CHANNEL, NULL)) - -enum -{ - PROP_OBJECT_PATH = 1, - PROP_CHANNEL_TYPE, - PROP_HANDLE_TYPE, - PROP_HANDLE, - PROP_TARGET_ID, - PROP_REQUESTED, - PROP_INITIATOR_HANDLE, - PROP_INITIATOR_ID, - PROP_CONNECTION, - PROP_INTERFACES, - PROP_CHANNEL_DESTROYED, - PROP_CHANNEL_PROPERTIES, - PROP_SIMULATION_DELAY, - PROP_INITIAL_AUDIO, - PROP_INITIAL_VIDEO, - PROP_CONTENT_PATHS, - PROP_CALL_STATE, - PROP_CALL_FLAGS, - PROP_CALL_STATE_REASON, - PROP_CALL_STATE_DETAILS, - PROP_HARDWARE_STREAMING, - PROP_CALL_MEMBERS, - PROP_MEMBER_IDENTIFIERS, - PROP_INITIAL_TRANSPORT, - PROP_MUTABLE_CONTENTS, - N_PROPS -}; - -struct _ExampleCallChannelPrivate -{ - TpBaseConnection *conn; - gchar *object_path; - TpHandle handle; - TpHandle initiator; - - FutureCallState call_state; - FutureCallFlags call_flags; - GValueArray *call_state_reason; - GHashTable *call_state_details; - FutureCallMemberFlags peer_flags; - - guint simulation_delay; - - guint next_stream_id; - - /* strdup'd name => referenced ExampleCallContent */ - GHashTable *contents; - - guint hold_state; - guint hold_state_reason; - - gboolean locally_requested; - gboolean initial_audio; - gboolean initial_video; - gboolean disposed; - gboolean closed; -}; - -static const char * example_call_channel_interfaces[] = { - TP_IFACE_CHANNEL_INTERFACE_HOLD, - NULL -}; - -/* In practice you need one for audio, plus one per video (e.g. a - * presentation might have separate video contents for the slides - * and a camera pointed at the presenter), so having more than three - * would be highly unusual */ -#define MAX_CONTENTS_PER_CALL 100 - -G_GNUC_NULL_TERMINATED static void -example_call_channel_set_state (ExampleCallChannel *self, - FutureCallState state, - FutureCallFlags flags, - TpHandle actor, - FutureCallStateChangeReason reason, - const gchar *error, - ...) -{ - TpHandleRepoIface *contact_handles = tp_base_connection_get_handles - (self->priv->conn, TP_HANDLE_TYPE_CONTACT); - TpHandle old_actor; - const gchar *key; - va_list va; - - self->priv->call_state = state; - self->priv->call_flags = flags; - - old_actor = g_value_get_uint (self->priv->call_state_reason->values + 0); - - if (actor != 0) - tp_handle_ref (contact_handles, actor); - - if (old_actor != 0) - tp_handle_unref (contact_handles, old_actor); - - g_value_set_uint (self->priv->call_state_reason->values + 0, actor); - g_value_set_uint (self->priv->call_state_reason->values + 1, reason); - g_value_set_string (self->priv->call_state_reason->values + 2, error); - - g_hash_table_remove_all (self->priv->call_state_details); - - va_start (va, error); - - /* This is basically tp_asv_new_va(), but that doesn't exist yet - * (and when it does, we still won't want to use it in this example - * just yet, because examples shouldn't use unreleased API) */ - for (key = va_arg (va, const gchar *); - key != NULL; - key = va_arg (va, const gchar *)) - { - GType type = va_arg (va, GType); - GValue *value = tp_g_value_slice_new (type); - gchar *collect_error = NULL; - - G_VALUE_COLLECT (value, va, 0, &collect_error); - - if (collect_error != NULL) - { - g_critical ("key %s: %s", key, collect_error); - g_free (collect_error); - collect_error = NULL; - tp_g_value_slice_free (value); - continue; - } - - g_hash_table_insert (self->priv->call_state_details, - (gchar *) key, value); - } - - va_end (va); - - future_svc_channel_type_call_emit_call_state_changed (self, - self->priv->call_state, self->priv->call_flags, - self->priv->call_state_reason, self->priv->call_state_details); -} - -static void -example_call_channel_init (ExampleCallChannel *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - EXAMPLE_TYPE_CALL_CHANNEL, - ExampleCallChannelPrivate); - - self->priv->next_stream_id = 1; - self->priv->contents = g_hash_table_new_full (g_str_hash, - g_str_equal, g_free, g_object_unref); - - self->priv->call_state = FUTURE_CALL_STATE_UNKNOWN; /* set in constructed */ - self->priv->call_flags = 0; - self->priv->call_state_reason = tp_value_array_build (4, - G_TYPE_UINT, 0, /* actor */ - G_TYPE_UINT, FUTURE_CALL_STATE_CHANGE_REASON_UNKNOWN, - G_TYPE_STRING, "", - G_TYPE_STRING, "", - G_TYPE_INVALID); - self->priv->call_state_details = tp_asv_new ( - NULL, NULL); - - self->priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD; - self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_NONE; -} - -static ExampleCallContent *example_call_channel_add_content ( - ExampleCallChannel *self, TpMediaStreamType media_type, - gboolean locally_requested, gboolean initial, - const gchar *requested_name, GError **error); - -static void example_call_channel_initiate_outgoing (ExampleCallChannel *self); - -static void -constructed (GObject *object) -{ - void (*chain_up) (GObject *) = - ((GObjectClass *) example_call_channel_parent_class)->constructed; - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles - (self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - if (chain_up != NULL) - chain_up (object); - - tp_handle_ref (contact_repo, self->priv->handle); - tp_handle_ref (contact_repo, self->priv->initiator); - - tp_dbus_daemon_register_object ( - tp_base_connection_get_dbus_daemon (self->priv->conn), - self->priv->object_path, self); - - if (self->priv->locally_requested) - { - /* Nobody is locally pending. The remote peer will turn up in - * remote-pending state when we actually contact them, which is done - * in example_call_channel_initiate_outgoing. */ - example_call_channel_set_state (self, - FUTURE_CALL_STATE_PENDING_INITIATOR, 0, 0, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", - NULL); - } - else - { - /* This is an incoming call, so the self-handle is locally - * pending, to indicate that we need to answer. */ - example_call_channel_set_state (self, - FUTURE_CALL_STATE_RINGING, 0, self->priv->handle, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", - NULL); - } - - if (self->priv->locally_requested) - { - if (self->priv->initial_audio) - { - g_message ("Channel initially has an audio stream"); - example_call_channel_add_content (self, - TP_MEDIA_STREAM_TYPE_AUDIO, TRUE, TRUE, NULL, NULL); - } - - if (self->priv->initial_video) - { - g_message ("Channel initially has a video stream"); - example_call_channel_add_content (self, - TP_MEDIA_STREAM_TYPE_VIDEO, TRUE, TRUE, NULL, NULL); - } - } - else - { - /* the caller has almost certainly asked us for some streams - there's - * not much point in having a call otherwise */ - - if (self->priv->initial_audio) - { - g_message ("Channel initially has an audio stream"); - example_call_channel_add_content (self, - TP_MEDIA_STREAM_TYPE_AUDIO, FALSE, TRUE, NULL, NULL); - } - - if (self->priv->initial_video) - { - g_message ("Channel initially has a video stream"); - example_call_channel_add_content (self, - TP_MEDIA_STREAM_TYPE_VIDEO, FALSE, TRUE, NULL, NULL); - } - } -} - -static void -get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); - - switch (property_id) - { - case PROP_OBJECT_PATH: - g_value_set_string (value, self->priv->object_path); - break; - - case PROP_CHANNEL_TYPE: - g_value_set_static_string (value, FUTURE_IFACE_CHANNEL_TYPE_CALL); - break; - - case PROP_HANDLE_TYPE: - g_value_set_uint (value, TP_HANDLE_TYPE_CONTACT); - break; - - case PROP_HANDLE: - g_value_set_uint (value, self->priv->handle); - break; - - case PROP_TARGET_ID: - { - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( - self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - g_value_set_string (value, - tp_handle_inspect (contact_repo, self->priv->handle)); - } - break; - - case PROP_REQUESTED: - g_value_set_boolean (value, self->priv->locally_requested); - break; - - case PROP_INITIATOR_HANDLE: - g_value_set_uint (value, self->priv->initiator); - break; - - case PROP_INITIATOR_ID: - { - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( - self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - g_value_set_string (value, - tp_handle_inspect (contact_repo, self->priv->initiator)); - } - break; - - case PROP_CONNECTION: - g_value_set_object (value, self->priv->conn); - break; - - case PROP_INTERFACES: - g_value_set_boxed (value, example_call_channel_interfaces); - break; - - case PROP_CHANNEL_DESTROYED: - g_value_set_boolean (value, - (self->priv->call_state == FUTURE_CALL_STATE_ENDED)); - break; - - case PROP_CHANNEL_PROPERTIES: - g_value_take_boxed (value, - tp_dbus_properties_mixin_make_properties_hash (object, - TP_IFACE_CHANNEL, "ChannelType", - TP_IFACE_CHANNEL, "TargetHandleType", - TP_IFACE_CHANNEL, "TargetHandle", - TP_IFACE_CHANNEL, "TargetID", - TP_IFACE_CHANNEL, "InitiatorHandle", - TP_IFACE_CHANNEL, "InitiatorID", - TP_IFACE_CHANNEL, "Requested", - TP_IFACE_CHANNEL, "Interfaces", - NULL)); - break; - - case PROP_SIMULATION_DELAY: - g_value_set_uint (value, self->priv->simulation_delay); - break; - - case PROP_INITIAL_AUDIO: - g_value_set_boolean (value, self->priv->initial_audio); - break; - - case PROP_INITIAL_VIDEO: - g_value_set_boolean (value, self->priv->initial_video); - break; - - case PROP_CONTENT_PATHS: - { - GPtrArray *paths = g_ptr_array_sized_new (g_hash_table_size ( - self->priv->contents)); - GHashTableIter iter; - gpointer v; - - g_hash_table_iter_init (&iter, self->priv->contents); - - while (g_hash_table_iter_next (&iter, NULL, &v)) - { - gchar *path; - - g_object_get (v, - "object-path", &path, - NULL); - - g_ptr_array_add (paths, path); - } - - g_value_take_boxed (value, paths); - } - break; - - case PROP_CALL_STATE: - g_value_set_uint (value, self->priv->call_state); - break; - - case PROP_CALL_FLAGS: - g_value_set_uint (value, self->priv->call_flags); - break; - - case PROP_CALL_STATE_REASON: - g_value_set_boxed (value, self->priv->call_state_reason); - break; - - case PROP_CALL_STATE_DETAILS: - g_value_set_boxed (value, self->priv->call_state_details); - break; - - case PROP_HARDWARE_STREAMING: - /* yes, this implementation has hardware streaming */ - g_value_set_boolean (value, TRUE); - break; - - case PROP_MUTABLE_CONTENTS: - /* yes, this implementation can add contents */ - g_value_set_boolean (value, TRUE); - break; - - case PROP_INITIAL_TRANSPORT: - /* this implementation has hardware_streaming, so the initial - * transport is rather meaningless */ - g_value_set_uint (value, FUTURE_STREAM_TRANSPORT_TYPE_UNKNOWN); - break; - - case PROP_CALL_MEMBERS: - { - GHashTable *uu_map = g_hash_table_new (NULL, NULL); - - /* There is one contact, other than the self-handle. */ - g_hash_table_insert (uu_map, GUINT_TO_POINTER (self->priv->handle), - GUINT_TO_POINTER (self->priv->peer_flags)); - g_value_take_boxed (value, uu_map); - } - break; - - case PROP_MEMBER_IDENTIFIERS: - { - GHashTable *us_map = g_hash_table_new (NULL, NULL); - TpHandleRepoIface *contact_handles = tp_base_connection_get_handles ( - self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - /* There is one contact, other than the self-handle. */ - g_hash_table_insert (us_map, GUINT_TO_POINTER (self->priv->handle), - (gpointer) tp_handle_inspect (contact_handles, self->priv->handle)); - g_value_take_boxed (value, us_map); - } - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); - - switch (property_id) - { - case PROP_OBJECT_PATH: - g_assert (self->priv->object_path == NULL); /* construct-only */ - self->priv->object_path = g_value_dup_string (value); - break; - - case PROP_HANDLE: - /* we don't ref it here because we don't necessarily have access to the - * contact repo yet - instead we ref it in the constructor. - */ - self->priv->handle = g_value_get_uint (value); - break; - - case PROP_INITIATOR_HANDLE: - /* likewise */ - self->priv->initiator = g_value_get_uint (value); - break; - - case PROP_REQUESTED: - self->priv->locally_requested = g_value_get_boolean (value); - break; - - case PROP_HANDLE_TYPE: - case PROP_CHANNEL_TYPE: - /* these properties are writable in the interface, but not actually - * meaningfully changable on this channel, so we do nothing */ - break; - - case PROP_CONNECTION: - self->priv->conn = g_value_get_object (value); - break; - - case PROP_SIMULATION_DELAY: - self->priv->simulation_delay = g_value_get_uint (value); - break; - - case PROP_INITIAL_AUDIO: - self->priv->initial_audio = g_value_get_boolean (value); - break; - - case PROP_INITIAL_VIDEO: - self->priv->initial_video = g_value_get_boolean (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -example_call_channel_terminate (ExampleCallChannel *self, - TpHandle actor, - TpChannelGroupChangeReason reason, - FutureCallStateChangeReason call_reason, - const gchar *error_name) -{ - if (self->priv->call_state != FUTURE_CALL_STATE_ENDED) - { - GList *values; - GHashTable *empty_uu_map = g_hash_table_new (NULL, NULL); - GArray *au = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); - - example_call_channel_set_state (self, - FUTURE_CALL_STATE_ENDED, 0, actor, - call_reason, error_name, - NULL); - - /* FIXME: fd.o #24936 #c20: it's unclear in the spec whether we should - * remove peers on call termination or not. For now this example does. */ - g_array_append_val (au, self->priv->handle); - future_svc_channel_type_call_emit_call_members_changed (self, - empty_uu_map, empty_uu_map, au, self->priv->call_state_reason); - g_hash_table_unref (empty_uu_map); - g_array_unref (au); - - if (actor == tp_base_connection_get_self_handle (self->priv->conn)) - { - const gchar *send_reason; - - /* In a real protocol these would be some sort of real protocol - * construct, like an XMPP error stanza or a SIP error code */ - switch (reason) - { - case TP_CHANNEL_GROUP_CHANGE_REASON_BUSY: - send_reason = ""; - break; - - case TP_CHANNEL_GROUP_CHANGE_REASON_NO_ANSWER: - send_reason = ""; - break; - - default: - send_reason = ""; - } - - g_message ("SIGNALLING: send: Terminating call: %s", send_reason); - } - - /* terminate all streams: to avoid modifying the hash table (in the - * streams-removed handler) while iterating over it, we have to copy the - * keys and iterate over those */ - values = g_hash_table_get_values (self->priv->contents); - g_list_foreach (values, (GFunc) g_object_ref, NULL); - - for (; values != NULL; values = g_list_delete_link (values, values)) - { - ExampleCallStream *stream = - example_call_content_get_stream (values->data); - - if (stream != NULL) - example_call_stream_close (stream); - - g_object_unref (values->data); - } - } -} - -void -example_call_channel_disconnected (ExampleCallChannel *self) -{ - example_call_channel_terminate (self, 0, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE, - FUTURE_CALL_STATE_CHANGE_REASON_UNKNOWN, - TP_ERROR_STR_DISCONNECTED); - - if (!self->priv->closed) - { - self->priv->closed = TRUE; - tp_svc_channel_emit_closed (self); - } -} - -static void -dispose (GObject *object) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); - - if (self->priv->disposed) - return; - - self->priv->disposed = TRUE; - - g_hash_table_unref (self->priv->contents); - self->priv->contents = NULL; - - /* FIXME: right error code? arguably this should always be a no-op */ - example_call_channel_terminate (self, - tp_base_connection_get_self_handle (self->priv->conn), - TP_CHANNEL_GROUP_CHANGE_REASON_NONE, - FUTURE_CALL_STATE_CHANGE_REASON_UNKNOWN, ""); - - /* the manager is meant to hold a ref to us until we've closed */ - g_assert (self->priv->closed); - - ((GObjectClass *) example_call_channel_parent_class)->dispose (object); -} - -static void -finalize (GObject *object) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (object); - TpHandleRepoIface *contact_handles = tp_base_connection_get_handles - (self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - g_value_array_free (self->priv->call_state_reason); - g_hash_table_unref (self->priv->call_state_details); - - tp_handle_unref (contact_handles, self->priv->handle); - tp_handle_unref (contact_handles, self->priv->initiator); - - g_free (self->priv->object_path); - - ((GObjectClass *) example_call_channel_parent_class)->finalize (object); -} - -static void -example_call_channel_class_init (ExampleCallChannelClass *klass) -{ - static TpDBusPropertiesMixinPropImpl channel_props[] = { - { "TargetHandleType", "handle-type", NULL }, - { "TargetHandle", "handle", NULL }, - { "ChannelType", "channel-type", NULL }, - { "Interfaces", "interfaces", NULL }, - { "TargetID", "target-id", NULL }, - { "Requested", "requested", NULL }, - { "InitiatorHandle", "initiator-handle", NULL }, - { "InitiatorID", "initiator-id", NULL }, - { NULL } - }; - static TpDBusPropertiesMixinPropImpl call_props[] = { - { "Contents", "content-paths", NULL }, - { "CallState", "call-state", NULL }, - { "CallFlags", "call-flags", NULL }, - { "CallStateReason", "call-state-reason", NULL }, - { "CallStateDetails", "call-state-details", NULL }, - { "HardwareStreaming", "hardware-streaming", NULL }, - { "CallMembers", "call-members", NULL }, - { "MemberIdentifiers", "member-identifiers", NULL }, - { "InitialTransport", "initial-transport", NULL }, - { "InitialAudio", "initial-audio", NULL }, - { "InitialVideo", "initial-video", NULL }, - { "MutableContents", "mutable-contents", NULL }, - { NULL } - }; - static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { - { TP_IFACE_CHANNEL, - tp_dbus_properties_mixin_getter_gobject_properties, - NULL, - channel_props, - }, - { FUTURE_IFACE_CHANNEL_TYPE_CALL, - tp_dbus_properties_mixin_getter_gobject_properties, - NULL, - call_props, - }, - { NULL } - }; - GObjectClass *object_class = (GObjectClass *) klass; - GParamSpec *param_spec; - - g_type_class_add_private (klass, - sizeof (ExampleCallChannelPrivate)); - - object_class->constructed = constructed; - object_class->set_property = set_property; - object_class->get_property = get_property; - object_class->dispose = dispose; - object_class->finalize = finalize; - - g_object_class_override_property (object_class, PROP_OBJECT_PATH, - "object-path"); - g_object_class_override_property (object_class, PROP_CHANNEL_TYPE, - "channel-type"); - g_object_class_override_property (object_class, PROP_HANDLE_TYPE, - "handle-type"); - g_object_class_override_property (object_class, PROP_HANDLE, "handle"); - - g_object_class_override_property (object_class, PROP_CHANNEL_DESTROYED, - "channel-destroyed"); - g_object_class_override_property (object_class, PROP_CHANNEL_PROPERTIES, - "channel-properties"); - - param_spec = g_param_spec_object ("connection", "TpBaseConnection object", - "Connection object that owns this channel", - TP_TYPE_BASE_CONNECTION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); - - param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", - "Additional Channel.Interface.* interfaces", - G_TYPE_STRV, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); - - param_spec = g_param_spec_string ("target-id", "Peer's ID", - "The string obtained by inspecting the target handle", - NULL, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_TARGET_ID, param_spec); - - param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle", - "The contact who initiated the channel", - 0, G_MAXUINT32, 0, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_INITIATOR_HANDLE, - param_spec); - - param_spec = g_param_spec_string ("initiator-id", "Initiator's ID", - "The string obtained by inspecting the initiator-handle", - NULL, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_INITIATOR_ID, - param_spec); - - param_spec = g_param_spec_boolean ("requested", "Requested?", - "True if this channel was requested by the local user", - FALSE, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_REQUESTED, param_spec); - - param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", - "Delay between simulated network events", - 0, G_MAXUINT32, 1000, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, - param_spec); - - param_spec = g_param_spec_boolean ("initial-audio", "Initial audio?", - "True if this channel had an audio stream when first announced", - FALSE, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_INITIAL_AUDIO, - param_spec); - - param_spec = g_param_spec_boolean ("initial-video", "Initial video?", - "True if this channel had a video stream when first announced", - FALSE, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_INITIAL_VIDEO, - param_spec); - - param_spec = g_param_spec_boxed ("content-paths", "Content paths", - "A list of the object paths of contents", - TP_ARRAY_TYPE_OBJECT_PATH_LIST, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CONTENT_PATHS, - param_spec); - - param_spec = g_param_spec_uint ("call-state", "Call state", - "High-level state of the call", - 0, NUM_FUTURE_CALL_STATES - 1, FUTURE_CALL_STATE_PENDING_INITIATOR, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CALL_STATE, - param_spec); - - param_spec = g_param_spec_uint ("call-flags", "Call flags", - "Flags for additional sub-states", - 0, G_MAXUINT32, 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CALL_FLAGS, - param_spec); - - param_spec = g_param_spec_boxed ("call-state-reason", "Call state reason", - "Reason for call-state and call-flags", - FUTURE_STRUCT_TYPE_CALL_STATE_REASON, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CALL_STATE_REASON, - param_spec); - - param_spec = g_param_spec_boxed ("call-state-details", "Call state details", - "Additional details of the call state/flags/reason", - TP_HASH_TYPE_STRING_VARIANT_MAP, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CALL_STATE_DETAILS, - param_spec); - - param_spec = g_param_spec_boolean ("hardware-streaming", - "Hardware streaming?", - "True if this channel does all of its own streaming (it does)", - TRUE, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_HARDWARE_STREAMING, - param_spec); - - param_spec = g_param_spec_boxed ("call-members", "Call members", - "A map from call members (only one in this example) to their states", - FUTURE_HASH_TYPE_CALL_MEMBER_MAP, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CALL_MEMBERS, - param_spec); - - param_spec = g_param_spec_boxed ("member-identifiers", "Call member identifiers", - "A map from call members (only one in this example) to their identifiers", - TP_HASH_TYPE_HANDLE_IDENTIFIER_MAP, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_MEMBER_IDENTIFIERS, - param_spec); - - param_spec = g_param_spec_uint ("initial-transport", "Initial transport", - "The initial transport for this channel (there is none)", - 0, NUM_FUTURE_STREAM_TRANSPORT_TYPES, - FUTURE_STREAM_TRANSPORT_TYPE_UNKNOWN, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_INITIAL_TRANSPORT, - param_spec); - - param_spec = g_param_spec_boolean ("mutable-contents", "Mutable contents?", - "True if contents can be added to this channel (they can)", - TRUE, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_MUTABLE_CONTENTS, - param_spec); - - klass->dbus_properties_class.interfaces = prop_interfaces; - tp_dbus_properties_mixin_class_init (object_class, - G_STRUCT_OFFSET (ExampleCallChannelClass, - dbus_properties_class)); -} - -static void -channel_close (TpSvcChannel *iface, - DBusGMethodInvocation *context) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); - - example_call_channel_terminate (self, - tp_base_connection_get_self_handle (self->priv->conn), - TP_CHANNEL_GROUP_CHANGE_REASON_NONE, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, ""); - - if (!self->priv->closed) - { - self->priv->closed = TRUE; - tp_svc_channel_emit_closed (self); - } - - tp_svc_channel_return_from_close (context); -} - -static void -channel_get_channel_type (TpSvcChannel *iface G_GNUC_UNUSED, - DBusGMethodInvocation *context) -{ - tp_svc_channel_return_from_get_channel_type (context, - FUTURE_IFACE_CHANNEL_TYPE_CALL); -} - -static void -channel_get_handle (TpSvcChannel *iface, - DBusGMethodInvocation *context) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); - - tp_svc_channel_return_from_get_handle (context, TP_HANDLE_TYPE_CONTACT, - self->priv->handle); -} - -static void -channel_get_interfaces (TpSvcChannel *iface G_GNUC_UNUSED, - DBusGMethodInvocation *context) -{ - tp_svc_channel_return_from_get_interfaces (context, - example_call_channel_interfaces); -} - -static void -channel_iface_init (gpointer iface, - gpointer data) -{ - TpSvcChannelClass *klass = iface; - -#define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x) - IMPLEMENT (close); - IMPLEMENT (get_channel_type); - IMPLEMENT (get_handle); - IMPLEMENT (get_interfaces); -#undef IMPLEMENT -} - -#if 0 -/* FIXME: there's no equivalent of this in Call (yet?) */ - -/* This is expressed in terms of streams because it's the old API, but it - * really means removing contents. */ -static void -media_remove_streams (TpSvcChannelTypeStreamedMedia *iface, - const GArray *stream_ids, - DBusGMethodInvocation *context) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); - guint i; - - for (i = 0; i < stream_ids->len; i++) - { - guint id = g_array_index (stream_ids, guint, i); - - if (g_hash_table_lookup (self->priv->contents, - GUINT_TO_POINTER (id)) == NULL) - { - GError *error = g_error_new (TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "No stream with ID %u in this channel", id); - - dbus_g_method_return_error (context, error); - g_error_free (error); - return; - } - } - - for (i = 0; i < stream_ids->len; i++) - { - guint id = g_array_index (stream_ids, guint, i); - ExampleCallContent *content = - g_hash_table_lookup (self->priv->contents, GUINT_TO_POINTER (id)); - ExampleCallStream *stream = example_call_content_get_stream (content); - - if (stream != NULL) - example_call_stream_close (stream); - } - - tp_svc_channel_type_streamed_media_return_from_remove_streams (context); -} -#endif - -static void -streams_removed_cb (ExampleCallContent *content, - const GPtrArray *stream_paths G_GNUC_UNUSED, - const GArray *reason G_GNUC_UNUSED, - ExampleCallChannel *self) -{ - gchar *path, *name; - - /* Contents in this example CM can only have one stream, so if their - * stream disappears, the content has to be removed too. */ - - g_object_get (content, - "object-path", &path, - "name", &name, - NULL); - - g_hash_table_remove (self->priv->contents, name); - - future_svc_call_content_emit_removed (content); - future_svc_channel_type_call_emit_content_removed (self, path, - self->priv->call_state_reason); - g_free (path); - g_free (name); - - if (g_hash_table_size (self->priv->contents) == 0) - { - /* no contents left, so the call terminates */ - example_call_channel_terminate (self, 0, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE, - FUTURE_CALL_STATE_CHANGE_REASON_UNKNOWN, ""); - /* FIXME: is there an appropriate error? */ - } -} - -static gboolean -simulate_contact_ended_cb (gpointer p) -{ - ExampleCallChannel *self = p; - - /* if the call has been cancelled while we were waiting for the - * contact to do so, do nothing! */ - if (self->priv->call_state == FUTURE_CALL_STATE_ENDED) - return FALSE; - - g_message ("SIGNALLING: receive: call terminated: "); - - example_call_channel_terminate (self, self->priv->handle, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, ""); - - return FALSE; -} - -static gboolean -simulate_contact_answered_cb (gpointer p) -{ - ExampleCallChannel *self = p; - GHashTableIter iter; - gpointer v; - TpHandleRepoIface *contact_repo; - const gchar *peer; - - /* if the call has been cancelled while we were waiting for the - * contact to answer, do nothing! */ - if (self->priv->call_state == FUTURE_CALL_STATE_ENDED) - return FALSE; - - /* otherwise, we're waiting for a response from the contact, which now - * arrives */ - g_assert_cmpuint (self->priv->call_state, ==, FUTURE_CALL_STATE_RINGING); - - g_message ("SIGNALLING: receive: contact answered our call"); - - example_call_channel_set_state (self, - FUTURE_CALL_STATE_ACCEPTED, 0, self->priv->handle, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", - NULL); - - g_hash_table_iter_init (&iter, self->priv->contents); - - while (g_hash_table_iter_next (&iter, NULL, &v)) - { - ExampleCallStream *stream = example_call_content_get_stream (v); - - if (stream == NULL) - continue; - - /* remote contact accepts our proposed stream direction */ - example_call_stream_simulate_contact_agreed_to_send (stream); - } - - contact_repo = tp_base_connection_get_handles - (self->priv->conn, TP_HANDLE_TYPE_CONTACT); - peer = tp_handle_inspect (contact_repo, self->priv->handle); - - /* If the contact's ID contains the magic string "(terminate)", simulate - * them hanging up after a moment. */ - if (strstr (peer, "(terminate)") != NULL) - { - g_timeout_add_full (G_PRIORITY_DEFAULT, - self->priv->simulation_delay, - simulate_contact_ended_cb, g_object_ref (self), - g_object_unref); - } - - return FALSE; -} - -static gboolean -simulate_contact_busy_cb (gpointer p) -{ - ExampleCallChannel *self = p; - - /* if the call has been cancelled while we were waiting for the - * contact to answer, do nothing */ - if (self->priv->call_state == FUTURE_CALL_STATE_ENDED) - return FALSE; - - /* otherwise, we're waiting for a response from the contact, which now - * arrives */ - g_assert_cmpuint (self->priv->call_state, ==, FUTURE_CALL_STATE_RINGING); - - g_message ("SIGNALLING: receive: call terminated: "); - - example_call_channel_terminate (self, self->priv->handle, - TP_CHANNEL_GROUP_CHANGE_REASON_BUSY, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, - TP_ERROR_STR_BUSY); - - return FALSE; -} - -static ExampleCallContent * -example_call_channel_add_content (ExampleCallChannel *self, - TpMediaStreamType media_type, - gboolean locally_requested, - gboolean initial, - const gchar *requested_name, - GError **error) -{ - ExampleCallContent *content; - ExampleCallStream *stream; - guint id = self->priv->next_stream_id++; - const gchar *type_str; - TpHandle creator; - gchar *name; - gchar *path; - FutureCallContentDisposition disposition = - FUTURE_CALL_CONTENT_DISPOSITION_NONE; - guint i; - - type_str = (media_type == TP_MEDIA_STREAM_TYPE_AUDIO ? "audio" : "video"); - creator = self->priv->handle; - - /* an arbitrary limit much less than 2**32 means we don't use ridiculous - * amounts of memory, and also means @i can't wrap around when we use it to - * uniquify content names. */ - if (g_hash_table_size (self->priv->contents) > MAX_CONTENTS_PER_CALL) - { - g_set_error (error, TP_ERRORS, TP_ERROR_PERMISSION_DENIED, - "What are you doing with all those contents anyway?!"); - return NULL; - } - - if (tp_str_empty (requested_name)) - { - requested_name = type_str; - } - - for (i = 0; ; i++) - { - if (i == 0) - name = g_strdup (requested_name); - else - name = g_strdup_printf ("%s (%u)", requested_name, i); - - if (!g_hash_table_lookup_extended (self->priv->contents, name, - NULL, NULL)) - { - /* this name hasn't been used - good enough */ - break; - } - - g_free (name); - name = NULL; - } - - if (initial) - disposition = FUTURE_CALL_CONTENT_DISPOSITION_INITIAL; - - if (locally_requested) - { - g_message ("SIGNALLING: send: new %s stream %s", type_str, name); - creator = self->priv->conn->self_handle; - } - - path = g_strdup_printf ("%s/Content%u", self->priv->object_path, id); - content = g_object_new (EXAMPLE_TYPE_CALL_CONTENT, - "connection", self->priv->conn, - "creator", creator, - "type", media_type, - "name", name, - "disposition", disposition, - "object-path", path, - NULL); - - g_hash_table_insert (self->priv->contents, name, content); - future_svc_channel_type_call_emit_content_added (self, path); - g_free (path); - - path = g_strdup_printf ("%s/Stream%u", self->priv->object_path, id); - stream = g_object_new (EXAMPLE_TYPE_CALL_STREAM, - "connection", self->priv->conn, - "handle", self->priv->handle, - "locally-requested", locally_requested, - "object-path", path, - NULL); - - example_call_content_add_stream (content, stream); - g_free (path); - - tp_g_signal_connect_object (content, "streams-removed", - G_CALLBACK (streams_removed_cb), self, 0); - - return content; -} - -static gboolean -simulate_contact_ringing_cb (gpointer p) -{ - ExampleCallChannel *self = p; - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles - (self->priv->conn, TP_HANDLE_TYPE_CONTACT); - const gchar *peer; - GHashTable *uu_map = g_hash_table_new (NULL, NULL); - GHashTable *us_map = g_hash_table_new (NULL, NULL); - GArray *empty_au = g_array_sized_new (FALSE, FALSE, sizeof (guint), 0); - - /* ring, ring! */ - self->priv->peer_flags = FUTURE_CALL_MEMBER_FLAG_RINGING; - g_hash_table_insert (uu_map, GUINT_TO_POINTER (self->priv->handle), - GUINT_TO_POINTER (self->priv->peer_flags)); - g_hash_table_insert (us_map, GUINT_TO_POINTER (self->priv->handle), - (gpointer) tp_handle_inspect (contact_repo, self->priv->handle)); - future_svc_channel_type_call_emit_call_members_changed (self, - uu_map, us_map, empty_au, self->priv->call_state_reason); - g_hash_table_unref (uu_map); - g_array_unref (empty_au); - - - /* In this example there is no real contact, so just simulate them - * answering after a short time - unless the contact's name - * contains "(no answer)" or "(busy)" */ - - peer = tp_handle_inspect (contact_repo, self->priv->handle); - - if (strstr (peer, "(busy)") != NULL) - { - g_timeout_add_full (G_PRIORITY_DEFAULT, - self->priv->simulation_delay, - simulate_contact_busy_cb, g_object_ref (self), - g_object_unref); - } - else if (strstr (peer, "(no answer)") != NULL) - { - /* do nothing - the call just rings forever */ - } - else - { - g_timeout_add_full (G_PRIORITY_DEFAULT, - self->priv->simulation_delay, - simulate_contact_answered_cb, g_object_ref (self), - g_object_unref); - } - - return FALSE; -} - -static void -example_call_channel_initiate_outgoing (ExampleCallChannel *self) -{ - g_message ("SIGNALLING: send: new streamed media call"); - example_call_channel_set_state (self, - FUTURE_CALL_STATE_RINGING, 0, - tp_base_connection_get_self_handle (self->priv->conn), - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", - NULL); - - /* After a moment, we're sent an informational message saying it's ringing */ - g_timeout_add_full (G_PRIORITY_DEFAULT, - self->priv->simulation_delay, - simulate_contact_ringing_cb, g_object_ref (self), - g_object_unref); -} - -static void -call_set_ringing (FutureSvcChannelTypeCall *iface, - DBusGMethodInvocation *context) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); - GError *error = NULL; - - if (self->priv->locally_requested) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "Ringing() makes no sense on an outgoing call"); - goto finally; - } - - if (self->priv->call_state != FUTURE_CALL_STATE_RINGING) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_AVAILABLE, - "Ringing() makes no sense now that we're not pending receiver"); - goto finally; - } - - g_message ("SIGNALLING: send: ring, ring!"); - - example_call_channel_set_state (self, FUTURE_CALL_STATE_RINGING, - self->priv->call_flags | FUTURE_CALL_FLAG_LOCALLY_RINGING, - tp_base_connection_get_self_handle (self->priv->conn), - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", NULL); - -finally: - if (error == NULL) - { - future_svc_channel_type_call_return_from_set_ringing (context); - } - else - { - dbus_g_method_return_error (context, error); - g_error_free (error); - } -} - -static void -accept_incoming_call (ExampleCallChannel *self) -{ - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles - (self->priv->conn, TP_HANDLE_TYPE_CONTACT); - GHashTableIter iter; - gpointer v; - - g_assert_cmpint (self->priv->call_state, ==, FUTURE_CALL_STATE_RINGING); - - g_message ("SIGNALLING: send: Accepting incoming call from %s", - tp_handle_inspect (contact_repo, self->priv->handle)); - - example_call_channel_set_state (self, - FUTURE_CALL_STATE_ACCEPTED, 0, - tp_base_connection_get_self_handle (self->priv->conn), - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", - NULL); - - g_hash_table_iter_init (&iter, self->priv->contents); - - while (g_hash_table_iter_next (&iter, NULL, &v)) - { - ExampleCallStream *stream = example_call_content_get_stream (v); - guint disposition; - - g_object_get (v, - "disposition", &disposition, - NULL); - - if (stream == NULL || - disposition != FUTURE_CALL_CONTENT_DISPOSITION_INITIAL) - continue; - - /* we accept the proposed stream direction */ - example_call_stream_accept_proposed_direction (stream); - } -} - -static void -call_accept (FutureSvcChannelTypeCall *iface G_GNUC_UNUSED, - DBusGMethodInvocation *context) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); - - if (self->priv->locally_requested) - { - if (self->priv->call_state == FUTURE_CALL_STATE_PENDING_INITIATOR) - { - /* Take the contents we've already added, and make them happen */ - example_call_channel_initiate_outgoing (self); - - future_svc_channel_type_call_return_from_accept (context); - } - else if (self->priv->call_state == FUTURE_CALL_STATE_ENDED) - { - GError na = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, - "This call has already ended" }; - - dbus_g_method_return_error (context, &na); - } - else - { - GError na = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, - "This outgoing call has already been started" }; - - dbus_g_method_return_error (context, &na); - } - } - else - { - if (self->priv->call_state == FUTURE_CALL_STATE_RINGING) - { - accept_incoming_call (self); - future_svc_channel_type_call_return_from_accept (context); - } - else if (self->priv->call_state == FUTURE_CALL_STATE_ENDED) - { - GError na = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, - "This call has already ended" }; - - dbus_g_method_return_error (context, &na); - } - else - { - GError na = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, - "This incoming call has already been accepted" }; - - dbus_g_method_return_error (context, &na); - } - } -} - -static void -call_hangup (FutureSvcChannelTypeCall *iface, - guint reason, - const gchar *detailed_reason, - const gchar *message G_GNUC_UNUSED, - DBusGMethodInvocation *context) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); - - if (self->priv->call_state == FUTURE_CALL_STATE_ENDED) - { - GError na = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, - "This call has already ended" }; - - dbus_g_method_return_error (context, &na); - return; - } - else - { - example_call_channel_terminate (self, - tp_base_connection_get_self_handle (self->priv->conn), - TP_CHANNEL_GROUP_CHANGE_REASON_NONE, reason, detailed_reason); - future_svc_channel_type_call_return_from_hangup (context); - } -} - -static void -call_add_content (FutureSvcChannelTypeCall *iface, - const gchar *content_name, - guint content_type, - DBusGMethodInvocation *context) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); - GError *error = NULL; - gchar *content_path; - ExampleCallContent *content; - - switch (content_type) - { - case TP_MEDIA_STREAM_TYPE_AUDIO: - case TP_MEDIA_STREAM_TYPE_VIDEO: - break; - - default: - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "%u is not a supported Media_Stream_Type", content_type); - goto error; - } - - content = example_call_channel_add_content (self, content_type, TRUE, FALSE, - content_name, &error); - - if (content == NULL) - goto error; - - g_object_get (content, - "object-path", &content_path, - NULL); - future_svc_channel_type_call_return_from_add_content (context, - content_path); - g_free (content_path); - - return; - -error: - dbus_g_method_return_error (context, error); - g_error_free (error); -} - -static void -call_iface_init (gpointer iface, - gpointer data) -{ - FutureSvcChannelTypeCallClass *klass = iface; - -#define IMPLEMENT(x) \ - future_svc_channel_type_call_implement_##x (klass, call_##x) - IMPLEMENT (set_ringing); - IMPLEMENT (hangup); - IMPLEMENT (accept); - IMPLEMENT (add_content); -#undef IMPLEMENT -} - -static gboolean -simulate_hold (gpointer p) -{ - ExampleCallChannel *self = p; - - self->priv->hold_state = TP_LOCAL_HOLD_STATE_HELD; - g_message ("SIGNALLING: hold state changed to held"); - tp_svc_channel_interface_hold_emit_hold_state_changed (self, - self->priv->hold_state, self->priv->hold_state_reason); - - example_call_channel_set_state (self, self->priv->call_state, - self->priv->call_flags | FUTURE_CALL_FLAG_LOCALLY_HELD, - tp_base_connection_get_self_handle (self->priv->conn), - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", NULL); - - return FALSE; -} - -static gboolean -simulate_unhold (gpointer p) -{ - ExampleCallChannel *self = p; - - self->priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD; - g_message ("SIGNALLING: hold state changed to unheld"); - tp_svc_channel_interface_hold_emit_hold_state_changed (self, - self->priv->hold_state, self->priv->hold_state_reason); - - example_call_channel_set_state (self, self->priv->call_state, - self->priv->call_flags & ~FUTURE_CALL_FLAG_LOCALLY_HELD, - tp_base_connection_get_self_handle (self->priv->conn), - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", NULL); - - return FALSE; -} - -static gboolean -simulate_inability_to_unhold (gpointer p) -{ - ExampleCallChannel *self = p; - - self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_HOLD; - g_message ("SIGNALLING: unable to unhold - hold state changed to " - "pending hold"); - tp_svc_channel_interface_hold_emit_hold_state_changed (self, - self->priv->hold_state, self->priv->hold_state_reason); - /* hold again */ - g_timeout_add_full (G_PRIORITY_DEFAULT, - self->priv->simulation_delay, - simulate_hold, g_object_ref (self), - g_object_unref); - return FALSE; -} - -static void -hold_get_hold_state (TpSvcChannelInterfaceHold *iface, - DBusGMethodInvocation *context) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); - - tp_svc_channel_interface_hold_return_from_get_hold_state (context, - self->priv->hold_state, self->priv->hold_state_reason); -} - -static void -hold_request_hold (TpSvcChannelInterfaceHold *iface, - gboolean hold, - DBusGMethodInvocation *context) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles - (self->priv->conn, TP_HANDLE_TYPE_CONTACT); - GError *error = NULL; - const gchar *peer; - GSourceFunc callback; - - if ((hold && self->priv->hold_state == TP_LOCAL_HOLD_STATE_HELD) || - (!hold && self->priv->hold_state == TP_LOCAL_HOLD_STATE_UNHELD)) - { - tp_svc_channel_interface_hold_return_from_request_hold (context); - return; - } - - peer = tp_handle_inspect (contact_repo, self->priv->handle); - - if (!hold && strstr (peer, "(no unhold)") != NULL) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "unable to unhold"); - goto error; - } - - self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_REQUESTED; - - if (hold) - { - self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_HOLD; - callback = simulate_hold; - } - else - { - self->priv->hold_state = TP_LOCAL_HOLD_STATE_PENDING_UNHOLD; - - peer = tp_handle_inspect (contact_repo, self->priv->handle); - - if (strstr (peer, "(inability to unhold)") != NULL) - { - callback = simulate_inability_to_unhold; - } - else - { - callback = simulate_unhold; - } - } - - g_message ("SIGNALLING: hold state changed to pending %s", - (hold ? "hold" : "unhold")); - tp_svc_channel_interface_hold_emit_hold_state_changed (iface, - self->priv->hold_state, self->priv->hold_state_reason); - /* No need to change the call flags - we never change the actual hold state - * here, only the pending hold state */ - - g_timeout_add_full (G_PRIORITY_DEFAULT, - self->priv->simulation_delay, - callback, g_object_ref (self), - g_object_unref); - - tp_svc_channel_interface_hold_return_from_request_hold (context); - return; - -error: - dbus_g_method_return_error (context, error); - g_error_free (error); -} - - -void -hold_iface_init (gpointer iface, - gpointer data) -{ - TpSvcChannelInterfaceHoldClass *klass = iface; - -#define IMPLEMENT(x) \ - tp_svc_channel_interface_hold_implement_##x (klass, hold_##x) - IMPLEMENT (get_hold_state); - IMPLEMENT (request_hold); -#undef IMPLEMENT -} diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/call-channel.h telepathy-glib-0.17.5/examples/future/call-cm/call-channel.h --- telepathy-glib-0.17.4/examples/future/call-cm/call-channel.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/call-channel.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -/* - * call-channel.h - header for an example channel - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef EXAMPLE_CALL_CHANNEL_H -#define EXAMPLE_CALL_CHANNEL_H - -#include -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallChannel ExampleCallChannel; -typedef struct _ExampleCallChannelPrivate - ExampleCallChannelPrivate; - -typedef struct _ExampleCallChannelClass - ExampleCallChannelClass; -typedef struct _ExampleCallChannelClassPrivate - ExampleCallChannelClassPrivate; - -GType example_call_channel_get_type (void); - -#define EXAMPLE_TYPE_CALL_CHANNEL \ - (example_call_channel_get_type ()) -#define EXAMPLE_CALL_CHANNEL(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALL_CHANNEL, \ - ExampleCallChannel)) -#define EXAMPLE_CALL_CHANNEL_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALL_CHANNEL, \ - ExampleCallChannelClass)) -#define EXAMPLE_IS_CALL_CHANNEL(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALL_CHANNEL)) -#define EXAMPLE_IS_CALL_CHANNEL_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALL_CHANNEL)) -#define EXAMPLE_CALL_CHANNEL_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CHANNEL, \ - ExampleCallChannelClass)) - -struct _ExampleCallChannelClass { - GObjectClass parent_class; - TpDBusPropertiesMixinClass dbus_properties_class; - - ExampleCallChannelClassPrivate *priv; -}; - -struct _ExampleCallChannel { - GObject parent; - - ExampleCallChannelPrivate *priv; -}; - -void example_call_channel_disconnected (ExampleCallChannel *self); - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/call-content.c telepathy-glib-0.17.5/examples/future/call-cm/call-content.c --- telepathy-glib-0.17.4/examples/future/call-cm/call-content.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/call-content.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,390 +0,0 @@ -/* - * call-content.c - a content in a call. - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "call-content.h" - -#include -#include - -#include "extensions/extensions.h" - -G_DEFINE_TYPE_WITH_CODE (ExampleCallContent, - example_call_content, - G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, - tp_dbus_properties_mixin_iface_init); - /* no methods, so no vtable needed */ - G_IMPLEMENT_INTERFACE (FUTURE_TYPE_SVC_CALL_CONTENT, NULL)) - -enum -{ - PROP_OBJECT_PATH = 1, - PROP_CONNECTION, - PROP_INTERFACES, - PROP_NAME, - PROP_TYPE, - PROP_CREATOR, - PROP_DISPOSITION, - PROP_STREAM_PATHS, - N_PROPS -}; - -struct _ExampleCallContentPrivate -{ - gchar *object_path; - TpBaseConnection *conn; - gchar *name; - TpMediaStreamType type; - TpHandle creator; - FutureCallContentDisposition disposition; - ExampleCallStream *stream; -}; - -static void -example_call_content_init (ExampleCallContent *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - EXAMPLE_TYPE_CALL_CONTENT, - ExampleCallContentPrivate); -} - -static void -constructed (GObject *object) -{ - ExampleCallContent *self = EXAMPLE_CALL_CONTENT (object); - void (*chain_up) (GObject *) = - ((GObjectClass *) example_call_content_parent_class)->constructed; - TpHandleRepoIface *contact_repo; - - if (chain_up != NULL) - chain_up (object); - - tp_dbus_daemon_register_object ( - tp_base_connection_get_dbus_daemon (self->priv->conn), - self->priv->object_path, self); - - contact_repo = tp_base_connection_get_handles (self->priv->conn, - TP_HANDLE_TYPE_CONTACT); - tp_handle_ref (contact_repo, self->priv->creator); -} - -static const gchar * const empty_strv[] = { NULL }; - -static void -get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - ExampleCallContent *self = EXAMPLE_CALL_CONTENT (object); - - switch (property_id) - { - case PROP_OBJECT_PATH: - g_value_set_string (value, self->priv->object_path); - break; - - case PROP_CONNECTION: - g_value_set_object (value, self->priv->conn); - break; - - case PROP_INTERFACES: - g_value_set_static_boxed (value, empty_strv); - break; - - case PROP_NAME: - g_value_set_string (value, self->priv->name); - break; - - case PROP_CREATOR: - g_value_set_uint (value, self->priv->creator); - break; - - case PROP_TYPE: - g_value_set_uint (value, self->priv->type); - break; - - case PROP_DISPOSITION: - g_value_set_uint (value, self->priv->disposition); - break; - - case PROP_STREAM_PATHS: - { - GPtrArray *paths = g_ptr_array_sized_new (1); - - if (self->priv->stream != NULL) - { - gchar *path; - - g_object_get (self->priv->stream, - "object-path", &path, - NULL); - - g_ptr_array_add (paths, path); - } - - g_value_take_boxed (value, paths); - } - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - ExampleCallContent *self = EXAMPLE_CALL_CONTENT (object); - - switch (property_id) - { - case PROP_OBJECT_PATH: - g_assert (self->priv->object_path == NULL); /* construct-only */ - self->priv->object_path = g_value_dup_string (value); - break; - - case PROP_CONNECTION: - g_assert (self->priv->conn == NULL); - self->priv->conn = g_value_dup_object (value); - break; - - case PROP_CREATOR: - /* we don't ref it here because we don't necessarily have access to the - * contact repo yet - instead we ref it in the constructor. - */ - g_assert (self->priv->creator == 0); /* construct-only */ - self->priv->creator = g_value_get_uint (value); - break; - - case PROP_NAME: - g_assert (self->priv->name == NULL); /* construct-only */ - self->priv->name = g_value_dup_string (value); - break; - - case PROP_TYPE: - self->priv->type = g_value_get_uint (value); - break; - - case PROP_DISPOSITION: - self->priv->disposition = g_value_get_uint (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -dispose (GObject *object) -{ - ExampleCallContent *self = EXAMPLE_CALL_CONTENT (object); - - if (self->priv->stream != NULL) - { - g_object_unref (self->priv->stream); - self->priv->stream = NULL; - } - - if (self->priv->conn != NULL) - { - TpHandleRepoIface *contact_handles = tp_base_connection_get_handles - (self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - tp_handle_unref (contact_handles, self->priv->creator); - self->priv->creator = 0; - - g_object_unref (self->priv->conn); - self->priv->conn = NULL; - } - - ((GObjectClass *) example_call_content_parent_class)->dispose (object); -} - -static void -finalize (GObject *object) -{ - ExampleCallContent *self = EXAMPLE_CALL_CONTENT (object); - void (*chain_up) (GObject *) = - ((GObjectClass *) example_call_content_parent_class)->finalize; - - g_free (self->priv->object_path); - g_free (self->priv->name); - - if (chain_up != NULL) - chain_up (object); -} - -static void -example_call_content_class_init (ExampleCallContentClass *klass) -{ - static TpDBusPropertiesMixinPropImpl content_props[] = { - { "Name", "name", NULL }, - { "Interfaces", "interfaces", NULL }, - { "Type", "type", NULL }, - { "Disposition", "disposition", NULL }, - { "Streams", "stream-paths", NULL }, - { NULL } - }; - static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { - { FUTURE_IFACE_CALL_CONTENT, - tp_dbus_properties_mixin_getter_gobject_properties, - NULL, - content_props, - }, - { NULL } - }; - GObjectClass *object_class = (GObjectClass *) klass; - GParamSpec *param_spec; - - g_type_class_add_private (klass, - sizeof (ExampleCallContentPrivate)); - - object_class->constructed = constructed; - object_class->set_property = set_property; - object_class->get_property = get_property; - object_class->dispose = dispose; - object_class->finalize = finalize; - - param_spec = g_param_spec_string ("object-path", "D-Bus object path", - "The D-Bus object path used for this object on the bus.", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_OBJECT_PATH, param_spec); - - param_spec = g_param_spec_object ("connection", "TpBaseConnection", - "Connection that owns this content", - TP_TYPE_BASE_CONNECTION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); - - param_spec = g_param_spec_uint ("type", "TpMediaStreamType", - "Media stream type", - 0, NUM_TP_MEDIA_STREAM_TYPES - 1, 0, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_TYPE, param_spec); - - param_spec = g_param_spec_uint ("disposition", - "FutureCallContentDisposition", - "Disposition of the content", - 0, NUM_FUTURE_CALL_CONTENT_DISPOSITIONS - 1, - FUTURE_CALL_CONTENT_DISPOSITION_NONE, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_DISPOSITION, param_spec); - - param_spec = g_param_spec_uint ("creator", "Creator's handle", - "The contact who initiated this content", - 0, G_MAXUINT32, 0, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CREATOR, param_spec); - - param_spec = g_param_spec_string ("name", "Content name", - "The name of the content", - NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_NAME, param_spec); - - param_spec = g_param_spec_boxed ("stream-paths", "Stream paths", - "Streams' object paths", - TP_ARRAY_TYPE_OBJECT_PATH_LIST, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_STREAM_PATHS, - param_spec); - - param_spec = g_param_spec_boxed ("interfaces", "Interfaces", - "List of D-Bus interfaces", - G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); - - klass->dbus_properties_class.interfaces = prop_interfaces; - tp_dbus_properties_mixin_class_init (object_class, - G_STRUCT_OFFSET (ExampleCallContentClass, - dbus_properties_class)); -} - -ExampleCallStream * -example_call_content_get_stream (ExampleCallContent *self) -{ - g_return_val_if_fail (EXAMPLE_IS_CALL_CONTENT (self), NULL); - return self->priv->stream; -} - -static void -example_call_content_stream_removed_cb (ExampleCallContent *self, - ExampleCallStream *stream) -{ - GPtrArray *paths; - gchar *path; - GValueArray *reason; - - g_return_if_fail (EXAMPLE_IS_CALL_CONTENT (self)); - g_return_if_fail (EXAMPLE_IS_CALL_STREAM (stream)); - g_return_if_fail (self->priv->stream == stream); - - g_object_get (stream, - "object-path", &path, - NULL); - paths = g_ptr_array_sized_new (1); - g_ptr_array_add (paths, path); - reason = tp_value_array_build (4, - G_TYPE_UINT, 0, - G_TYPE_UINT, FUTURE_CALL_STATE_CHANGE_REASON_UNKNOWN, - G_TYPE_STRING, "", - G_TYPE_STRING, "", - G_TYPE_INVALID); - future_svc_call_content_emit_streams_removed (self, paths, reason); - g_free (path); - g_ptr_array_unref (paths); - g_value_array_free (reason); - - g_object_unref (self->priv->stream); - self->priv->stream = NULL; -} - -void -example_call_content_add_stream (ExampleCallContent *self, - ExampleCallStream *stream) -{ - GPtrArray *paths; - gchar *path; - - g_return_if_fail (EXAMPLE_IS_CALL_CONTENT (self)); - g_return_if_fail (EXAMPLE_IS_CALL_STREAM (stream)); - g_return_if_fail (self->priv->stream == NULL); - - self->priv->stream = g_object_ref (stream); - g_object_get (stream, - "object-path", &path, - NULL); - paths = g_ptr_array_sized_new (1); - g_ptr_array_add (paths, path); - future_svc_call_content_emit_streams_added (self, paths); - g_free (path); - g_ptr_array_unref (paths); - - tp_g_signal_connect_object (stream, "removed", - G_CALLBACK (example_call_content_stream_removed_cb), self, - G_CONNECT_SWAPPED); -} diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/call-content.h telepathy-glib-0.17.5/examples/future/call-cm/call-content.h --- telepathy-glib-0.17.4/examples/future/call-cm/call-content.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/call-content.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -/* - * call-content.h - header for an example content - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef EXAMPLE_CALL_CONTENT_H -#define EXAMPLE_CALL_CONTENT_H - -#include - -#include - -#include "call-stream.h" - -G_BEGIN_DECLS - -typedef struct _ExampleCallContent ExampleCallContent; -typedef struct _ExampleCallContentPrivate - ExampleCallContentPrivate; - -typedef struct _ExampleCallContentClass - ExampleCallContentClass; -typedef struct _ExampleCallContentClassPrivate - ExampleCallContentClassPrivate; - -GType example_call_content_get_type (void); - -#define EXAMPLE_TYPE_CALL_CONTENT \ - (example_call_content_get_type ()) -#define EXAMPLE_CALL_CONTENT(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALL_CONTENT, \ - ExampleCallContent)) -#define EXAMPLE_CALL_CONTENT_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALL_CONTENT, \ - ExampleCallContentClass)) -#define EXAMPLE_IS_CALL_CONTENT(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALL_CONTENT)) -#define EXAMPLE_IS_CALL_CONTENT_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALL_CONTENT)) -#define EXAMPLE_CALL_CONTENT_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CONTENT, \ - ExampleCallContentClass)) - -struct _ExampleCallContentClass { - GObjectClass parent_class; - TpDBusPropertiesMixinClass dbus_properties_class; - - ExampleCallContentClassPrivate *priv; -}; - -struct _ExampleCallContent { - GObject parent; - - ExampleCallContentPrivate *priv; -}; - -/* In this example, each content can only have one stream. */ -ExampleCallStream *example_call_content_get_stream (ExampleCallContent *self); - -void example_call_content_add_stream (ExampleCallContent *self, - ExampleCallStream *stream); - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/call-manager.c telepathy-glib-0.17.5/examples/future/call-cm/call-manager.c --- telepathy-glib-0.17.4/examples/future/call-cm/call-manager.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/call-manager.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,537 +0,0 @@ -/* - * call-manager.c - an example channel manager for Call channels. - * - * This channel manager emulates a protocol like XMPP Jingle, where you can - * make several simultaneous calls to the same or different contacts. - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "call-manager.h" - -#include - -#include -#include -#include -#include -#include - -#include "extensions/extensions.h" - -#include "call-channel.h" - -static void channel_manager_iface_init (gpointer, gpointer); - -G_DEFINE_TYPE_WITH_CODE (ExampleCallManager, - example_call_manager, - G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (TP_TYPE_CHANNEL_MANAGER, - channel_manager_iface_init)) - -/* type definition stuff */ - -enum -{ - PROP_CONNECTION = 1, - PROP_SIMULATION_DELAY, - N_PROPS -}; - -struct _ExampleCallManagerPrivate -{ - TpBaseConnection *conn; - guint simulation_delay; - - /* Map from reffed ExampleCallChannel to the same pointer; used as a - * set. - */ - GHashTable *channels; - - /* Next channel will be ("CallChannel%u", next_channel_index) */ - guint next_channel_index; - - gulong status_changed_id; - gulong available_id; -}; - -static void -example_call_manager_init (ExampleCallManager *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - EXAMPLE_TYPE_CALL_MANAGER, - ExampleCallManagerPrivate); - - self->priv->conn = NULL; - self->priv->channels = g_hash_table_new_full (NULL, NULL, g_object_unref, - NULL); - self->priv->status_changed_id = 0; - self->priv->available_id = 0; -} - -static void -example_call_manager_close_all (ExampleCallManager *self) -{ - if (self->priv->channels != NULL) - { - GHashTable *tmp = self->priv->channels; - GHashTableIter iter; - gpointer v; - - self->priv->channels = NULL; - - g_hash_table_iter_init (&iter, tmp); - - while (g_hash_table_iter_next (&iter, NULL, &v)) - example_call_channel_disconnected (v); - - g_hash_table_unref (tmp); - } - - if (self->priv->available_id != 0) - { - g_signal_handler_disconnect (self->priv->conn, - self->priv->available_id); - self->priv->available_id = 0; - } - - if (self->priv->status_changed_id != 0) - { - g_signal_handler_disconnect (self->priv->conn, - self->priv->status_changed_id); - self->priv->status_changed_id = 0; - } -} - -static void -dispose (GObject *object) -{ - ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); - - example_call_manager_close_all (self); - g_assert (self->priv->channels == NULL); - - ((GObjectClass *) example_call_manager_parent_class)->dispose ( - object); -} - -static void -get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); - - switch (property_id) - { - case PROP_CONNECTION: - g_value_set_object (value, self->priv->conn); - break; - - case PROP_SIMULATION_DELAY: - g_value_set_uint (value, self->priv->simulation_delay); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - } -} - -static void -set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); - - switch (property_id) - { - case PROP_CONNECTION: - /* We don't ref the connection, because it owns a reference to the - * channel manager, and it guarantees that the manager's lifetime is - * less than its lifetime */ - self->priv->conn = g_value_get_object (value); - break; - - case PROP_SIMULATION_DELAY: - self->priv->simulation_delay = g_value_get_uint (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - } -} - -static void -status_changed_cb (TpBaseConnection *conn, - guint status, - guint reason, - ExampleCallManager *self) -{ - switch (status) - { - case TP_CONNECTION_STATUS_DISCONNECTED: - { - example_call_manager_close_all (self); - } - break; - - default: - break; - } -} - -static ExampleCallChannel *new_channel (ExampleCallManager *self, - TpHandle handle, TpHandle initiator, gpointer request_token, - gboolean initial_audio, gboolean initial_video); - -static gboolean -simulate_incoming_call_cb (gpointer p) -{ - ExampleCallManager *self = p; - TpHandleRepoIface *contact_repo; - TpHandle caller; - - /* do nothing if we've been disconnected while waiting for the contact to - * call us */ - if (self->priv->available_id == 0) - return FALSE; - - /* We're called by someone whose ID on the IM service is "caller" */ - contact_repo = tp_base_connection_get_handles (self->priv->conn, - TP_HANDLE_TYPE_CONTACT); - caller = tp_handle_ensure (contact_repo, "caller", NULL, NULL); - - new_channel (self, caller, caller, NULL, TRUE, FALSE); - - return FALSE; -} - -/* Whenever our presence changes from away to available, and whenever our - * presence message changes while remaining available, simulate a call from - * a contact */ -static void -available_cb (GObject *conn G_GNUC_UNUSED, - const gchar *message, - ExampleCallManager *self) -{ - g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, - simulate_incoming_call_cb, g_object_ref (self), g_object_unref); -} - -static void -constructed (GObject *object) -{ - ExampleCallManager *self = EXAMPLE_CALL_MANAGER (object); - void (*chain_up) (GObject *) = - ((GObjectClass *) example_call_manager_parent_class)->constructed; - - if (chain_up != NULL) - { - chain_up (object); - } - - self->priv->status_changed_id = g_signal_connect (self->priv->conn, - "status-changed", (GCallback) status_changed_cb, self); - - self->priv->available_id = g_signal_connect (self->priv->conn, - "available", (GCallback) available_cb, self); -} - -static void -example_call_manager_class_init (ExampleCallManagerClass *klass) -{ - GParamSpec *param_spec; - GObjectClass *object_class = (GObjectClass *) klass; - - object_class->constructed = constructed; - object_class->dispose = dispose; - object_class->get_property = get_property; - object_class->set_property = set_property; - - param_spec = g_param_spec_object ("connection", "Connection object", - "The connection that owns this channel manager", - TP_TYPE_BASE_CONNECTION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); - - param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", - "Delay between simulated network events", - 0, G_MAXUINT32, 1000, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, - param_spec); - - g_type_class_add_private (klass, - sizeof (ExampleCallManagerPrivate)); -} - -static void -example_call_manager_foreach_channel (TpChannelManager *iface, - TpExportableChannelFunc callback, - gpointer user_data) -{ - ExampleCallManager *self = EXAMPLE_CALL_MANAGER (iface); - GHashTableIter iter; - gpointer chan; - - g_hash_table_iter_init (&iter, self->priv->channels); - - while (g_hash_table_iter_next (&iter, &chan, NULL)) - callback (chan, user_data); -} - -static void -channel_closed_cb (ExampleCallChannel *chan, - ExampleCallManager *self) -{ - tp_channel_manager_emit_channel_closed_for_object (self, - TP_EXPORTABLE_CHANNEL (chan)); - - if (self->priv->channels != NULL) - g_hash_table_remove (self->priv->channels, chan); -} - -static ExampleCallChannel * -new_channel (ExampleCallManager *self, - TpHandle handle, - TpHandle initiator, - gpointer request_token, - gboolean initial_audio, - gboolean initial_video) -{ - ExampleCallChannel *chan; - gchar *object_path; - GSList *requests = NULL; - - /* FIXME: This could potentially wrap around, but only after 4 billion - * calls, which is probably plenty. */ - object_path = g_strdup_printf ("%s/CallChannel%u", - self->priv->conn->object_path, self->priv->next_channel_index++); - - chan = g_object_new (EXAMPLE_TYPE_CALL_CHANNEL, - "connection", self->priv->conn, - "object-path", object_path, - "handle", handle, - "initiator-handle", initiator, - "requested", (self->priv->conn->self_handle == initiator), - "simulation-delay", self->priv->simulation_delay, - "initial-audio", initial_audio, - "initial-video", initial_video, - NULL); - - g_free (object_path); - - g_signal_connect (chan, "closed", G_CALLBACK (channel_closed_cb), self); - - g_hash_table_insert (self->priv->channels, chan, chan); - - if (request_token != NULL) - requests = g_slist_prepend (requests, request_token); - - tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan), - requests); - g_slist_free (requests); - - return chan; -} - -static const gchar * const audio_fixed_properties[] = { - TP_PROP_CHANNEL_CHANNEL_TYPE, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, - FUTURE_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, - NULL -}; - -static const gchar * const video_fixed_properties[] = { - TP_PROP_CHANNEL_CHANNEL_TYPE, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, - FUTURE_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, - NULL -}; - -static const gchar * const audio_allowed_properties[] = { - TP_PROP_CHANNEL_TARGET_HANDLE, - TP_PROP_CHANNEL_TARGET_ID, - FUTURE_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, - NULL -}; - -static const gchar * const video_allowed_properties[] = { - TP_PROP_CHANNEL_TARGET_HANDLE, - TP_PROP_CHANNEL_TARGET_ID, - FUTURE_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, - NULL -}; - -static void -example_call_manager_type_foreach_channel_class (GType type, - TpChannelManagerTypeChannelClassFunc func, - gpointer user_data) -{ - GHashTable *table = tp_asv_new ( - TP_PROP_CHANNEL_CHANNEL_TYPE, - G_TYPE_STRING, FUTURE_IFACE_CHANNEL_TYPE_CALL, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, - FUTURE_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, G_TYPE_BOOLEAN, TRUE, - NULL); - - func (type, table, audio_allowed_properties, user_data); - - g_hash_table_remove (table, FUTURE_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO); - tp_asv_set_boolean (table, FUTURE_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, - TRUE); - - func (type, table, video_allowed_properties, user_data); - - g_hash_table_unref (table); -} - -static gboolean -example_call_manager_request (ExampleCallManager *self, - gpointer request_token, - GHashTable *request_properties, - gboolean require_new) -{ - TpHandle handle; - GError *error = NULL; - gboolean initial_audio, initial_video; - - if (tp_strdiff (tp_asv_get_string (request_properties, - TP_PROP_CHANNEL_CHANNEL_TYPE), - FUTURE_IFACE_CHANNEL_TYPE_CALL)) - { - return FALSE; - } - - if (tp_asv_get_uint32 (request_properties, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL) != TP_HANDLE_TYPE_CONTACT) - { - return FALSE; - } - - handle = tp_asv_get_uint32 (request_properties, - TP_PROP_CHANNEL_TARGET_HANDLE, NULL); - g_assert (handle != 0); - - initial_audio = tp_asv_get_boolean (request_properties, - FUTURE_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, NULL); - initial_video = tp_asv_get_boolean (request_properties, - FUTURE_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, NULL); - - if (!initial_audio && !initial_video) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_IMPLEMENTED, - "Call channels must initially have either audio or video content"); - goto error; - } - - /* the set of (fixed | allowed) properties is the same for audio and video, - * so we only need to check with one set */ - if (tp_channel_manager_asv_has_unknown_properties (request_properties, - audio_fixed_properties, audio_allowed_properties, &error)) - { - goto error; - } - - if (handle == self->priv->conn->self_handle) - { - /* In protocols with a concept of multiple "resources" signed in to - * one account (XMPP, and possibly MSN) it is technically possible to - * call yourself - e.g. if you're signed in on two PCs, you can call one - * from the other. For simplicity, this example simulates a protocol - * where this is not the case. - */ - g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_IMPLEMENTED, - "In this protocol, you can't call yourself"); - goto error; - } - - if (!require_new) - { - /* see if we're already calling that handle */ - GHashTableIter iter; - gpointer chan; - - g_hash_table_iter_init (&iter, self->priv->channels); - - while (g_hash_table_iter_next (&iter, &chan, NULL)) - { - guint its_handle; - - g_object_get (chan, - "handle", &its_handle, - NULL); - - if (its_handle == handle) - { - tp_channel_manager_emit_request_already_satisfied (self, - request_token, TP_EXPORTABLE_CHANNEL (chan)); - return TRUE; - } - } - } - - new_channel (self, handle, self->priv->conn->self_handle, request_token, - initial_audio, initial_video); - return TRUE; - -error: - tp_channel_manager_emit_request_failed (self, request_token, - error->domain, error->code, error->message); - g_error_free (error); - return TRUE; -} - -static gboolean -example_call_manager_create_channel (TpChannelManager *manager, - gpointer request_token, - GHashTable *request_properties) -{ - return example_call_manager_request ( - EXAMPLE_CALL_MANAGER (manager), - request_token, request_properties, TRUE); -} - -static gboolean -example_call_manager_ensure_channel (TpChannelManager *manager, - gpointer request_token, - GHashTable *request_properties) -{ - return example_call_manager_request ( - EXAMPLE_CALL_MANAGER (manager), - request_token, request_properties, FALSE); -} - -static void -channel_manager_iface_init (gpointer g_iface, - gpointer iface_data G_GNUC_UNUSED) -{ - TpChannelManagerIface *iface = g_iface; - - iface->foreach_channel = example_call_manager_foreach_channel; - iface->type_foreach_channel_class = - example_call_manager_type_foreach_channel_class; - iface->create_channel = example_call_manager_create_channel; - iface->ensure_channel = example_call_manager_ensure_channel; - /* In this channel manager, RequestChannel is not supported; Call is not - * designed to work with the old RequestChannel API. */ - iface->request_channel = NULL; -} diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/call-manager.h telepathy-glib-0.17.5/examples/future/call-cm/call-manager.h --- telepathy-glib-0.17.4/examples/future/call-cm/call-manager.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/call-manager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -/* - * media-manager.h - header for an example channel manager - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef EXAMPLE_CALL_MANAGER_H -#define EXAMPLE_CALL_MANAGER_H - -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallManager ExampleCallManager; -typedef struct _ExampleCallManagerPrivate - ExampleCallManagerPrivate; - -typedef struct _ExampleCallManagerClass - ExampleCallManagerClass; -typedef struct _ExampleCallManagerClassPrivate - ExampleCallManagerClassPrivate; - -struct _ExampleCallManagerClass { - GObjectClass parent_class; - - ExampleCallManagerClassPrivate *priv; -}; - -struct _ExampleCallManager { - GObject parent; - - ExampleCallManagerPrivate *priv; -}; - -GType example_call_manager_get_type (void); - -/* TYPE MACROS */ -#define EXAMPLE_TYPE_CALL_MANAGER \ - (example_call_manager_get_type ()) -#define EXAMPLE_CALL_MANAGER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALL_MANAGER, \ - ExampleCallManager)) -#define EXAMPLE_CALL_MANAGER_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALL_MANAGER, \ - ExampleCallManagerClass)) -#define EXAMPLE_IS_CALL_MANAGER(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALL_MANAGER)) -#define EXAMPLE_IS_CALL_MANAGER_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALL_MANAGER)) -#define EXAMPLE_CALL_MANAGER_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_MANAGER, \ - ExampleCallManagerClass)) - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/call-stream.c telepathy-glib-0.17.5/examples/future/call-cm/call-stream.c --- telepathy-glib-0.17.4/examples/future/call-cm/call-stream.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/call-stream.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,773 +0,0 @@ -/* - * call-stream.c - a stream in a call. - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "call-stream.h" - -#include -#include - -#include "extensions/extensions.h" - -static void stream_iface_init (gpointer, gpointer); - -G_DEFINE_TYPE_WITH_CODE (ExampleCallStream, - example_call_stream, - G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, - tp_dbus_properties_mixin_iface_init); - G_IMPLEMENT_INTERFACE (FUTURE_TYPE_SVC_CALL_STREAM, stream_iface_init)) - -enum -{ - PROP_OBJECT_PATH = 1, - PROP_CONNECTION, - PROP_INTERFACES, - PROP_HANDLE, - PROP_SIMULATION_DELAY, - PROP_LOCALLY_REQUESTED, - PROP_LOCAL_SENDING_STATE, - PROP_REMOTE_MEMBERS, - PROP_REMOTE_MEMBER_IDENTIFIERS, - N_PROPS -}; - -enum -{ - SIGNAL_REMOVED, - N_SIGNALS -}; - -static guint signals[N_SIGNALS] = { 0 }; - -struct _ExampleCallStreamPrivate -{ - gchar *object_path; - TpBaseConnection *conn; - TpHandle handle; - FutureSendingState local_sending_state; - FutureSendingState remote_sending_state; - - guint simulation_delay; - - guint connected_event_id; - - gboolean locally_requested; - gboolean removed; -}; - -static void -example_call_stream_init (ExampleCallStream *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - EXAMPLE_TYPE_CALL_STREAM, - ExampleCallStreamPrivate); - - /* start off directionless */ - self->priv->local_sending_state = FUTURE_SENDING_STATE_NONE; - self->priv->remote_sending_state = FUTURE_SENDING_STATE_NONE; -} - -static void example_call_stream_receive_direction_request ( - ExampleCallStream *self, gboolean local_send, gboolean remote_send); -static void example_call_stream_change_direction (ExampleCallStream *self, - gboolean want_to_send, gboolean want_to_receive); - -static void -constructed (GObject *object) -{ - ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); - void (*chain_up) (GObject *) = - ((GObjectClass *) example_call_stream_parent_class)->constructed; - - if (chain_up != NULL) - chain_up (object); - - tp_dbus_daemon_register_object ( - tp_base_connection_get_dbus_daemon (self->priv->conn), - self->priv->object_path, self); - - if (self->priv->locally_requested) - { - example_call_stream_change_direction (self, TRUE, TRUE); - } - else - { - example_call_stream_receive_direction_request (self, TRUE, TRUE); - } - - if (self->priv->handle != 0) - { - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( - self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - tp_handle_ref (contact_repo, self->priv->handle); - } -} - -static const gchar * const empty_strv[] = { NULL }; - -static void -get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); - - switch (property_id) - { - case PROP_OBJECT_PATH: - g_value_set_string (value, self->priv->object_path); - break; - - case PROP_INTERFACES: - g_value_set_static_boxed (value, empty_strv); - break; - - case PROP_HANDLE: - g_value_set_uint (value, self->priv->handle); - break; - - case PROP_CONNECTION: - g_value_set_object (value, self->priv->conn); - break; - - case PROP_SIMULATION_DELAY: - g_value_set_uint (value, self->priv->simulation_delay); - break; - - case PROP_LOCALLY_REQUESTED: - g_value_set_boolean (value, self->priv->locally_requested); - break; - - case PROP_REMOTE_MEMBERS: - { - GHashTable *members = g_hash_table_new (NULL, NULL); - - g_hash_table_insert (members, GUINT_TO_POINTER (self->priv->handle), - GUINT_TO_POINTER (self->priv->remote_sending_state)); - - g_value_take_boxed (value, members); - } - break; - - case PROP_REMOTE_MEMBER_IDENTIFIERS: - { - GHashTable *identifiers = g_hash_table_new (NULL, NULL); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( - self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - g_hash_table_insert (identifiers, GUINT_TO_POINTER (self->priv->handle), - (gpointer) tp_handle_inspect (contact_repo, self->priv->handle)); - - g_value_take_boxed (value, identifiers); - } - break; - - case PROP_LOCAL_SENDING_STATE: - g_value_set_uint (value, self->priv->local_sending_state); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); - - switch (property_id) - { - case PROP_OBJECT_PATH: - g_assert (self->priv->object_path == NULL); /* construct-only */ - self->priv->object_path = g_value_dup_string (value); - break; - - case PROP_HANDLE: - self->priv->handle = g_value_get_uint (value); - break; - - case PROP_CONNECTION: - g_assert (self->priv->conn == NULL); - self->priv->conn = g_value_dup_object (value); - break; - - case PROP_SIMULATION_DELAY: - self->priv->simulation_delay = g_value_get_uint (value); - break; - - case PROP_LOCALLY_REQUESTED: - self->priv->locally_requested = g_value_get_boolean (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void -dispose (GObject *object) -{ - ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( - self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - example_call_stream_close (self); - - if (self->priv->handle != 0) - { - tp_handle_unref (contact_repo, self->priv->handle); - self->priv->handle = 0; - } - - if (self->priv->conn != NULL) - { - g_object_unref (self->priv->conn); - self->priv->conn = NULL; - } - - ((GObjectClass *) example_call_stream_parent_class)->dispose (object); -} - -static void -finalize (GObject *object) -{ - ExampleCallStream *self = EXAMPLE_CALL_STREAM (object); - void (*chain_up) (GObject *) = - ((GObjectClass *) example_call_stream_parent_class)->finalize; - - g_free (self->priv->object_path); - - if (chain_up != NULL) - chain_up (object); -} - -static void -example_call_stream_class_init (ExampleCallStreamClass *klass) -{ - static TpDBusPropertiesMixinPropImpl stream_props[] = { - { "RemoteMemberIdentifiers", "remote-member-identifiers", NULL }, - { "LocalSendingState", "local-sending-state", NULL }, - { "RemoteMembers", "remote-members", NULL }, - { "Interfaces", "interfaces", NULL }, - { NULL } - }; - static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { - { FUTURE_IFACE_CALL_STREAM, - tp_dbus_properties_mixin_getter_gobject_properties, - NULL, - stream_props, - }, - { NULL } - }; - GObjectClass *object_class = (GObjectClass *) klass; - GParamSpec *param_spec; - - g_type_class_add_private (klass, - sizeof (ExampleCallStreamPrivate)); - - object_class->constructed = constructed; - object_class->set_property = set_property; - object_class->get_property = get_property; - object_class->dispose = dispose; - object_class->finalize = finalize; - - param_spec = g_param_spec_string ("object-path", "D-Bus object path", - "The D-Bus object path used for this object on the bus.", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_OBJECT_PATH, param_spec); - - param_spec = g_param_spec_object ("connection", "TpBaseConnection", - "Connection that (indirectly) owns this stream", - TP_TYPE_BASE_CONNECTION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); - - param_spec = g_param_spec_uint ("handle", "Peer's TpHandle", - "The handle with which this stream communicates or 0 if not applicable", - 0, G_MAXUINT32, 0, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_HANDLE, param_spec); - - param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", - "Delay between simulated network events", - 0, G_MAXUINT32, 1000, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, - param_spec); - - param_spec = g_param_spec_boxed ("remote-member-identifiers", "RemoteMemberIdentifiers", - "Map from contact handles to their identifiers", - TP_HASH_TYPE_HANDLE_IDENTIFIER_MAP, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_REMOTE_MEMBER_IDENTIFIERS, - param_spec); - - param_spec = g_param_spec_boolean ("locally-requested", "Locally requested?", - "True if this channel was requested by the local user", - FALSE, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_LOCALLY_REQUESTED, - param_spec); - - param_spec = g_param_spec_boxed ("remote-members", "RemoteMembers", - "Map from contact handles to their sending states", - FUTURE_HASH_TYPE_CONTACT_SENDING_STATE_MAP, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_REMOTE_MEMBERS, - param_spec); - - param_spec = g_param_spec_boxed ("interfaces", "Interfaces", - "List of D-Bus interfaces", - G_TYPE_STRV, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); - - param_spec = g_param_spec_uint ("local-sending-state", "LocalSendingState", - "Local sending state", - 0, NUM_FUTURE_SENDING_STATES, FUTURE_SENDING_STATE_NONE, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_LOCAL_SENDING_STATE, - param_spec); - - signals[SIGNAL_REMOVED] = g_signal_new ("removed", - G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - klass->dbus_properties_class.interfaces = prop_interfaces; - tp_dbus_properties_mixin_class_init (object_class, - G_STRUCT_OFFSET (ExampleCallStreamClass, - dbus_properties_class)); -} - -void -example_call_stream_close (ExampleCallStream *self) -{ - if (!self->priv->removed) - { - self->priv->removed = TRUE; - - g_message ("%s: Sending to server: Closing stream", - self->priv->object_path); - - if (self->priv->connected_event_id != 0) - { - g_source_remove (self->priv->connected_event_id); - } - - /* this has to come last, because the MediaChannel may unref us in - * response to the removed signal */ - g_signal_emit (self, signals[SIGNAL_REMOVED], 0); - } -} - -void -example_call_stream_accept_proposed_direction (ExampleCallStream *self) -{ - GValueArray *reason; - - if (self->priv->removed || - self->priv->local_sending_state != FUTURE_SENDING_STATE_PENDING_SEND) - return; - - g_message ("%s: SIGNALLING: Sending to server: OK, I'll send you media", - self->priv->object_path); - - self->priv->local_sending_state = FUTURE_SENDING_STATE_SENDING; - reason = tp_value_array_build (4, - G_TYPE_UINT, 0, - G_TYPE_UINT, FUTURE_CALL_STATE_CHANGE_REASON_UNKNOWN, - G_TYPE_STRING, "", - G_TYPE_STRING, "", - G_TYPE_INVALID); - future_svc_call_stream_emit_local_sending_state_changed (self, - self->priv->local_sending_state, reason); - g_value_array_free (reason); -} - -void -example_call_stream_simulate_contact_agreed_to_send (ExampleCallStream *self) -{ - GHashTable *updated_members, *identifiers; - GArray *removed_members; - GValueArray *reason; - TpHandleRepoIface *contact_handles; - - if (self->priv->removed || - self->priv->remote_sending_state != FUTURE_SENDING_STATE_PENDING_SEND) - return; - - contact_handles = tp_base_connection_get_handles ( - self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - g_message ("%s: SIGNALLING: received: OK, I'll send you media", - self->priv->object_path); - - self->priv->remote_sending_state = FUTURE_SENDING_STATE_SENDING; - - updated_members = g_hash_table_new (NULL, NULL); - removed_members = g_array_sized_new (FALSE, FALSE, sizeof (guint), 0); - identifiers = g_hash_table_new (NULL, NULL); - g_hash_table_insert (updated_members, GUINT_TO_POINTER (self->priv->handle), - GUINT_TO_POINTER (FUTURE_SENDING_STATE_SENDING)); - g_hash_table_insert (identifiers, GUINT_TO_POINTER (self->priv->handle), - (gpointer) tp_handle_inspect (contact_handles, self->priv->handle)); - reason = tp_value_array_build (4, - G_TYPE_UINT, 0, - G_TYPE_UINT, FUTURE_CALL_STATE_CHANGE_REASON_UNKNOWN, - G_TYPE_STRING, "", - G_TYPE_STRING, "", - G_TYPE_INVALID); - future_svc_call_stream_emit_remote_members_changed (self, updated_members, - identifiers, removed_members, reason); - g_hash_table_unref (updated_members); - g_hash_table_unref (identifiers); - g_array_unref (removed_members); - g_value_array_free (reason); -} - -static gboolean -simulate_contact_agreed_to_send_cb (gpointer p) -{ - example_call_stream_simulate_contact_agreed_to_send (p); - return FALSE; -} - -static void -example_call_stream_change_direction (ExampleCallStream *self, - gboolean want_to_send, gboolean want_to_receive) -{ - GHashTable *updated_members = g_hash_table_new (NULL, NULL); - GHashTable *updated_member_identifiers = g_hash_table_new (NULL, NULL); - GValueArray *reason = tp_value_array_build (4, - G_TYPE_UINT, 0, - G_TYPE_UINT, FUTURE_CALL_STATE_CHANGE_REASON_UNKNOWN, - G_TYPE_STRING, "", - G_TYPE_STRING, "", - G_TYPE_INVALID); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( - self->priv->conn, TP_HANDLE_TYPE_CONTACT); - - if (want_to_send) - { - if (self->priv->local_sending_state != FUTURE_SENDING_STATE_SENDING) - { - if (self->priv->local_sending_state == - FUTURE_SENDING_STATE_PENDING_SEND) - { - g_message ("%s: SIGNALLING: send: I will now send you media", - self->priv->object_path); - } - - g_message ("%s: MEDIA: sending media to peer", - self->priv->object_path); - self->priv->local_sending_state = FUTURE_SENDING_STATE_SENDING; - future_svc_call_stream_emit_local_sending_state_changed (self, - self->priv->local_sending_state, reason); - } - } - else - { - if (self->priv->local_sending_state == FUTURE_SENDING_STATE_SENDING) - { - g_message ("%s: SIGNALLING: send: I will no longer send you media", - self->priv->object_path); - g_message ("%s: MEDIA: no longer sending media to peer", - self->priv->object_path); - self->priv->local_sending_state = FUTURE_SENDING_STATE_NONE; - future_svc_call_stream_emit_local_sending_state_changed (self, - self->priv->local_sending_state, reason); - } - else if (self->priv->local_sending_state == - FUTURE_SENDING_STATE_PENDING_SEND) - { - g_message ("%s: SIGNALLING: send: refusing to send you media", - self->priv->object_path); - self->priv->local_sending_state = FUTURE_SENDING_STATE_NONE; - future_svc_call_stream_emit_local_sending_state_changed (self, - self->priv->local_sending_state, reason); - } - } - - if (want_to_receive) - { - if (self->priv->remote_sending_state == FUTURE_SENDING_STATE_NONE) - { - g_message ("%s: SIGNALLING: send: send me media, please?", - self->priv->object_path); - self->priv->remote_sending_state = FUTURE_SENDING_STATE_PENDING_SEND; - g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->simulation_delay, - simulate_contact_agreed_to_send_cb, g_object_ref (self), - g_object_unref); - - g_hash_table_insert (updated_members, - GUINT_TO_POINTER (self->priv->handle), - GUINT_TO_POINTER (FUTURE_SENDING_STATE_PENDING_SEND)); - g_hash_table_insert (updated_member_identifiers, - GUINT_TO_POINTER (self->priv->handle), - (gpointer) tp_handle_inspect (contact_repo, self->priv->handle)); - } - } - else - { - if (self->priv->remote_sending_state != FUTURE_SENDING_STATE_NONE) - { - g_message ("%s: SIGNALLING: send: Please stop sending me media", - self->priv->object_path); - g_message ("%s: MEDIA: suppressing output of stream", - self->priv->object_path); - self->priv->remote_sending_state = FUTURE_SENDING_STATE_NONE; - - g_hash_table_insert (updated_members, - GUINT_TO_POINTER (self->priv->handle), - GUINT_TO_POINTER (FUTURE_SENDING_STATE_NONE)); - g_hash_table_insert (updated_member_identifiers, - GUINT_TO_POINTER (self->priv->handle), - (gpointer) tp_handle_inspect (contact_repo, self->priv->handle)); - } - } - - if (g_hash_table_size (updated_members) != 0) - { - GArray *removed_members = g_array_sized_new (FALSE, FALSE, - sizeof (guint), 0); - - future_svc_call_stream_emit_remote_members_changed (self, - updated_members, updated_member_identifiers, - removed_members, reason); - - g_array_unref (removed_members); - } - - g_hash_table_unref (updated_members); - g_hash_table_unref (updated_member_identifiers); - g_value_array_free (reason); -} - -/* The remote user wants to change the direction of this stream according - * to @local_send and @remote_send. Shall we let him? */ -static void -example_call_stream_receive_direction_request (ExampleCallStream *self, - gboolean local_send, - gboolean remote_send) -{ - GHashTable *updated_members = g_hash_table_new (NULL, NULL); - GHashTable *updated_member_identifiers = g_hash_table_new (NULL, NULL); - GValueArray *reason = tp_value_array_build (4, - G_TYPE_UINT, 0, - G_TYPE_UINT, FUTURE_CALL_STATE_CHANGE_REASON_UNKNOWN, - G_TYPE_STRING, "", - G_TYPE_STRING, "", - G_TYPE_INVALID); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles ( - self->priv->conn, TP_HANDLE_TYPE_CONTACT); - /* In some protocols, streams cannot be neither sending nor receiving, so - * if a stream is set to TP_MEDIA_STREAM_DIRECTION_NONE, this is equivalent - * to removing it. (This is true in XMPP, for instance.) - * - * However, for this example we'll emulate a protocol where streams can be - * directionless. - */ - - if (local_send) - { - g_message ("%s: SIGNALLING: send: Please start sending me media", - self->priv->object_path); - - if (self->priv->local_sending_state == FUTURE_SENDING_STATE_NONE) - { - /* ask the user for permission */ - self->priv->local_sending_state = FUTURE_SENDING_STATE_PENDING_SEND; - future_svc_call_stream_emit_local_sending_state_changed (self, - self->priv->local_sending_state, reason); - } - else - { - /* nothing to do, we're already sending (or asking the user for - * permission to do so) on that stream */ - } - } - else - { - g_message ("%s: SIGNALLING: receive: Please stop sending me media", - self->priv->object_path); - g_message ("%s: SIGNALLING: reply: OK!", - self->priv->object_path); - - if (self->priv->local_sending_state == FUTURE_SENDING_STATE_SENDING) - { - g_message ("%s: MEDIA: no longer sending media to peer", - self->priv->object_path); - self->priv->local_sending_state = FUTURE_SENDING_STATE_NONE; - future_svc_call_stream_emit_local_sending_state_changed (self, - self->priv->local_sending_state, reason); - } - else if (self->priv->local_sending_state == - FUTURE_SENDING_STATE_PENDING_SEND) - { - self->priv->local_sending_state = FUTURE_SENDING_STATE_NONE; - future_svc_call_stream_emit_local_sending_state_changed (self, - self->priv->local_sending_state, reason); - } - else - { - /* nothing to do, we're not sending on that stream anyway */ - } - } - - if (remote_send) - { - g_message ("%s: SIGNALLING: receive: I will now send you media", - self->priv->object_path); - - if (self->priv->remote_sending_state != FUTURE_SENDING_STATE_SENDING) - { - self->priv->remote_sending_state = FUTURE_SENDING_STATE_SENDING; - - g_hash_table_insert (updated_members, - GUINT_TO_POINTER (self->priv->handle), - GUINT_TO_POINTER (FUTURE_SENDING_STATE_SENDING)); - g_hash_table_insert (updated_member_identifiers, - GUINT_TO_POINTER (self->priv->handle), - (gpointer) tp_handle_inspect (contact_repo, self->priv->handle)); - } - } - else - { - if (self->priv->remote_sending_state == - FUTURE_SENDING_STATE_PENDING_SEND) - { - g_message ("%s: SIGNALLING: receive: No, I refuse to send you media", - self->priv->object_path); - self->priv->remote_sending_state = FUTURE_SENDING_STATE_NONE; - - g_hash_table_insert (updated_members, - GUINT_TO_POINTER (self->priv->handle), - GUINT_TO_POINTER (FUTURE_SENDING_STATE_NONE)); - g_hash_table_insert (updated_member_identifiers, - GUINT_TO_POINTER (self->priv->handle), - (gpointer) tp_handle_inspect (contact_repo, self->priv->handle)); - } - else if (self->priv->remote_sending_state == - FUTURE_SENDING_STATE_SENDING) - { - g_message ("%s: SIGNALLING: receive: I will no longer send media", - self->priv->object_path); - self->priv->remote_sending_state = FUTURE_SENDING_STATE_NONE; - - g_hash_table_insert (updated_members, - GUINT_TO_POINTER (self->priv->handle), - GUINT_TO_POINTER (FUTURE_SENDING_STATE_NONE)); - g_hash_table_insert (updated_member_identifiers, - GUINT_TO_POINTER (self->priv->handle), - (gpointer) tp_handle_inspect (contact_repo, self->priv->handle)); - } - } - - if (g_hash_table_size (updated_members) != 0) - { - GArray *removed_members = g_array_sized_new (FALSE, FALSE, - sizeof (guint), 0); - - future_svc_call_stream_emit_remote_members_changed (self, - updated_members, updated_member_identifiers, - removed_members, reason); - - g_array_unref (removed_members); - } - - g_hash_table_unref (updated_members); - g_hash_table_unref (updated_member_identifiers); - g_value_array_free (reason); -} - -static void -stream_set_sending (FutureSvcCallStream *iface G_GNUC_UNUSED, - gboolean sending, - DBusGMethodInvocation *context) -{ - ExampleCallStream *self = EXAMPLE_CALL_STREAM (iface); - - example_call_stream_change_direction (self, sending, - (self->priv->remote_sending_state == FUTURE_SENDING_STATE_SENDING)); - - future_svc_call_stream_return_from_set_sending (context); -} - -static void -stream_request_receiving (FutureSvcCallStream *iface, - TpHandle contact, - gboolean receive, - DBusGMethodInvocation *context) -{ - ExampleCallStream *self = EXAMPLE_CALL_STREAM (iface); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles - (self->priv->conn, TP_HANDLE_TYPE_CONTACT); - GError *error = NULL; - - if (!tp_handle_is_valid (contact_repo, contact, &error)) - { - goto finally; - } - - if (contact != self->priv->handle) - { - g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "Can't receive from contact #%u: this stream only contains #%u", - contact, self->priv->handle); - goto finally; - } - - example_call_stream_change_direction (self, - (self->priv->local_sending_state == FUTURE_SENDING_STATE_SENDING), - receive); - -finally: - if (error == NULL) - { - future_svc_call_stream_return_from_request_receiving (context); - } - else - { - dbus_g_method_return_error (context, error); - g_error_free (error); - } -} - -static void -stream_iface_init (gpointer iface, - gpointer data) -{ - FutureSvcCallStreamClass *klass = iface; - -#define IMPLEMENT(x) \ - future_svc_call_stream_implement_##x (klass, stream_##x) - IMPLEMENT (set_sending); - IMPLEMENT (request_receiving); -#undef IMPLEMENT -} diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/call-stream.h telepathy-glib-0.17.5/examples/future/call-cm/call-stream.h --- telepathy-glib-0.17.4/examples/future/call-cm/call-stream.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/call-stream.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -/* - * call-stream.h - header for an example stream - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef EXAMPLE_CALL_STREAM_H -#define EXAMPLE_CALL_STREAM_H - -#include - -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallStream ExampleCallStream; -typedef struct _ExampleCallStreamPrivate - ExampleCallStreamPrivate; - -typedef struct _ExampleCallStreamClass - ExampleCallStreamClass; -typedef struct _ExampleCallStreamClassPrivate - ExampleCallStreamClassPrivate; - -GType example_call_stream_get_type (void); - -#define EXAMPLE_TYPE_CALL_STREAM \ - (example_call_stream_get_type ()) -#define EXAMPLE_CALL_STREAM(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_TYPE_CALL_STREAM, \ - ExampleCallStream)) -#define EXAMPLE_CALL_STREAM_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), EXAMPLE_TYPE_CALL_STREAM, \ - ExampleCallStreamClass)) -#define EXAMPLE_IS_CALL_STREAM(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EXAMPLE_TYPE_CALL_STREAM)) -#define EXAMPLE_IS_CALL_STREAM_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), EXAMPLE_TYPE_CALL_STREAM)) -#define EXAMPLE_CALL_STREAM_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_STREAM, \ - ExampleCallStreamClass)) - -struct _ExampleCallStreamClass { - GObjectClass parent_class; - TpDBusPropertiesMixinClass dbus_properties_class; - - ExampleCallStreamClassPrivate *priv; -}; - -struct _ExampleCallStream { - GObject parent; - - ExampleCallStreamPrivate *priv; -}; - -void example_call_stream_close (ExampleCallStream *self); -void example_call_stream_accept_proposed_direction (ExampleCallStream *self); -void example_call_stream_connect (ExampleCallStream *self); - -/* This controls receiving emulated network events, so it wouldn't exist in - * a real connection manager */ -void example_call_stream_simulate_contact_agreed_to_send ( - ExampleCallStream *self); - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/cm.c telepathy-glib-0.17.5/examples/future/call-cm/cm.c --- telepathy-glib-0.17.4/examples/future/call-cm/cm.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/cm.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -/* - * manager.c - an example connection manager - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "cm.h" - -#include - -#include -#include - -#include "conn.h" -#include "protocol.h" - -G_DEFINE_TYPE (ExampleCallConnectionManager, - example_call_connection_manager, - TP_TYPE_BASE_CONNECTION_MANAGER) - -struct _ExampleCallConnectionManagerPrivate -{ - int dummy; -}; - -static void -example_call_connection_manager_init (ExampleCallConnectionManager *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, - ExampleCallConnectionManagerPrivate); -} - -static void -example_call_connection_manager_constructed (GObject *object) -{ - ExampleCallConnectionManager *self = - EXAMPLE_CALL_CONNECTION_MANAGER (object); - TpBaseConnectionManager *base = (TpBaseConnectionManager *) self; - void (*constructed) (GObject *) = - ((GObjectClass *) example_call_connection_manager_parent_class)->constructed; - TpBaseProtocol *protocol; - - if (constructed != NULL) - constructed (object); - - protocol = g_object_new (EXAMPLE_TYPE_CALL_PROTOCOL, - "name", "example", - NULL); - tp_base_connection_manager_add_protocol (base, protocol); - g_object_unref (protocol); -} - -static void -example_call_connection_manager_class_init ( - ExampleCallConnectionManagerClass *klass) -{ - GObjectClass *object_class = (GObjectClass *) klass; - TpBaseConnectionManagerClass *base_class = - (TpBaseConnectionManagerClass *) klass; - - g_type_class_add_private (klass, - sizeof (ExampleCallConnectionManagerPrivate)); - - object_class->constructed = example_call_connection_manager_constructed; - base_class->cm_dbus_name = "example_call"; -} diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/cm.h telepathy-glib-0.17.5/examples/future/call-cm/cm.h --- telepathy-glib-0.17.4/examples/future/call-cm/cm.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/cm.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* - * manager.h - header for an example connection manager - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef EXAMPLE_CALL_CM_H -#define EXAMPLE_CALL_CM_H - -#include -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallConnectionManager - ExampleCallConnectionManager; -typedef struct _ExampleCallConnectionManagerPrivate - ExampleCallConnectionManagerPrivate; - -typedef struct _ExampleCallConnectionManagerClass - ExampleCallConnectionManagerClass; -typedef struct _ExampleCallConnectionManagerClassPrivate - ExampleCallConnectionManagerClassPrivate; - -struct _ExampleCallConnectionManagerClass { - TpBaseConnectionManagerClass parent_class; - - ExampleCallConnectionManagerClassPrivate *priv; -}; - -struct _ExampleCallConnectionManager { - TpBaseConnectionManager parent; - - ExampleCallConnectionManagerPrivate *priv; -}; - -GType example_call_connection_manager_get_type (void); - -/* TYPE MACROS */ -#define EXAMPLE_TYPE_CALL_CONNECTION_MANAGER \ - (example_call_connection_manager_get_type ()) -#define EXAMPLE_CALL_CONNECTION_MANAGER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, \ - ExampleCallConnectionManager)) -#define EXAMPLE_CALL_CONNECTION_MANAGER_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, \ - ExampleCallConnectionManagerClass)) -#define EXAMPLE_IS_CALL_CONNECTION_MANAGER(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER)) -#define EXAMPLE_IS_CALL_CONNECTION_MANAGER_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER)) -#define EXAMPLE_CALL_CONNECTION_MANAGER_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, \ - ExampleCallConnectionManagerClass)) - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/conn.c telepathy-glib-0.17.5/examples/future/call-cm/conn.c --- telepathy-glib-0.17.4/examples/future/call-cm/conn.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/conn.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,427 +0,0 @@ -/* - * conn.c - an example connection - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "conn.h" - -#include - -#include -#include -#include - -#include "call-manager.h" -#include "protocol.h" - -G_DEFINE_TYPE_WITH_CODE (ExampleCallConnection, - example_call_connection, - TP_TYPE_BASE_CONNECTION, - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_CONTACTS, - tp_contacts_mixin_iface_init); - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_PRESENCE, - tp_presence_mixin_iface_init); - G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CONNECTION_INTERFACE_SIMPLE_PRESENCE, - tp_presence_mixin_simple_presence_iface_init)) - -enum -{ - PROP_ACCOUNT = 1, - PROP_SIMULATION_DELAY, - N_PROPS -}; - -enum -{ - SIGNAL_AVAILABLE, - N_SIGNALS -}; - -static guint signals[N_SIGNALS] = { 0 }; - -struct _ExampleCallConnectionPrivate -{ - gchar *account; - guint simulation_delay; - gboolean away; - gchar *presence_message; -}; - -static void -example_call_connection_init (ExampleCallConnection *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, - EXAMPLE_TYPE_CALL_CONNECTION, - ExampleCallConnectionPrivate); - self->priv->away = FALSE; - self->priv->presence_message = g_strdup (""); -} - -static void -get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *spec) -{ - ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (object); - - switch (property_id) - { - case PROP_ACCOUNT: - g_value_set_string (value, self->priv->account); - break; - - case PROP_SIMULATION_DELAY: - g_value_set_uint (value, self->priv->simulation_delay); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); - } -} - -static void -set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *spec) -{ - ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (object); - - switch (property_id) - { - case PROP_ACCOUNT: - g_free (self->priv->account); - self->priv->account = g_value_dup_string (value); - break; - - case PROP_SIMULATION_DELAY: - self->priv->simulation_delay = g_value_get_uint (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); - } -} - -static void -finalize (GObject *object) -{ - ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (object); - - tp_contacts_mixin_finalize (object); - g_free (self->priv->account); - g_free (self->priv->presence_message); - - G_OBJECT_CLASS (example_call_connection_parent_class)->finalize (object); -} - -static gchar * -get_unique_connection_name (TpBaseConnection *conn) -{ - ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (conn); - - return g_strdup_printf ("%s@%p", self->priv->account, self); -} - -static gchar * -example_call_normalize_contact (TpHandleRepoIface *repo, - const gchar *id, - gpointer context, - GError **error) -{ - gchar *normal = NULL; - - if (example_call_protocol_check_contact_id (id, &normal, error)) - return normal; - else - return NULL; -} - -static void -create_handle_repos (TpBaseConnection *conn, - TpHandleRepoIface *repos[NUM_TP_HANDLE_TYPES]) -{ - repos[TP_HANDLE_TYPE_CONTACT] = tp_dynamic_handle_repo_new - (TP_HANDLE_TYPE_CONTACT, example_call_normalize_contact, NULL); -} - -static GPtrArray * -create_channel_managers (TpBaseConnection *conn) -{ - ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (conn); - GPtrArray *ret = g_ptr_array_sized_new (1); - - g_ptr_array_add (ret, - g_object_new (EXAMPLE_TYPE_CALL_MANAGER, - "connection", conn, - "simulation-delay", self->priv->simulation_delay, - NULL)); - - return ret; -} - -static gboolean -start_connecting (TpBaseConnection *conn, - GError **error) -{ - ExampleCallConnection *self = EXAMPLE_CALL_CONNECTION (conn); - TpHandleRepoIface *contact_repo = tp_base_connection_get_handles (conn, - TP_HANDLE_TYPE_CONTACT); - - /* In a real connection manager we'd ask the underlying implementation to - * start connecting, then go to state CONNECTED when finished, but here - * we can do it immediately. */ - - conn->self_handle = tp_handle_ensure (contact_repo, self->priv->account, - NULL, error); - - if (conn->self_handle == 0) - return FALSE; - - tp_base_connection_change_status (conn, TP_CONNECTION_STATUS_CONNECTED, - TP_CONNECTION_STATUS_REASON_REQUESTED); - - return TRUE; -} - -static void -shut_down (TpBaseConnection *conn) -{ - /* In a real connection manager we'd ask the underlying implementation to - * start shutting down, then call this function when finished, but here - * we can do it immediately. */ - tp_base_connection_finish_shutdown (conn); -} - -static void -constructed (GObject *object) -{ - TpBaseConnection *base = TP_BASE_CONNECTION (object); - void (*chain_up) (GObject *) = - G_OBJECT_CLASS (example_call_connection_parent_class)->constructed; - - if (chain_up != NULL) - chain_up (object); - - tp_contacts_mixin_init (object, - G_STRUCT_OFFSET (ExampleCallConnection, contacts_mixin)); - tp_base_connection_register_with_contacts_mixin (base); - - tp_presence_mixin_init (object, - G_STRUCT_OFFSET (ExampleCallConnection, presence_mixin)); - tp_presence_mixin_simple_presence_register_with_contacts_mixin (object); -} - -static gboolean -status_available (GObject *object, - guint index_) -{ - TpBaseConnection *base = TP_BASE_CONNECTION (object); - - if (base->status != TP_CONNECTION_STATUS_CONNECTED) - return FALSE; - - return TRUE; -} - -static GHashTable * -get_contact_statuses (GObject *object, - const GArray *contacts, - GError **error) -{ - ExampleCallConnection *self = - EXAMPLE_CALL_CONNECTION (object); - TpBaseConnection *base = TP_BASE_CONNECTION (object); - guint i; - GHashTable *result = g_hash_table_new_full (g_direct_hash, g_direct_equal, - NULL, (GDestroyNotify) tp_presence_status_free); - - for (i = 0; i < contacts->len; i++) - { - TpHandle contact = g_array_index (contacts, guint, i); - ExampleCallPresence presence; - GHashTable *parameters; - - parameters = g_hash_table_new_full (g_str_hash, - g_str_equal, NULL, (GDestroyNotify) tp_g_value_slice_free); - - /* we know our own status from the connection; for this example CM, - * everyone else's status is assumed to be "available" */ - if (contact == base->self_handle) - { - presence = (self->priv->away ? EXAMPLE_CALL_PRESENCE_AWAY - : EXAMPLE_CALL_PRESENCE_AVAILABLE); - - if (self->priv->presence_message[0] != '\0') - g_hash_table_insert (parameters, "message", - tp_g_value_slice_new_string (self->priv->presence_message)); - } - else - { - presence = EXAMPLE_CALL_PRESENCE_AVAILABLE; - } - - g_hash_table_insert (result, GUINT_TO_POINTER (contact), - tp_presence_status_new (presence, parameters)); - g_hash_table_unref (parameters); - } - - return result; -} - -static gboolean -set_own_status (GObject *object, - const TpPresenceStatus *status, - GError **error) -{ - ExampleCallConnection *self = - EXAMPLE_CALL_CONNECTION (object); - TpBaseConnection *base = TP_BASE_CONNECTION (object); - GHashTable *presences; - const gchar *message = ""; - - if (status->optional_arguments != NULL) - { - GValue *v = g_hash_table_lookup (status->optional_arguments, "message"); - - if (v != NULL && G_VALUE_HOLDS_STRING (v)) - { - message = g_value_get_string (v); - - if (message == NULL) - message = ""; - } - } - - if (status->index == EXAMPLE_CALL_PRESENCE_AWAY) - { - if (self->priv->away && !tp_strdiff (message, - self->priv->presence_message)) - return TRUE; - - self->priv->away = TRUE; - } - else - { - if (!self->priv->away && !tp_strdiff (message, - self->priv->presence_message)) - return TRUE; - - self->priv->away = FALSE; - } - - g_free (self->priv->presence_message); - self->priv->presence_message = g_strdup (message); - - presences = g_hash_table_new_full (g_direct_hash, g_direct_equal, - NULL, NULL); - g_hash_table_insert (presences, GUINT_TO_POINTER (base->self_handle), - (gpointer) status); - tp_presence_mixin_emit_presence_update (object, presences); - g_hash_table_unref (presences); - - if (!self->priv->away) - { - g_signal_emit (self, signals[SIGNAL_AVAILABLE], 0, message); - } - - return TRUE; -} - -static const TpPresenceStatusOptionalArgumentSpec can_have_message[] = { - { "message", "s", NULL, NULL }, - { NULL } -}; - -/* Must be kept in sync with ExampleCallPresence enum in header */ -static const TpPresenceStatusSpec presence_statuses[] = { - { "offline", TP_CONNECTION_PRESENCE_TYPE_OFFLINE, FALSE, NULL }, - { "unknown", TP_CONNECTION_PRESENCE_TYPE_UNKNOWN, FALSE, NULL }, - { "error", TP_CONNECTION_PRESENCE_TYPE_ERROR, FALSE, NULL }, - { "away", TP_CONNECTION_PRESENCE_TYPE_AWAY, TRUE, can_have_message }, - { "available", TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, TRUE, - can_have_message }, - { NULL } -}; - -static const gchar *interfaces_always_present[] = { - TP_IFACE_CONNECTION_INTERFACE_CONTACTS, - TP_IFACE_CONNECTION_INTERFACE_PRESENCE, - TP_IFACE_CONNECTION_INTERFACE_REQUESTS, - TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, - NULL }; - -const gchar * const * -example_call_connection_get_possible_interfaces (void) -{ - /* in this example CM we don't have any extra interfaces that are sometimes, - * but not always, present */ - return interfaces_always_present; -} - -static void -example_call_connection_class_init ( - ExampleCallConnectionClass *klass) -{ - TpBaseConnectionClass *base_class = (TpBaseConnectionClass *) klass; - GObjectClass *object_class = (GObjectClass *) klass; - GParamSpec *param_spec; - - object_class->get_property = get_property; - object_class->set_property = set_property; - object_class->constructed = constructed; - object_class->finalize = finalize; - g_type_class_add_private (klass, - sizeof (ExampleCallConnectionPrivate)); - - base_class->create_handle_repos = create_handle_repos; - base_class->get_unique_connection_name = get_unique_connection_name; - base_class->create_channel_managers = create_channel_managers; - base_class->start_connecting = start_connecting; - base_class->shut_down = shut_down; - base_class->interfaces_always_present = interfaces_always_present; - - param_spec = g_param_spec_string ("account", "Account name", - "The username of this user", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); - - param_spec = g_param_spec_uint ("simulation-delay", "Simulation delay", - "Delay between simulated network events", - 0, G_MAXUINT32, 1000, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_SIMULATION_DELAY, - param_spec); - - /* Used in the call manager, to simulate an incoming call when we become - * available */ - signals[SIGNAL_AVAILABLE] = g_signal_new ("available", - G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, - g_cclosure_marshal_VOID__STRING, - G_TYPE_NONE, 1, G_TYPE_STRING); - - tp_contacts_mixin_class_init (object_class, - G_STRUCT_OFFSET (ExampleCallConnectionClass, contacts_mixin)); - tp_presence_mixin_class_init (object_class, - G_STRUCT_OFFSET (ExampleCallConnectionClass, presence_mixin), - status_available, get_contact_statuses, set_own_status, - presence_statuses); - tp_presence_mixin_simple_presence_init_dbus_properties (object_class); -} diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/conn.h telepathy-glib-0.17.5/examples/future/call-cm/conn.h --- telepathy-glib-0.17.4/examples/future/call-cm/conn.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/conn.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -/* - * conn.h - header for an example connection - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * Copying and distribution of this file, with or without modification, - * are permitted in any medium without royalty provided the copyright - * notice and this notice are preserved. - */ - -#ifndef EXAMPLE_CALL_CONN_H -#define EXAMPLE_CALL_CONN_H - -#include -#include -#include -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallConnection ExampleCallConnection; -typedef struct _ExampleCallConnectionPrivate - ExampleCallConnectionPrivate; - -typedef struct _ExampleCallConnectionClass ExampleCallConnectionClass; -typedef struct _ExampleCallConnectionClassPrivate - ExampleCallConnectionClassPrivate; - -struct _ExampleCallConnectionClass { - TpBaseConnectionClass parent_class; - TpPresenceMixinClass presence_mixin; - TpContactsMixinClass contacts_mixin; - - ExampleCallConnectionClassPrivate *priv; -}; - -struct _ExampleCallConnection { - TpBaseConnection parent; - TpPresenceMixin presence_mixin; - TpContactsMixin contacts_mixin; - - ExampleCallConnectionPrivate *priv; -}; - -GType example_call_connection_get_type (void); - -#define EXAMPLE_TYPE_CALL_CONNECTION \ - (example_call_connection_get_type ()) -#define EXAMPLE_CALL_CONNECTION(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), EXAMPLE_TYPE_CALL_CONNECTION, \ - ExampleCallConnection)) -#define EXAMPLE_CALL_CONNECTION_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass), EXAMPLE_TYPE_CALL_CONNECTION, \ - ExampleCallConnectionClass)) -#define EXAMPLE_IS_CALL_CONNECTION(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj), EXAMPLE_TYPE_CALL_CONNECTION)) -#define EXAMPLE_IS_CALL_CONNECTION_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass), EXAMPLE_TYPE_CALL_CONNECTION)) -#define EXAMPLE_CALL_CONNECTION_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), EXAMPLE_TYPE_CALL_CONNECTION, \ - ExampleCallConnectionClass)) - -/* Must be kept in sync with the array presence_statuses in conn.c */ -typedef enum { - EXAMPLE_CALL_PRESENCE_OFFLINE = 0, - EXAMPLE_CALL_PRESENCE_UNKNOWN, - EXAMPLE_CALL_PRESENCE_ERROR, - EXAMPLE_CALL_PRESENCE_AWAY, - EXAMPLE_CALL_PRESENCE_AVAILABLE -} ExampleCallPresence; - -const gchar * const *example_call_connection_get_possible_interfaces (void); - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/example_call.manager telepathy-glib-0.17.5/examples/future/call-cm/example_call.manager --- telepathy-glib-0.17.4/examples/future/call-cm/example_call.manager 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/example_call.manager 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -[ConnectionManager] -Interfaces= - -[Protocol example] -Interfaces= -ConnectionInterfaces=org.freedesktop.Telepathy.Connection.Interface.Requests;org.freedesktop.Telepathy.Connection.Interface.Contacts;org.freedesktop.Telepathy.Connection.Interface.Presence;org.freedesktop.Telepathy.Connection.Interface.SimplePresence; -param-account=s required register -param-simulation-delay=u -default-simulation-delay=1000 -RequestableChannelClasses=audio;video; -VCardField=x-telepathy-example -EnglishName=Example with Call channels -Icon=face-smile - -[audio] -org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Call.DRAFT -org.freedesktop.Telepathy.Channel.TargetHandleType u=1 -org.freedesktop.Telepathy.Channel.Type.Call.DRAFT.InitialAudio b=1 -allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID;org.freedesktop.Telepathy.Channel.Type.Call.DRAFT.InitialVideo; - -[video] -org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Call.DRAFT -org.freedesktop.Telepathy.Channel.TargetHandleType u=1 -org.freedesktop.Telepathy.Channel.Type.Call.DRAFT.InitialVideo b=1 -allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID;org.freedesktop.Telepathy.Channel.Type.Call.DRAFT.InitialAudio; diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/main.c telepathy-glib-0.17.5/examples/future/call-cm/main.c --- telepathy-glib-0.17.4/examples/future/call-cm/main.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/main.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ -/* - * main.c - entry point for an example Telepathy connection manager - * - * Copyright © 2007-2009 Collabora Ltd. - * Copyright © 2007-2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" - -#include -#include - -#include "extensions/extensions.h" - -#include "cm.h" - -static TpBaseConnectionManager * -construct_cm (void) -{ - return (TpBaseConnectionManager *) g_object_new ( - EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, - NULL); -} - -int -main (int argc, - char **argv) -{ -#ifdef ENABLE_DEBUG - tp_debug_divert_messages (g_getenv ("EXAMPLE_CM_LOGFILE")); - tp_debug_set_flags (g_getenv ("EXAMPLE_DEBUG")); - - if (g_getenv ("EXAMPLE_TIMING") != NULL) - g_log_set_default_handler (tp_debug_timestamped_log_handler, NULL); - - if (g_getenv ("EXAMPLE_PERSIST") != NULL) - tp_debug_set_persistent (TRUE); -#endif - - /* strictly speaking, this is only necessary for client code, but it's - * harmless here */ - g_type_init (); - future_cli_init (); - - return tp_run_connection_manager ("telepathy-example-cm-call", - VERSION, construct_cm, argc, argv); -} diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/Makefile.am telepathy-glib-0.17.5/examples/future/call-cm/Makefile.am --- telepathy-glib-0.17.4/examples/future/call-cm/Makefile.am 2011-04-26 09:30:09.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ -# Example connection manager with audio/video calls. - -EXAMPLES = telepathy-example-cm-call -noinst_LTLIBRARIES = libexample-cm-call.la - -if INSTALL_EXAMPLES -libexec_PROGRAMS = $(EXAMPLES) -else -noinst_PROGRAMS = $(EXAMPLES) -endif - -libexample_cm_call_la_SOURCES = \ - cm.c \ - cm.h \ - conn.c \ - conn.h \ - call-channel.c \ - call-channel.h \ - call-manager.c \ - call-manager.h \ - call-content.c \ - call-content.h \ - call-stream.c \ - call-stream.h \ - protocol.c \ - protocol.h - -libexample_cm_call_la_LIBADD = $(LDADD) - -telepathy_example_cm_call_SOURCES = \ - main.c - -telepathy_example_cm_call_LDADD = \ - $(noinst_LTLIBRARIES) - -servicedir = ${datadir}/dbus-1/services - -if INSTALL_EXAMPLES -service_DATA = _gen/org.freedesktop.Telepathy.ConnectionManager.example_call.service -$(service_DATA): %: Makefile - $(mkdir_p) _gen - { echo "[D-BUS Service]" && \ - echo "Name=org.freedesktop.Telepathy.ConnectionManager.example_call" && \ - echo "Exec=${libexecdir}/telepathy-example-cm-call"; } > $@ - -managerdir = ${datadir}/telepathy/managers -dist_manager_DATA = example_call.manager -endif - -clean-local: - rm -rf _gen - -# In an external project you'd use $(TP_GLIB_LIBS) (obtained from -# pkg-config via autoconf) instead of the .la path, and put it last; we use -# a different format here because we're part of the telepathy-glib source tree. -LDADD = \ - $(top_builddir)/extensions/libfuture-extensions.la \ - $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ - $(GLIB_LIBS) \ - $(DBUS_LIBS) \ - $(NULL) - -# Similarly, in an external project you'd put $(TP_GLIB_CFLAGS) at the end of -# AM_CPPFLAGS. -AM_CPPFLAGS = \ - -I${top_srcdir} -I${top_builddir} \ - $(GLIB_CFLAGS) \ - $(DBUS_CFLAGS) \ - $(NULL) -AM_LDFLAGS = \ - $(ERROR_LDFLAGS) \ - $(NULL) - -AM_CFLAGS = $(ERROR_CFLAGS) - diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/Makefile.in telepathy-glib-0.17.5/examples/future/call-cm/Makefile.in --- telepathy-glib-0.17.4/examples/future/call-cm/Makefile.in 2011-12-19 15:18:55.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,763 +0,0 @@ -# Makefile.in generated by automake 1.11.1 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. -# 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. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Example connection manager with audio/video calls. - - - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@INSTALL_EXAMPLES_TRUE@libexec_PROGRAMS = $(am__EXEEXT_1) -@INSTALL_EXAMPLES_FALSE@noinst_PROGRAMS = $(am__EXEEXT_1) -subdir = examples/future/call-cm -DIST_COMMON = $(am__dist_manager_DATA_DIST) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/compiler.m4 \ - $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/introspection.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/linker.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/tp-compiler-flag.m4 \ - $(top_srcdir)/m4/tp-compiler-warnings.m4 \ - $(top_srcdir)/m4/tp-linker-flag.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -am__DEPENDENCIES_1 = -am__DEPENDENCIES_2 = \ - $(top_builddir)/extensions/libfuture-extensions.la \ - $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -libexample_cm_call_la_DEPENDENCIES = $(am__DEPENDENCIES_2) -am_libexample_cm_call_la_OBJECTS = cm.lo conn.lo call-channel.lo \ - call-manager.lo call-content.lo call-stream.lo protocol.lo -libexample_cm_call_la_OBJECTS = $(am_libexample_cm_call_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) -am__v_lt_0 = --silent -am__EXEEXT_1 = telepathy-example-cm-call$(EXEEXT) -am__installdirs = "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(managerdir)" \ - "$(DESTDIR)$(servicedir)" -PROGRAMS = $(libexec_PROGRAMS) $(noinst_PROGRAMS) -am_telepathy_example_cm_call_OBJECTS = main.$(OBJEXT) -telepathy_example_cm_call_OBJECTS = \ - $(am_telepathy_example_cm_call_OBJECTS) -telepathy_example_cm_call_DEPENDENCIES = $(noinst_LTLIBRARIES) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -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_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -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_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libexample_cm_call_la_SOURCES) \ - $(telepathy_example_cm_call_SOURCES) -DIST_SOURCES = $(libexample_cm_call_la_SOURCES) \ - $(telepathy_example_cm_call_SOURCES) -am__dist_manager_DATA_DIST = example_call.manager -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -DATA = $(dist_manager_DATA) $(service_DATA) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DBUS_CFLAGS = @DBUS_CFLAGS@ -DBUS_LIBS = @DBUS_LIBS@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENABLE_CODING_STYLE_CHECKS = @ENABLE_CODING_STYLE_CHECKS@ -ENABLE_DOC_CHECKS = @ENABLE_DOC_CHECKS@ -ERROR_CFLAGS = @ERROR_CFLAGS@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@ -GIO_UNIX_LIBS = @GIO_UNIX_LIBS@ -GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ -GLIB_LIBS = @GLIB_LIBS@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GREP = @GREP@ -GTKDOC_CHECK = @GTKDOC_CHECK@ -GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ -GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ -GTKDOC_MKPDF = @GTKDOC_MKPDF@ -GTKDOC_REBASE = @GTKDOC_REBASE@ -HAVE_VALA = @HAVE_VALA@ -HTML_DIR = @HTML_DIR@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_AGE = @LT_AGE@ -LT_CURRENT = @LT_CURRENT@ -LT_REVISION = @LT_REVISION@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TP_GLIB_CFLAGS = @TP_GLIB_CFLAGS@ -VALAC = @VALAC@ -VALAFLAGS = @VALAFLAGS@ -VAPIGEN = @VAPIGEN@ -VERSION = @VERSION@ -VERSION_SCRIPT_ARG = @VERSION_SCRIPT_ARG@ -XSLTPROC = @XSLTPROC@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -tpglibtestsdir = @tpglibtestsdir@ -EXAMPLES = telepathy-example-cm-call -noinst_LTLIBRARIES = libexample-cm-call.la -libexample_cm_call_la_SOURCES = \ - cm.c \ - cm.h \ - conn.c \ - conn.h \ - call-channel.c \ - call-channel.h \ - call-manager.c \ - call-manager.h \ - call-content.c \ - call-content.h \ - call-stream.c \ - call-stream.h \ - protocol.c \ - protocol.h - -libexample_cm_call_la_LIBADD = $(LDADD) -telepathy_example_cm_call_SOURCES = \ - main.c - -telepathy_example_cm_call_LDADD = \ - $(noinst_LTLIBRARIES) - -servicedir = ${datadir}/dbus-1/services -@INSTALL_EXAMPLES_TRUE@service_DATA = _gen/org.freedesktop.Telepathy.ConnectionManager.example_call.service -@INSTALL_EXAMPLES_TRUE@managerdir = ${datadir}/telepathy/managers -@INSTALL_EXAMPLES_TRUE@dist_manager_DATA = example_call.manager - -# In an external project you'd use $(TP_GLIB_LIBS) (obtained from -# pkg-config via autoconf) instead of the .la path, and put it last; we use -# a different format here because we're part of the telepathy-glib source tree. -LDADD = \ - $(top_builddir)/extensions/libfuture-extensions.la \ - $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ - $(GLIB_LIBS) \ - $(DBUS_LIBS) \ - $(NULL) - - -# Similarly, in an external project you'd put $(TP_GLIB_CFLAGS) at the end of -# AM_CPPFLAGS. -AM_CPPFLAGS = \ - -I${top_srcdir} -I${top_builddir} \ - $(GLIB_CFLAGS) \ - $(DBUS_CFLAGS) \ - $(NULL) - -AM_LDFLAGS = \ - $(ERROR_LDFLAGS) \ - $(NULL) - -AM_CFLAGS = $(ERROR_CFLAGS) -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/future/call-cm/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu examples/future/call-cm/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_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 -libexample-cm-call.la: $(libexample_cm_call_la_OBJECTS) $(libexample_cm_call_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libexample_cm_call_la_OBJECTS) $(libexample_cm_call_la_LIBADD) $(LIBS) -install-libexecPROGRAMS: $(libexec_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(libexecdir)" || $(MKDIR_P) "$(DESTDIR)$(libexecdir)" - @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p || test -f $$p1; \ - then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-libexecPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(libexec_PROGRAMS)'; test -n "$(libexecdir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(libexecdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(libexecdir)" && rm -f $$files - -clean-libexecPROGRAMS: - @list='$(libexec_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -telepathy-example-cm-call$(EXEEXT): $(telepathy_example_cm_call_OBJECTS) $(telepathy_example_cm_call_DEPENDENCIES) - @rm -f telepathy-example-cm-call$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(telepathy_example_cm_call_OBJECTS) $(telepathy_example_cm_call_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-channel.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-content.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-manager.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-stream.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cm.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/conn.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protocol.Plo@am__quote@ - -.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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-dist_managerDATA: $(dist_manager_DATA) - @$(NORMAL_INSTALL) - test -z "$(managerdir)" || $(MKDIR_P) "$(DESTDIR)$(managerdir)" - @list='$(dist_manager_DATA)'; test -n "$(managerdir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(managerdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(managerdir)" || exit $$?; \ - done - -uninstall-dist_managerDATA: - @$(NORMAL_UNINSTALL) - @list='$(dist_manager_DATA)'; test -n "$(managerdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(managerdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(managerdir)" && rm -f $$files -install-serviceDATA: $(service_DATA) - @$(NORMAL_INSTALL) - test -z "$(servicedir)" || $(MKDIR_P) "$(DESTDIR)$(servicedir)" - @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(servicedir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(servicedir)" || exit $$?; \ - done - -uninstall-serviceDATA: - @$(NORMAL_UNINSTALL) - @list='$(service_DATA)'; test -n "$(servicedir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(servicedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(servicedir)" && rm -f $$files - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) -installdirs: - for dir in "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(managerdir)" "$(DESTDIR)$(servicedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-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 -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ - clean-local clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-dist_managerDATA install-serviceDATA - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: install-libexecPROGRAMS - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-dist_managerDATA uninstall-libexecPROGRAMS \ - uninstall-serviceDATA - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libexecPROGRAMS clean-libtool clean-local \ - clean-noinstLTLIBRARIES clean-noinstPROGRAMS 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-dist_managerDATA install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-libexecPROGRAMS \ - install-man install-pdf install-pdf-am install-ps \ - install-ps-am install-serviceDATA install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-dist_managerDATA \ - uninstall-libexecPROGRAMS uninstall-serviceDATA - -@INSTALL_EXAMPLES_TRUE@$(service_DATA): %: Makefile -@INSTALL_EXAMPLES_TRUE@ $(mkdir_p) _gen -@INSTALL_EXAMPLES_TRUE@ { echo "[D-BUS Service]" && \ -@INSTALL_EXAMPLES_TRUE@ echo "Name=org.freedesktop.Telepathy.ConnectionManager.example_call" && \ -@INSTALL_EXAMPLES_TRUE@ echo "Exec=${libexecdir}/telepathy-example-cm-call"; } > $@ - -clean-local: - rm -rf _gen - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/protocol.c telepathy-glib-0.17.5/examples/future/call-cm/protocol.c --- telepathy-glib-0.17.4/examples/future/call-cm/protocol.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/protocol.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,186 +0,0 @@ -/* - * protocol.c - an example Protocol - * - * Copyright © 2007-2010 Collabora Ltd. - * - * Copying and distribution of this file, with or without modification, - * are permitted in any medium without royalty provided the copyright - * notice and this notice are preserved. - */ - -#include "protocol.h" - -#include - -#include "call-manager.h" -#include "conn.h" - -G_DEFINE_TYPE (ExampleCallProtocol, - example_call_protocol, - TP_TYPE_BASE_PROTOCOL) - -static void -example_call_protocol_init ( - ExampleCallProtocol *self) -{ -} - -gboolean -example_call_protocol_check_contact_id (const gchar *id, - gchar **normal, - GError **error) -{ - g_return_val_if_fail (id != NULL, FALSE); - - if (id[0] == '\0') - { - g_set_error (error, TP_ERRORS, TP_ERROR_INVALID_HANDLE, - "ID must not be empty"); - return FALSE; - } - - if (normal != NULL) - *normal = g_utf8_normalize (id, -1, G_NORMALIZE_ALL_COMPOSE); - - return TRUE; -} - -static gboolean -account_param_filter (const TpCMParamSpec *paramspec, - GValue *value, - GError **error) -{ - const gchar *id = g_value_get_string (value); - - return example_call_protocol_check_contact_id (id, NULL, error); -} - -static const TpCMParamSpec example_call_example_params[] = { - { "account", "s", G_TYPE_STRING, - TP_CONN_MGR_PARAM_FLAG_REQUIRED | TP_CONN_MGR_PARAM_FLAG_REGISTER, - NULL, /* no default */ - 0, /* unused, formerly struct offset */ - account_param_filter, - NULL, /* filter data, unused here */ - NULL }, /* setter data, now unused */ - { "simulation-delay", "u", G_TYPE_UINT, - TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT, - GUINT_TO_POINTER (1000), /* default */ - 0, /* unused, formerly struct offset */ - NULL, /* no filter */ - NULL, /* filter data, unused here */ - NULL }, /* setter data, now unused */ - { NULL } -}; - -static const TpCMParamSpec * -get_parameters (TpBaseProtocol *self) -{ - return example_call_example_params; -} - -static TpBaseConnection * -new_connection (TpBaseProtocol *protocol, - GHashTable *asv, - GError **error) -{ - ExampleCallConnection *conn; - const gchar *account; - guint sim_delay; - - account = tp_asv_get_string (asv, "account"); - /* telepathy-glib checked this for us */ - g_assert (account != NULL); - - sim_delay = tp_asv_get_uint32 (asv, "simulation-delay", NULL); - - conn = EXAMPLE_CALL_CONNECTION ( - g_object_new (EXAMPLE_TYPE_CALL_CONNECTION, - "account", account, - "protocol", tp_base_protocol_get_name (protocol), - "simulation-delay", sim_delay, - NULL)); - - return (TpBaseConnection *) conn; -} - -static gchar * -normalize_contact (TpBaseProtocol *self G_GNUC_UNUSED, - const gchar *contact, - GError **error) -{ - gchar *normal; - - if (example_call_protocol_check_contact_id (contact, &normal, error)) - return normal; - else - return NULL; -} - -static gchar * -identify_account (TpBaseProtocol *self G_GNUC_UNUSED, - GHashTable *asv, - GError **error) -{ - const gchar *account = tp_asv_get_string (asv, "account"); - - if (account != NULL) - return normalize_contact (self, account, error); - - g_set_error (error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, - "'account' parameter not given"); - return NULL; -} - -static GStrv -get_interfaces (TpBaseProtocol *self) -{ - return NULL; -} - -static void -get_connection_details (TpBaseProtocol *self G_GNUC_UNUSED, - GStrv *connection_interfaces, - GType **channel_managers, - gchar **icon_name, - gchar **english_name, - gchar **vcard_field) -{ - if (connection_interfaces != NULL) - { - *connection_interfaces = g_strdupv ( - (GStrv) example_call_connection_get_possible_interfaces ()); - } - - if (channel_managers != NULL) - { - GType types[] = { EXAMPLE_TYPE_CALL_MANAGER, G_TYPE_INVALID }; - - *channel_managers = g_memdup (types, sizeof (types)); - } - - if (icon_name != NULL) - *icon_name = g_strdup ("face-smile"); - - if (english_name != NULL) - *english_name = g_strdup ("Example with Call channels"); - - if (vcard_field != NULL) - *vcard_field = g_strdup ("x-telepathy-example"); -} - -static void -example_call_protocol_class_init ( - ExampleCallProtocolClass *klass) -{ - TpBaseProtocolClass *base_class = - (TpBaseProtocolClass *) klass; - - base_class->get_parameters = get_parameters; - base_class->new_connection = new_connection; - - base_class->normalize_contact = normalize_contact; - base_class->identify_account = identify_account; - base_class->get_interfaces = get_interfaces; - base_class->get_connection_details = get_connection_details; -} diff -Nru telepathy-glib-0.17.4/examples/future/call-cm/protocol.h telepathy-glib-0.17.5/examples/future/call-cm/protocol.h --- telepathy-glib-0.17.4/examples/future/call-cm/protocol.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/call-cm/protocol.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -/* - * protocol.h - header for an example Protocol - * Copyright © 2007-2010 Collabora Ltd. - * - * Copying and distribution of this file, with or without modification, - * are permitted in any medium without royalty provided the copyright - * notice and this notice are preserved. - */ - -#ifndef EXAMPLE_CALL_PROTOCOL_H -#define EXAMPLE_CALL_PROTOCOL_H - -#include -#include - -G_BEGIN_DECLS - -typedef struct _ExampleCallProtocol ExampleCallProtocol; -typedef struct _ExampleCallProtocolPrivate ExampleCallProtocolPrivate; -typedef struct _ExampleCallProtocolClass ExampleCallProtocolClass; -typedef struct _ExampleCallProtocolClassPrivate ExampleCallProtocolClassPrivate; - -struct _ExampleCallProtocolClass { - TpBaseProtocolClass parent_class; - - ExampleCallProtocolClassPrivate *priv; -}; - -struct _ExampleCallProtocol { - TpBaseProtocol parent; - - ExampleCallProtocolPrivate *priv; -}; - -GType example_call_protocol_get_type (void); - -#define EXAMPLE_TYPE_CALL_PROTOCOL \ - (example_call_protocol_get_type ()) -#define EXAMPLE_CALL_PROTOCOL(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - EXAMPLE_TYPE_CALL_PROTOCOL, \ - ExampleCallProtocol)) -#define EXAMPLE_CALL_PROTOCOL_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST ((klass), \ - EXAMPLE_TYPE_CALL_PROTOCOL, \ - ExampleCallProtocolClass)) -#define EXAMPLE_IS_CALL_PROTOCOL(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - EXAMPLE_TYPE_CALL_PROTOCOL)) -#define EXAMPLE_IS_CALL_PROTOCOL_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - EXAMPLE_TYPE_CALL_PROTOCOL)) -#define EXAMPLE_CALL_PROTOCOL_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - EXAMPLE_TYPE_CALL_PROTOCOL, \ - ExampleCallProtocolClass)) - -gboolean example_call_protocol_check_contact_id (const gchar *id, - gchar **normal, - GError **error); - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/examples/future/Makefile.am telepathy-glib-0.17.5/examples/future/Makefile.am --- telepathy-glib-0.17.4/examples/future/Makefile.am 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -SUBDIRS = call-cm diff -Nru telepathy-glib-0.17.4/examples/future/Makefile.in telepathy-glib-0.17.5/examples/future/Makefile.in --- telepathy-glib-0.17.4/examples/future/Makefile.in 2011-12-19 15:18:54.000000000 +0000 +++ telepathy-glib-0.17.5/examples/future/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,620 +0,0 @@ -# Makefile.in generated by automake 1.11.1 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. -# 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. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = examples/future -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/compiler.m4 \ - $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/introspection.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/linker.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/tp-compiler-flag.m4 \ - $(top_srcdir)/m4/tp-compiler-warnings.m4 \ - $(top_srcdir)/m4/tp-linker-flag.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -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_0 = @ -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DBUS_CFLAGS = @DBUS_CFLAGS@ -DBUS_LIBS = @DBUS_LIBS@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENABLE_CODING_STYLE_CHECKS = @ENABLE_CODING_STYLE_CHECKS@ -ENABLE_DOC_CHECKS = @ENABLE_DOC_CHECKS@ -ERROR_CFLAGS = @ERROR_CFLAGS@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@ -GIO_UNIX_LIBS = @GIO_UNIX_LIBS@ -GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ -GLIB_LIBS = @GLIB_LIBS@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GREP = @GREP@ -GTKDOC_CHECK = @GTKDOC_CHECK@ -GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ -GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ -GTKDOC_MKPDF = @GTKDOC_MKPDF@ -GTKDOC_REBASE = @GTKDOC_REBASE@ -HAVE_VALA = @HAVE_VALA@ -HTML_DIR = @HTML_DIR@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_AGE = @LT_AGE@ -LT_CURRENT = @LT_CURRENT@ -LT_REVISION = @LT_REVISION@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TP_GLIB_CFLAGS = @TP_GLIB_CFLAGS@ -VALAC = @VALAC@ -VALAFLAGS = @VALAFLAGS@ -VAPIGEN = @VAPIGEN@ -VERSION = @VERSION@ -VERSION_SCRIPT_ARG = @VERSION_SCRIPT_ARG@ -XSLTPROC = @XSLTPROC@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -tpglibtestsdir = @tpglibtestsdir@ -SUBDIRS = call-cm -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/future/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu examples/future/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - 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 \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-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 -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean 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-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru telepathy-glib-0.17.4/examples/Makefile.am telepathy-glib-0.17.5/examples/Makefile.am --- telepathy-glib-0.17.4/examples/Makefile.am 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/examples/Makefile.am 2012-02-20 16:56:41.000000000 +0000 @@ -1,4 +1,4 @@ # extensions has to be compiled first, because other examples need it. -SUBDIRS = extensions client cm future +SUBDIRS = extensions client cm EXTRA_DIST = README diff -Nru telepathy-glib-0.17.4/examples/Makefile.in telepathy-glib-0.17.5/examples/Makefile.in --- telepathy-glib-0.17.4/examples/Makefile.in 2011-12-19 15:18:53.000000000 +0000 +++ telepathy-glib-0.17.5/examples/Makefile.in 2012-02-20 17:31:09.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -50,11 +50,11 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = 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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -269,7 +269,7 @@ tpglibtestsdir = @tpglibtestsdir@ # extensions has to be compiled first, because other examples need it. -SUBDIRS = extensions client cm future +SUBDIRS = extensions client cm EXTRA_DIST = README all: all-recursive @@ -519,10 +519,15 @@ 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: diff -Nru telepathy-glib-0.17.4/extensions/all.xml telepathy-glib-0.17.5/extensions/all.xml --- telepathy-glib-0.17.4/extensions/all.xml 2010-11-08 13:45:47.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/all.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ - - -Extensions from the future - - - - - - - diff -Nru telepathy-glib-0.17.4/extensions/call-content.c telepathy-glib-0.17.5/extensions/call-content.c --- telepathy-glib-0.17.4/extensions/call-content.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/call-content.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,161 +0,0 @@ -/* - * call-content.c - proxy for a Content in a Call channel - * - * Copyright (C) 2009 Collabora Ltd. - * Copyright (C) 2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "extensions/call-content.h" - -#include -#include - -#include "extensions/extensions.h" - -/* Generated code */ -#include "_gen/cli-call-content-body.h" - -/** - * SECTION:call-content - * @title: FutureCallContent - * @short_description: proxy for a Content in a Call channel - * @see_also: #TpChannel - * - * FIXME - * - * Since: FIXME - */ - -/** - * FutureCallContentClass: - * - * The class of a #FutureCallContent. - * - * Since: FIXME - */ -struct _FutureCallContentClass { - TpProxyClass parent_class; - /**/ - gpointer priv; -}; - -/** - * FutureCallContent: - * - * A proxy object for a Telepathy connection manager. - * - * Since: FIXME - */ -struct _FutureCallContent { - TpProxy parent; - /**/ - FutureCallContentPrivate *priv; -}; - -struct _FutureCallContentPrivate { - int dummy; -}; - -G_DEFINE_TYPE (FutureCallContent, - future_call_content, - TP_TYPE_PROXY); - -static void -future_call_content_init (FutureCallContent *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, FUTURE_TYPE_CALL_CONTENT, - FutureCallContentPrivate); -} - -static void -future_call_content_class_init (FutureCallContentClass *klass) -{ - TpProxyClass *proxy_class = (TpProxyClass *) klass; - - g_type_class_add_private (klass, sizeof (FutureCallContentPrivate)); - - proxy_class->must_have_unique_name = TRUE; - proxy_class->interface = FUTURE_IFACE_QUARK_CALL_CONTENT; - future_call_content_init_known_interfaces (); -} - -/** - * future_call_content_new: - * @channel: the Call channel - * @object_path: the object path of the content; may not be %NULL - * @error: used to indicate the error if %NULL is returned - * - * - * - * Returns: a new content proxy, or %NULL on invalid arguments - * - * Since: FIXME - */ -FutureCallContent * -future_call_content_new (TpChannel *channel, - const gchar *object_path, - GError **error) -{ - FutureCallContent *ret = NULL; - - g_return_val_if_fail (TP_IS_CHANNEL (channel), NULL); - g_return_val_if_fail (object_path != NULL, NULL); - - if (!tp_dbus_check_valid_object_path (object_path, error)) - goto finally; - - ret = FUTURE_CALL_CONTENT (g_object_new (FUTURE_TYPE_CALL_CONTENT, - /* FIXME: pass in the Channel as a property? */ - "dbus-daemon", tp_proxy_get_dbus_daemon (channel), - "bus-name", tp_proxy_get_bus_name (channel), - "object-path", object_path, - NULL)); - -finally: - return ret; -} - -/** - * future_call_content_init_known_interfaces: - * - * Ensure that the known interfaces for FutureCallContent have been set up. - * This is done automatically when necessary, but for correct - * overriding of library interfaces by local extensions, you should - * call this function before calling - * tp_proxy_or_subclass_hook_on_interface_add() with first argument - * %FUTURE_TYPE_CALL_CONTENT. - * - * Since: 0.7.32 - */ -void -future_call_content_init_known_interfaces (void) -{ - static gsize once = 0; - - if (g_once_init_enter (&once)) - { - GType tp_type = FUTURE_TYPE_CALL_CONTENT; - - tp_proxy_init_known_interfaces (); - tp_proxy_or_subclass_hook_on_interface_add (tp_type, - future_cli_call_content_add_signals); - tp_proxy_subclass_add_error_mapping (tp_type, - TP_ERROR_PREFIX, TP_ERRORS, TP_TYPE_ERROR); - - g_once_init_leave (&once, 1); - } -} diff -Nru telepathy-glib-0.17.4/extensions/call-content.h telepathy-glib-0.17.5/extensions/call-content.h --- telepathy-glib-0.17.4/extensions/call-content.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/call-content.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* - * call-content.h - proxy for a Content in a Call channel - * - * Copyright (C) 2009 Collabora Ltd. - * Copyright (C) 2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef FUTURE_CALL_CONTENT_H -#define FUTURE_CALL_CONTENT_H - -#include -#include - -G_BEGIN_DECLS - -typedef struct _FutureCallContent FutureCallContent; -typedef struct _FutureCallContentPrivate FutureCallContentPrivate; -typedef struct _FutureCallContentClass FutureCallContentClass; - -GType future_call_content_get_type (void); - -/* TYPE MACROS */ -#define FUTURE_TYPE_CALL_CONTENT \ - (future_call_content_get_type ()) -#define FUTURE_CALL_CONTENT(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), FUTURE_TYPE_CALL_CONTENT, \ - FutureCallContent)) -#define FUTURE_CALL_CONTENT_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass), FUTURE_TYPE_CALL_CONTENT, \ - FutureCallContentClass)) -#define FUTURE_IS_CALL_CONTENT(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj), FUTURE_TYPE_CALL_CONTENT)) -#define FUTURE_IS_CALL_CONTENT_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass), FUTURE_TYPE_CALL_CONTENT)) -#define FUTURE_CALL_CONTENT_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), FUTURE_TYPE_CALL_CONTENT, \ - FutureCallContentClass)) - -FutureCallContent *future_call_content_new (TpChannel *channel, - const gchar *object_path, GError **error); - -void future_call_content_init_known_interfaces (void); - -G_END_DECLS - -#include "extensions/_gen/cli-call-content.h" - -#endif diff -Nru telepathy-glib-0.17.4/extensions/call-content.xml telepathy-glib-0.17.5/extensions/call-content.xml --- telepathy-glib-0.17.4/extensions/call-content.xml 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/call-content.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ - - -Call Content - - - - - diff -Nru telepathy-glib-0.17.4/extensions/call-stream.c telepathy-glib-0.17.5/extensions/call-stream.c --- telepathy-glib-0.17.4/extensions/call-stream.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/call-stream.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,161 +0,0 @@ -/* - * call-stream.c - proxy for a Stream in a Call channel - * - * Copyright (C) 2009 Collabora Ltd. - * Copyright (C) 2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "extensions/call-stream.h" - -#include -#include - -#include "extensions/extensions.h" - -/* Generated code */ -#include "_gen/cli-call-stream-body.h" - -/** - * SECTION:call-stream - * @title: FutureCallStream - * @short_description: proxy for a Stream in a Call channel - * @see_also: #TpChannel - * - * FIXME - * - * Since: FIXME - */ - -/** - * FutureCallStreamClass: - * - * The class of a #FutureCallStream. - * - * Since: FIXME - */ -struct _FutureCallStreamClass { - TpProxyClass parent_class; - /**/ - gpointer priv; -}; - -/** - * FutureCallStream: - * - * A proxy object for a Telepathy connection manager. - * - * Since: FIXME - */ -struct _FutureCallStream { - TpProxy parent; - /**/ - FutureCallStreamPrivate *priv; -}; - -struct _FutureCallStreamPrivate { - int dummy; -}; - -G_DEFINE_TYPE (FutureCallStream, - future_call_stream, - TP_TYPE_PROXY); - -static void -future_call_stream_init (FutureCallStream *self) -{ - self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, FUTURE_TYPE_CALL_STREAM, - FutureCallStreamPrivate); -} - -static void -future_call_stream_class_init (FutureCallStreamClass *klass) -{ - TpProxyClass *proxy_class = (TpProxyClass *) klass; - - g_type_class_add_private (klass, sizeof (FutureCallStreamPrivate)); - - proxy_class->must_have_unique_name = TRUE; - proxy_class->interface = FUTURE_IFACE_QUARK_CALL_STREAM; - future_call_stream_init_known_interfaces (); -} - -/** - * future_call_stream_new: - * @channel: the Call channel - * @object_path: the object path of the stream; may not be %NULL - * @error: used to indicate the error if %NULL is returned - * - * - * - * Returns: a new stream proxy, or %NULL on invalid arguments - * - * Since: FIXME - */ -FutureCallStream * -future_call_stream_new (TpChannel *channel, - const gchar *object_path, - GError **error) -{ - FutureCallStream *ret = NULL; - - g_return_val_if_fail (TP_IS_CHANNEL (channel), NULL); - g_return_val_if_fail (object_path != NULL, NULL); - - if (!tp_dbus_check_valid_object_path (object_path, error)) - goto finally; - - ret = FUTURE_CALL_STREAM (g_object_new (FUTURE_TYPE_CALL_STREAM, - /* FIXME: pass in the Channel as a property? */ - "dbus-daemon", tp_proxy_get_dbus_daemon (channel), - "bus-name", tp_proxy_get_bus_name (channel), - "object-path", object_path, - NULL)); - -finally: - return ret; -} - -/** - * future_call_stream_init_known_interfaces: - * - * Ensure that the known interfaces for FutureCallStream have been set up. - * This is done automatically when necessary, but for correct - * overriding of library interfaces by local extensions, you should - * call this function before calling - * tp_proxy_or_subclass_hook_on_interface_add() with first argument - * %FUTURE_TYPE_CALL_STREAM. - * - * Since: 0.7.32 - */ -void -future_call_stream_init_known_interfaces (void) -{ - static gsize once = 0; - - if (g_once_init_enter (&once)) - { - GType tp_type = FUTURE_TYPE_CALL_STREAM; - - tp_proxy_init_known_interfaces (); - tp_proxy_or_subclass_hook_on_interface_add (tp_type, - future_cli_call_stream_add_signals); - tp_proxy_subclass_add_error_mapping (tp_type, - TP_ERROR_PREFIX, TP_ERRORS, TP_TYPE_ERROR); - - g_once_init_leave (&once, 1); - } -} diff -Nru telepathy-glib-0.17.4/extensions/call-stream.h telepathy-glib-0.17.5/extensions/call-stream.h --- telepathy-glib-0.17.4/extensions/call-stream.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/call-stream.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* - * call-stream.h - proxy for a Stream in a Call channel - * - * Copyright (C) 2009 Collabora Ltd. - * Copyright (C) 2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef FUTURE_CALL_STREAM_H -#define FUTURE_CALL_STREAM_H - -#include -#include - -G_BEGIN_DECLS - -typedef struct _FutureCallStream FutureCallStream; -typedef struct _FutureCallStreamPrivate FutureCallStreamPrivate; -typedef struct _FutureCallStreamClass FutureCallStreamClass; - -GType future_call_stream_get_type (void); - -/* TYPE MACROS */ -#define FUTURE_TYPE_CALL_STREAM \ - (future_call_stream_get_type ()) -#define FUTURE_CALL_STREAM(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj), FUTURE_TYPE_CALL_STREAM, \ - FutureCallStream)) -#define FUTURE_CALL_STREAM_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass), FUTURE_TYPE_CALL_STREAM, \ - FutureCallStreamClass)) -#define FUTURE_IS_CALL_STREAM(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE((obj), FUTURE_TYPE_CALL_STREAM)) -#define FUTURE_IS_CALL_STREAM_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE((klass), FUTURE_TYPE_CALL_STREAM)) -#define FUTURE_CALL_STREAM_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), FUTURE_TYPE_CALL_STREAM, \ - FutureCallStreamClass)) - -FutureCallStream *future_call_stream_new (TpChannel *channel, - const gchar *object_path, GError **error); - -void future_call_stream_init_known_interfaces (void); - -G_END_DECLS - -#include "extensions/_gen/cli-call-stream.h" - -#endif diff -Nru telepathy-glib-0.17.4/extensions/call-stream.xml telepathy-glib-0.17.5/extensions/call-stream.xml --- telepathy-glib-0.17.4/extensions/call-stream.xml 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/call-stream.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ - - -Call Stream - - - - - diff -Nru telepathy-glib-0.17.4/extensions/channel.xml telepathy-glib-0.17.5/extensions/channel.xml --- telepathy-glib-0.17.4/extensions/channel.xml 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/channel.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ - - -Channel extensions from the future - - - - diff -Nru telepathy-glib-0.17.4/extensions/extensions.c telepathy-glib-0.17.5/extensions/extensions.c --- telepathy-glib-0.17.4/extensions/extensions.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/extensions.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -#include "extensions.h" - -/* include auto-generated stubs for things common to service and client */ -#include "_gen/gtypes-body.h" -#include "_gen/interfaces-body.h" -#include "_gen/signals-marshal.h" diff -Nru telepathy-glib-0.17.4/extensions/extensions-cli.c telepathy-glib-0.17.5/extensions/extensions-cli.c --- telepathy-glib-0.17.4/extensions/extensions-cli.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/extensions-cli.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -#include "extensions.h" - -#include -#include - -static void _future_ext_register_dbus_glib_marshallers (void); - -/* include auto-generated stubs for client-specific code */ -#include "_gen/signals-marshal.h" -#include "_gen/cli-channel-body.h" -#include "_gen/cli-misc-body.h" -#include "_gen/register-dbus-glib-marshallers-body.h" - -static gpointer -future_cli_once (gpointer data) -{ - _future_ext_register_dbus_glib_marshallers (); - - tp_channel_init_known_interfaces (); - - tp_proxy_or_subclass_hook_on_interface_add (TP_TYPE_PROXY, - future_cli_misc_add_signals); - tp_proxy_or_subclass_hook_on_interface_add (TP_TYPE_CHANNEL, - future_cli_channel_add_signals); - - return NULL; -} - -void -future_cli_init (void) -{ - static GOnce once = G_ONCE_INIT; - - g_once (&once, future_cli_once, NULL); -} diff -Nru telepathy-glib-0.17.4/extensions/extensions.h telepathy-glib-0.17.5/extensions/extensions.h --- telepathy-glib-0.17.4/extensions/extensions.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/extensions.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -#ifndef FUTURE_EXTENSIONS_H -#define FUTURE_EXTENSIONS_H - -#include -#include - -#include "extensions/_gen/enums.h" -#include "extensions/_gen/cli-channel.h" -#include "extensions/_gen/cli-misc.h" -#include "extensions/_gen/svc-call-content.h" -#include "extensions/_gen/svc-call-stream.h" -#include "extensions/_gen/svc-channel.h" -#include "extensions/_gen/svc-misc.h" - -#include "extensions/call-content.h" -#include "extensions/call-stream.h" - -G_BEGIN_DECLS - -#include "extensions/_gen/gtypes.h" -#include "extensions/_gen/interfaces.h" - -void future_cli_init (void); - -G_END_DECLS - -#endif diff -Nru telepathy-glib-0.17.4/extensions/Makefile.am telepathy-glib-0.17.5/extensions/Makefile.am --- telepathy-glib-0.17.4/extensions/Makefile.am 2011-04-26 09:30:09.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/Makefile.am 1970-01-01 00:00:00.000000000 +0000 @@ -1,179 +0,0 @@ -# This directory re-uses telepathy-glib's code generation mechanisms to -# generate code for interfaces that aren't stable enough for telepathy-glib -# yet, so we can start to adapt example code to use them. - -tools_dir = $(top_srcdir)/tools - -AM_CFLAGS = \ - $(ERROR_CFLAGS) \ - $(DBUS_CFLAGS) \ - $(GLIB_CFLAGS) \ - $(TP_GLIB_CFLAGS) -AM_LDFLAGS = \ - $(ERROR_LDFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - all.xml \ - call-content.xml \ - call-stream.xml \ - channel.xml \ - misc.xml - -noinst_LTLIBRARIES = libfuture-extensions.la - -# In an external project you'd use $(TP_GLIB_LIBS) (obtained from -# pkg-config via autoconf) instead of the .la path -libfuture_extensions_la_LIBADD = \ - $(GLIB_LIBS) \ - $(DBUS_LIBS) \ - $(top_builddir)/telepathy-glib/libtelepathy-glib.la - -libfuture_extensions_la_SOURCES = \ - call-content.c \ - call-content.h \ - call-stream.c \ - call-stream.h \ - extensions.c \ - extensions-cli.c \ - extensions.h - -nodist_libfuture_extensions_la_SOURCES = \ - _gen/signals-marshal.c \ - _gen/signals-marshal.h \ - _gen/signals-marshal.list \ - _gen/register-dbus-glib-marshallers-body.h \ - _gen/enums.h \ - _gen/gtypes.h \ - _gen/gtypes-body.h \ - _gen/interfaces.h \ - _gen/interfaces-body.h \ - _gen/cli-call-content.h \ - _gen/cli-call-content-body.h \ - _gen/cli-call-stream.h \ - _gen/cli-call-stream-body.h \ - _gen/cli-channel.h \ - _gen/cli-channel-body.h \ - _gen/cli-misc.h \ - _gen/cli-misc-body.h \ - _gen/svc-call-content.h \ - _gen/svc-call-content.c \ - _gen/svc-call-stream.h \ - _gen/svc-call-stream.c \ - _gen/svc-channel.h \ - _gen/svc-channel.c \ - _gen/svc-misc.h \ - _gen/svc-misc.c - -BUILT_SOURCES = \ - _gen/all.xml \ - _gen/call-content.xml \ - _gen/call-stream.xml \ - _gen/channel.xml \ - _gen/misc.xml \ - $(nodist_libfuture_extensions_la_SOURCES) - -CLEANFILES = $(BUILT_SOURCES) - -clean-local: - rm -rf _gen - -XSLTPROCFLAGS = --nonet --novalid - -# Generated files which can be generated for all categories simultaneously - -_gen/all.xml: all.xml $(wildcard $(srcdir)/*.xml) $(wildcard $(top_srcdir)/spec/*.xml) $(tools_dir)/xincludator.py - $(mkdir_p) _gen - $(AM_V_GEN)$(PYTHON) $(tools_dir)/xincludator.py $< > $@ - -_gen/gtypes.h _gen/gtypes-body.h: _gen/all.xml \ - $(top_srcdir)/tools/glib-gtypes-generator.py - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/tools/glib-gtypes-generator.py \ - $< _gen/gtypes Future - -_gen/signals-marshal.list: _gen/all.xml \ - $(tools_dir)/glib-signals-marshal-gen.py - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-signals-marshal-gen.py $< > $@ - -_gen/signals-marshal.h: _gen/signals-marshal.list Makefile.am - $(AM_V_GEN)$(GLIB_GENMARSHAL) --header --prefix=_future_ext_marshal $< > $@ - -_gen/signals-marshal.c: _gen/signals-marshal.list Makefile.am - $(AM_V_GEN){ echo '#include "_gen/signals-marshal.h"' && \ - $(GLIB_GENMARSHAL) --body --prefix=_future_ext_marshal $< ; } > $@ - -_gen/register-dbus-glib-marshallers-body.h: _gen/all.xml \ - $(tools_dir)/glib-client-marshaller-gen.py - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-marshaller-gen.py $< \ - _future_ext > $@ - -_gen/enums.h: _gen/all.xml \ - $(tools_dir)/c-constants-gen.py - $(AM_V_GEN)$(PYTHON) $(tools_dir)/c-constants-gen.py \ - Future \ - $< _gen/enums - -_gen/interfaces-body.h _gen/interfaces.h: _gen/all.xml \ - $(tools_dir)/glib-interfaces-gen.py - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-interfaces-gen.py \ - Future _gen/interfaces-body.h _gen/interfaces.h $< - -# Generated files which must be generated per "category". Each TpProxy -# subclass you want to use with --subclass will need to have its own category, -# although you can subdivide further if you want. - -_gen/%.xml: %.xml $(wildcard $(srcdir)/*.xml) $(wildcard $(top_srcdir)/spec/*.xml) $(tools_dir)/xincludator.py - $(mkdir_p) _gen - $(AM_V_GEN)$(PYTHON) $(tools_dir)/xincludator.py $< > $@ - -_gen/svc-%.c _gen/svc-%.h: _gen/%.xml \ - $(tools_dir)/glib-ginterface-gen.py - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-ginterface-gen.py \ - --filename=_gen/svc-$* \ - --signal-marshal-prefix=_future_ext \ - --include='' \ - --include='"_gen/signals-marshal.h"' \ - --not-implemented-func='tp_dbus_g_method_return_not_implemented' \ - --allow-unstable \ - $< Future_Svc_ - -_gen/cli-channel-body.h _gen/cli-channel.h: _gen/channel.xml \ - $(tools_dir)/glib-client-gen.py Makefile.am - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \ - --group=channel \ - --subclass=TpChannel \ - --subclass-assert=TP_IS_CHANNEL \ - --iface-quark-prefix=FUTURE_IFACE_QUARK \ - --tp-proxy-api=0.7.6 \ - $< Future_Cli _gen/cli-channel - -_gen/cli-call-content-body.h _gen/cli-call-content.h: _gen/call-content.xml \ - $(tools_dir)/glib-client-gen.py Makefile.am - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \ - --group=call_content \ - --subclass=FutureCallContent \ - --subclass-assert=FUTURE_IS_CALL_CONTENT \ - --iface-quark-prefix=FUTURE_IFACE_QUARK \ - --tp-proxy-api=0.7.6 \ - $< Future_Cli _gen/cli-call-content - -_gen/cli-call-stream-body.h _gen/cli-call-stream.h: _gen/call-stream.xml \ - $(tools_dir)/glib-client-gen.py Makefile.am - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \ - --group=call_stream \ - --subclass=FutureCallStream \ - --subclass-assert=FUTURE_IS_CALL_STREAM \ - --iface-quark-prefix=FUTURE_IFACE_QUARK \ - --tp-proxy-api=0.7.6 \ - $< Future_Cli _gen/cli-call-stream - -# for now the Endpoint etc. interfaces are on every TpProxy - when we -# have a TpCallEndpoint etc., they should appear on that - -_gen/cli-misc-body.h _gen/cli-misc.h: _gen/misc.xml \ - $(tools_dir)/glib-client-gen.py Makefile.am - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \ - --group=misc \ - --iface-quark-prefix=FUTURE_IFACE_QUARK \ - --tp-proxy-api=0.7.6 \ - $< Future_Cli _gen/cli-misc diff -Nru telepathy-glib-0.17.4/extensions/Makefile.in telepathy-glib-0.17.5/extensions/Makefile.in --- telepathy-glib-0.17.4/extensions/Makefile.in 2011-12-19 15:18:55.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/Makefile.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,786 +0,0 @@ -# Makefile.in generated by automake 1.11.1 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. -# 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. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# This directory re-uses telepathy-glib's code generation mechanisms to -# generate code for interfaces that aren't stable enough for telepathy-glib -# yet, so we can start to adapt example code to use them. - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = extensions -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/compiler.m4 \ - $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/introspection.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/linker.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/tp-compiler-flag.m4 \ - $(top_srcdir)/m4/tp-compiler-warnings.m4 \ - $(top_srcdir)/m4/tp-linker-flag.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -am__DEPENDENCIES_1 = -libfuture_extensions_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) \ - $(top_builddir)/telepathy-glib/libtelepathy-glib.la -am_libfuture_extensions_la_OBJECTS = call-content.lo call-stream.lo \ - extensions.lo extensions-cli.lo -nodist_libfuture_extensions_la_OBJECTS = signals-marshal.lo \ - svc-call-content.lo svc-call-stream.lo svc-channel.lo \ - svc-misc.lo -libfuture_extensions_la_OBJECTS = \ - $(am_libfuture_extensions_la_OBJECTS) \ - $(nodist_libfuture_extensions_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) -am__v_lt_0 = --silent -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -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_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -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_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libfuture_extensions_la_SOURCES) \ - $(nodist_libfuture_extensions_la_SOURCES) -DIST_SOURCES = $(libfuture_extensions_la_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -COVERAGE_CFLAGS = @COVERAGE_CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DBUS_CFLAGS = @DBUS_CFLAGS@ -DBUS_LIBS = @DBUS_LIBS@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENABLE_CODING_STYLE_CHECKS = @ENABLE_CODING_STYLE_CHECKS@ -ENABLE_DOC_CHECKS = @ENABLE_DOC_CHECKS@ -ERROR_CFLAGS = @ERROR_CFLAGS@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GIO_UNIX_CFLAGS = @GIO_UNIX_CFLAGS@ -GIO_UNIX_LIBS = @GIO_UNIX_LIBS@ -GLIB_CFLAGS = @GLIB_CFLAGS@ -GLIB_GENMARSHAL = @GLIB_GENMARSHAL@ -GLIB_LIBS = @GLIB_LIBS@ -GLIB_MKENUMS = @GLIB_MKENUMS@ -GREP = @GREP@ -GTKDOC_CHECK = @GTKDOC_CHECK@ -GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ -GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ -GTKDOC_MKPDF = @GTKDOC_MKPDF@ -GTKDOC_REBASE = @GTKDOC_REBASE@ -HAVE_VALA = @HAVE_VALA@ -HTML_DIR = @HTML_DIR@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@ -INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@ -INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@ -INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@ -INTROSPECTION_LIBS = @INTROSPECTION_LIBS@ -INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@ -INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@ -INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_AGE = @LT_AGE@ -LT_CURRENT = @LT_CURRENT@ -LT_REVISION = @LT_REVISION@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PYTHON = @PYTHON@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_VERSION = @PYTHON_VERSION@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -TP_GLIB_CFLAGS = @TP_GLIB_CFLAGS@ -VALAC = @VALAC@ -VALAFLAGS = @VALAFLAGS@ -VAPIGEN = @VAPIGEN@ -VERSION = @VERSION@ -VERSION_SCRIPT_ARG = @VERSION_SCRIPT_ARG@ -XSLTPROC = @XSLTPROC@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -tpglibtestsdir = @tpglibtestsdir@ -tools_dir = $(top_srcdir)/tools -AM_CFLAGS = \ - $(ERROR_CFLAGS) \ - $(DBUS_CFLAGS) \ - $(GLIB_CFLAGS) \ - $(TP_GLIB_CFLAGS) - -AM_LDFLAGS = \ - $(ERROR_LDFLAGS) \ - $(NULL) - -EXTRA_DIST = \ - all.xml \ - call-content.xml \ - call-stream.xml \ - channel.xml \ - misc.xml - -noinst_LTLIBRARIES = libfuture-extensions.la - -# In an external project you'd use $(TP_GLIB_LIBS) (obtained from -# pkg-config via autoconf) instead of the .la path -libfuture_extensions_la_LIBADD = \ - $(GLIB_LIBS) \ - $(DBUS_LIBS) \ - $(top_builddir)/telepathy-glib/libtelepathy-glib.la - -libfuture_extensions_la_SOURCES = \ - call-content.c \ - call-content.h \ - call-stream.c \ - call-stream.h \ - extensions.c \ - extensions-cli.c \ - extensions.h - -nodist_libfuture_extensions_la_SOURCES = \ - _gen/signals-marshal.c \ - _gen/signals-marshal.h \ - _gen/signals-marshal.list \ - _gen/register-dbus-glib-marshallers-body.h \ - _gen/enums.h \ - _gen/gtypes.h \ - _gen/gtypes-body.h \ - _gen/interfaces.h \ - _gen/interfaces-body.h \ - _gen/cli-call-content.h \ - _gen/cli-call-content-body.h \ - _gen/cli-call-stream.h \ - _gen/cli-call-stream-body.h \ - _gen/cli-channel.h \ - _gen/cli-channel-body.h \ - _gen/cli-misc.h \ - _gen/cli-misc-body.h \ - _gen/svc-call-content.h \ - _gen/svc-call-content.c \ - _gen/svc-call-stream.h \ - _gen/svc-call-stream.c \ - _gen/svc-channel.h \ - _gen/svc-channel.c \ - _gen/svc-misc.h \ - _gen/svc-misc.c - -BUILT_SOURCES = \ - _gen/all.xml \ - _gen/call-content.xml \ - _gen/call-stream.xml \ - _gen/channel.xml \ - _gen/misc.xml \ - $(nodist_libfuture_extensions_la_SOURCES) - -CLEANFILES = $(BUILT_SOURCES) -XSLTPROCFLAGS = --nonet --novalid -all: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu extensions/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu extensions/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_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 -libfuture-extensions.la: $(libfuture_extensions_la_OBJECTS) $(libfuture_extensions_la_DEPENDENCIES) - $(AM_V_CCLD)$(LINK) $(libfuture_extensions_la_OBJECTS) $(libfuture_extensions_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-content.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-stream.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extensions-cli.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extensions.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signals-marshal.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svc-call-content.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svc-call-stream.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svc-channel.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/svc-misc.Plo@am__quote@ - -.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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -signals-marshal.lo: _gen/signals-marshal.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) $(AM_CFLAGS) $(CFLAGS) -MT signals-marshal.lo -MD -MP -MF $(DEPDIR)/signals-marshal.Tpo -c -o signals-marshal.lo `test -f '_gen/signals-marshal.c' || echo '$(srcdir)/'`_gen/signals-marshal.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/signals-marshal.Tpo $(DEPDIR)/signals-marshal.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/signals-marshal.c' object='signals-marshal.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o signals-marshal.lo `test -f '_gen/signals-marshal.c' || echo '$(srcdir)/'`_gen/signals-marshal.c - -svc-call-content.lo: _gen/svc-call-content.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) $(AM_CFLAGS) $(CFLAGS) -MT svc-call-content.lo -MD -MP -MF $(DEPDIR)/svc-call-content.Tpo -c -o svc-call-content.lo `test -f '_gen/svc-call-content.c' || echo '$(srcdir)/'`_gen/svc-call-content.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/svc-call-content.Tpo $(DEPDIR)/svc-call-content.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/svc-call-content.c' object='svc-call-content.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o svc-call-content.lo `test -f '_gen/svc-call-content.c' || echo '$(srcdir)/'`_gen/svc-call-content.c - -svc-call-stream.lo: _gen/svc-call-stream.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) $(AM_CFLAGS) $(CFLAGS) -MT svc-call-stream.lo -MD -MP -MF $(DEPDIR)/svc-call-stream.Tpo -c -o svc-call-stream.lo `test -f '_gen/svc-call-stream.c' || echo '$(srcdir)/'`_gen/svc-call-stream.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/svc-call-stream.Tpo $(DEPDIR)/svc-call-stream.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/svc-call-stream.c' object='svc-call-stream.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o svc-call-stream.lo `test -f '_gen/svc-call-stream.c' || echo '$(srcdir)/'`_gen/svc-call-stream.c - -svc-channel.lo: _gen/svc-channel.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) $(AM_CFLAGS) $(CFLAGS) -MT svc-channel.lo -MD -MP -MF $(DEPDIR)/svc-channel.Tpo -c -o svc-channel.lo `test -f '_gen/svc-channel.c' || echo '$(srcdir)/'`_gen/svc-channel.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/svc-channel.Tpo $(DEPDIR)/svc-channel.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/svc-channel.c' object='svc-channel.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o svc-channel.lo `test -f '_gen/svc-channel.c' || echo '$(srcdir)/'`_gen/svc-channel.c - -svc-misc.lo: _gen/svc-misc.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) $(AM_CFLAGS) $(CFLAGS) -MT svc-misc.lo -MD -MP -MF $(DEPDIR)/svc-misc.Tpo -c -o svc-misc.lo `test -f '_gen/svc-misc.c' || echo '$(srcdir)/'`_gen/svc-misc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/svc-misc.Tpo $(DEPDIR)/svc-misc.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/svc-misc.c' object='svc-misc.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o svc-misc.lo `test -f '_gen/svc-misc.c' || echo '$(srcdir)/'`_gen/svc-misc.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-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 -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -clean: clean-am - -clean-am: clean-generic clean-libtool clean-local \ - clean-noinstLTLIBRARIES mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: all check install install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-local clean-noinstLTLIBRARIES 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-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am - - -clean-local: - rm -rf _gen - -# Generated files which can be generated for all categories simultaneously - -_gen/all.xml: all.xml $(wildcard $(srcdir)/*.xml) $(wildcard $(top_srcdir)/spec/*.xml) $(tools_dir)/xincludator.py - $(mkdir_p) _gen - $(AM_V_GEN)$(PYTHON) $(tools_dir)/xincludator.py $< > $@ - -_gen/gtypes.h _gen/gtypes-body.h: _gen/all.xml \ - $(top_srcdir)/tools/glib-gtypes-generator.py - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/tools/glib-gtypes-generator.py \ - $< _gen/gtypes Future - -_gen/signals-marshal.list: _gen/all.xml \ - $(tools_dir)/glib-signals-marshal-gen.py - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-signals-marshal-gen.py $< > $@ - -_gen/signals-marshal.h: _gen/signals-marshal.list Makefile.am - $(AM_V_GEN)$(GLIB_GENMARSHAL) --header --prefix=_future_ext_marshal $< > $@ - -_gen/signals-marshal.c: _gen/signals-marshal.list Makefile.am - $(AM_V_GEN){ echo '#include "_gen/signals-marshal.h"' && \ - $(GLIB_GENMARSHAL) --body --prefix=_future_ext_marshal $< ; } > $@ - -_gen/register-dbus-glib-marshallers-body.h: _gen/all.xml \ - $(tools_dir)/glib-client-marshaller-gen.py - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-marshaller-gen.py $< \ - _future_ext > $@ - -_gen/enums.h: _gen/all.xml \ - $(tools_dir)/c-constants-gen.py - $(AM_V_GEN)$(PYTHON) $(tools_dir)/c-constants-gen.py \ - Future \ - $< _gen/enums - -_gen/interfaces-body.h _gen/interfaces.h: _gen/all.xml \ - $(tools_dir)/glib-interfaces-gen.py - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-interfaces-gen.py \ - Future _gen/interfaces-body.h _gen/interfaces.h $< - -# Generated files which must be generated per "category". Each TpProxy -# subclass you want to use with --subclass will need to have its own category, -# although you can subdivide further if you want. - -_gen/%.xml: %.xml $(wildcard $(srcdir)/*.xml) $(wildcard $(top_srcdir)/spec/*.xml) $(tools_dir)/xincludator.py - $(mkdir_p) _gen - $(AM_V_GEN)$(PYTHON) $(tools_dir)/xincludator.py $< > $@ - -_gen/svc-%.c _gen/svc-%.h: _gen/%.xml \ - $(tools_dir)/glib-ginterface-gen.py - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-ginterface-gen.py \ - --filename=_gen/svc-$* \ - --signal-marshal-prefix=_future_ext \ - --include='' \ - --include='"_gen/signals-marshal.h"' \ - --not-implemented-func='tp_dbus_g_method_return_not_implemented' \ - --allow-unstable \ - $< Future_Svc_ - -_gen/cli-channel-body.h _gen/cli-channel.h: _gen/channel.xml \ - $(tools_dir)/glib-client-gen.py Makefile.am - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \ - --group=channel \ - --subclass=TpChannel \ - --subclass-assert=TP_IS_CHANNEL \ - --iface-quark-prefix=FUTURE_IFACE_QUARK \ - --tp-proxy-api=0.7.6 \ - $< Future_Cli _gen/cli-channel - -_gen/cli-call-content-body.h _gen/cli-call-content.h: _gen/call-content.xml \ - $(tools_dir)/glib-client-gen.py Makefile.am - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \ - --group=call_content \ - --subclass=FutureCallContent \ - --subclass-assert=FUTURE_IS_CALL_CONTENT \ - --iface-quark-prefix=FUTURE_IFACE_QUARK \ - --tp-proxy-api=0.7.6 \ - $< Future_Cli _gen/cli-call-content - -_gen/cli-call-stream-body.h _gen/cli-call-stream.h: _gen/call-stream.xml \ - $(tools_dir)/glib-client-gen.py Makefile.am - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \ - --group=call_stream \ - --subclass=FutureCallStream \ - --subclass-assert=FUTURE_IS_CALL_STREAM \ - --iface-quark-prefix=FUTURE_IFACE_QUARK \ - --tp-proxy-api=0.7.6 \ - $< Future_Cli _gen/cli-call-stream - -# for now the Endpoint etc. interfaces are on every TpProxy - when we -# have a TpCallEndpoint etc., they should appear on that - -_gen/cli-misc-body.h _gen/cli-misc.h: _gen/misc.xml \ - $(tools_dir)/glib-client-gen.py Makefile.am - $(AM_V_GEN)$(PYTHON) $(tools_dir)/glib-client-gen.py \ - --group=misc \ - --iface-quark-prefix=FUTURE_IFACE_QUARK \ - --tp-proxy-api=0.7.6 \ - $< Future_Cli _gen/cli-misc - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff -Nru telepathy-glib-0.17.4/extensions/misc.xml telepathy-glib-0.17.5/extensions/misc.xml --- telepathy-glib-0.17.4/extensions/misc.xml 2011-10-11 21:35:21.000000000 +0000 +++ telepathy-glib-0.17.5/extensions/misc.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ - - -Miscellaneous extensions from the future - - - - diff -Nru telepathy-glib-0.17.4/INSTALL telepathy-glib-0.17.5/INSTALL --- telepathy-glib-0.17.4/INSTALL 2011-11-24 09:26:22.000000000 +0000 +++ telepathy-glib-0.17.5/INSTALL 2012-02-01 12:09:16.000000000 +0000 @@ -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 @@ 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 `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended diff -Nru telepathy-glib-0.17.4/install-sh telepathy-glib-0.17.5/install-sh --- telepathy-glib-0.17.4/install-sh 2011-11-24 09:26:18.000000000 +0000 +++ telepathy-glib-0.17.5/install-sh 2012-02-01 12:09:13.000000000 +0000 @@ -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 @@ -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 @@ 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 @@ 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 @@ 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 @@ 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 @@ case $dstdir in /*) prefix='/';; - -*) prefix='./';; + [-=\(\)!]*) prefix='./';; *) prefix='';; esac @@ -403,7 +410,7 @@ for d do - test -z "$d" && continue + test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then diff -Nru telepathy-glib-0.17.4/ltmain.sh telepathy-glib-0.17.5/ltmain.sh --- telepathy-glib-0.17.4/ltmain.sh 2011-11-24 09:26:13.000000000 +0000 +++ telepathy-glib-0.17.5/ltmain.sh 2012-02-01 12:09:06.000000000 +0000 @@ -1,9 +1,9 @@ -# libtool (GNU libtool) 2.4 +# libtool (GNU libtool) 2.4.2 # Written by Gordon Matzigkeit , 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 Debian-2.4.2-1 # automake: $automake_version # autoconf: $autoconf_version # @@ -79,9 +80,9 @@ PROGRAM=libtool PACKAGE=libtool -VERSION=2.4 +VERSION="2.4.2 Debian-2.4.2-1" 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 @@ : ${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 @@ ;; *) save_IFS="$IFS" - IFS=: + IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break @@ -771,8 +767,8 @@ 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_help=false opt_help_all=false opt_silent=: +opt_warning=: opt_verbose=: opt_silent=false opt_verbose=false @@ -1120,6 +1117,10 @@ 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 @@ *.[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 @@ # 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 @@ # 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 @@ # 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 @@ { 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 @@ 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" @@ -6111,7 +6124,10 @@ case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then @@ -6147,7 +6163,8 @@ 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" @@ -6430,19 +6447,19 @@ # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done continue fi # $pass = conv @@ -6831,7 +6848,7 @@ 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 +7333,7 @@ # 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 @@ -7334,6 +7352,9 @@ revision="$number_minor" lt_irix_increment=no ;; + *) + func_fatal_configuration "$modename: unknown library version type \`$version_type'" + ;; esac ;; no) @@ -7432,7 +7453,7 @@ 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 +8041,11 @@ # 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 +8076,7 @@ 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 +8084,7 @@ 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 +9174,8 @@ 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 +9285,8 @@ *.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 -Nru telepathy-glib-0.17.4/m4/libtool.m4 telepathy-glib-0.17.5/m4/libtool.m4 --- telepathy-glib-0.17.4/m4/libtool.m4 2011-11-24 09:26:13.000000000 +0000 +++ telepathy-glib-0.17.5/m4/libtool.m4 2012-02-01 12:09:06.000000000 +0000 @@ -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([_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_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 @@ 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 @@ ])# _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 @@ 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 @@ $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 @@ 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 @@ [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 @@ 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_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 @@ _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 @@ 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 @@ 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 @@ 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 @@ # 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 @@ 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 @@ ;; 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 @@ ;; 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 @@ ;; 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 @@ 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 @@ 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 @@ esac shlibpath_var=LD_LIBRARY_PATH case $host_os in - freebsd2*) + freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) @@ -2455,17 +2513,18 @@ ;; 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 @@ ;; 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 @@ 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 @@ 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}' @@ -2610,14 +2669,10 @@ # before this can be enabled. hardcode_into_libs=yes - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -2629,6 +2684,18 @@ dynamic_linker='GNU/Linux ld.so' ;; +netbsdelf*-gnu) + version_type=linux + 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 + dynamic_linker='NetBSD ld.elf_so' + ;; + netbsd*) version_type=sunos need_lib_prefix=no @@ -2648,7 +2715,7 @@ ;; 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 +2784,7 @@ ;; 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 +2809,7 @@ ;; 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 +2833,7 @@ 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 +2864,7 @@ 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 +2874,7 @@ ;; 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,12 +3296,12 @@ 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 ;; -netbsd*) +netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else @@ -3649,6 +3716,7 @@ # 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};"\ @@ -4045,7 +4113,7 @@ ;; esac ;; - netbsd*) + netbsd* | netbsdelf*-gnu) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise @@ -4233,7 +4301,9 @@ 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 +4395,33 @@ ;; *) 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,13 +4581,18 @@ ;; 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'] ;; esac ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; @@ -4521,7 +4611,6 @@ _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 @@ -4566,6 +4655,9 @@ openbsd*) with_gnu_ld=no ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes @@ -4772,8 +4864,7 @@ 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~ @@ -4788,7 +4879,7 @@ fi ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= @@ -4965,6 +5056,7 @@ if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi + _LT_TAGVAR(link_all_deplibs, $1)=no else # not using gcc if test "$host_cpu" = ia64; then @@ -5068,6 +5160,7 @@ # 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 +5207,6 @@ _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 +5219,7 @@ ;; # 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 +5258,6 @@ 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 @@ -5273,7 +5361,7 @@ _LT_TAGVAR(link_all_deplibs, $1)=yes ;; - netbsd*) + netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else @@ -5611,9 +5699,6 @@ _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 +5856,6 @@ _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 +6225,7 @@ esac ;; - freebsd[[12]]*) + freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no @@ -6902,12 +6986,18 @@ } }; _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 +7194,6 @@ _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 +7326,6 @@ _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 +7512,77 @@ ])# _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 +7652,13 @@ 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 -Nru telepathy-glib-0.17.4/m4/ltoptions.m4 telepathy-glib-0.17.5/m4/ltoptions.m4 --- telepathy-glib-0.17.4/m4/ltoptions.m4 2011-11-24 09:26:13.000000000 +0000 +++ telepathy-glib-0.17.5/m4/ltoptions.m4 2012-02-01 12:09:07.000000000 +0000 @@ -326,9 +326,24 @@ # 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 -Nru telepathy-glib-0.17.4/m4/ltversion.m4 telepathy-glib-0.17.5/m4/ltversion.m4 --- telepathy-glib-0.17.4/m4/ltversion.m4 2011-11-24 09:26:14.000000000 +0000 +++ telepathy-glib-0.17.5/m4/ltversion.m4 2012-02-01 12:09:07.000000000 +0000 @@ -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 -Nru telepathy-glib-0.17.4/m4/Makefile.in telepathy-glib-0.17.5/m4/Makefile.in --- telepathy-glib-0.17.4/m4/Makefile.in 2011-12-19 15:18:55.000000000 +0000 +++ telepathy-glib-0.17.5/m4/Makefile.in 2012-02-20 17:31:10.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -50,11 +50,11 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = 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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -324,10 +324,15 @@ 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 -Nru telepathy-glib-0.17.4/Makefile.am telepathy-glib-0.17.5/Makefile.am --- telepathy-glib-0.17.4/Makefile.am 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/Makefile.am 2012-02-20 16:56:41.000000000 +0000 @@ -14,7 +14,6 @@ endif SUBDIRS += \ - extensions \ examples \ tests \ docs \ diff -Nru telepathy-glib-0.17.4/Makefile.in telepathy-glib-0.17.5/Makefile.in --- telepathy-glib-0.17.4/Makefile.in 2011-12-19 15:18:56.000000000 +0000 +++ telepathy-glib-0.17.5/Makefile.in 2012-02-20 17:31:11.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -57,11 +57,11 @@ CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = 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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -79,15 +79,16 @@ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags -DIST_SUBDIRS = m4 tools spec telepathy-glib vala extensions examples \ - tests docs +DIST_SUBDIRS = m4 tools spec telepathy-glib vala examples tests docs 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,'; \ @@ -116,6 +117,8 @@ 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@ AMTAR = @AMTAR@ @@ -287,7 +290,7 @@ tpglibtestsdir = @tpglibtestsdir@ ACLOCAL_AMFLAGS = -I m4 SUBDIRS = m4 tools spec telepathy-glib $(NULL) $(am__append_1) \ - extensions examples tests docs $(NULL) + examples tests docs $(NULL) DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --disable-debug EXTRA_DIST = \ autogen.sh \ @@ -302,7 +305,7 @@ $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: -am--refresh: +am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/tools/lcov.am $(srcdir)/tools/telepathy.am $(am__configure_deps) @for dep in $?; do \ @@ -327,6 +330,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; +$(srcdir)/tools/lcov.am $(srcdir)/tools/telepathy.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -338,10 +342,8 @@ $(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 @@ -573,7 +575,11 @@ $(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 @@ -581,7 +587,7 @@ $(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 @@ -612,6 +618,8 @@ 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*) \ @@ -632,6 +640,7 @@ && 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 \ @@ -660,8 +669,16 @@ 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)"; \ @@ -693,10 +710,15 @@ 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: @@ -785,8 +807,8 @@ .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am check-local 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 \ + dist-all dist-bzip2 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 \ @@ -841,7 +863,7 @@ dist-hook: chmod u+w ${distdir}/ChangeLog if test -d ${top_srcdir}/.git; then \ - git log --date=iso $(CHANGELOG_RANGE) > ${distdir}/ChangeLog; \ + ( cd ${top_srcdir} && git log --date=iso $(CHANGELOG_RANGE) ) > ${distdir}/ChangeLog; \ fi distcheck-hook: @@ -864,11 +886,13 @@ exit 2; \ ;; \ esac - @if ! git diff --no-ext-diff --quiet --exit-code; then \ + @cd ${top_srcdir} && \ + if ! git diff --no-ext-diff --quiet --exit-code; then \ echo "Hey! Your tree is dirty! No release for you." >&2; \ exit 2; \ fi - @if ! git diff --cached --no-ext-diff --quiet --exit-code; then \ + @cd ${top_srcdir} && \ + if ! git diff --cached --no-ext-diff --quiet --exit-code; then \ echo "Hey! You have changes staged! No release for you." >&2; \ exit 2; \ fi diff -Nru telepathy-glib-0.17.4/NEWS telepathy-glib-0.17.5/NEWS --- telepathy-glib-0.17.4/NEWS 2011-12-19 15:18:17.000000000 +0000 +++ telepathy-glib-0.17.5/NEWS 2012-02-20 17:31:02.000000000 +0000 @@ -1,3 +1,51 @@ +telepathy-glib 0.17.5 (2012-02-20) +================================== + +The “I have no privates but I have a heart!” release. + +Enhancements: + +• telepathy-spec 0.25.2: + · the Call1 family of interfaces + · Conn.I.Addressing1 + · Chan.I.CaptchaAuthentication1 + · Account.Supersedes + +• Add TpCallChannel, TpBaseCallChannel and other Call-related high-level API. + (A team effort involving Olivier, Xavier, Danielle, Sjoerd, Will, Nicolas, + Jonny, David and possibly others) + +• tp_account_manager_get_most_available_presence() now returns + (AVAILABLE, "available, "") if the only connected accounts does not implement + SimplePresence. (Guillaume) + +• Add tp_base_channel_get_self_handle(). (Xavier) + +• TpBaseChannel now has a virtual get_interfaces() method. (Danielle) + +• tp_connection_disconnect_async: high level API to disconnect a + TpConnection. (Simon) + +• tp_unix_connection_receive_credentials_with_byte() and + tp_unix_connection_send_credentials_with_byte() now have async equivalents. + (Xavier) + +• Produce DLL files when compiled for Windows. (Siraj) + +Fixes: + +• fd.o #45554: fix use-after-free if various async results are kept until + after the callback has returned, which is considered valid. (Simon) + +• tp_account_manager_get_most_available_presence() now returns ("offline, "") + as status and message if no account is connected, as stated in the doc, + instead of (NULL, NULL). (Guillaume) + +• TpChannel: fix a crash when preparing contacts. (Xavier) + +• fdo.o #45982: fix a crash in TpBaseContactList when using RenameGroup()'s + fallback code. (Guillaume) + telepathy-glib 0.17.4 (2011-12-19) ================================== diff -Nru telepathy-glib-0.17.4/spec/Account_Manager.xml telepathy-glib-0.17.5/spec/Account_Manager.xml --- telepathy-glib-0.17.4/spec/Account_Manager.xml 2011-10-11 15:02:48.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Account_Manager.xml 2012-02-20 16:56:41.000000000 +0000 @@ -145,6 +145,8 @@ ConnectAutomatically, Supersedes, + RequestedPresence and - Copyright © 2008-2009 Collabora Ltd. + Copyright © 2008-2012 Collabora Ltd. Copyright © 2008-2009 Nokia Corporation

    This library is free software; you can redistribute it and/or @@ -277,6 +277,9 @@ +

    For the IRC protocol, the network name (freenode, + gimpnet, etc.) can be used if relevant.

    +

    The Icon property SHOULD be set to a corresponding brand-specific icon name, if possible. In the future, this property may be used as an index into additional @@ -710,6 +713,35 @@ + + +

    A list of the object paths of formerly-used accounts which are + superseded by this one.

    + + +

    For instance, if an account is migrated from one connection + manager implementation to another, or even from one protocol + to another (for instance formerly-proprietary services which + can now be accessed via XMPP), log storage services could + look for logs under all of the superseded object paths as well + as the new object path.

    + +

    This is a list because a single user-visible account could be + migrated more than once.

    +
    + +

    If the Account Manager implementation performs an account migration + automatically, it SHOULD set this property. If a client performs + an account migration, it SHOULD set this property via + via the Properties argument of CreateAccount + when creating the migrated account. In either case, the value + SHOULD include the old account's path, and every path from + the old account's Supersedes property.

    + + +
    diff -Nru telepathy-glib-0.17.4/spec/all.xml telepathy-glib-0.17.5/spec/all.xml --- telepathy-glib-0.17.4/spec/all.xml 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/spec/all.xml 2012-02-20 16:56:41.000000000 +0000 @@ -3,9 +3,9 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> Telepathy D-Bus Interface Specification -0.25.1 +0.25.2 -Copyright © 2005-2011 Collabora Limited +Copyright © 2005-2012 Collabora Limited Copyright © 2005-2011 Nokia Corporation Copyright © 2006 INdT @@ -168,6 +168,7 @@ + @@ -241,6 +242,7 @@ + diff -Nru telepathy-glib-0.17.4/spec/Call_Content_Interface_Audio_Control.xml telepathy-glib-0.17.5/spec/Call_Content_Interface_Audio_Control.xml --- telepathy-glib-0.17.4/spec/Call_Content_Interface_Audio_Control.xml 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Content_Interface_Audio_Control.xml 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,110 @@ + + + Copyright © 2009-2011 Collabora Ltd. + +

    This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version.

    + +

    This library 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 + Lesser General Public License for more details.

    + +

    You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA.

    +
    + + + (as stable API) + + + + +

    This interface allows the connection manager to be kept informed of, + and control, the input and output volumes of an audio stream. + While generally not needed, if the connection manager needs to + handle stream volumes directly (typically when using + Call_Content_Packetization_Type_Raw), + this interface may be necessary.

    + +

    If this interface is present, the handler should call + ReportInputVolume + and ReportOutputVolume whenever the + input and output volume change, both when the user manually modifies + the volume and when the volumes are adjusted in response to + RequestedInputVolume and + RequestedOutputVolume changing.

    + +

    The maximum volume as used in this interface represent the unamplified + hardware volume (0 dB). No software amplification should be used to + boost the signal to a higher level when this Interface is in use

    +
    + + + + The input volume as requested by the Connection Manager. + Initially and on any changes the client should change its input volume + to match the requested volume. + + + + + + + Report the input volume level as set by the client. + + + +

    Report to the CM that the Content input volume has been + changed by the client.

    + +

    It is the client's responsibility to change the input volume used for + the content. However, the client MUST call this whenever it changes + input volume for the content.

    +
    +
    + + + + The input volume as requested by the Connection Manager. + Initially and on any changes the client should change its input volume + to match the requested volume. + + + + + + + Report the output volume level as set by the client. + + + +

    Report to the CM that the content output volume has been + changed by the client.

    + +

    It is the client's responsibility to change the output volume used + for the content. However, the client MUST call this whenever it + changes output volume for the content.

    +
    +
    + + + +

    A volume value either reported to or requested by the Connection + Manager. This value should either be -1 for an unknown value or in the + range of 0-255, with 0 being the minimal volume and 255 being the + highest unamplified volume the input or output is capable of (known + as 0 dB) +

    +
    +
    +
    +
    diff -Nru telepathy-glib-0.17.4/spec/Call_Content_Interface_DTMF.xml telepathy-glib-0.17.5/spec/Call_Content_Interface_DTMF.xml --- telepathy-glib-0.17.4/spec/Call_Content_Interface_DTMF.xml 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Content_Interface_DTMF.xml 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,229 @@ + + + Copyright © 2005-2010 Collabora Limited + Copyright © 2005-2010 Nokia Corporation + Copyright © 2006 INdT + +

    This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version.

    + +

    This library 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 +Lesser General Public License for more details.

    + +

    You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

    +
    + + + (as stable API) + + + An interface that gives audio Contents the ability to send DTMF events + which have been established using the Call1 channel + type. The event codes used are in common with those defined in RFC4733, and are + listed in the DTMF_Event enumeration. + + + + + A numeric event code from the DTMF_Event enum. + + + +

    Start sending a DTMF tone to all eligible streams in the channel. + Where possible, the tone will continue until + StopTone is called. On certain protocols, + it may only be possible to send events with a predetermined length. In + this case, the implementation MAY emit a fixed-length tone, and the + StopTone method call SHOULD return NotAvailable.

    + + The client may wish to control the exact duration and timing of the + tones sent as a result of user's interaction with the dialpad, thus + starting and stopping the tone sending explicitly. + + +

    Tone overlaping or queueing is not supported, so this method can only + be called if no DTMF tones are already being played.

    +
    + + + + + The event id was invalid. + + + + + DTMF tones are already being played. + + + +
    + + + + Stop sending any DTMF tones which have been started using the + StartTone or + MultipleTones methods. + If there is no current tone, this method will do nothing. + If MultipleTones was used, the client should not assume the + sending has stopped immediately; instead, the client should wait + for the StoppedTones signal. + + On some protocols it might be impossible to cancel queued tones + immediately. + + + + + + + Continuous tones are not supported by this stream. Deprecated, + since stream IDs are ignored. + + + + + + + + +

    A string representation of one or more DTMF + events. Implementations of this method MUST support all of the + following characters in this string:

    + +
      +
    • the digits 0-9, letters A-D and a-d, and symbols '*' and '#' + correspond to the members of DTMF_Event
    • + +
    • any of 'p', 'P', 'x', 'X' or ',' (comma) results in an + implementation-defined pause, typically for 3 seconds
    • + +
    • 'w' or 'W' waits for the user to continue, by stopping + interpretation of the string, and if there is more to be played, + emitting the TonesDeferred signal + with the rest of the string as its argument: see that signal + for details
    • +
    +
    +
    + +

    Send multiple DTMF events to all eligible streams in the channel. + Each tone will be played for an implementation-defined number of + milliseconds (typically 250ms), followed by a gap before the next tone + is played (typically 100ms). The + duration and gap are defined by the protocol or connection manager.

    + + +

    In cases where the client knows in advance the tone sequence it + wants to send, it's easier to use this method than manually start + and stop each tone in the sequence.

    + +

    The tone and gap lengths may need to vary for interoperability, + according to the protocol and other implementations' ability to + recognise tones. At the time of writing, GStreamer uses a + minimum of 250ms tones and 100ms gaps when playing in-band DTMF + in the normal audio stream, or 70ms tones and 50ms gaps when + encoding DTMF as audio/telephone-event.

    +
    + +

    Tone overlaping or queueing is not supported, so this method can only + be called if no DTMF tones are already being played.

    +
    + + + + + The supplied Tones string was invalid. + + + + + DTMF tones are already being played. + + + +
    + + + + Indicates whether there are DTMF tones currently being sent in the + channel. If so, the client should wait for + StoppedTones signal before trying to + send more tones. + + + + + +

    The tones waiting for the user to continue, if any.

    + +

    When this property is set to a non-empty value, + TonesDeferred is emitted. + When any tones are played (i.e. whenever + SendingTones is emitted), + this property is reset to the empty string.

    +
    +
    + + + + + The new non-empty value of + DeferredTones. + + +

    Emitted when 'w' or 'W', indicating "wait for the user to continue", + is encountered while playing a DTMF string queued by + MultipleTones. Any queued DTMF events + after the 'w', which have not yet been played, are placed in the + DeferredTones property and copied + into this signal's argument.

    + +

    When the channel handler is ready to continue, it MAY pass the + value of DeferredTones to + MultipleTones, to resume sending. + Alternatively, it MAY ignore the deferred tones, or even play + different tones instead. Any deferred tones are discarded the next + time a tone is played.

    + +

    This signal SHOULD NOT be emitted if there is nothing left to play, + i.e. if the 'w' was the last character in the DTMF string.

    +
    +
    + + + + DTMF string (one or more events) that is to be played. + + + +

    DTMF tone(s)are being sent to all eligible streams in the channel. + The signal is provided to indicating the fact that the streams are + currently being used to send one or more DTMF tones, so any other + media input is not getting through to the audio stream. It also + serves as a cue for the + StopTone method.

    +
    +
    + + + + True if the DTMF tones were actively cancelled via + StopTone. + + +

    DTMF tones have finished playing on streams in this channel.

    +
    +
    +
    +
    + diff -Nru telepathy-glib-0.17.4/spec/Call_Content_Interface_Media.xml telepathy-glib-0.17.5/spec/Call_Content_Interface_Media.xml --- telepathy-glib-0.17.4/spec/Call_Content_Interface_Media.xml 2011-10-11 21:35:21.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Content_Interface_Media.xml 2012-02-20 16:56:41.000000000 +0000 @@ -21,9 +21,8 @@ - (draft 2) + name="org.freedesktop.Telepathy.Call1.Content.Interface.Media"> + (as stable API) @@ -225,11 +224,6 @@ >MediaDescription
    - - - The contact handle that this description applies to. - - @@ -256,15 +250,6 @@ Otherwise, only parameters which strictly describe the media being sent can be changed. - - - The remote contact that this description should be negotiated with - (or 0 to mean "negotiate this with everyone"). Note that encoding - the same video multiple times is often needlessly expensive, so - differences in MediaDescriptions negotiated with different parties - in the call should be limited to payloading parameters if possible. - - @@ -341,11 +326,6 @@ previous media description. - - - The remote contact the media description belongs to. - - @@ -383,13 +363,6 @@

    - - - The remote contact that this description was negotiated with - (or 0 to mean "negotiated with everyone"). - - - @@ -440,7 +413,7 @@ + type="(oa{sv})" tp:type="Media_Description_Offer" access="read">

    The object path to the current - - (draft 1) + + (as stable API) diff -Nru telepathy-glib-0.17.4/spec/Call_Content_Media_Description_Interface_RTCP_Extended_Reports.xml telepathy-glib-0.17.5/spec/Call_Content_Media_Description_Interface_RTCP_Extended_Reports.xml --- telepathy-glib-0.17.4/spec/Call_Content_Media_Description_Interface_RTCP_Extended_Reports.xml 2011-10-11 21:35:21.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Content_Media_Description_Interface_RTCP_Extended_Reports.xml 2012-02-20 16:56:41.000000000 +0000 @@ -18,9 +18,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - (draft version, not API-stable) + + (as stable API) diff -Nru telepathy-glib-0.17.4/spec/Call_Content_Media_Description_Interface_RTCP_Feedback.xml telepathy-glib-0.17.5/spec/Call_Content_Media_Description_Interface_RTCP_Feedback.xml --- telepathy-glib-0.17.4/spec/Call_Content_Media_Description_Interface_RTCP_Feedback.xml 2011-10-11 21:35:21.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Content_Media_Description_Interface_RTCP_Feedback.xml 2012-02-20 16:56:41.000000000 +0000 @@ -18,9 +18,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - (draft version, not API-stable) + + (as stable API) diff -Nru telepathy-glib-0.17.4/spec/Call_Content_Media_Description_Interface_RTP_Header_Extensions.xml telepathy-glib-0.17.5/spec/Call_Content_Media_Description_Interface_RTP_Header_Extensions.xml --- telepathy-glib-0.17.4/spec/Call_Content_Media_Description_Interface_RTP_Header_Extensions.xml 2011-10-11 21:35:21.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Content_Media_Description_Interface_RTP_Header_Extensions.xml 2012-02-20 16:56:41.000000000 +0000 @@ -18,9 +18,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - (draft version, not API-stable) + + (as stable API) diff -Nru telepathy-glib-0.17.4/spec/Call_Content_Media_Description.xml telepathy-glib-0.17.5/spec/Call_Content_Media_Description.xml --- telepathy-glib-0.17.4/spec/Call_Content_Media_Description.xml 2011-10-11 21:35:21.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Content_Media_Description.xml 2012-02-20 16:56:41.000000000 +0000 @@ -20,9 +20,8 @@ 02110-1301, USA.

    - - (draft 1) + + (as stable API) This object represents a remote Description Offer to which the local @@ -69,7 +68,7 @@ Reject the proposed update to the remote description. + direction="in"> A structured reason for the rejection. diff -Nru telepathy-glib-0.17.4/spec/Call_Content.xml telepathy-glib-0.17.5/spec/Call_Content.xml --- telepathy-glib-0.17.4/spec/Call_Content.xml 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Content.xml 2012-02-20 16:56:41.000000000 +0000 @@ -20,9 +20,8 @@ 02110-1301, USA.

    - - (draft 1) + + (as stable API)

    This object represents one Content inside a Remove the content from the call. This will cause - Removed((self_handle, + Call1.ContentRemoved((self_handle, User_Requested, "", "")) to be emitted. @@ -68,15 +67,6 @@ - - -

    Emitted when the content is removed from the call. This - is the same as the Call1.ContentRemoved - signal.

    -
    - - diff -Nru telepathy-glib-0.17.4/spec/Call_Interface_Mute.xml telepathy-glib-0.17.5/spec/Call_Interface_Mute.xml --- telepathy-glib-0.17.4/spec/Call_Interface_Mute.xml 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Interface_Mute.xml 2012-02-20 16:56:41.000000000 +0000 @@ -19,7 +19,7 @@ - (draft version, not API-stable) + (as stable API) diff -Nru telepathy-glib-0.17.4/spec/Call_Stream_Endpoint.xml telepathy-glib-0.17.5/spec/Call_Stream_Endpoint.xml --- telepathy-glib-0.17.4/spec/Call_Stream_Endpoint.xml 2011-10-11 21:35:21.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Stream_Endpoint.xml 2012-02-20 16:56:41.000000000 +0000 @@ -20,9 +20,8 @@ 02110-1301, USA.

    - - (draft 1) + + (as stable API)

    This object represents an endpoint for a stream. In a one-to-one @@ -340,7 +339,12 @@ - The transport type for the stream endpoint. + The transport type for the stream endpoint. This can be + different from the transport of the Stream in the case where + of falling back from ICE to + Raw_UDP. diff -Nru telepathy-glib-0.17.4/spec/Call_Stream_Interface_Media.xml telepathy-glib-0.17.5/spec/Call_Stream_Interface_Media.xml --- telepathy-glib-0.17.4/spec/Call_Stream_Interface_Media.xml 2011-10-11 21:35:21.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Stream_Interface_Media.xml 2012-02-20 16:56:41.000000000 +0000 @@ -20,9 +20,8 @@ 02110-1301, USA.

    - - (draft 1) + + (as stable API) @@ -80,19 +79,6 @@ data, and everything is going swimmingly. - - - The streaming implementation has been told to pause sending or - displaying data, but it has not yet indicated that it has done so. - - - - - The streaming implementation has successfully paused either sending or - displaying data, and the local user's privacy or peace-and-quiet is - protected. - - SendingStateChanged to determine whether it should be sending media or not. It should not - need to listen to the Mute/Hold interfaces on the Call/Content. + need to listen to the Hold interfaces on the Call/Content. Feedback on success should be given via CompleteSendingStateChange. Failures should be reported via ReportSendingFailure. @@ -215,7 +201,7 @@ - Can be called at any point to indicate a failure in the outgoing + Can be called at any point to indicate a failure in the incoming portion of the stream.
    + + + + + The minimal required candidates have not been set. For + example, for an RTP protocol, at least one candidate on the + component 1 (RTP) must have been set. + + + diff -Nru telepathy-glib-0.17.4/spec/Call_Stream.xml telepathy-glib-0.17.5/spec/Call_Stream.xml --- telepathy-glib-0.17.4/spec/Call_Stream.xml 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Call_Stream.xml 2012-02-20 16:56:41.000000000 +0000 @@ -20,9 +20,8 @@ 02110-1301, USA.

    - - (draft 1) + + (as stable API)

    One stream inside a - (as draft) diff -Nru telepathy-glib-0.17.4/spec/Channel_Interface_Captcha_Authentication.xml telepathy-glib-0.17.5/spec/Channel_Interface_Captcha_Authentication.xml --- telepathy-glib-0.17.4/spec/Channel_Interface_Captcha_Authentication.xml 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Channel_Interface_Captcha_Authentication.xml 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,505 @@ + + + Copyright © 2010-2012 Collabora Limited + +

    This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version.

    + +

    This library 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 +Lesser General Public License for more details.

    + +

    You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

    + + + (version 1) + + + +

    A channel interface for captcha authentication. + When this interface appears on a ServerAuthentication + channel, it represents authentication with the server. In future, + it could also be used to authenticate with secondary services, + or even to authenticate end-to-end connections with contacts. As a result, + this interface does not REQUIRE ServerAuthentication to allow for a potential future + Channel.Type.PeerAuthentication interface.

    + +

    In any protocol that requires a captcha, the connection manager can + use this channel to let a user interface carry out a simple captcha + handshake with it, as a way to test the user is human + interactively.

    + +

    For channels managed by a + ChannelDispatcher, + only the channel's Handler may call the + methods on this interface. Other clients MAY observe the + authentication process by watching its signals and properties.

    + +

    The most commonly used form of captcha challenge is OCR (recognition + of distorted letters or words in an image), but for accessibility + reasons, this interface also allows various other types of challenge, + such as plain-text questions or recognition of words in audio. Its + structure is modelled on XMPP's + XEP-0158, + but can be used with other protocols by mapping their semantics + into those used in XMPP.

    + + +

    It is important to support multiple types of captcha + challenge to avoid discriminating against certain users; for + instance, blind or partially-sighted users cannot be expected + to answer an OCR challenge.

    + +

    XEP-0158 supports a superset of all other known protocols' captcha + interfaces, and is sufficiently elaborate that we expect it will + continue to do so.

    + +

    There can only be one Handler, which is a good fit for the + question/answer model implied by captchas.

    +
    +
    + + + +

    A struct containing information regarding a single captcha + mechanism.

    +
    + + +

    The ID with which to reference this captcha method + when retrieving its data and answering it. + They are unique within this channel instance only.

    +
    +
    + + +

    The type of challenge + + as defined by XEP-0158. For instance, the commonly-used + "type the letters/words you see in this image" challenge is + represented by ocr

    +
    +
    + + +

    A human-readable label for the challenge, as defined in + XEP-0158.

    + +

    If the server does not supply a label for a challenge of type + other than qa, connection managers SHOULD set Label + to an empty string instead of generating their own text. + If the Label is an empty string, the Handler SHOULD replace + it with a generic label in the user's locale, such as + the strings suggested in XEP-0158 (for instance, + Enter the text you see for ocr + challenges). The Handler MAY use those generic labels + in any case, as per + the + Internationalization Considerations section of XEP-0158.

    + + +

    Connection managers are not usually localized, so text + generated by the connection manager would be in English, + regardless of the user's locale. The Handler is better-placed + to generate a generic Label in the user's locale.

    +
    + +

    For challenges of type qa, the Label is a plain-text + question for the user to answer. The connection manager + SHOULD NOT provide an empty Label; if it does, the Handler + SHOULD treat that challenge as impossible, and SHOULD NOT + attempt to display it.

    +
    +
    + + +

    One flag defined: Required. Most captchas will have no flags.

    +
    +
    + + +

    A list of MIME types the server is offering to provide + for this captcha method.

    +
    +
    +
    + + + + A mapping of captcha IDs to answer strings. + + + + The ID of the captcha to which the associated + answer string is answering. + + + + + The answer string to answer the captcha referenced + by the associated ID. + + + + + + +

    If true, GetCaptchas + can be expected to return new captcha information when + in the Local_Pending state. If false, + GetCaptchas will return + NotAvailable on subsequent calls.

    + + +

    Refreshing the captcha isn't required to work, although + some protocols and implementations allow it. This is usually + done in case a given captcha is unintelligible.

    +
    +
    +
    + + + +

    The current status of this channel.

    + +

    Because only the Handler should call methods on this interface, + the Handler MAY reduce round-trips by not fetching the initial + value of this property, and instead assume that is initially + Local_Pending.

    + + +

    This assumption normally avoids the need to call GetAll(), + since the values of CaptchaError + and CaptchaErrorDetails + are also implied by this assumption, and the only other + property is CanRetryCaptcha, + which is immutable.

    +
    +
    +
    + + + +

    The reason for the CaptchaStatus, or + an empty string if the state is neither Try_Again nor Failed.

    + +

    Typical values: "", Cancelled, AuthenticationFailed, + CaptchaNotSupported

    + +

    In particular, an ordinary authentication failure (as would + be produced for an incorrect answer) SHOULD be represented by + AuthenticationFailed, + cancellation by the user's request SHOULD be represented + by Cancelled, cancellation due + to the inability to display the captcha to the user or otherwise + answer it SHOULD be represented by + CaptchaNotSupported, and + cancellation by a local process due to inconsistent or invalid + challenges from the server SHOULD be represented by + ServiceConfused.

    + +

    If this interface appears on a ServerAuthentication + channel, and connection to the server fails with an authentication + failure, this error code SHOULD be copied into the + Connection.ConnectionError + signal.

    +
    +
    + + + +

    If CaptchaError is non-empty, + any additional information about the last + disconnection; otherwise, the empty map. The keys and values are + the same as for the second argument of + Connection.ConnectionError.

    + +

    If this interface appears on a ServerAuthentication + channel, and connection to the server fails with an authentication + failure, these details SHOULD be copied into the + Connection.ConnectionError + signal.

    +
    +
    + + + + + Information about each of the available captcha methods. + + + + + The number of captcha methods required to be answered + in order to successfully complete this captcha challenge + (most frequently 1, but XMPP allows servers to demand that + more than one captcha is answered). + + + + + The language of each Label in Captcha_Info if available, + for instance en_US, or "" if unknown. + + + +

    Gets information regarding each of the captcha methods + available and which and how many need to be successfully answered

    + +

    To call this method successfully, the state must be Local_Pending + or Try_Again. If it is Local_Pending, it remains Local_Pending. If + called more than once while in Local_Pending state, or if the state + is Try_Again, this method fetches a new set of captcha challenges, + if possible, and the state returns to Local_Pending.

    + + +

    For instance, you could call GetCaptchas again from Local_Pending + state if the user indicates that they can't understand the + initially-offered captcha.

    + +

    This is a method, not a property, so that it can be used to + fetch more than one set of captcha challenges, and so that + change notification is not required. Only the Handler should + call this method and calling GetAll would not reduce round-trips, + so the usual reasons to prefer a property do not apply here.

    +
    +
    + + + + + Either the state is not Local_Pending or Try_Again, or it has + already been called and + CanRetryCaptcha is False. + + + + +
    + + + + + The ID of the captcha of which to retrieve data. + + + + + MIME type picked by the Handler, chosen from the list of MIME + types received in GetCaptchas. + + XEP-0158 allows the same captcha to be made available in + multiple formats, for instance the same spoken question as + audio/x-wav, application/ogg and audio/speex. + + + + + + Captcha data as requested. + + + +

    Fetch and return the captcha data. In protocols + where captchas are downloaded out-of-band (for instance via HTTP), + the connection manager is expected to do so.

    +

    Returns an empty array if the type was "qa"

    + +

    If audio-based and image-based captchas are both available, + we don't want to waste time downloading the audio until/unless + the user asks to hear it. The extra D-Bus round-trips are not + a problem, since they are expected to be quick compared with + the time taken for the user to solve the captcha.

    +
    +
    + + + + The state is not in Local_Pending or + GetCaptchas had never been called. + + + + +
    + + + + + The mapping of captcha IDs to answer strings. + + + +

    Answer as many captchas as desired and/or required.

    +

    Callable in state Local_Pending only. State changes to + Remote_Pending.

    +
    + + + + + The state is not in Local_Pending. + + + + +
    + + + + + Reason for cancelling. This MAY be used to choose an error + response to the remote server, and SHOULD also be reflected + in the CaptchaError. + + + + + A textual description of the reason for cancelling, supplied + by the Handler. This message SHOULD NOT be sent to the remote + server, but SHOULD be copied into the 'debug-message' field + of the CaptchaErrorDetails and + ConnectionError. + + + +

    Cancel. State changes to Failed with error NotAvailable or + Cancelled if it isn't already Failed. All you can do now is + to close the channel.

    +
    + + + + The current state is Failed. + + + +
    + + + +

    Extra flags to include with Captcha information

    +
    + + + + This captcha mechanism is required to be successfully + answered in order to pass this captcha challenge. + + +
    + + + +

    A reason why captcha authentication was aborted by the client.

    +
    + + + + The user aborted the authentication. If this is used, the + CaptchaError SHOULD be set to + Cancelled + + + + + The Handler doesn't support the given/required captcha types. + If this is used, the CaptchaError + SHOULD be set to CaptchaNotSupported. + This SHOULD also be used if + Close is called + before CancelCaptcha. + + If no Handler supports captcha channels, + the ChannelDispatcher will just call + Close, + because it has no knowledge of specific channel types. + + + + + + The Handler doesn't understand the captcha data received. The + challenger may be sending gibberish. + If this is used, the CaptchaError + SHOULD be set to ServiceConfused. + + +
    + + + + + The challenge/response exchange is in progress and waiting for + a local action. Call AnswerCaptchas + to go to the Remote_Pending state, or call + CancelCaptcha followed by + Close + to give up. + + + + + The challenge/response exchange is in progress and waiting for + a response from the server. Wait for a reply from the server, + which will result in the Succeeded, Try_Again, or Failed state, + or call CancelCaptcha followed by + Close + to give up. + + + + + Everyone is happy. Connection to the server will proceed as soon as + this state is reached. There is nothing useful to do in this state + except to call Close + to close the channel. + + + + + The server has indicated an authentication failure. + Call GetCaptchas again to get + a new captcha, or + CancelCaptcha followed by + Close + to give up. + + + + + Authentication has failed in some way. There is nothing + useful to do in this state except to close the channel with + Close. + + + + +
    + + diff -Nru telepathy-glib-0.17.4/spec/Channel_Interface_DTMF.xml telepathy-glib-0.17.5/spec/Channel_Interface_DTMF.xml --- telepathy-glib-0.17.4/spec/Channel_Interface_DTMF.xml 2011-10-11 15:02:48.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Channel_Interface_DTMF.xml 2012-02-20 16:56:41.000000000 +0000 @@ -23,11 +23,14 @@
    + + The only part of this spec that should + be used with a Call1 channel is the "InitialTones" property. + + The Stream_IDs in this - interface should now be ignored by CMs. This is primarily to allow this - interface to be used with Call1 - channels. + interface can now be ignored by CMs. + An interface that gives a Channel the ability to send DTMF events over @@ -207,7 +210,7 @@
    + type="s" access="read" tp:immutable="yes" tp:requestable="yes">

    If non-empty in a channel request that will create a new channel, @@ -215,6 +218,8 @@ at least one eligible audio stream has been created in the channel.

    +

    This should only be used with InitialAudio=true.

    +

    This property is immutable (cannot change).

    diff -Nru telepathy-glib-0.17.4/spec/Channel_Type_Call.xml telepathy-glib-0.17.5/spec/Channel_Type_Call.xml --- telepathy-glib-0.17.4/spec/Channel_Type_Call.xml 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Channel_Type_Call.xml 2012-02-20 16:56:41.000000000 +0000 @@ -17,9 +17,8 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - (draft 1) + + (as stable API) Ringing. All changes to + Initialised. All changes to the CallState property are signalled using the CallStateChanged signal.

    @@ -324,7 +323,7 @@ channel's Requested property is False, and the CallState is - Ringing (an incoming + Initialised (an incoming call is ready and waiting for the user to be notified). Calling this method SHOULD set CallFlags' bit Locally_Ringing, and notify the @@ -346,7 +345,7 @@ The call is no longer in state - Ringing. + Initialised. @@ -363,7 +362,7 @@ property is False, and the CallState is Initialising or - Ringing. Calling this method + Initialised. Calling this method SHOULD set CallFlags' bit Locally_Queued, and notify the remote contact that the call is in a queue (if the @@ -380,13 +379,14 @@ The call was Requested, so ringing does not make sense. + >Requested, so queueing does not make sense. The call is no longer in state - Initialising or _Ringing. + Initialising or + Initialised. @@ -395,7 +395,7 @@

    For incoming calls in state - Ringing, accept the incoming call. + Initialised, accept the incoming call. This changes the CallState to Accepted.

    @@ -512,6 +512,12 @@ call.
    + + + The requested initial direction of the new content. + + Path to the newly-created
  • Pending_Initiator → Initialising (for outgoing calls, when Accept is called)
  • -
  • Initialising → Ringing (for outgoing calls, when +
  • Initialising → Initialised (for outgoing calls, when the remote client indicates that the user has been notified about the call. If the network is known not to provide feedback about whether the remote side is ringing, then the call should immediately be set to Ringing.
  • -
  • Initialising → Ringing (for incoming calls, when e.g. the +
  • Initialising → Initialised (for incoming calls, when e.g. the implementation has been initialised far enough that it is sensible to notify the user about the call (to reduce the probability that the user will pick up the call and have it immediately fail). The UI should then alert the user about the call, and call SetRinging)
  • -
  • Ringing → Accepted (for outgoing calls to a contact, +
  • Initialised → Accepted (for outgoing calls to a contact, when the remote contact accepts the call; for incoming calls, when Accept is called.)
  • Accepted → Active (when the local user successfully @@ -664,7 +670,7 @@ this state. - + In the outgoing case: at least one called user has been alerted about the call (a SIP 180 (Ringing) packet or equivalent has been @@ -731,45 +737,28 @@ - - - The call has been muted by the local user, e.g. using the - Mute interface. This flag SHOULD only - be set if there is at least one Content, and all Contents - are locally muted (for the same reason as Locally_Held). - - - This flag exists to provide a simplified verson of MuteStateChanged, - to reduce the number of signals that need to be - listened to by a simple UI. - - - - - + This flag exists for observability of the SetRinging method (e.g. so that loggers can tell whether the call got as far as alerting the user, or whether something went wrong before then). It should be set when the SetRinging is called, and unset when the call leaves - Ringing. + Initialised. - + This flag exists for observability of the SetQueued method. It should be set when the SetQueued is called, and unset when the call leaves - Ringing. + Initialising or + Initialised. - + The initiator of the call originally called a contact other than the current recipient of the call, but the call was then forwarded or @@ -779,7 +768,7 @@ - + This flag only occurs when the CallState is Ended. The call with this flag set has ended, but not all resources corresponding to the @@ -842,6 +831,17 @@ The value of this key has the same units and scale as AccountBalance. + +
    forwarded-to - u
    +
    Optionally included when the + CallStateReason is + Forwarded. It indicates the handle to whom the Call was + forwarded.
    + +
    forwarded-to-id - s
    +
    The string that would result from inspecting the + forwarded-to key + (i.e. the contact's identifier in the IM protocol).
    @@ -920,9 +920,12 @@ -

    The call was forwarded. If known, the handle of the contact - the call was forwarded to will be indicated by the Actor member - of a Call_State_Reason struct.

    +

    The call was forwarded. If known, the handle of the + contact the call was forwarded to will be indicated by the + "forwarded-to" member of a + CallStateDetails dictionnary + in the CallStateChanged + signal.

    @@ -930,7 +933,7 @@

    The CallState changed from - Ringing or + Initialised or Ended (or a content's direction changed) because it was rejected by the remote user.

    Corresponds to Rejected

    @@ -941,7 +944,7 @@

    The CallState changed from - Ringing or + Initialised or Ended because the initiator ended the call before the receiver accepted it. With an incoming call this state change reason signifies a missed @@ -976,7 +979,7 @@

    The CallState changed from - Ringing + Initialised Ended because the receiver is busy (e.g. is already engaged in another call, and has not placed the initiator in a call-waiting queue).

    @@ -1214,21 +1217,7 @@
    - - -

    The call member has muted their participation in this call. Note - that many protocols will not signal this flag, so clients should - not rely on it being set.

    - - -

    This is a flag per member, not a flag for the call as a whole, - because in conference calls, any member could mute their own - streams.

    -
    -
    -
    - - + This contact has merged this call into a conference. Note that GSM provides a notification when the remote party merges a call into a diff -Nru telepathy-glib-0.17.4/spec/Channel.xml telepathy-glib-0.17.5/spec/Channel.xml --- telepathy-glib-0.17.4/spec/Channel.xml 2011-05-16 08:50:03.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Channel.xml 2012-02-20 16:56:41.000000000 +0000 @@ -102,7 +102,7 @@ MUST be present and not Handle_Type_None, and TargetID MUST NOT be present. Properties from - Addressing.DRAFT + Addressing1 MUST NOT be present.

    The channel that satisfies the request MUST either:

    @@ -150,7 +150,7 @@ MUST be present and not Handle_Type_None, and TargetHandle MUST NOT be present. Properties from - Addressing.DRAFT + Addressing1 MUST NOT be present.The request MUST fail with error InvalidHandle, without side-effects, if the requested TargetID would not be accepted by diff -Nru telepathy-glib-0.17.4/spec/Connection_Interface_Addressing.xml telepathy-glib-0.17.5/spec/Connection_Interface_Addressing.xml --- telepathy-glib-0.17.4/spec/Connection_Interface_Addressing.xml 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Connection_Interface_Addressing.xml 2012-02-20 16:56:41.000000000 +0000 @@ -1,6 +1,6 @@ - Copyright (C) 2010 Collabora Limited + Copyright (C) 2010-2012 Collabora Limited

    This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -16,12 +16,10 @@ along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

    - + - (as draft) - Both methods now return two dictionaries. + (as stable API)

    This interface deals with the multiple address types that can refer to the same contact, such as vCard fields and URIs.

    @@ -201,11 +199,20 @@ -

    A mapping of vCard fields and addresses that repreent - the given contact.

    -
    - - +

    A mapping of vCard fields and addresses equivalent to a + particular contact's protocol identifier. For instance, + on XMPP this would contain x-jabber for all + contacts, and x-facebook-id for contacts on + Facebook's server.

    +
    + + A vCard field, such as + x-jabber. + + + The value of that vCard field for the + contact. + + + + +

    If true, the contact list is automatically downloaded at + connection. If false, the contact list is only downloaded + when requested explicitely with + Download.

    + + +

    Downloading the contact list uses bandwidth and is not always + necessary or desired. For example, a client could cache the + contact list from previous connections and accept less regular + updates, it could get the contact list from an out-of-band + protocol-specific way, or it could not need the contact list at + all.

    +
    + +

    Connection managers MUST default to true.

    + + +

    If a connection manager starts supporting this property but + defaults to false, it would break all existing clients that don't + call Download.

    +
    +
    +
    + @@ -1080,6 +1109,21 @@ + + + +

    Download the contact list from the server. If + DownloadAtConnection is true, + Download does nothing.

    +
    + + + + + + +
    +
    diff -Nru telepathy-glib-0.17.4/spec/Connection_Manager.xml telepathy-glib-0.17.5/spec/Connection_Manager.xml --- telepathy-glib-0.17.4/spec/Connection_Manager.xml 2011-05-16 08:50:03.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Connection_Manager.xml 2012-02-20 16:56:41.000000000 +0000 @@ -1,6 +1,6 @@ - Copyright (C) 2005-2008 Collabora Limited + Copyright (C) 2005-2012 Collabora Limited Copyright (C) 2005-2008 Nokia Corporation Copyright (C) 2006 INdT @@ -603,7 +603,7 @@
    ASCII decimal integer, optionally prefixed with "-"
    d (double-precision floating point)
    ASCII decimal number
    -
    as (array of string)
    +
    as (array of string), ao (array of object path)
    A sequence of UTF-8 strings each followed by a semicolon, with any semicolons they contain escaped with a backslash (the "localestrings" type from the Desktop Entry Specification)
    @@ -626,6 +626,9 @@ CMs with no .manager file was not explicitly required. Prior to version 0.17.16 the serialization of string arrays (signature 'as') was not defined + Prior to version 0.25.2 the + serialization of object-path arrays (signature 'ao') was not + defined
    diff -Nru telepathy-glib-0.17.4/spec/errors.xml telepathy-glib-0.17.5/spec/errors.xml --- telepathy-glib-0.17.4/spec/errors.xml 2011-10-11 15:02:48.000000000 +0000 +++ telepathy-glib-0.17.5/spec/errors.xml 2012-02-20 16:56:41.000000000 +0000 @@ -637,6 +637,16 @@
    + + + +

    Raised if the CaptchaAuthentication1 + Handler either has no UI to present captchas, or it does, but wasn't + able to answer any of the captchas given.

    +
    +
    + Copyright © 2005-2010 Collabora Limited Copyright © 2005-2009 Nokia Corporation diff -Nru telepathy-glib-0.17.4/spec/generic-types.xml telepathy-glib-0.17.5/spec/generic-types.xml --- telepathy-glib-0.17.4/spec/generic-types.xml 2011-05-16 08:50:03.000000000 +0000 +++ telepathy-glib-0.17.5/spec/generic-types.xml 2012-02-20 16:56:41.000000000 +0000 @@ -212,4 +212,12 @@ + + + A language tag as defined in + IETF BCP 47, + such as "en_US". + + + diff -Nru telepathy-glib-0.17.4/spec/Makefile.am telepathy-glib-0.17.5/spec/Makefile.am --- telepathy-glib-0.17.4/spec/Makefile.am 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Makefile.am 2012-02-20 17:31:02.000000000 +0000 @@ -9,7 +9,9 @@ Account_Manager_Interface_Hidden.xml \ Authentication_TLS_Certificate.xml \ Call_Content.xml \ + Call_Content_Interface_DTMF.xml \ Call_Content_Interface_Media.xml \ + Call_Content_Interface_Audio_Control.xml \ Call_Content_Interface_Video_Control.xml \ Call_Content_Media_Description.xml \ Call_Content_Media_Description_Interface_RTCP_Extended_Reports.xml \ @@ -28,6 +30,7 @@ Channel_Interface_Addressing.xml \ Channel_Interface_Anonymity.xml \ Channel_Interface_Call_State.xml \ + Channel_Interface_Captcha_Authentication.xml \ Channel_Interface_Chat_State.xml \ Channel_Interface_Conference.xml \ Channel_Interface_Credentials_Storage.xml \ diff -Nru telepathy-glib-0.17.4/spec/Makefile.in telepathy-glib-0.17.5/spec/Makefile.in --- telepathy-glib-0.17.4/spec/Makefile.in 2011-12-19 15:18:55.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Makefile.in 2012-02-20 17:31:10.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -50,11 +50,11 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = 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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -238,7 +238,9 @@ Account_Manager_Interface_Hidden.xml \ Authentication_TLS_Certificate.xml \ Call_Content.xml \ + Call_Content_Interface_DTMF.xml \ Call_Content_Interface_Media.xml \ + Call_Content_Interface_Audio_Control.xml \ Call_Content_Interface_Video_Control.xml \ Call_Content_Media_Description.xml \ Call_Content_Media_Description_Interface_RTCP_Extended_Reports.xml \ @@ -257,6 +259,7 @@ Channel_Interface_Addressing.xml \ Channel_Interface_Anonymity.xml \ Channel_Interface_Call_State.xml \ + Channel_Interface_Captcha_Authentication.xml \ Channel_Interface_Chat_State.xml \ Channel_Interface_Conference.xml \ Channel_Interface_Credentials_Storage.xml \ @@ -434,10 +437,15 @@ 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 -Nru telepathy-glib-0.17.4/spec/Protocol_Interface_Addressing.xml telepathy-glib-0.17.5/spec/Protocol_Interface_Addressing.xml --- telepathy-glib-0.17.4/spec/Protocol_Interface_Addressing.xml 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Protocol_Interface_Addressing.xml 2012-02-20 16:56:41.000000000 +0000 @@ -145,9 +145,9 @@
    msnim
    For the purposes of Protocol.Interface.Addressing, - Connection.Interface.Addressing.DRAFT, + Connection.Interface.Addressing1, and - Channel.Interface.Addressing.DRAFT, + Channel.Interface.Addressing1, the verb part is ignored, and SHOULD be add; the contact field in the query string is used to identify the contact. @@ -155,9 +155,9 @@
    aim
    For the purposes of Protocol.Interface.Addressing, - Connection.Interface.Addressing.DRAFT, + Connection.Interface.Addressing1, and - Channel.Interface.Addressing.DRAFT, + Channel.Interface.Addressing1, the verb part is ignored, and SHOULD be addbuddy; the screenname field in the query string is used to identify the contact. @@ -168,9 +168,9 @@
    ymsgr
    For the purposes of Protocol.Interface.Addressing, - Connection.Interface.Addressing.DRAFT, + Connection.Interface.Addressing1, and - Channel.Interface.Addressing.DRAFT, + Channel.Interface.Addressing1, the verb part is ignored, and SHOULD be addfriend; the query string is used to identify the contact. For example: ymsgr:addfriend?julien.
    @@ -186,7 +186,7 @@

    Attempt to normalize the given vCard address. Where possible, this SHOULD return an address that would appear in the - org.freedesktop.Telepathy.Connection.Interface.Addressing.DRAFT/addresses + org.freedesktop.Telepathy.Connection.Interface.Addressing1/addresses attribute for a contact on a connected Connection.

    @@ -247,7 +247,7 @@

    Attempt to normalize the given contact URI. Where possible, this SHOULD return an address that would appear in the - org.freedesktop.Telepathy.Connection.Interface.Addressing.DRAFT/uris + org.freedesktop.Telepathy.Connection.Interface.Addressing1/uris attribute for a contact on a connected Connection.

    diff -Nru telepathy-glib-0.17.4/spec/Protocol.xml telepathy-glib-0.17.5/spec/Protocol.xml --- telepathy-glib-0.17.4/spec/Protocol.xml 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/spec/Protocol.xml 2012-02-20 16:56:41.000000000 +0000 @@ -235,7 +235,7 @@ both be represented by any single vCard field. Arbitrary handles/identifiers as vCard fields are represented through the Connection's - Addressing.DRAFT + Addressing1 contact attributes.

    diff -Nru telepathy-glib-0.17.4/telepathy-glib/abi.am telepathy-glib-0.17.5/telepathy-glib/abi.am --- telepathy-glib-0.17.4/telepathy-glib/abi.am 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/abi.am 2012-02-20 16:56:41.000000000 +0000 @@ -81,6 +81,7 @@ versions/0.17.1.abi \ versions/0.17.2.abi \ versions/0.17.3.abi \ + versions/0.17.5.abi \ $(NULL) # The quoting here is unnecessary but harmless, and has the useful side-effect @@ -88,6 +89,7 @@ # command as an error message in a bizarrely named file libtelepathy_glib_la_LDFLAGS = \ $(AM_LDFLAGS) \ + -no-undefined \ -version-info "$(LT_CURRENT)":"$(LT_REVISION)":"$(LT_AGE)" libtelepathy_glib_la_LIBADD = libtelepathy-glib-internal.la nodist_libtelepathy_glib_la_SOURCES = diff -Nru telepathy-glib-0.17.4/telepathy-glib/account.c telepathy-glib-0.17.5/telepathy-glib/account.c --- telepathy-glib-0.17.4/telepathy-glib/account.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/account.c 2012-02-20 17:31:02.000000000 +0000 @@ -1,7 +1,7 @@ /* * account.c - proxy for an account in the Telepathy account manager * - * Copyright © 2009–2010 Collabora Ltd. + * Copyright © 2009–2012 Collabora Ltd. * Copyright © 2009–2010 Nokia Corporation * * This library is free software; you can redistribute it and/or @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include #include "telepathy-glib/account-internal.h" @@ -119,6 +121,7 @@ gchar *service; gchar *display_name; + GStrv supersedes; GHashTable *parameters; @@ -172,7 +175,9 @@ PROP_NORMALIZED_NAME, PROP_STORAGE_PROVIDER, PROP_STORAGE_IDENTIFIER, - PROP_STORAGE_RESTRICTIONS + PROP_STORAGE_RESTRICTIONS, + PROP_SUPERSEDES, + N_PROPS }; static void tp_account_prepare_connection_async (TpProxy *proxy, @@ -368,6 +373,7 @@ self->priv->error = g_strdup (TP_ERROR_STR_DISCONNECTED); self->priv->error_details = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) tp_g_value_slice_free); + self->priv->supersedes = g_new0 (gchar *, 1); } static void @@ -758,6 +764,53 @@ g_free (old); } + if (g_hash_table_lookup (properties, "Supersedes") != NULL) + { + GStrv old = priv->supersedes; + GPtrArray *new_arr = tp_asv_get_boxed (properties, "Supersedes", + TP_ARRAY_TYPE_OBJECT_PATH_LIST); + gboolean changed = FALSE; + guint i; + + if (new_arr == NULL) + { + priv->supersedes = g_new0 (gchar *, 1); + } + else + { + priv->supersedes = g_new0 (gchar *, new_arr->len + 1); + + for (i = 0; i < new_arr->len; i++) + priv->supersedes[i] = g_strdup (g_ptr_array_index (new_arr, i)); + } + + if (new_arr == NULL || new_arr->len == 0) + { + changed = (old != NULL && *old != NULL); + } + else if (old == NULL || *old == NULL || + g_strv_length (old) != new_arr->len) + { + changed = TRUE; + } + else + { + for (i = 0; i < new_arr->len; i++) + { + if (tp_strdiff (old[i], priv->supersedes[i])) + { + changed = TRUE; + break; + } + } + } + + if (changed) + g_object_notify (G_OBJECT (account), "supersedes"); + + g_strfreev (old); + } + if (g_hash_table_lookup (properties, "NormalizedName") != NULL) { gchar *old = priv->normalized_name; @@ -1063,6 +1116,9 @@ case PROP_NICKNAME: g_value_set_string (value, self->priv->nickname); break; + case PROP_SUPERSEDES: + g_value_set_boxed (value, self->priv->supersedes); + break; case PROP_AUTOMATIC_PRESENCE_TYPE: g_value_set_uint (value, self->priv->auto_presence); break; @@ -1126,6 +1182,7 @@ g_free (priv->normalized_name); g_free (priv->nickname); + g_strfreev (priv->supersedes); g_free (priv->cm_name); g_free (priv->proto_name); @@ -1859,6 +1916,26 @@ G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); /** + * TpAccount:supersedes: + * + * The object paths of previously-active accounts superseded by this one. + * For instance, this can be used in a logger to read old logs for an + * account that has been migrated from one connection manager to another. + * + * This is not guaranteed to have been retrieved until the + * %TP_ACCOUNT_FEATURE_CORE feature has been prepared; until then, + * the value is NULL. + * + * Since: 0.17.5 + */ + g_object_class_install_property (object_class, PROP_SUPERSEDES, + g_param_spec_boxed ("supersedes", + "Supersedes", + "Accounts superseded by this one", + G_TYPE_STRV, + G_PARAM_STATIC_STRINGS | G_PARAM_READABLE)); + + /** * TpAccount::status-changed: * @account: the #TpAccount * @old_status: old #TpAccount:connection-status @@ -2547,7 +2624,8 @@ if (error != NULL) g_simple_async_result_set_from_error (result, error); else - g_simple_async_result_set_op_res_gpointer (result, reconnect_required, NULL); + g_simple_async_result_set_op_res_gpointer (result, + g_strdupv ((GStrv) reconnect_required), (GDestroyNotify) g_strfreev); g_simple_async_result_complete (result); g_object_unref (G_OBJECT (result)); @@ -3152,6 +3230,28 @@ g_value_unset (&value); } +/** + * tp_account_get_supersedes: + * @self: a #TpAccount + * + * Return the same thing as the #TpAccount:supersedes property, in a way + * that may be more convenient for C code. + * + * The returned pointers are not guaranteed to remain valid after the + * main loop has been re-entered. + * + * Returns: (transfer none): the same as the #TpAccount:supersedes property + * + * Since: 0.17.5 + */ +const gchar * const * +tp_account_get_supersedes (TpAccount *self) +{ + g_return_val_if_fail (TP_IS_ACCOUNT (self), NULL); + + return (const gchar * const *) self->priv->supersedes; +} + static void _tp_account_got_avatar_cb (TpProxy *proxy, const GValue *out_Value, @@ -3171,8 +3271,9 @@ else { avatar = g_value_get_boxed (out_Value); - res = g_value_get_boxed (g_value_array_get_nth (avatar, 0)); - g_simple_async_result_set_op_res_gpointer (result, res, NULL); + res = g_value_dup_boxed (g_value_array_get_nth (avatar, 0)); + g_simple_async_result_set_op_res_gpointer (result, res, + (GDestroyNotify) g_array_unref); } g_simple_async_result_complete (result); @@ -3216,7 +3317,10 @@ * * Finishes an async get operation of @account's avatar. * - * Returns: (element-type guchar): a #GArray of #guchar + * Beware that the returned value is only valid until @result is freed. + * Copy it with g_array_ref() if you need to keep it for longer. + * + * Returns: (element-type guchar) (transfer none): a #GArray of #guchar * containing the bytes of the account's avatar, or %NULL on failure * * Since: 0.9.0 @@ -3617,10 +3721,9 @@ } else { - GHashTable *info; - - info = g_value_get_boxed (value); - g_simple_async_result_set_op_res_gpointer (result, info, NULL); + g_simple_async_result_set_op_res_gpointer (result, + g_value_dup_boxed (value), + (GDestroyNotify) g_hash_table_unref); } g_simple_async_result_complete (result); @@ -3668,6 +3771,9 @@ * Retrieve the value of the request begun with * tp_account_get_storage_specific_information_async(). * + * Beware that the returned value is only valid until @result is freed. + * Copy it with g_hash_table_ref() if you need to keep it for longer. + * * Returns: (element-type utf8 GObject.Value) (transfer none): a #GHashTable * of strings to GValues representing the D-Bus type a{sv}. * diff -Nru telepathy-glib-0.17.4/telepathy-glib/account-channel-request.c telepathy-glib-0.17.5/telepathy-glib/account-channel-request.c --- telepathy-glib-0.17.4/telepathy-glib/account-channel-request.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/account-channel-request.c 2012-02-20 16:55:59.000000000 +0000 @@ -68,6 +68,8 @@ * Since: 0.15.3 */ +#include "config.h" + #include "telepathy-glib/account-channel-request.h" #include "telepathy-glib/account-channel-request-internal.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/account.h telepathy-glib-0.17.5/telepathy-glib/account.h --- telepathy-glib-0.17.4/telepathy-glib/account.h 2011-09-19 11:59:48.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/account.h 2012-02-20 16:57:07.000000000 +0000 @@ -1,7 +1,7 @@ /* * account-manager.h - proxy for an account in the Telepathy account manager * - * Copyright (C) 2009 Collabora Ltd. + * Copyright (C) 2009-2012 Collabora Ltd. * Copyright (C) 2009 Nokia Corporation * * This library is free software; you can redistribute it and/or @@ -206,6 +206,10 @@ gboolean tp_account_set_nickname_finish (TpAccount *account, GAsyncResult *result, GError **error); +const gchar * const * +/* ugh, gtk-doc */ +tp_account_get_supersedes (TpAccount *self); + void tp_account_get_avatar_async (TpAccount *account, GAsyncReadyCallback callback, gpointer user_data); diff -Nru telepathy-glib-0.17.4/telepathy-glib/account-manager.c telepathy-glib-0.17.5/telepathy-glib/account-manager.c --- telepathy-glib-0.17.4/telepathy-glib/account-manager.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/account-manager.c 2012-02-20 16:56:41.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/account-manager-internal.h" #include "telepathy-glib/account-internal.h" @@ -327,6 +329,7 @@ TpAccount *account = NULL; GHashTableIter iter; gpointer value; + TpAccount *has_unset_presence = NULL; /* this presence is equal to the presence of the account with the * highest availability */ @@ -339,6 +342,14 @@ p = tp_account_get_current_presence (a, NULL, NULL); + if (p == TP_CONNECTION_PRESENCE_TYPE_UNSET) + { + has_unset_presence = a; + /* There is no point comparing the presence as UNSET is the + * 'smallest' presence of all */ + continue; + } + if (tp_connection_presence_type_cmp_availability (p, presence) > 0) { account = a; @@ -346,15 +357,23 @@ } } + if (presence == TP_CONNECTION_PRESENCE_TYPE_OFFLINE && + has_unset_presence != NULL) + { + /* Use an account having UNSET as presence as the 'best' one, + * see tp_account_manager_get_most_available_presence() */ + account = has_unset_presence; + } + priv->most_available_account = account; g_free (priv->most_available_status); g_free (priv->most_available_status_message); if (account == NULL) { - priv->most_available_presence = presence; - priv->most_available_status = NULL; - priv->most_available_status_message = NULL; + priv->most_available_presence = TP_CONNECTION_PRESENCE_TYPE_OFFLINE; + priv->most_available_status = g_strdup ("offline"); + priv->most_available_status_message = g_strdup (""); return; } @@ -865,6 +884,9 @@ { TpAccountManager *manager = TP_ACCOUNT_MANAGER (user_data); TpAccountManagerPrivate *priv = manager->priv; + TpConnectionPresenceType p; + gchar *s; + gchar *msg; if (tp_connection_presence_type_cmp_availability (presence, priv->most_available_presence) > 0) @@ -888,10 +910,19 @@ } return; + signal: + /* Use tp_account_manager_get_most_available_presence() as the effective + * most available presence may differ of the one stored in + * priv->most_available_presence. */ + p = tp_account_manager_get_most_available_presence (manager, + &s, &msg); + g_signal_emit (manager, signals[MOST_AVAILABLE_PRESENCE_CHANGED], 0, - priv->most_available_presence, priv->most_available_status, - priv->most_available_status_message); + p, s, msg); + + g_free (s); + g_free (msg); } static void @@ -1127,6 +1158,10 @@ * If no accounts are enabled or valid the output will be * (%TP_CONNECTION_PRESENCE_TYPE_OFFLINE, "offline", ""). * + * Since 0.17.5, if the only connected accounts does not implement + * %TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, the output will be + * (%TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, "available", ""). + * * The return value of this function is not guaranteed to have been retrieved * until tp_proxy_prepare_async() has finished; until then, the * value will be the same as if no accounts are enabled or valid. @@ -1148,6 +1183,20 @@ priv = manager->priv; + if (priv->most_available_presence == TP_CONNECTION_PRESENCE_TYPE_UNSET) + { + /* The best we have is an account having UNSET as its presence, which + * means it's connected but does not implement SimplePresence; pretend + * we are available. */ + if (status != NULL) + *status = g_strdup ("available"); + + if (message != NULL) + *message = g_strdup (""); + + return TP_CONNECTION_PRESENCE_TYPE_AVAILABLE; + } + if (status != NULL) *status = g_strdup (priv->most_available_status); @@ -1280,7 +1329,7 @@ * object, with the %TP_ACCOUNT_FEATURE_CORE feature ready on it. * * The caller must keep a ref to the returned object using g_object_ref() if - * it is to be kept. + * it is to be kept beyond the lifetime of @result. * * Returns: (transfer none): a new #TpAccount which was just created on * success, otherwise %NULL diff -Nru telepathy-glib-0.17.4/telepathy-glib/add-dispatch-operation-context.c telepathy-glib-0.17.5/telepathy-glib/add-dispatch-operation-context.c --- telepathy-glib-0.17.4/telepathy-glib/add-dispatch-operation-context.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/add-dispatch-operation-context.c 2012-02-20 16:55:59.000000000 +0000 @@ -44,6 +44,8 @@ * Since: 0.11.5 */ +#include "config.h" + #include "telepathy-glib/add-dispatch-operation-context-internal.h" #include "telepathy-glib/add-dispatch-operation-context.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/automatic-client-factory.c telepathy-glib-0.17.5/telepathy-glib/automatic-client-factory.c --- telepathy-glib-0.17.4/telepathy-glib/automatic-client-factory.c 2011-09-29 13:14:10.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/automatic-client-factory.c 2012-02-20 16:56:41.000000000 +0000 @@ -49,6 +49,10 @@ * %TP_IFACE_CHANNEL_TYPE_FILE_TRANSFER; * * + * a #TpCallChannel, if the channel is of type + * %TP_IFACE_CHANNEL_TYPE_CALL; + * + * * a plain #TpChannel, otherwise * * @@ -73,6 +77,10 @@ * %TP_FILE_TRANSFER_CHANNEL_FEATURE_CORE * for #TpFileTransferChannel * + * + * %TP_CALL_CHANNEL_FEATURE_CORE + * for #TpCallChannel + * * * * Since: 0.15.5 @@ -95,6 +103,8 @@ * Since: 0.15.5 */ +#include "config.h" + #include "telepathy-glib/automatic-client-factory.h" #include @@ -152,6 +162,11 @@ return (TpChannel *) _tp_file_transfer_channel_new_with_factory (self, conn, object_path, properties, error); } + else if (!tp_strdiff (chan_type, TP_IFACE_CHANNEL_TYPE_CALL)) + { + return (TpChannel *) _tp_call_channel_new_with_factory (self, + conn, object_path, properties, error); + } /* Chainup on parent implementation as fallback */ return chainup->create_channel (self, conn, object_path, properties, error); @@ -186,6 +201,11 @@ feature = TP_FILE_TRANSFER_CHANNEL_FEATURE_CORE; g_array_append_val (features, feature); } + else if (TP_IS_CALL_CHANNEL (channel)) + { + feature = TP_CALL_CHANNEL_FEATURE_CORE; + g_array_append_val (features, feature); + } return features; } diff -Nru telepathy-glib-0.17.4/telepathy-glib/automatic-client-factory.h telepathy-glib-0.17.5/telepathy-glib/automatic-client-factory.h --- telepathy-glib-0.17.4/telepathy-glib/automatic-client-factory.h 2011-09-19 11:03:37.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/automatic-client-factory.h 2012-02-20 16:56:41.000000000 +0000 @@ -21,6 +21,7 @@ #ifndef __TP_AUTOMATIC_CLIENT_FACTORY_H__ #define __TP_AUTOMATIC_CLIENT_FACTORY_H__ +#include #include #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/automatic-client-factory-internal.h telepathy-glib-0.17.5/telepathy-glib/automatic-client-factory-internal.h --- telepathy-glib-0.17.4/telepathy-glib/automatic-client-factory-internal.h 2011-09-19 11:03:37.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/automatic-client-factory-internal.h 2012-02-20 16:56:41.000000000 +0000 @@ -53,6 +53,13 @@ const GHashTable *immutable_properties, GError **error); +TpCallChannel *_tp_call_channel_new_with_factory ( + TpSimpleClientFactory *factory, + TpConnection *conn, + const gchar *object_path, + const GHashTable *immutable_properties, + GError **error); + G_END_DECLS #endif diff -Nru telepathy-glib-0.17.4/telepathy-glib/automatic-proxy-factory.c telepathy-glib-0.17.5/telepathy-glib/automatic-proxy-factory.c --- telepathy-glib-0.17.4/telepathy-glib/automatic-proxy-factory.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/automatic-proxy-factory.c 2012-02-20 16:55:59.000000000 +0000 @@ -93,6 +93,8 @@ * Since: 0.13.2 */ +#include "config.h" + #include "telepathy-glib/automatic-proxy-factory.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-call-channel.c telepathy-glib-0.17.5/telepathy-glib/base-call-channel.c --- telepathy-glib-0.17.4/telepathy-glib/base-call-channel.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-call-channel.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,1543 @@ +/* + * base-call-channel.c - Source for TpBaseCallChannel + * Copyright © 2009–2011 Collabora Ltd. + * @author Sjoerd Simons + * @author Xavier Claessens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:base-call-channel + * @title: TpBaseCallChannel + * @short_description: base class for #TpSvcChannelTypeCall implementations + * @see_also: #TpSvcChannelTypeCall, #TpBaseCallContent and #TpBaseCallStream + * + * This base class makes it easier to write #TpSvcChannelTypeCall + * implementations by implementing its properties, and some of its methods. + * + * Subclasses should fill in #TpBaseCallChannelClass.accept, + * #TpBaseCallChannelClass.add_content and #TpBaseCallChannelClass.hangup + * virtual function. + * + * Since: 0.17.5 + */ + +/** + * TpBaseCallChannel: + * + * A base class for call channel implementations + * + * Since: 0.17.5 + */ + +/** + * TpBaseCallChannelClass: + * @set_ringing: Notify members that client is ringing. + * @set_queued: Notify members that call is queued. + * @accept: accept the call. Note that #TpBaseMediaCallChannel subclasses should + * not override this virtual method, but #TpBaseMediaCallChannelClass.accept + * instead. + * @add_content: add content to the call. Implementation must call + * tp_base_call_channel_add_content(). Can be %NULL if + * #TpBaseCallChannel:mutable-contents is %FALSE. + * @hangup: hangup the call. + * + * The class structure for #TpBaseCallChannel + * + * Since: 0.17.5 + */ + +/** + * TpBaseCallChannelVoidFunc: + * @self: a #TpBaseCallChannel + * + * Signature of an implementation of #TpBaseCallChannelClass.set_ringing, + * #TpBaseCallChannelClass.set_queued and #TpBaseCallChannelClass.accept. + * + * Since: 0.17.5 + */ + +/** + * TpBaseCallChannelAddContentFunc: + * @self: a #TpBaseCallChannel + * @name: the name for the new content + * @media: a #TpMediaStreamType + * @initial_direction: the desired initial direction of streams in the new + * content + * @error: a #GError to fill + * + * Signature of an implementation of #TpBaseCallChannelClass.add_content. + * + * Returns: a borrowed #TpBaseCallContent. + * Since: 0.17.5 + */ + +/** + * TpBaseCallChannelHangupFunc: + * @self: a #TpBaseCallChannel + * @reason: the #TpCallStateChangeReason of the change + * @detailed_reason: a more specific reason for the call hangup, if one is + * available, or an empty string otherwise. + * @message: a human-readable message to be sent to the remote contact(s). + * + * Signature of an implementation of #TpBaseCallChannelClass.hangup. + * + * Since: 0.17.5 + */ + +#include "config.h" + +#include "base-call-channel.h" + +#define DEBUG_FLAG TP_DEBUG_CALL + +#include "telepathy-glib/base-call-content.h" +#include "telepathy-glib/base-call-internal.h" +#include "telepathy-glib/base-media-call-stream.h" +#include "telepathy-glib/base-connection.h" +#include "telepathy-glib/channel-iface.h" +#include "telepathy-glib/debug-internal.h" +#include "telepathy-glib/dbus.h" +#include "telepathy-glib/enums.h" +#include "telepathy-glib/exportable-channel.h" +#include "telepathy-glib/gtypes.h" +#include "telepathy-glib/interfaces.h" +#include "telepathy-glib/svc-call.h" +#include "telepathy-glib/svc-channel.h" +#include "telepathy-glib/svc-properties-interface.h" +#include "telepathy-glib/util.h" + +static void call_iface_init (gpointer, gpointer); +static void dtmf_iface_init (gpointer, gpointer); + +G_DEFINE_ABSTRACT_TYPE_WITH_CODE (TpBaseCallChannel, tp_base_call_channel, + TP_TYPE_BASE_CHANNEL, + + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_TYPE_CALL, + call_iface_init) + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_DTMF, + dtmf_iface_init) + ) + +/* properties */ +enum +{ + PROP_INITIAL_AUDIO = 1, + PROP_INITIAL_VIDEO, + PROP_INITIAL_AUDIO_NAME, + PROP_INITIAL_VIDEO_NAME, + PROP_INITIAL_TRANSPORT, + PROP_MUTABLE_CONTENTS, + PROP_HARDWARE_STREAMING, + + PROP_CONTENTS, + + PROP_CALL_STATE, + PROP_CALL_FLAGS, + PROP_CALL_STATE_DETAILS, + PROP_CALL_STATE_REASON, + + PROP_CALL_MEMBERS, + PROP_MEMBER_IDENTIFIERS, + + PROP_INITIAL_TONES, + + LAST_PROPERTY +}; + +/* private structure */ +struct _TpBaseCallChannelPrivate +{ + /* GList of reffed TpBaseCallContent */ + GList *contents; + gboolean mutable_contents; + + TpStreamTransportType initial_transport; + gboolean initial_audio; + gboolean initial_video; + gchar *initial_audio_name; + gchar *initial_video_name; + gchar *initial_tones; + + gboolean locally_accepted; + gboolean accepted; + + TpCallState state; + TpCallFlags flags; + GHashTable *details; + GValueArray *reason; + + /* TpHandle => TpCallMemberFlags */ + GHashTable *call_members; +}; + +static void tp_base_call_channel_accept_real (TpBaseCallChannel *self); + +GHashTable * +_tp_base_call_dup_member_identifiers (TpBaseConnection *conn, + GHashTable *source) +{ + GHashTable *identifiers; + TpHandleRepoIface *contact_repo; + GHashTableIter iter; + gpointer key; + + identifiers = g_hash_table_new (NULL, NULL); + + contact_repo = tp_base_connection_get_handles (conn, TP_HANDLE_TYPE_CONTACT); + + g_hash_table_iter_init (&iter, source); + while (g_hash_table_iter_next (&iter, &key, NULL)) + { + TpHandle handle = GPOINTER_TO_UINT (key); + const gchar *id = tp_handle_inspect (contact_repo, handle); + + g_hash_table_insert (identifiers, key, (gpointer) id); + } + + return identifiers; +} + +GValueArray * +_tp_base_call_state_reason_new (TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message) +{ + return tp_value_array_build (4, + G_TYPE_UINT, actor_handle, + G_TYPE_UINT, reason, + G_TYPE_STRING, dbus_reason != NULL ? dbus_reason : "", + G_TYPE_STRING, message != NULL ? message : "", + G_TYPE_INVALID); +} + +static void +tp_base_call_channel_init (TpBaseCallChannel *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + TP_TYPE_BASE_CALL_CHANNEL, TpBaseCallChannelPrivate); + + self->priv->reason = _tp_base_call_state_reason_new (0, 0, "", ""); + self->priv->details = tp_asv_new (NULL, NULL); + self->priv->call_members = g_hash_table_new (g_direct_hash, g_direct_equal); +} + +static void +tp_base_call_channel_constructed (GObject *obj) +{ + TpBaseCallChannel *self = TP_BASE_CALL_CHANNEL (obj); + TpBaseChannel *base = TP_BASE_CHANNEL (self); + + if (G_OBJECT_CLASS (tp_base_call_channel_parent_class)->constructed + != NULL) + G_OBJECT_CLASS (tp_base_call_channel_parent_class)->constructed (obj); + + if (tp_base_channel_is_requested (base)) + { + tp_base_call_channel_set_state (self, + TP_CALL_STATE_PENDING_INITIATOR, tp_base_channel_get_initiator (base), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + "User requested channel"); + } + else + { + tp_base_call_channel_set_state (self, + TP_CALL_STATE_INITIALISING, tp_base_channel_get_initiator (base), + TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", + "Incoming call"); + } +} + +static void +content_list_destroy (GList *contents) +{ + g_list_foreach (contents, (GFunc) _tp_base_call_content_deinit, NULL); + g_list_free_full (contents, g_object_unref); +} + +static void +tp_base_call_channel_dispose (GObject *object) +{ + TpBaseCallChannel *self = TP_BASE_CALL_CHANNEL (object); + + tp_clear_pointer (&self->priv->contents, content_list_destroy); + tp_clear_pointer (&self->priv->call_members, g_hash_table_unref); + + if (G_OBJECT_CLASS (tp_base_call_channel_parent_class)->dispose) + G_OBJECT_CLASS (tp_base_call_channel_parent_class)->dispose (object); +} + +static void +tp_base_call_channel_finalize (GObject *object) +{ + TpBaseCallChannel *self = TP_BASE_CALL_CHANNEL (object); + + g_hash_table_unref (self->priv->details); + g_value_array_free (self->priv->reason); + g_free (self->priv->initial_audio_name); + g_free (self->priv->initial_video_name); + g_free (self->priv->initial_tones); + + G_OBJECT_CLASS (tp_base_call_channel_parent_class)->finalize (object); +} + +static void +tp_base_call_channel_close (TpBaseChannel *base) +{ + TpBaseCallChannel *self = TP_BASE_CALL_CHANNEL (base); + + DEBUG ("Closing call channel %s", tp_base_channel_get_object_path (base)); + + /* shutdown all our contents */ + tp_clear_pointer (&self->priv->contents, content_list_destroy); + + tp_base_channel_destroyed (base); +} + +static void +tp_base_call_channel_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + TpBaseCallChannel *self = TP_BASE_CALL_CHANNEL (object); + + switch (property_id) + { + case PROP_INITIAL_AUDIO: + g_value_set_boolean (value, self->priv->initial_audio); + break; + case PROP_INITIAL_VIDEO: + g_value_set_boolean (value, self->priv->initial_video); + break; + case PROP_INITIAL_AUDIO_NAME: + g_value_set_string (value, self->priv->initial_audio_name); + break; + case PROP_INITIAL_VIDEO_NAME: + g_value_set_string (value, self->priv->initial_video_name); + break; + case PROP_INITIAL_TRANSPORT: + g_value_set_uint (value, self->priv->initial_transport); + break; + case PROP_MUTABLE_CONTENTS: + g_value_set_boolean (value, self->priv->mutable_contents); + break; + case PROP_CONTENTS: + { + GPtrArray *arr = g_ptr_array_sized_new (2); + GList *l; + + for (l = self->priv->contents; l != NULL; l = g_list_next (l)) + { + TpBaseCallContent *c = TP_BASE_CALL_CONTENT (l->data); + g_ptr_array_add (arr, + g_strdup (tp_base_call_content_get_object_path (c))); + } + + g_value_take_boxed (value, arr); + break; + } + case PROP_HARDWARE_STREAMING: + g_value_set_boolean (value, FALSE); + break; + case PROP_CALL_STATE: + g_value_set_uint (value, self->priv->state); + break; + case PROP_CALL_FLAGS: + g_value_set_uint (value, self->priv->flags); + break; + case PROP_CALL_STATE_DETAILS: + g_value_set_boxed (value, self->priv->details); + break; + case PROP_CALL_STATE_REASON: + g_value_set_boxed (value, self->priv->reason); + break; + case PROP_CALL_MEMBERS: + g_value_set_boxed (value, self->priv->call_members); + break; + case PROP_MEMBER_IDENTIFIERS: + { + GHashTable *identifiers; + + identifiers = _tp_base_call_dup_member_identifiers ( + tp_base_channel_get_connection ((TpBaseChannel *) self), + self->priv->call_members); + g_value_take_boxed (value, identifiers); + break; + } + case PROP_INITIAL_TONES: + g_value_set_string (value, self->priv->initial_tones); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_base_call_channel_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + TpBaseCallChannel *self = TP_BASE_CALL_CHANNEL (object); + + switch (property_id) + { + case PROP_INITIAL_AUDIO: + self->priv->initial_audio = g_value_get_boolean (value); + break; + case PROP_INITIAL_VIDEO: + self->priv->initial_video = g_value_get_boolean (value); + break; + case PROP_INITIAL_AUDIO_NAME: + self->priv->initial_audio_name = g_value_dup_string (value); + break; + case PROP_INITIAL_VIDEO_NAME: + self->priv->initial_video_name = g_value_dup_string (value); + break; + case PROP_INITIAL_TRANSPORT: + self->priv->initial_transport = g_value_get_uint (value); + break; + case PROP_MUTABLE_CONTENTS: + self->priv->mutable_contents = g_value_get_boolean (value); + break; + case PROP_INITIAL_TONES: + self->priv->initial_tones = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_base_call_channel_fill_immutable_properties ( + TpBaseChannel *chan, + GHashTable *properties) +{ + TP_BASE_CHANNEL_CLASS (tp_base_call_channel_parent_class) + ->fill_immutable_properties (chan, properties); + + tp_dbus_properties_mixin_fill_properties_hash ( + G_OBJECT (chan), properties, + TP_IFACE_CHANNEL_TYPE_CALL, "InitialTransport", + TP_IFACE_CHANNEL_TYPE_CALL, "InitialAudio", + TP_IFACE_CHANNEL_TYPE_CALL, "InitialVideo", + TP_IFACE_CHANNEL_TYPE_CALL, "InitialAudioName", + TP_IFACE_CHANNEL_TYPE_CALL, "InitialVideoName", + TP_IFACE_CHANNEL_TYPE_CALL, "MutableContents", + TP_IFACE_CHANNEL_TYPE_CALL, "HardwareStreaming", + TP_IFACE_CHANNEL_INTERFACE_DTMF, "InitialTones", + NULL); +} + +static void +tp_base_call_channel_class_init (TpBaseCallChannelClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + TpBaseChannelClass *base_channel_class = TP_BASE_CHANNEL_CLASS (klass); + GParamSpec *param_spec; + static TpDBusPropertiesMixinPropImpl call_props[] = { + { "Contents", "contents", NULL }, + { "CallStateDetails", "call-state-details", NULL }, + { "CallState", "call-state", NULL }, + { "CallFlags", "call-flags", NULL }, + { "CallStateReason", "call-state-reason", NULL }, + { "HardwareStreaming", "hardware-streaming", NULL }, + { "CallMembers", "call-members", NULL }, + { "MemberIdentifiers", "member-identifiers", NULL }, + { "InitialTransport", "initial-transport", NULL }, + { "InitialAudio", "initial-audio", NULL }, + { "InitialVideo", "initial-video", NULL }, + { "InitialAudioName", "initial-audio-name", NULL }, + { "InitialVideoName", "initial-video-name", NULL }, + { "MutableContents", "mutable-contents", NULL }, + { NULL }, + }; + static TpDBusPropertiesMixinPropImpl dtmf_props[] = { + { "InitialTones", "initial-tones", NULL }, + { NULL }, + }; + + g_type_class_add_private (klass, sizeof (TpBaseCallChannelPrivate)); + + object_class->constructed = tp_base_call_channel_constructed; + + object_class->get_property = tp_base_call_channel_get_property; + object_class->set_property = tp_base_call_channel_set_property; + + object_class->dispose = tp_base_call_channel_dispose; + object_class->finalize = tp_base_call_channel_finalize; + + base_channel_class->channel_type = TP_IFACE_CHANNEL_TYPE_CALL; + base_channel_class->fill_immutable_properties = + tp_base_call_channel_fill_immutable_properties; + base_channel_class->close = tp_base_call_channel_close; + + klass->accept = tp_base_call_channel_accept_real; + + /** + * TpBaseCallChannel:initial-audio: + * + * If set to %TRUE on a requested channel, subclass should immediately attempt + * to establish an audio stream to the remote contact. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("initial-audio", "InitialAudio", + "Whether the channel initially contained an audio stream", + FALSE, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_INITIAL_AUDIO, + param_spec); + + /** + * TpBaseCallChannel:initial-video: + * + * If set to %TRUE on a requested channel, subclass should immediately attempt + * to establish a video stream to the remote contact. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("initial-video", "InitialVideo", + "Whether the channel initially contained an video stream", + FALSE, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_INITIAL_VIDEO, + param_spec); + + /** + * TpBaseCallChannel:initial-audio-name + * + * Name to use to create the audio #TpBaseCallContent if + * #TpBaseCallChannel:initial-audio is set to %TRUE. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_string ("initial-audio-name", "InitialAudioName", + "Name for the initial audio content", + "audio", + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_INITIAL_AUDIO_NAME, + param_spec); + + /** + * TpBaseCallChannel:initial-video-name + * + * Name to use to create the video #TpBaseCallContent if + * #TpBaseCallChannel:initial-video is set to %TRUE. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_string ("initial-video-name", "InitialVideoName", + "Name for the initial video content", + "video", + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_INITIAL_VIDEO_NAME, + param_spec); + + /** + * TpBaseCallChannel:initial-transport + * + * If set to %TRUE on a requested channel, this indicates the transport that + * should be used for this call. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("initial-transport", "InitialTransport", + "The transport that should be used for this call", + 0, G_MAXUINT, TP_STREAM_TRANSPORT_TYPE_UNKNOWN, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_INITIAL_TRANSPORT, + param_spec); + + /** + * TpBaseCallChannel:mutable-contents + * + * Indicate to clients whether or not they can add/remove contents. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("mutable-contents", "MutableContents", + "Whether the set of streams on this channel are mutable once requested", + FALSE, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_MUTABLE_CONTENTS, + param_spec); + + /** + * TpBaseCallChannel:contents + * + * #GPtrArray of object-paths of the #TpBaseCallContent objects. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("contents", "Contents", + "The contents of the channel", + TP_ARRAY_TYPE_OBJECT_PATH_LIST, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CONTENTS, + param_spec); + + /** + * TpBaseCallChannel:hardware-streaming + * + * Indicate to clients whether or not this Connection Manager has hardware + * streaming. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("hardware-streaming", "HardwareStreaming", + "True if all the streaming is done by hardware", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_HARDWARE_STREAMING, + param_spec); + + /** + * TpBaseCallChannel:call-state + * + * The state of this call. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("call-state", "CallState", + "The status of the call", + 0, G_MAXUINT, TP_CALL_STATE_UNKNOWN, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CALL_STATE, param_spec); + + /** + * TpBaseCallChannel:call-flags + * + * The flags of this call. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("call-flags", "CallFlags", + "Flags representing the status of the call", + 0, G_MAXUINT, 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CALL_FLAGS, + param_spec); + + /** + * TpBaseCallChannel:call-state-reason + * + * The reason for last call state change. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("call-state-reason", "CallStateReason", + "The reason why the call is in the current state", + TP_STRUCT_TYPE_CALL_STATE_REASON, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CALL_STATE_REASON, + param_spec); + + /** + * TpBaseCallChannel:call-state-details + * + * Details on the call state. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("call-state-details", "CallStateDetails", + "The reason why the call is in the current state", + TP_HASH_TYPE_QUALIFIED_PROPERTY_VALUE_MAP, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CALL_STATE_DETAILS, + param_spec); + + /** + * TpBaseCallChannel:call-members + * + * #GHashTable mapping #TpHandle of each call member to their + * #TpCallMemberFlags. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("call-members", "CallMembers", + "The members", + TP_HASH_TYPE_CALL_MEMBER_MAP, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CALL_MEMBERS, + param_spec); + + /** + * TpBaseCallChannel:member-identifiers + * + * #GHashTable mapping #TpHandle of each call member to their identifiers. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("member-identifiers", + "MemberIdentifiers", "The members identifiers", + TP_HASH_TYPE_HANDLE_IDENTIFIER_MAP, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_MEMBER_IDENTIFIERS, + param_spec); + + + /** + * TpBaseCallChannel:initial-tones + * + * DTMF Tones to be played on the channel created. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_string ("initial-tones", + "InitialTones", "DTMF Tones to be played on the channel created" + " by InitialAudio", + "", + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_INITIAL_TONES, + param_spec); + + tp_dbus_properties_mixin_implement_interface (object_class, + TP_IFACE_QUARK_CHANNEL_TYPE_CALL, + tp_dbus_properties_mixin_getter_gobject_properties, + NULL, + call_props); + + tp_dbus_properties_mixin_implement_interface (object_class, + TP_IFACE_QUARK_CHANNEL_INTERFACE_DTMF, + tp_dbus_properties_mixin_getter_gobject_properties, + NULL, + dtmf_props); +} + +static const char * +call_state_to_string (TpCallState state) +{ + const char *state_str = "INEXISTANT"; + switch (state) + { + case TP_CALL_STATE_UNKNOWN: + state_str = "UNKNOWN"; + break; + case TP_CALL_STATE_PENDING_INITIATOR: + state_str = "PENDING_INITIATOR"; + break; + case TP_CALL_STATE_INITIALISING: + state_str = "INITIALISING"; + break; + case TP_CALL_STATE_INITIALISED: + state_str = "INITIALISED"; + break; + case TP_CALL_STATE_ACCEPTED: + state_str = "ACCEPTED"; + break; + case TP_CALL_STATE_ACTIVE: + state_str = "ACTIVE"; + break; + case TP_CALL_STATE_ENDED: + state_str = "ENDED"; + break; + } + + return state_str; +} + +/** + * tp_base_call_channel_set_state: + * @self: a #TpBaseCallChannel + * @state: the new #TpCallState + * @actor_handle: the contact responsible for the change, or 0 if no contact was + * responsible. + * @reason: the #TpCallStateChangeReason of the change + * @dbus_reason: a specific reason for the change, which may be a D-Bus error in + * the Telepathy namespace, a D-Bus error in any other namespace (for + * implementation-specific errors), or the empty string to indicate that the + * state change was not an error. + * @message: an optional debug message, to expediate debugging the potentially + * many processes involved in a call. + * + * Changes the call state and emit StateChanged signal with the new state. + * + * Since: 0.17.5 + */ +void +tp_base_call_channel_set_state (TpBaseCallChannel *self, + TpCallState state, + guint actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message) +{ + TpCallState old_state; + + g_return_if_fail (TP_IS_BASE_CALL_CHANNEL (self)); + + old_state = self->priv->state; + + self->priv->state = state; + g_value_array_free (self->priv->reason); + self->priv->reason = _tp_base_call_state_reason_new (actor_handle, reason, + dbus_reason, message); + + if (self->priv->state != TP_CALL_STATE_INITIALISED) + self->priv->flags &= ~TP_CALL_FLAG_LOCALLY_RINGING; + + if (self->priv->state != TP_CALL_STATE_INITIALISING && + self->priv->state != TP_CALL_STATE_INITIALISED) + self->priv->flags &= ~TP_CALL_FLAG_LOCALLY_QUEUED; + + if (tp_base_channel_is_registered (TP_BASE_CHANNEL (self))) + { + tp_svc_channel_type_call_emit_call_state_changed (self, self->priv->state, + self->priv->flags, self->priv->reason, self->priv->details); + } + + DEBUG ("state changed from %s => %s", + call_state_to_string (old_state), + call_state_to_string (self->priv->state)); + + /* Move from INITIALISING to INITIALISED if we are already connected */ + if (self->priv->state != old_state && + self->priv->state == TP_CALL_STATE_INITIALISING && + _tp_base_call_channel_is_connected (self)) + { + self->priv->state = TP_CALL_STATE_INITIALISED; + if (tp_base_channel_is_registered (TP_BASE_CHANNEL (self))) + { + tp_svc_channel_type_call_emit_call_state_changed (self, + self->priv->state, self->priv->flags, self->priv->reason, + self->priv->details); + } + + DEBUG ("state changed from %s => %s (bumped)", + call_state_to_string (TP_CALL_STATE_INITIALISING), + call_state_to_string (self->priv->state)); + } + + /* Move from ACCEPTED to ACTIVE if we are already connected */ + if (self->priv->state != old_state && + self->priv->state == TP_CALL_STATE_ACCEPTED && + _tp_base_call_channel_is_connected (self)) + { + self->priv->state = TP_CALL_STATE_ACTIVE; + if (tp_base_channel_is_registered (TP_BASE_CHANNEL (self))) + { + tp_svc_channel_type_call_emit_call_state_changed (self, + self->priv->state, self->priv->flags, self->priv->reason, + self->priv->details); + } + + DEBUG ("state changed from %s => %s (bumped)", + call_state_to_string (TP_CALL_STATE_ACCEPTED), + call_state_to_string (self->priv->state)); + } +} + +/** + * tp_base_call_channel_get_state: + * @self: a #TpBaseCallChannel + * + * + * + * Returns: the value of #TpBaseCallChannel:call-state + * Since: 0.17.5 + */ +TpCallState +tp_base_call_channel_get_state (TpBaseCallChannel *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CHANNEL (self), TP_CALL_STATE_UNKNOWN); + + return self->priv->state; +} + +/** + * tp_base_call_channel_has_initial_audio: + * @self: a #TpBaseCallChannel + * @initial_audio_name: (out) (allow-none) (transfer none): a place to set the + * value of #TpBaseCallChannel:initial-audio-name + * + * + * + * Returns: the value of #TpBaseCallChannel:initial-audio + * Since: 0.17.5 + */ +gboolean +tp_base_call_channel_has_initial_audio (TpBaseCallChannel *self, + const gchar **initial_audio_name) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CHANNEL (self), FALSE); + + if (initial_audio_name != NULL) + *initial_audio_name = self->priv->initial_audio_name; + + return self->priv->initial_audio; +} + +/** + * tp_base_call_channel_has_initial_video: + * @self: a #TpBaseCallChannel + * @initial_video_name: (out) (allow-none) (transfer none): a place to set the + * value of #TpBaseCallChannel:initial-video-name + * + * + * + * Returns: the value of #TpBaseCallChannel:initial-video + * Since: 0.17.5 + */ +gboolean +tp_base_call_channel_has_initial_video (TpBaseCallChannel *self, + const gchar **initial_video_name) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CHANNEL (self), FALSE); + + if (initial_video_name != NULL) + *initial_video_name = self->priv->initial_video_name; + + return self->priv->initial_video; +} + +/** + * tp_base_call_channel_has_mutable_contents: + * @self: a #TpBaseCallChannel + * + * + * + * Returns: the value of #TpBaseCallChannel:mutable-contents + * Since: 0.17.5 + */ +gboolean +tp_base_call_channel_has_mutable_contents (TpBaseCallChannel *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CHANNEL (self), FALSE); + + return self->priv->mutable_contents; +} + +/** + * tp_base_call_channel_get_contents: + * @self: a #TpBaseCallChannel + * + * Get the contents of this call. The #GList and its elements must not be freed + * and should be copied before doing any modification. + * + * Returns: a #GList of #TpBaseCallContent + * Since: 0.17.5 + */ +GList * +tp_base_call_channel_get_contents (TpBaseCallChannel *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CHANNEL (self), NULL); + + return self->priv->contents; +} + +void +_tp_base_call_channel_remove_content_internal (TpBaseCallChannel *self, + TpBaseCallContent *content, + const GValueArray *reason_array) +{ + GList *l; + const gchar *path; + + l = g_list_find (self->priv->contents, content); + g_return_if_fail (l != NULL); + + self->priv->contents = g_list_delete_link (self->priv->contents, l); + g_object_notify (G_OBJECT (self), "contents"); + + path = tp_base_call_content_get_object_path ( + TP_BASE_CALL_CONTENT (content)); + tp_svc_channel_type_call_emit_content_removed (self, path, reason_array); + + _tp_base_call_content_deinit (TP_BASE_CALL_CONTENT (content)); + g_object_unref (content); +} + +/** + * tp_base_call_channel_remove_content: + * @self: a #TpBaseCallChannel + * @content: a #TpBaseCallContent to remove + * @actor_handle: the contact responsible for the change, or 0 if no contact was + * responsible. + * @reason: the #TpCallStateChangeReason of the change + * @dbus_reason: a specific reason for the change, which may be a D-Bus error in + * the Telepathy namespace, a D-Bus error in any other namespace (for + * implementation-specific errors), or the empty string to indicate that the + * state change was not an error. + * @message: an optional debug message, to expediate debugging the potentially + * many processes involved in a call. + * + * Remove @content from @self. + * + * Since: 0.17.5 + */ +void +tp_base_call_channel_remove_content (TpBaseCallChannel *self, + TpBaseCallContent *content, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message) +{ + GValueArray *reason_array; + + g_return_if_fail (TP_IS_BASE_CALL_CHANNEL (self)); + g_return_if_fail (TP_IS_BASE_CALL_CONTENT (content)); + + reason_array = _tp_base_call_state_reason_new (actor_handle, reason, + dbus_reason, message); + + _tp_base_call_channel_remove_content_internal (self, content, reason_array); + + g_value_array_free (reason_array); +} + +/** + * tp_base_call_channel_add_content: + * @self: a #TpBaseCallChannel + * @content: a #TpBaseCallContent to add + * + * Add @content to @self. If @content's #TpBaseCallContent:disposition is + * %TP_CALL_CONTENT_DISPOSITION_INITIAL, also set + * #TpBaseCallChannel:initial-audio and #TpBaseCallChannel:initial-audio-name + * properties (or #TpBaseCallChannel:initial-video and + * #TpBaseCallChannel:initial-video-name). + * Note that it is not allowed to add INITIAL contents after having registered + * @self on the bus. + * + * Since: 0.17.5 + */ +void +tp_base_call_channel_add_content (TpBaseCallChannel *self, + TpBaseCallContent *content) +{ + g_return_if_fail (TP_IS_BASE_CALL_CHANNEL (self)); + g_return_if_fail (TP_IS_BASE_CALL_CONTENT (content)); + g_return_if_fail (tp_base_call_content_get_connection (content) == + tp_base_channel_get_connection ((TpBaseChannel *) self)); + g_return_if_fail (g_list_find (self->priv->contents, content) == NULL); + + self->priv->contents = g_list_prepend (self->priv->contents, + g_object_ref (content)); + _tp_base_call_content_set_channel (content, self); + g_object_notify (G_OBJECT (self), "contents"); + + if (tp_base_call_content_get_disposition (content) == + TP_CALL_CONTENT_DISPOSITION_INITIAL) + { + if (tp_base_channel_is_registered ((TpBaseChannel *) self)) + { + WARNING ("Adding a content with TP_CALL_CONTENT_DISPOSITION_INITIAL " + "after channel has been registered on the bus is not allowed." + "Initial contents are supposed immutable"); + } + else if (tp_base_call_content_get_media_type (content) == + TP_MEDIA_STREAM_TYPE_AUDIO) + { + self->priv->initial_audio = TRUE; + g_free (self->priv->initial_audio_name); + self->priv->initial_audio_name = g_strdup ( + tp_base_call_content_get_name (content)); + } + else if (tp_base_call_content_get_media_type (content) == + TP_MEDIA_STREAM_TYPE_VIDEO) + { + self->priv->initial_video = TRUE; + g_free (self->priv->initial_video_name); + self->priv->initial_video_name = g_strdup ( + tp_base_call_content_get_name (content)); + } + } + + tp_svc_channel_type_call_emit_content_added (self, + tp_base_call_content_get_object_path (content)); +} + +/** + * tp_base_call_channel_update_member_flags: + * @self: a #TpBaseCallChannel + * @contact: the contact to update + * @new_flags: the new #TpCallMemberFlags of @contact + * @actor_handle: the contact responsible for the change, or 0 if no contact was + * responsible. + * @reason: the #TpCallStateChangeReason of the change + * @dbus_reason: a specific reason for the change, which may be a D-Bus error in + * the Telepathy namespace, a D-Bus error in any other namespace (for + * implementation-specific errors), or the empty string to indicate that the + * state change was not an error. + * @message: an optional debug message, to expediate debugging the potentially + * many processes involved in a call. + * + * Add or update @contact call member with @flags flags. + * + * Since: 0.17.5 + */ +void +tp_base_call_channel_update_member_flags (TpBaseCallChannel *self, + TpHandle contact, + TpCallMemberFlags new_flags, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message) +{ + gpointer flags_p; + gboolean exists; + GHashTable *updates; + GHashTable *identifiers; + GArray *empty_array; + GValueArray *reason_array; + + g_return_if_fail (TP_IS_BASE_CALL_CHANNEL (self)); + + exists = g_hash_table_lookup_extended (self->priv->call_members, + GUINT_TO_POINTER (contact), NULL, &flags_p); + + if (exists && GPOINTER_TO_UINT (flags_p) == new_flags) + return; + + DEBUG ("Member %d (flags: %d) updated", contact, new_flags); + + g_hash_table_insert (self->priv->call_members, + GUINT_TO_POINTER (contact), + GUINT_TO_POINTER (new_flags)); + + updates = g_hash_table_new (NULL, NULL); + g_hash_table_insert (updates, + GUINT_TO_POINTER (contact), + GUINT_TO_POINTER (new_flags)); + identifiers = _tp_base_call_dup_member_identifiers ( + tp_base_channel_get_connection ((TpBaseChannel *) self), + updates); + empty_array = g_array_new (FALSE, FALSE, sizeof (TpHandle)); + reason_array = _tp_base_call_state_reason_new (actor_handle, reason, + dbus_reason, message); + + tp_svc_channel_type_call_emit_call_members_changed (self, + updates, identifiers, empty_array, reason_array); + + g_hash_table_unref (updates); + g_hash_table_unref (identifiers); + g_array_unref (empty_array); + g_value_array_free (reason_array); +} + +/** + * tp_base_call_channel_remove_member: + * @self: a #TpBaseCallChannel + * @contact: the contact to remove + * @actor_handle: the contact responsible for the change, or 0 if no contact was + * responsible. + * @reason: the #TpCallStateChangeReason of the change + * @dbus_reason: a specific reason for the change, which may be a D-Bus error in + * the Telepathy namespace, a D-Bus error in any other namespace (for + * implementation-specific errors), or the empty string to indicate that the + * state change was not an error. + * @message: an optional debug message, to expediate debugging the potentially + * many processes involved in a call. + * + * Remove @contact from call members. + * + * Since: 0.17.5 + */ +void +tp_base_call_channel_remove_member (TpBaseCallChannel *self, + TpHandle contact, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message) +{ + GHashTable *empty_table; + GArray *removed; + GValueArray *reason_array; + + g_return_if_fail (TP_IS_BASE_CALL_CHANNEL (self)); + + if (!g_hash_table_remove (self->priv->call_members, + GUINT_TO_POINTER (contact))) + return; + + DEBUG ("Member %d removed", contact); + + reason_array = _tp_base_call_state_reason_new (actor_handle, reason, + dbus_reason, message); + empty_table = g_hash_table_new (NULL, NULL); + removed = g_array_new (FALSE, FALSE, sizeof (TpHandle)); + g_array_append_val (removed, contact); + + tp_svc_channel_type_call_emit_call_members_changed (self, + empty_table, empty_table, removed, reason_array); + + g_hash_table_unref (empty_table); + g_array_unref (removed); + g_value_array_free (reason_array); +} + +/** + * tp_base_call_channel_get_call_members: + * @self: a #TpBaseCallChannel + * + * + * + * Returns: the value of #TpBaseCallChannel:call-members. + * Since: 0.17.5 + */ +GHashTable * +tp_base_call_channel_get_call_members (TpBaseCallChannel *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CHANNEL (self), NULL); + + return self->priv->call_members; +} + +/** + * tp_base_call_channel_remote_accept: + * @self: a #TpBaseCallChannel + * + * Must be called when the remote contact accepted the call. + * #TpBaseCallChannel:state must be either %TP_CALL_STATE_INITIALISED or + * %TP_CALL_STATE_INITIALISING and will then change to %TP_CALL_STATE_ACCEPTED. + * + * Must be used only for outgoing calls. + * + * Since: 0.17.5 + */ +void +tp_base_call_channel_remote_accept (TpBaseCallChannel *self) +{ + TpBaseCallChannelClass *klass = TP_BASE_CALL_CHANNEL_GET_CLASS (self); + + g_return_if_fail (tp_base_channel_is_requested (TP_BASE_CHANNEL (self))); + + if (self->priv->accepted) + return; + + g_return_if_fail (self->priv->state == TP_CALL_STATE_INITIALISED || + self->priv->state == TP_CALL_STATE_INITIALISING); + + self->priv->accepted = TRUE; + + tp_base_call_channel_set_state (self, + TP_CALL_STATE_ACCEPTED, + tp_base_channel_get_target_handle (TP_BASE_CHANNEL (self)), + TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", ""); + + if (klass->remote_accept) + klass->remote_accept (self); +} + +/** + * tp_base_call_channel_is_accepted: + * @self: a #TpBaseCallChannel + * + * + * + * Returns: Whether or not the call has been remotely accepted. + * Since: 0.17.5 + */ +gboolean +tp_base_call_channel_is_accepted (TpBaseCallChannel *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CHANNEL (self), FALSE); + + return self->priv->accepted; +} + +/* DBus method implementation */ + +static void +tp_base_call_channel_set_ringing (TpSvcChannelTypeCall *iface, + DBusGMethodInvocation *context) +{ + TpBaseCallChannel *self = TP_BASE_CALL_CHANNEL (iface); + TpBaseCallChannelClass *klass = TP_BASE_CALL_CHANNEL_GET_CLASS (self); + TpBaseChannel *tp_base = TP_BASE_CHANNEL (self); + + if (tp_base_channel_is_requested (tp_base)) + { + GError e = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Call was requested. Ringing doesn't make sense." }; + dbus_g_method_return_error (context, &e); + } + else if (self->priv->state != TP_CALL_STATE_INITIALISED) + { + GError e = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, + "Call is not in the right state for Ringing." }; + dbus_g_method_return_error (context, &e); + } + else + { + if ((self->priv->flags & TP_CALL_FLAG_LOCALLY_RINGING) == 0) + { + DEBUG ("Client is ringing"); + + if (klass->set_ringing != NULL) + klass->set_ringing (self); + + self->priv->flags |= TP_CALL_FLAG_LOCALLY_RINGING; + self->priv->flags &= ~TP_CALL_FLAG_LOCALLY_QUEUED; + tp_base_call_channel_set_state (self, self->priv->state, + tp_base_channel_get_self_handle ((TpBaseChannel *) self), + TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", + "Local client has started ringing"); + } + + tp_svc_channel_type_call_return_from_set_ringing (context); + } +} + +static void +tp_base_call_channel_set_queued (TpSvcChannelTypeCall *iface, + DBusGMethodInvocation *context) +{ + TpBaseCallChannel *self = TP_BASE_CALL_CHANNEL (iface); + TpBaseCallChannelClass *klass = TP_BASE_CALL_CHANNEL_GET_CLASS (self); + TpBaseChannel *tp_base = TP_BASE_CHANNEL (self); + + if (tp_base_channel_is_requested (tp_base)) + { + GError e = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Call was requested. Queued doesn't make sense." }; + dbus_g_method_return_error (context, &e); + } + else if (self->priv->state != TP_CALL_STATE_INITIALISING && + self->priv->state != TP_CALL_STATE_INITIALISED) + { + GError e = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, + "Call is not in the right state for Queuing." }; + dbus_g_method_return_error (context, &e); + } + else + { + if ((self->priv->flags & TP_CALL_FLAG_LOCALLY_QUEUED) == 0) + { + DEBUG ("Call is queued"); + + if (klass->set_queued != NULL) + klass->set_queued (self); + + self->priv->flags |= TP_CALL_FLAG_LOCALLY_QUEUED; + tp_base_call_channel_set_state (self, self->priv->state, + tp_base_channel_get_self_handle ((TpBaseChannel *) self), + TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", + "Local client has queued the call"); + } + + tp_svc_channel_type_call_return_from_set_queued (context); + } +} + +static void +tp_base_call_channel_accept (TpSvcChannelTypeCall *iface, + DBusGMethodInvocation *context) +{ + TpBaseCallChannel *self = TP_BASE_CALL_CHANNEL (iface); + TpBaseCallChannelClass *klass = TP_BASE_CALL_CHANNEL_GET_CLASS (self); + TpBaseChannel *tp_base = TP_BASE_CHANNEL (self); + + DEBUG ("Client accepted the call"); + + self->priv->locally_accepted = TRUE; + + if (tp_base_channel_is_requested (tp_base)) + { + if (self->priv->state == TP_CALL_STATE_PENDING_INITIATOR) + { + tp_base_call_channel_set_state (self, + TP_CALL_STATE_INITIALISING, + tp_base_channel_get_self_handle ((TpBaseChannel *) self), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + "User has accepted to start the call"); + } + else + { + GError e = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, + "Invalid state for Accept" }; + dbus_g_method_return_error (context, &e); + return; + } + } + else + { + if (self->priv->state == TP_CALL_STATE_INITIALISED) + { + tp_base_call_channel_set_state (self, + TP_CALL_STATE_ACCEPTED, + tp_base_channel_get_self_handle ((TpBaseChannel *) self), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + "User has accepted call"); + } + else + { + GError e = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, + "Invalid state for Accept" }; + dbus_g_method_return_error (context, &e); + return; + } + self->priv->accepted = TRUE; + } + + klass->accept (self); + + tp_svc_channel_type_call_return_from_accept (context); +} + +static void +tp_base_call_channel_accept_real (TpBaseCallChannel *self) +{ + g_list_foreach (self->priv->contents, + (GFunc) _tp_base_call_content_accepted, NULL); +} + +static void +tp_base_call_channel_hangup (TpSvcChannelTypeCall *iface, + guint reason, + const gchar *detailed_reason, + const gchar *message, + DBusGMethodInvocation *context) +{ + TpBaseCallChannel *self = TP_BASE_CALL_CHANNEL (iface); + TpBaseCallChannelClass *klass = TP_BASE_CALL_CHANNEL_GET_CLASS (self); + TpBaseChannel *tp_base = TP_BASE_CHANNEL (self); + + if (self->priv->state == TP_CALL_STATE_ENDED) + { + GError e = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, + "This call has already ended" }; + dbus_g_method_return_error (context, &e); + return; + } + + if (klass->hangup != NULL) + klass->hangup (self, reason, detailed_reason, message); + + tp_base_call_channel_set_state (self, TP_CALL_STATE_ENDED, + tp_base_channel_get_self_handle (tp_base), + reason, detailed_reason, message); + + tp_svc_channel_type_call_return_from_hangup (context); +} + +static void +tp_base_call_channel_add_content_dbus (TpSvcChannelTypeCall *iface, + const gchar *name, + TpMediaStreamType mtype, + TpMediaStreamDirection initial_direction, + DBusGMethodInvocation *context) +{ + TpBaseCallChannel *self = TP_BASE_CALL_CHANNEL (iface); + TpBaseCallChannelClass *klass = TP_BASE_CALL_CHANNEL_GET_CLASS (self); + TpBaseCallContent *content; + GError *error = NULL; + + if (self->priv->state == TP_CALL_STATE_ENDED) + { + g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_AVAILABLE, + "No contents can be added. The call has already ended."); + goto error; + } + + if (mtype >= NUM_TP_MEDIA_STREAM_TYPES) + { + g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_IMPLEMENTED, + "Unknown content type"); + goto error; + } + + if (initial_direction >= NUM_TP_MEDIA_STREAM_DIRECTIONS) + { + g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Invalid initial direction"); + goto error; + } + + if (!self->priv->mutable_contents || klass->add_content == NULL) + { + g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_CAPABLE, + "Contents are not mutable"); + goto error; + } + + content = klass->add_content (self, name, mtype, initial_direction, &error); + + if (content == NULL) + goto error; + + if (g_list_find (self->priv->contents, content) == NULL) + { + WARNING ("TpBaseCallChannel::add_content() virtual method implementation " + "should have called tp_base_call_channel_add_content()"); + } + + tp_svc_channel_type_call_return_from_add_content (context, + tp_base_call_content_get_object_path (content)); + return; + +error: + dbus_g_method_return_error (context, error); + g_error_free (error); +} + +static void +call_iface_init (gpointer g_iface, gpointer iface_data) +{ + TpSvcChannelTypeCallClass *klass = + (TpSvcChannelTypeCallClass *) g_iface; + +#define IMPLEMENT(x, suffix) tp_svc_channel_type_call_implement_##x (\ + klass, tp_base_call_channel_##x##suffix) + IMPLEMENT(set_ringing,); + IMPLEMENT(set_queued,); + IMPLEMENT(accept,); + IMPLEMENT(hangup,); + IMPLEMENT(add_content, _dbus); +#undef IMPLEMENT +} + +/* Interface has no methods, only has a requestable property */ +static void +dtmf_iface_init (gpointer g_iface, gpointer iface_data) +{ +} + +/* Internal functions */ + +gboolean +_tp_base_call_channel_is_locally_accepted (TpBaseCallChannel *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CHANNEL (self), FALSE); + + return self->priv->locally_accepted; +} + +gboolean +_tp_base_call_channel_is_connected (TpBaseCallChannel *self) +{ + TpBaseCallChannelClass *klass = TP_BASE_CALL_CHANNEL_GET_CLASS (self); + + if (klass->is_connected) + return klass->is_connected (self); + else + return TRUE; +} + +const gchar * +_tp_base_call_channel_get_initial_tones (TpBaseCallChannel *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CHANNEL (self), ""); + + return self->priv->initial_tones; +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-call-channel.h telepathy-glib-0.17.5/telepathy-glib/base-call-channel.h --- telepathy-glib-0.17.4/telepathy-glib/base-call-channel.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-call-channel.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,136 @@ +/* + * base-call-channel.h - Header for TpBaseCallChannel + * Copyright © 2009–2011 Collabora Ltd. + * @author Sjoerd Simons + * @author Xavier Claessens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __TP_BASE_CALL_CHANNEL_H__ +#define __TP_BASE_CALL_CHANNEL_H__ + +#include +#include + +G_BEGIN_DECLS + +typedef struct _TpBaseCallChannel TpBaseCallChannel; +typedef struct _TpBaseCallChannelPrivate TpBaseCallChannelPrivate; +typedef struct _TpBaseCallChannelClass TpBaseCallChannelClass; + +typedef void (*TpBaseCallChannelVoidFunc) (TpBaseCallChannel *self); +typedef TpBaseCallContent * (*TpBaseCallChannelAddContentFunc) ( + TpBaseCallChannel *self, + const gchar *name, + TpMediaStreamType media, + TpMediaStreamDirection initial_direction, + GError **error); +typedef void (*TpBaseCallChannelHangupFunc) (TpBaseCallChannel *self, + TpCallStateChangeReason reason, + const gchar *detailed_reason, + const gchar *message); + +struct _TpBaseCallChannelClass { + /**/ + TpBaseChannelClass parent_class; + + /*< public >*/ + TpBaseCallChannelVoidFunc set_ringing; + TpBaseCallChannelVoidFunc set_queued; + TpBaseCallChannelVoidFunc accept; + TpBaseCallChannelAddContentFunc add_content; + TpBaseCallChannelHangupFunc hangup; + + /**/ + /* For media subclasses */ + gboolean (*is_connected) (TpBaseCallChannel *self); + void (*remote_accept) (TpBaseCallChannel *self); + + gpointer future[4]; +}; + +struct _TpBaseCallChannel { + /**/ + TpBaseChannel parent; + + TpBaseCallChannelPrivate *priv; +}; + +GType tp_base_call_channel_get_type (void); + +/* TYPE MACROS */ +#define TP_TYPE_BASE_CALL_CHANNEL \ + (tp_base_call_channel_get_type ()) +#define TP_BASE_CALL_CHANNEL(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + TP_TYPE_BASE_CALL_CHANNEL, TpBaseCallChannel)) +#define TP_BASE_CALL_CHANNEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + TP_TYPE_BASE_CALL_CHANNEL, TpBaseCallChannelClass)) +#define TP_IS_BASE_CALL_CHANNEL(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TYPE_BASE_CALL_CHANNEL)) +#define TP_IS_BASE_CALL_CHANNEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TYPE_BASE_CALL_CHANNEL)) +#define TP_BASE_CALL_CHANNEL_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + TP_TYPE_BASE_CALL_CHANNEL, TpBaseCallChannelClass)) + +TpCallState tp_base_call_channel_get_state (TpBaseCallChannel *self); +void tp_base_call_channel_set_state (TpBaseCallChannel *self, + TpCallState state, + guint actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message); + +gboolean tp_base_call_channel_has_initial_audio (TpBaseCallChannel *self, + const gchar **initial_audio_name); +gboolean tp_base_call_channel_has_initial_video (TpBaseCallChannel *self, + const gchar **initial_video_name); + +gboolean tp_base_call_channel_has_mutable_contents (TpBaseCallChannel *self); +GList * tp_base_call_channel_get_contents (TpBaseCallChannel *self); +void tp_base_call_channel_add_content (TpBaseCallChannel *self, + TpBaseCallContent *content); +void tp_base_call_channel_remove_content (TpBaseCallChannel *self, + TpBaseCallContent *content, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message); + +void tp_base_call_channel_update_member_flags (TpBaseCallChannel *self, + TpHandle contact, + TpCallMemberFlags new_flags, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message); +void tp_base_call_channel_remove_member (TpBaseCallChannel *self, + TpHandle contact, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message); +GHashTable *tp_base_call_channel_get_call_members (TpBaseCallChannel *self); + +void tp_base_call_channel_remote_accept (TpBaseCallChannel *self); + +gboolean tp_base_call_channel_is_accepted (TpBaseCallChannel *self); + +G_END_DECLS + +#endif /* #ifndef __TP_BASE_CALL_CHANNEL_H__*/ diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-call-content.c telepathy-glib-0.17.5/telepathy-glib/base-call-content.c --- telepathy-glib-0.17.4/telepathy-glib/base-call-content.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-call-content.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,961 @@ +/* + * base-call-content.c - Source for TpBaseCallContent + * Copyright © 2009–2011 Collabora Ltd. + * @author Sjoerd Simons + * @author Will Thompson + * @author Xavier Claessens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:base-call-content + * @title: TpBaseCallContent + * @short_description: base class for #TpSvcCallContent implementations + * @see_also: #TpSvcCallContent, #TpBaseCallChannel and #TpBaseCallStream + * + * This base class makes it easier to write #TpSvcCallContent + * implementations by implementing its properties, and some of its methods. + * + * Subclasses should fill in #TpBaseCallContentClass.get_interfaces, + * and #TpBaseCallContentClass.deinit virtual function. + * + * Since: 0.17.5 + */ + +/** + * TpBaseCallContent: + * + * A base class for call content implementations + * + * Since: 0.17.5 + */ + +/** + * TpBaseCallContentClass: + * @get_interfaces: extra interfaces provided by this content (this SHOULD NOT + * include %TP_IFACE_CALL_CONTENT itself). Implementation must first chainup on + * parent class implementation then add extra interfaces into the #GPtrArray. + * @deinit: optional; virtual method called by #TpBaseCallChannel when removing + * the content + * @start_tone: optional; virtual method called when user requested to send + * a DTMF tone. Note that this method is already implemented by + * #TpBaseMediaCallContent and so does not have to be overriden when using that + * subclass + * @stop_tone: optional; virtual method called when user requested to stop + * sending currently being played DTMF tones. Note that this method is already + * implemented by #TpBaseMediaCallContent and so does not have to be overriden + * when using that subclass + * @multiple_tones: optional; virtual method called when user requested to send + * multiple DTMF tones. Note that this method is already implemented by + * #TpBaseMediaCallContent and so does not have to be overriden when using that + * subclass + * + * The class structure for #TpBaseCallContent + * + * Since: 0.17.5 + */ + +/** + * TpBaseCallContentGetInterfacesFunc: + * @self: a #TpBaseCallContent + * + * Signature of an implementation of #TpBaseCallContentClass.get_interfaces. + * + * Returns: a #GPtrArray containing static strings. + * Since: 0.17.5 + */ + +/** + * TpBaseCallContentDeinitFunc: + * @self: a #TpBaseCallContent + * + * Signature of an implementation of #TpBaseCallContentClass.deinit. + * + * Since: 0.17.5 + */ + +/** + * TpBaseCallContentStartToneFunc: + * @self: a #TpBaseCallContent + * @event: a #TpDTMFEvent + * @error: a #GError to fill + * + * Signature of an implementation of #TpBaseCallContentClass.start_tone. + * + * Returns: %TRUE on success, otherwise %FALSE and set @error + * Since: 0.17.5 + */ + +/** + * TpBaseCallContentStopToneFunc: + * @self: a #TpBaseCallContent + * @error: a #GError to fill + * + * Signature of an implementation of #TpBaseCallContentClass.stop_tone. + * + * Returns: %TRUE on success, otherwise %FALSE and set @error + * Since: 0.17.5 + */ + +/** + * TpBaseCallContentMultipleTonesFunc: + * @self: a #TpBaseCallContent + * @tones: a string representation of one or more DTMF events + * @error: a #GError to fill + * + * Signature of an implementation of #TpBaseCallContentClass.multiple_tones. + * + * Returns: %TRUE on success, otherwise %FALSE and set @error + * Since: 0.17.5 + */ + +#include "config.h" + +#include "telepathy-glib/base-call-content.h" + +#define DEBUG_FLAG TP_DEBUG_CALL + +#include "telepathy-glib/base-call-channel.h" +#include "telepathy-glib/base-call-internal.h" +#include "telepathy-glib/base-connection.h" +#include "telepathy-glib/debug-internal.h" +#include "telepathy-glib/dbus.h" +#include "telepathy-glib/dbus-properties-mixin.h" +#include "telepathy-glib/gtypes.h" +#include "telepathy-glib/interfaces.h" +#include "telepathy-glib/svc-call.h" +#include "telepathy-glib/svc-generic.h" +#include "telepathy-glib/util.h" + +static void call_content_iface_init (gpointer g_iface, gpointer iface_data); +static void call_content_dtmf_iface_init (gpointer g_iface, + gpointer iface_data); + +G_DEFINE_ABSTRACT_TYPE_WITH_CODE (TpBaseCallContent, tp_base_call_content, + G_TYPE_OBJECT, + + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, + tp_dbus_properties_mixin_iface_init) + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CALL_CONTENT, + call_content_iface_init) + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CALL_CONTENT_INTERFACE_DTMF, + call_content_dtmf_iface_init) + ) + +struct _TpBaseCallContentPrivate +{ + TpBaseConnection *conn; + + gchar *object_path; + + gchar *name; + TpMediaStreamType media_type; + TpHandle creator; + TpCallContentDisposition disposition; + + /* GList or reffed TpBaseCallStream */ + GList *streams; + + /* Borrowed */ + TpBaseCallChannel *channel; + + gboolean deinit_has_run; +}; + +enum +{ + PROP_OBJECT_PATH = 1, + PROP_CONNECTION, + + /* Call.Content Properties */ + PROP_INTERFACES, + PROP_NAME, + PROP_MEDIA_TYPE, + PROP_CREATOR, + PROP_DISPOSITION, + PROP_STREAMS, + + /* Call.Content.Interface.DTMF properties */ + + PROP_CURRENTLY_SENDING_TONES, + PROP_DEFERRED_TONES, +}; + +static void +tp_base_call_content_init (TpBaseCallContent *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + TP_TYPE_BASE_CALL_CONTENT, TpBaseCallContentPrivate); +} + +static void +tp_base_call_content_constructed (GObject *obj) +{ + TpBaseCallContent *self = TP_BASE_CALL_CONTENT (obj); + TpDBusDaemon *bus = tp_base_connection_get_dbus_daemon ( + (TpBaseConnection *) self->priv->conn); + + if (G_OBJECT_CLASS (tp_base_call_content_parent_class)->constructed != NULL) + G_OBJECT_CLASS (tp_base_call_content_parent_class)->constructed (obj); + + DEBUG ("Registering %s", self->priv->object_path); + tp_dbus_daemon_register_object (bus, self->priv->object_path, obj); +} + +static void +stream_list_destroy (GList *streams) +{ + g_list_free_full (streams, g_object_unref); +} + +static void +tp_base_call_content_deinit_real (TpBaseCallContent *self) +{ + TpDBusDaemon *bus = tp_base_connection_get_dbus_daemon ( + (TpBaseConnection *) self->priv->conn); + + tp_dbus_daemon_unregister_object (bus, G_OBJECT (self)); + + tp_clear_pointer (&self->priv->streams, stream_list_destroy); +} + +static GPtrArray * +tp_base_call_content_get_interfaces (TpBaseCallContent *self) +{ + return g_ptr_array_new (); +} + +static void +tp_base_call_content_dispose (GObject *object) +{ + TpBaseCallContent *self = TP_BASE_CALL_CONTENT (object); + + if (!self->priv->deinit_has_run) + _tp_base_call_content_deinit (self); + + g_assert (self->priv->deinit_has_run); + + tp_clear_pointer (&self->priv->streams, stream_list_destroy); + g_object_notify (G_OBJECT (self), "streams"); + tp_clear_object (&self->priv->conn); + + if (G_OBJECT_CLASS (tp_base_call_content_parent_class)->dispose != NULL) + G_OBJECT_CLASS (tp_base_call_content_parent_class)->dispose (object); +} + +static void +tp_base_call_content_finalize (GObject *object) +{ + TpBaseCallContent *self = TP_BASE_CALL_CONTENT (object); + + /* free any data held directly by the object here */ + g_free (self->priv->object_path); + g_free (self->priv->name); + + G_OBJECT_CLASS (tp_base_call_content_parent_class)->finalize (object); +} + +static void +tp_base_call_content_get_property ( + GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + TpBaseCallContent *self = TP_BASE_CALL_CONTENT (object); + TpBaseCallContentClass *klass = TP_BASE_CALL_CONTENT_GET_CLASS (self); + + switch (property_id) + { + case PROP_OBJECT_PATH: + g_value_set_string (value, self->priv->object_path); + break; + case PROP_CONNECTION: + g_value_set_object (value, self->priv->conn); + break; + case PROP_INTERFACES: + { + GPtrArray *interfaces = klass->get_interfaces (self); + + g_ptr_array_add (interfaces, NULL); + g_value_set_boxed (value, interfaces->pdata); + g_ptr_array_unref (interfaces); + break; + } + case PROP_NAME: + g_value_set_string (value, self->priv->name); + break; + case PROP_MEDIA_TYPE: + g_value_set_uint (value, self->priv->media_type); + break; + case PROP_CREATOR: + g_value_set_uint (value, self->priv->creator); + break; + case PROP_DISPOSITION: + g_value_set_uint (value, self->priv->disposition); + break; + case PROP_STREAMS: + { + GPtrArray *arr = g_ptr_array_sized_new (2); + GList *l; + + for (l = self->priv->streams; l != NULL; l = g_list_next (l)) + { + TpBaseCallStream *s = TP_BASE_CALL_STREAM (l->data); + g_ptr_array_add (arr, + g_strdup (tp_base_call_stream_get_object_path (s))); + } + + g_value_take_boxed (value, arr); + break; + } + case PROP_CURRENTLY_SENDING_TONES: + g_value_set_boolean (value, FALSE); + break; + case PROP_DEFERRED_TONES: + g_value_set_static_string (value, ""); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_base_call_content_set_property ( + GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + TpBaseCallContent *self = TP_BASE_CALL_CONTENT (object); + + switch (property_id) + { + case PROP_OBJECT_PATH: + self->priv->object_path = g_value_dup_string (value); + g_assert (self->priv->object_path != NULL); + break; + case PROP_CONNECTION: + self->priv->conn = g_value_dup_object (value); + break; + case PROP_NAME: + self->priv->name = g_value_dup_string (value); + break; + case PROP_MEDIA_TYPE: + self->priv->media_type = g_value_get_uint (value); + break; + case PROP_CREATOR: + self->priv->creator = g_value_get_uint (value); + break; + case PROP_DISPOSITION: + self->priv->disposition = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_base_call_content_class_init (TpBaseCallContentClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *param_spec; + static TpDBusPropertiesMixinPropImpl content_props[] = { + { "Interfaces", "interfaces", NULL }, + { "Name", "name", NULL }, + { "Type", "media-type", NULL }, + { "Disposition", "disposition", NULL }, + { "Streams", "streams", NULL }, + { NULL } + }; + static TpDBusPropertiesMixinPropImpl content_dtmf_props[] = { + { "CurrentlySendingTones", "currently-sending-tones", NULL }, + { "DeferredTones", "deferred-tones", NULL }, + { NULL } + }; + static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { + { TP_IFACE_CALL_CONTENT, + tp_dbus_properties_mixin_getter_gobject_properties, + NULL, + content_props, + }, + { TP_IFACE_CALL_CONTENT_INTERFACE_DTMF, + tp_dbus_properties_mixin_getter_gobject_properties, + NULL, + content_dtmf_props, + }, + { NULL } + }; + + g_type_class_add_private (klass, sizeof (TpBaseCallContentPrivate)); + + object_class->constructed = tp_base_call_content_constructed; + object_class->dispose = tp_base_call_content_dispose; + object_class->finalize = tp_base_call_content_finalize; + object_class->get_property = tp_base_call_content_get_property; + object_class->set_property = tp_base_call_content_set_property; + + klass->deinit = tp_base_call_content_deinit_real; + klass->get_interfaces = tp_base_call_content_get_interfaces; + + /** + * TpBaseCallContent:object-path: + * + * The D-Bus object path used for this object on the bus. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_string ("object-path", "D-Bus object path", + "The D-Bus object path used for this object on the bus.", + NULL, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_OBJECT_PATH, param_spec); + + /** + * TpBaseCallContent:connection: + * + * #TpBaseConnection object that owns this call content. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_object ("connection", "TpBaseConnection object", + "Tp base connection object that owns this call content", + TP_TYPE_BASE_CONNECTION, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); + + /** + * TpBaseCallContent:interfaces: + * + * Additional interfaces implemented by this content. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", + "Additional interfaces implemented by this content", + G_TYPE_STRV, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); + + /** + * TpBaseCallContent:name: + * + * The name of this content, if any. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_string ("name", "Name", + "The name of this content, if any", + "", + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_NAME, param_spec); + + /** + * TpBaseCallContent:media-type: + * + * The #TpMediaStreamType of this content. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("media-type", "Media Type", + "The media type of this content", + 0, G_MAXUINT, 0, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_MEDIA_TYPE, param_spec); + + /** + * TpBaseCallContent:creator: + * + * The contact #TpHandle of the creator of this content. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("creator", "Creator", + "The creator of this content", + 0, G_MAXUINT, 0, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CREATOR, param_spec); + + /** + * TpBaseCallContent:disposition: + * + * The #TpCallContentDisposition of this content. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("disposition", "Disposition", + "The disposition of this content", + 0, G_MAXUINT, 0, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_DISPOSITION, param_spec); + + /** + * TpBaseCallContent:streams: + * + * A #GPtrArray of this content streams' #TpBaseCallStream:object-path. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("streams", "Stream", + "The streams of this content", + TP_ARRAY_TYPE_OBJECT_PATH_LIST, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_STREAMS, + param_spec); + + /** + * TpBaseCallContent:currently-sending-tones + * + * If this content is currently sending tones or not + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("currently-sending-tones", + "CurrentlySendingTones", + "If the Content is currently sending tones or not", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CURRENTLY_SENDING_TONES, + param_spec); + + /** + * TpBaseCallContent:deferred-tones + * + * Tones that are waiting for the user action to play. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_string ("deferred-tones", + "DeferredTones", + "The tones requested in the initial channel request", + NULL, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_DEFERRED_TONES, + param_spec); + + klass->dbus_props_class.interfaces = prop_interfaces; + tp_dbus_properties_mixin_class_init (object_class, + G_STRUCT_OFFSET (TpBaseCallContentClass, dbus_props_class)); +} + +/** + * tp_base_call_content_get_connection: + * @self: a #TpBaseCallContent + * + * + * + * Returns: the value of #TpBaseCallContent:connection + * Since: 0.17.5 + */ +TpBaseConnection * +tp_base_call_content_get_connection (TpBaseCallContent *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CONTENT (self), NULL); + + return self->priv->conn; +} + +/** + * tp_base_call_content_get_object_path: + * @self: a #TpBaseCallContent + * + * + * + * Returns: the value of #TpBaseCallContent:object-path + * Since: 0.17.5 + */ +const gchar * +tp_base_call_content_get_object_path (TpBaseCallContent *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CONTENT (self), NULL); + + return self->priv->object_path; +} + +/** + * tp_base_call_content_get_name: + * @self: a #TpBaseCallContent + * + * + * + * Returns: the value of #TpBaseCallContent:name + * Since: 0.17.5 + */ +const gchar * +tp_base_call_content_get_name (TpBaseCallContent *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CONTENT (self), NULL); + + return self->priv->name; +} + +/** + * tp_base_call_content_get_media_type: + * @self: a #TpBaseCallContent + * + * + * + * Returns: the value of #TpBaseCallContent:media-type + * Since: 0.17.5 + */ +TpMediaStreamType +tp_base_call_content_get_media_type (TpBaseCallContent *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CONTENT (self), + TP_MEDIA_STREAM_TYPE_AUDIO); + + return self->priv->media_type; +} + +/** + * tp_base_call_content_get_disposition: + * @self: a #TpBaseCallContent + * + * + * + * Returns: the value of #TpBaseCallContent:disposition + * Since: 0.17.5 + */ +TpCallContentDisposition +tp_base_call_content_get_disposition (TpBaseCallContent *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CONTENT (self), + TP_CALL_CONTENT_DISPOSITION_NONE); + + return self->priv->disposition; +} + +/** + * tp_base_call_content_get_streams: + * @self: a #TpBaseCallContent + * + * + * + * Returns: a #GList of #TpBaseCallStream of this content. + * Since: 0.17.5 + */ +GList * +tp_base_call_content_get_streams (TpBaseCallContent *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CONTENT (self), NULL); + + return self->priv->streams; +} + +/** + * tp_base_call_content_add_stream: + * @self: a #TpBaseCallContent + * @stream: a #TpBaseCallStream + * + * Add @stream to @self's #TpBaseCallContent:streams. Emitting StreamsAdded + * DBus signal. + * + * Since: 0.17.5 + */ +void +tp_base_call_content_add_stream (TpBaseCallContent *self, + TpBaseCallStream *stream) +{ + GPtrArray *paths; + + g_return_if_fail (TP_IS_BASE_CALL_CONTENT (self)); + g_return_if_fail (TP_IS_BASE_CALL_STREAM (stream)); + g_return_if_fail (tp_base_call_stream_get_connection (stream) == + self->priv->conn); + g_return_if_fail (self->priv->channel != NULL); + g_return_if_fail (g_list_find (self->priv->streams, stream) == NULL); + + _tp_base_call_stream_set_content (stream, self); + + self->priv->streams = g_list_prepend (self->priv->streams, + g_object_ref (stream)); + g_object_notify (G_OBJECT (self), "streams"); + + paths = g_ptr_array_new_with_free_func ((GDestroyNotify) g_free); + + g_ptr_array_add (paths, g_strdup ( + tp_base_call_stream_get_object_path ( + TP_BASE_CALL_STREAM (stream)))); + tp_svc_call_content_emit_streams_added (self, paths); + g_ptr_array_unref (paths); +} + +void +_tp_base_call_content_remove_stream_internal (TpBaseCallContent *self, + TpBaseCallStream *stream, + const GValueArray *reason_array) +{ + GList *l; + GPtrArray *paths; + + l = g_list_find (self->priv->streams, stream); + g_return_if_fail (l != NULL); + + self->priv->streams = g_list_delete_link (self->priv->streams, l); + g_object_notify (G_OBJECT (self), "streams"); + + paths = g_ptr_array_new (); + g_ptr_array_add (paths, (gpointer) + tp_base_call_stream_get_object_path (stream)); + + tp_svc_call_content_emit_streams_removed (self, paths, reason_array); + + g_ptr_array_unref (paths); + g_object_unref (stream); +} + +/** + * tp_base_call_content_remove_stream: + * @self: a #TpBaseCallContent + * @stream: a #TpBaseCallStream + * @actor_handle: the contact responsible for the change, or 0 if no contact was + * responsible. + * @reason: the #TpCallStateChangeReason of the change + * @dbus_reason: a specific reason for the change, which may be a D-Bus error in + * the Telepathy namespace, a D-Bus error in any other namespace (for + * implementation-specific errors), or the empty string to indicate that the + * state change was not an error. + * @message: an optional debug message, to expediate debugging the potentially + * many processes involved in a call. + * + * Remove @stream from @self's #TpBaseCallContent:streams. Emitting + * StreamsRemoved DBus signal. + * + * Since: 0.17.5 + */ +void +tp_base_call_content_remove_stream (TpBaseCallContent *self, + TpBaseCallStream *stream, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message) +{ + GValueArray *reason_array; + + g_return_if_fail (TP_IS_BASE_CALL_CONTENT (self)); + g_return_if_fail (TP_IS_BASE_CALL_STREAM (stream)); + + reason_array = _tp_base_call_state_reason_new (actor_handle, reason, + dbus_reason, message); + + _tp_base_call_content_remove_stream_internal (self, stream, reason_array); + + g_value_array_free (reason_array); +} + +static void +tp_call_content_remove (TpSvcCallContent *content, + DBusGMethodInvocation *context) +{ + TpBaseCallContent *self = TP_BASE_CALL_CONTENT (content); + + if (!tp_base_call_channel_has_mutable_contents (self->priv->channel)) + { + GError error = { TP_ERRORS, TP_ERROR_NOT_IMPLEMENTED, + "Contents are not mutable" }; + dbus_g_method_return_error (context, &error); + return; + } + + tp_base_call_channel_remove_content (self->priv->channel, self, + tp_base_channel_get_self_handle ((TpBaseChannel *) self->priv->channel), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + "User has removed the content"); + + tp_svc_call_content_return_from_remove (context); +} + +static void +call_content_iface_init (gpointer g_iface, gpointer iface_data) +{ + TpSvcCallContentClass *klass = + (TpSvcCallContentClass *) g_iface; + +#define IMPLEMENT(x) tp_svc_call_content_implement_##x (\ + klass, tp_call_content_##x) + IMPLEMENT(remove); +#undef IMPLEMENT +} + +/* These functions are used only internally */ + +void +_tp_base_call_content_set_channel (TpBaseCallContent *self, + TpBaseCallChannel *channel) +{ + g_return_if_fail (TP_IS_BASE_CALL_CONTENT (self)); + g_return_if_fail (TP_IS_BASE_CALL_CHANNEL (channel)); + g_return_if_fail (self->priv->channel == NULL); + + self->priv->channel = channel; + + if (self->priv->disposition == TP_CALL_CONTENT_DISPOSITION_INITIAL) + { + TpBaseCallContentClass *klass = TP_BASE_CALL_CONTENT_GET_CLASS (self); + const gchar *tones; + + tones =_tp_base_call_channel_get_initial_tones (channel); + if (tones && tones[0] && klass->multiple_tones != NULL) + { + klass->multiple_tones (self, tones, NULL); + } + } + +} + +TpBaseCallChannel * +_tp_base_call_content_get_channel (TpBaseCallContent *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_CONTENT (self), NULL); + g_return_val_if_fail (self->priv->channel != NULL, NULL); + + return self->priv->channel; +} + +void +_tp_base_call_content_deinit (TpBaseCallContent *self) +{ + TpBaseCallContentClass *klass; + + g_return_if_fail (TP_IS_BASE_CALL_CONTENT (self)); + + g_assert (!self->priv->deinit_has_run); + self->priv->deinit_has_run = TRUE; + + klass = TP_BASE_CALL_CONTENT_GET_CLASS (self); + klass->deinit (self); +} + +void +_tp_base_call_content_accepted (TpBaseCallContent *self, + TpHandle actor_handle) +{ + GList *l; + + g_return_if_fail (TP_IS_BASE_CALL_CONTENT (self)); + + if (self->priv->disposition != TP_CALL_CONTENT_DISPOSITION_INITIAL) + return; + + for (l = self->priv->streams ; l != NULL; l = g_list_next (l)) + { + TpBaseCallStream *s = TP_BASE_CALL_STREAM (l->data); + + if (tp_base_call_stream_get_local_sending_state (s) == + TP_SENDING_STATE_PENDING_SEND) + tp_base_call_stream_update_local_sending_state (s, + TP_SENDING_STATE_SENDING, actor_handle, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + "User accepted the Call"); + } +} + +static void +tp_call_content_start_tone (TpSvcCallContentInterfaceDTMF *dtmf, + guchar event, + DBusGMethodInvocation *context) +{ + TpBaseCallContent *self = TP_BASE_CALL_CONTENT (dtmf); + TpBaseCallContentClass *klass = TP_BASE_CALL_CONTENT_GET_CLASS (self); + GError *error = NULL; + + if (klass->start_tone == NULL) + { + GError err = {G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, + "Method does not exist"}; + dbus_g_method_return_error (context, &err); + return; + } + + if (!klass->start_tone (self, event, &error)) + { + dbus_g_method_return_error (context, error); + g_clear_error (&error); + return; + } + + tp_svc_call_content_interface_dtmf_return_from_start_tone (context); +} + +static void +tp_call_content_stop_tone (TpSvcCallContentInterfaceDTMF *dtmf, + DBusGMethodInvocation *context) +{ + TpBaseCallContent *self = TP_BASE_CALL_CONTENT (dtmf); + TpBaseCallContentClass *klass = TP_BASE_CALL_CONTENT_GET_CLASS (self); + GError *error = NULL; + + if (klass->stop_tone == NULL) + { + GError err = {G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, + "Method does not exist"}; + dbus_g_method_return_error (context, &err); + return; + } + + if (!klass->stop_tone (self, &error)) + { + dbus_g_method_return_error (context, error); + g_clear_error (&error); + return; + } + + tp_svc_call_content_interface_dtmf_return_from_stop_tone (context); +} + +static void +tp_call_content_multiple_tones (TpSvcCallContentInterfaceDTMF *dtmf, + const gchar *tones, + DBusGMethodInvocation *context) +{ + TpBaseCallContent *self = TP_BASE_CALL_CONTENT (dtmf); + TpBaseCallContentClass *klass = TP_BASE_CALL_CONTENT_GET_CLASS (self); + GError *error = NULL; + + if (klass->multiple_tones == NULL) + { + GError err = {G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, + "Method does not exist"}; + dbus_g_method_return_error (context, &err); + return; + } + + if (!klass->multiple_tones (self, tones, &error)) + { + dbus_g_method_return_error (context, error); + g_clear_error (&error); + return; + } + + tp_svc_call_content_interface_dtmf_return_from_multiple_tones (context); +} + +static void +call_content_dtmf_iface_init (gpointer g_iface, gpointer iface_data) +{ + TpSvcCallContentInterfaceDTMFClass *klass = + (TpSvcCallContentInterfaceDTMFClass *) g_iface; + +#define IMPLEMENT(x) tp_svc_call_content_interface_dtmf_implement_##x (\ + klass, tp_call_content_##x) + IMPLEMENT(start_tone); + IMPLEMENT(stop_tone); + IMPLEMENT(multiple_tones); +#undef IMPLEMENT +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-call-content.h telepathy-glib-0.17.5/telepathy-glib/base-call-content.h --- telepathy-glib-0.17.4/telepathy-glib/base-call-content.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-call-content.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,117 @@ +/* + * base-call-content.h - Header for TpBaseBaseCallContent + * Copyright © 2009–2011 Collabora Ltd. + * @author Sjoerd Simons + * @author Will Thompson + * @author Xavier Claessens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef TP_BASE_CALL_CONTENT_H +#define TP_BASE_CALL_CONTENT_H + +#include + +#include +#include +#include + +G_BEGIN_DECLS + +/* forward declaration */ +typedef struct _TpBaseCallChannel TpBaseCallChannel; + +typedef struct _TpBaseCallContent TpBaseCallContent; +typedef struct _TpBaseCallContentPrivate TpBaseCallContentPrivate; +typedef struct _TpBaseCallContentClass TpBaseCallContentClass; + +typedef GPtrArray * (*TpBaseCallContentGetInterfacesFunc) ( + TpBaseCallContent *self); +typedef void (*TpBaseCallContentDeinitFunc) (TpBaseCallContent *self); +typedef gboolean (*TpBaseCallContentStartToneFunc) (TpBaseCallContent *self, + TpDTMFEvent event, + GError **error); +typedef gboolean (*TpBaseCallContentStopToneFunc) (TpBaseCallContent *self, + GError **error); +typedef gboolean (*TpBaseCallContentMultipleTonesFunc) (TpBaseCallContent *self, + const gchar *tones, + GError **error); + +struct _TpBaseCallContentClass { + /**/ + GObjectClass parent_class; + + TpDBusPropertiesMixinClass dbus_props_class; + + /*< public >*/ + TpBaseCallContentDeinitFunc deinit; + TpBaseCallContentGetInterfacesFunc get_interfaces; + + TpBaseCallContentStartToneFunc start_tone; + TpBaseCallContentStopToneFunc stop_tone; + TpBaseCallContentMultipleTonesFunc multiple_tones; + + /**/ + gpointer future[4]; +}; + +struct _TpBaseCallContent { + /**/ + GObject parent; + + TpBaseCallContentPrivate *priv; +}; + +GType tp_base_call_content_get_type (void); + +/* TYPE MACROS */ +#define TP_TYPE_BASE_CALL_CONTENT \ + (tp_base_call_content_get_type ()) +#define TP_BASE_CALL_CONTENT(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), \ + TP_TYPE_BASE_CALL_CONTENT, TpBaseCallContent)) +#define TP_BASE_CALL_CONTENT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + TP_TYPE_BASE_CALL_CONTENT, TpBaseCallContentClass)) +#define TP_IS_BASE_CALL_CONTENT(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TYPE_BASE_CALL_CONTENT)) +#define TP_IS_BASE_CALL_CONTENT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TYPE_BASE_CALL_CONTENT)) +#define TP_BASE_CALL_CONTENT_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + TP_TYPE_BASE_CALL_CONTENT, TpBaseCallContentClass)) + +TpBaseConnection *tp_base_call_content_get_connection (TpBaseCallContent *self); +const gchar *tp_base_call_content_get_object_path (TpBaseCallContent *self); + +const gchar *tp_base_call_content_get_name (TpBaseCallContent *self); +TpMediaStreamType tp_base_call_content_get_media_type (TpBaseCallContent *self); +TpCallContentDisposition tp_base_call_content_get_disposition ( + TpBaseCallContent *self); + +GList *tp_base_call_content_get_streams (TpBaseCallContent *self); +void tp_base_call_content_add_stream (TpBaseCallContent *self, + TpBaseCallStream *stream); +void tp_base_call_content_remove_stream (TpBaseCallContent *self, + TpBaseCallStream *stream, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message); + +G_END_DECLS + +#endif /* #ifndef __TP_BASE_CALL_CONTENT_H__*/ diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-call-internal.h telepathy-glib-0.17.5/telepathy-glib/base-call-internal.h --- telepathy-glib-0.17.4/telepathy-glib/base-call-internal.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-call-internal.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,131 @@ +/* + * base-call-internal.h - Header for TpBaseCall* (internals) + * Copyright © 2011 Collabora Ltd. + * @author Olivier Crete + * @author Xavier Claessens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __TP_BASE_CALL_INTERNAL_H__ +#define __TP_BASE_CALL_INTERNAL_H__ + +#include + +G_BEGIN_DECLS + +/* Forward declaration */ +typedef struct _TpBaseCallChannel TpBaseCallChannel; +typedef struct _TpBaseCallContent TpBaseCallContent; +typedef struct _TpBaseCallStream TpBaseCallStream; +typedef struct _TpCallContentMediaDescription TpCallContentMediaDescription; +typedef struct _TpBaseMediaCallChannel TpBaseMediaCallChannel; +typedef struct _TpBaseMediaCallContent TpBaseMediaCallContent; +typedef struct _TpBaseMediaCallStream TpBaseMediaCallStream; +typedef struct _TpCallStreamEndpoint TpCallStreamEndpoint; + +/* Implemented in base-call-content.c */ +void _tp_base_call_content_set_channel (TpBaseCallContent *self, + TpBaseCallChannel *channel); +TpBaseCallChannel *_tp_base_call_content_get_channel (TpBaseCallContent *self); +void _tp_base_call_content_accepted (TpBaseCallContent *self, + TpHandle actor_handle); +void _tp_base_call_content_deinit (TpBaseCallContent *self); +void _tp_base_call_content_remove_stream_internal (TpBaseCallContent *self, + TpBaseCallStream *stream, + const GValueArray *reason_array); + +/* Implemented in base-media-call-content.c */ +gboolean _tp_base_media_call_content_ready_to_accept ( + TpBaseMediaCallContent *self); +void _tp_base_media_call_content_remote_accepted (TpBaseMediaCallContent *self); + +/* Implemented in base-call-stream.c */ +void _tp_base_call_stream_set_content (TpBaseCallStream *self, + TpBaseCallContent *content); +TpBaseCallContent *_tp_base_call_stream_get_content (TpBaseCallStream *self); +TpBaseCallChannel *_tp_base_call_stream_get_channel (TpBaseCallStream *self); +gboolean _tp_base_call_stream_set_sending (TpBaseCallStream *self, + gboolean send, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message, + GError **error); +GHashTable *_tp_base_call_stream_get_remote_members (TpBaseCallStream *self); + +/* Implemented in base-media-call-stream.c */ +void _tp_base_media_call_stream_set_remotely_held (TpBaseMediaCallStream *self, + gboolean remotely_held); + +/* Implemented in base-call-channel.c */ +GHashTable *_tp_base_call_dup_member_identifiers (TpBaseConnection *conn, + GHashTable *source); +GValueArray *_tp_base_call_state_reason_new (TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message); +void _tp_base_call_channel_remove_content_internal (TpBaseCallChannel *self, + TpBaseCallContent *content, + const GValueArray *reason_array); +gboolean _tp_base_call_channel_is_locally_accepted (TpBaseCallChannel *self); +gboolean _tp_base_call_channel_is_connected (TpBaseCallChannel *self); +const gchar *_tp_base_call_channel_get_initial_tones (TpBaseCallChannel *self); + +/* Implemented in base-media-call-channel.c */ +void _tp_base_media_call_channel_endpoint_state_changed ( + TpBaseMediaCallChannel *self); +gboolean _tp_base_media_channel_is_held (TpBaseMediaCallChannel *self); +void _tp_base_media_call_channel_streams_sending_state_changed ( + TpBaseMediaCallChannel *self, + gboolean success); +void _tp_base_media_call_channel_streams_receiving_state_changed ( + TpBaseMediaCallChannel *self, + gboolean success); + +/* Implemented in call-content-media-description.c */ +void _tp_call_content_media_description_offer_async ( + TpCallContentMediaDescription *self, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean _tp_call_content_media_description_offer_finish ( + TpCallContentMediaDescription *self, + GAsyncResult *result, + GHashTable **properties, + GError **error); +GHashTable *_tp_call_content_media_description_dup_properties ( + TpCallContentMediaDescription *self); + +/* Implemented in call-stream-endpoint.c */ +void _tp_call_stream_endpoint_set_stream (TpCallStreamEndpoint *self, + TpBaseMediaCallStream *stream); + +/* Implemented in dtmf.c */ + +typedef enum +{ + DTMF_CHAR_CLASS_MEANINGLESS, + DTMF_CHAR_CLASS_PAUSE, + DTMF_CHAR_CLASS_EVENT, + DTMF_CHAR_CLASS_WAIT_FOR_USER +} DTMFCharClass; + +TpDTMFEvent _tp_dtmf_char_to_event (gchar c); +DTMFCharClass _tp_dtmf_char_classify (gchar c); + +G_END_DECLS + +#endif /* #ifndef __TP_BASE_CALL_INTERNAL_H__*/ diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-call-stream.c telepathy-glib-0.17.5/telepathy-glib/base-call-stream.c --- telepathy-glib-0.17.4/telepathy-glib/base-call-stream.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-call-stream.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,885 @@ +/* + * base-call-stream.c - Source for TpBaseCallStream + * Copyright © 2009–2011 Collabora Ltd. + * @author Sjoerd Simons + * @author Will Thompson + * @author Xavier Claessens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:base-call-stream + * @title: TpBaseCallStream + * @short_description: base class for #TpSvcCallStream implementations + * @see_also: #TpSvcCallStream, #TpBaseCallChannel and #TpBaseCallContent + * + * This base class makes it easier to write #TpSvcCallStream + * implementations by implementing its properties, and some of its methods. + * + * Subclasses should fill in #TpBaseCallStreamClass.get_interfaces, + * #TpBaseCallStreamClass.request_receiving and + * #TpBaseCallStreamClass.set_sending virtual function. + * + * Since: 0.17.5 + */ + +/** + * TpBaseCallStream: + * + * A base class for call stream implementations + * + * Since: 0.17.5 + */ + +/** + * TpBaseCallStreamClass: + * @get_interfaces: extra interfaces provided by this stream (this SHOULD NOT + * include %TP_IFACE_CALL_STREAM itself). Implementation must first chainup on + * parent class implementation then add extra interfaces into the #GPtrArray. + * @request_receiving: optional (see #TpBaseCallStream:can-request-receiving); + * virtual method called when user requested receiving from the given remote + * contact. + * @set_sending: mandatory; virtual method called when user requested to + * start/stop sending to remote contacts. + * + * The class structure for #TpBaseCallStream + * + * Since: 0.17.5 + */ + +/** + * TpBaseCallStreamGetInterfacesFunc: + * @self: a #TpBaseCallStream + * + * Signature of an implementation of #TpBaseCallStreamClass.get_interfaces. + * + * Returns: a #GPtrArray containing static strings. + * Since: 0.17.5 + */ + +/** + * TpBaseCallStreamSetSendingFunc: + * @self: a #TpBaseCallStream + * @sending: whether or not user would like to be sending + * @error: a #GError to fill + * + * Signature of an implementation of #TpBaseCallStreamClass.set_sending. + * + * Returns: %TRUE on success, %FALSE otherwise. + * Since: 0.17.5 + */ + +/** + * TpBaseCallStreamRequestReceivingFunc: + * @self: a #TpBaseCallStream + * @contact: the contact from who user wants to start or stop receiving + * @receive: wheter or not user would like to be receiving + * @error: a #GError to fill + * + * Signature of an implementation of #TpBaseCallStreamClass.request_receiving. + * + * Returns: %TRUE on success, %FALSE otherwise. + * Since: 0.17.5 + */ + +#include "config.h" + +#include "base-call-stream.h" + +#define DEBUG_FLAG TP_DEBUG_CALL + +#include "telepathy-glib/base-call-channel.h" +#include "telepathy-glib/base-call-internal.h" +#include "telepathy-glib/debug-internal.h" +#include "telepathy-glib/dbus.h" +#include "telepathy-glib/gtypes.h" +#include "telepathy-glib/interfaces.h" +#include "telepathy-glib/svc-call.h" +#include "telepathy-glib/svc-generic.h" +#include "telepathy-glib/util.h" + +static void call_stream_iface_init (gpointer g_iface, gpointer iface_data); + +G_DEFINE_ABSTRACT_TYPE_WITH_CODE (TpBaseCallStream, tp_base_call_stream, + G_TYPE_OBJECT, + + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, + tp_dbus_properties_mixin_iface_init) + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CALL_STREAM, call_stream_iface_init) + ) + +enum +{ + PROP_OBJECT_PATH = 1, + PROP_CONNECTION, + + /* Call interface properties */ + PROP_INTERFACES, + PROP_REMOTE_MEMBERS, + PROP_REMOTE_MEMBER_IDENTIFIERS, + PROP_LOCAL_SENDING_STATE, + PROP_CAN_REQUEST_RECEIVING, +}; + +struct _TpBaseCallStreamPrivate +{ + gchar *object_path; + TpBaseConnection *conn; + + /* TpHandle -> TpSendingState */ + GHashTable *remote_members; + + TpSendingState local_sending_state; + + /* Borrowed */ + TpBaseCallChannel *channel; + TpBaseCallContent *content; +}; + +static void +tp_base_call_stream_init (TpBaseCallStream *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + TP_TYPE_BASE_CALL_STREAM, TpBaseCallStreamPrivate); + + self->priv->remote_members = g_hash_table_new (g_direct_hash, g_direct_equal); +} + +static void +tp_base_call_stream_constructed (GObject *obj) +{ + TpBaseCallStream *self = TP_BASE_CALL_STREAM (obj); + TpDBusDaemon *bus = tp_base_connection_get_dbus_daemon ( + (TpBaseConnection *) self->priv->conn); + + if (G_OBJECT_CLASS (tp_base_call_stream_parent_class)->constructed != NULL) + G_OBJECT_CLASS (tp_base_call_stream_parent_class)->constructed (obj); + + /* register object on the bus */ + DEBUG ("Registering %s", self->priv->object_path); + tp_dbus_daemon_register_object (bus, self->priv->object_path, obj); +} + +static GPtrArray * +tp_base_call_stream_get_interfaces (TpBaseCallStream *self) +{ + return g_ptr_array_new (); +} + +static void +tp_base_call_stream_dispose (GObject *object) +{ + TpBaseCallStream *self = TP_BASE_CALL_STREAM (object); + TpDBusDaemon *bus = tp_base_connection_get_dbus_daemon ( + (TpBaseConnection *) self->priv->conn); + + tp_dbus_daemon_unregister_object (bus, G_OBJECT (self)); + + tp_clear_object (&self->priv->conn); + + if (G_OBJECT_CLASS (tp_base_call_stream_parent_class)->dispose != NULL) + G_OBJECT_CLASS (tp_base_call_stream_parent_class)->dispose (object); +} + +static void +tp_base_call_stream_finalize (GObject *object) +{ + TpBaseCallStream *self = TP_BASE_CALL_STREAM (object); + + /* free any data held directly by the object here */ + g_free (self->priv->object_path); + g_hash_table_unref (self->priv->remote_members); + + if (G_OBJECT_CLASS (tp_base_call_stream_parent_class)->finalize != NULL) + G_OBJECT_CLASS (tp_base_call_stream_parent_class)->finalize (object); +} + +static void +tp_base_call_stream_get_property ( + GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + TpBaseCallStream *self = TP_BASE_CALL_STREAM (object); + TpBaseCallStreamClass *klass = TP_BASE_CALL_STREAM_GET_CLASS (self); + + switch (property_id) + { + case PROP_CONNECTION: + g_value_set_object (value, self->priv->conn); + break; + case PROP_OBJECT_PATH: + g_value_set_string (value, self->priv->object_path); + break; + case PROP_REMOTE_MEMBERS: + g_value_set_boxed (value, self->priv->remote_members); + break; + case PROP_REMOTE_MEMBER_IDENTIFIERS: + { + GHashTable *identifiers; + + identifiers = _tp_base_call_dup_member_identifiers (self->priv->conn, + self->priv->remote_members); + g_value_set_boxed (value, identifiers); + + g_hash_table_unref (identifiers); + break; + } + case PROP_LOCAL_SENDING_STATE: + g_value_set_uint (value, self->priv->local_sending_state); + break; + case PROP_CAN_REQUEST_RECEIVING: + { + g_value_set_boolean (value, klass->request_receiving != NULL); + break; + } + case PROP_INTERFACES: + { + GPtrArray *interfaces = klass->get_interfaces (self); + + g_ptr_array_add (interfaces, NULL); + g_value_set_boxed (value, interfaces->pdata); + g_ptr_array_unref (interfaces); + break; + } + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_base_call_stream_set_property ( + GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + TpBaseCallStream *self = TP_BASE_CALL_STREAM (object); + + switch (property_id) + { + case PROP_CONNECTION: + self->priv->conn = g_value_dup_object (value); + g_assert (self->priv->conn != NULL); + break; + case PROP_OBJECT_PATH: + g_free (self->priv->object_path); + self->priv->object_path = g_value_dup_string (value); + break; + case PROP_LOCAL_SENDING_STATE: + self->priv->local_sending_state = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_base_call_stream_class_init (TpBaseCallStreamClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *param_spec; + static TpDBusPropertiesMixinPropImpl stream_props[] = { + { "Interfaces", "interfaces", NULL }, + { "RemoteMembers", "remote-members", NULL }, + { "RemoteMemberIdentifiers", "remote-member-identifiers", NULL }, + { "LocalSendingState", "local-sending-state", NULL }, + { "CanRequestReceiving", "can-request-receiving", NULL }, + { NULL } + }; + static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { + { TP_IFACE_CALL_STREAM, + tp_dbus_properties_mixin_getter_gobject_properties, + NULL, + stream_props, + }, + { NULL } + }; + + g_type_class_add_private (klass, sizeof (TpBaseCallStreamPrivate)); + + object_class->constructed = tp_base_call_stream_constructed; + object_class->dispose = tp_base_call_stream_dispose; + object_class->finalize = tp_base_call_stream_finalize; + object_class->set_property = tp_base_call_stream_set_property; + object_class->get_property = tp_base_call_stream_get_property; + + klass->get_interfaces = tp_base_call_stream_get_interfaces; + + /** + * TpBaseCallStream:connection: + * + * #TpBaseConnection object that owns this call stream. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_object ("connection", "TpBaseConnection object", + "Tp connection object that owns this call stream", + TP_TYPE_BASE_CONNECTION, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); + + /** + * TpBaseCallStream:object-path: + * + * The D-Bus object path used for this object on the bus. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_string ("object-path", "D-Bus object path", + "The D-Bus object path used for this object on the bus.", + NULL, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_OBJECT_PATH, param_spec); + + /** + * TpBaseCallStream:interfaces: + * + * Additional interfaces implemented by this stream. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("interfaces", "Interfaces", + "Stream interfaces", + G_TYPE_STRV, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_INTERFACES, + param_spec); + + /** + * TpBaseCallStream:remote-members: + * + * #GHashTable mapping contact #TpHandle to their #TpSendingState. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("remote-members", "Remote members", + "Remote member map", + TP_HASH_TYPE_CONTACT_SENDING_STATE_MAP, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_REMOTE_MEMBERS, + param_spec); + + /** + * TpBaseCallStream:remote-member-identifiers: + * + * #GHashTable mapping contact #TpHandle to their identifies. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("remote-member-identifiers", + "RemoteMemberIdentifiers", "The remote members identifiers", + TP_HASH_TYPE_HANDLE_IDENTIFIER_MAP, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_REMOTE_MEMBER_IDENTIFIERS, + param_spec); + + /** + * TpBaseCallStream:local-sending-state: + * + * The local #TpSendingState. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("local-sending-state", "LocalSendingState", + "Local sending state", + TP_SENDING_STATE_NONE, NUM_TP_SENDING_STATES, TP_SENDING_STATE_NONE, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_LOCAL_SENDING_STATE, + param_spec); + + /** + * TpBaseCallStream:can-request-receiving: + * + * Whether or not user can request receiving from remote contact using the + * RequestSending DBus method call. The value is determined by whether or not + * #TpBaseCallStreamClass.request_receiving is implemented. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("can-request-receiving", + "CanRequestReceiving", + "If true, the user can request that a remote contact starts sending on" + "this stream.", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CAN_REQUEST_RECEIVING, + param_spec); + + klass->dbus_props_class.interfaces = prop_interfaces; + tp_dbus_properties_mixin_class_init (object_class, + G_STRUCT_OFFSET (TpBaseCallStreamClass, dbus_props_class)); +} + +/** + * tp_base_call_stream_get_connection: + * @self: a #TpBaseCallStream + * + * + * + * Returns: the value of #TpBaseCallStream:connection + * Since: 0.17.5 + */ +TpBaseConnection * +tp_base_call_stream_get_connection (TpBaseCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_STREAM (self), NULL); + + return self->priv->conn; +} + +/** + * tp_base_call_stream_get_object_path: + * @self: a #TpBaseCallStream + * + * + * + * Returns: the value of #TpBaseCallStream:object-path + * Since: 0.17.5 + */ +const gchar * +tp_base_call_stream_get_object_path (TpBaseCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_STREAM (self), NULL); + + return self->priv->object_path; +} + +/** + * tp_base_call_stream_get_local_sending_state: + * @self: a #TpBaseCallStream + * + * + * + * Returns: the value of #TpBaseCallStream:local-sending-state + * Since: 0.17.5 + */ +TpSendingState +tp_base_call_stream_get_local_sending_state (TpBaseCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_STREAM (self), TP_SENDING_STATE_NONE); + + return self->priv->local_sending_state; +} + +/** + * tp_base_call_stream_update_local_sending_state: + * @self: a #TpBaseCallStream + * @new_state: the new local #TpSendingState + * @actor_handle: the contact responsible for the change, or 0 if no contact was + * responsible. + * @reason: the #TpCallStateChangeReason of the change + * @dbus_reason: a specific reason for the change, which may be a D-Bus error in + * the Telepathy namespace, a D-Bus error in any other namespace (for + * implementation-specific errors), or the empty string to indicate that the + * state change was not an error. + * @message: an optional debug message, to expediate debugging the potentially + * many processes involved in a call. + * + * Update the local sending state, emitting LocalSendingStateChanged + * DBus signal if needed. + * + * Returns: %TRUE if state was updated, %FALSE if it was already set to + * @new_state. + * Since: 0.17.5 + */ +gboolean +tp_base_call_stream_update_local_sending_state (TpBaseCallStream *self, + TpSendingState new_state, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message) +{ + GValueArray *reason_array; + + g_return_val_if_fail (TP_IS_BASE_CALL_STREAM (self), FALSE); + + if (new_state == TP_SENDING_STATE_SENDING && + self->priv->channel != NULL && + !tp_base_call_channel_is_accepted (self->priv->channel) && + !tp_base_channel_is_requested (TP_BASE_CHANNEL (self->priv->channel))) + new_state = TP_SENDING_STATE_PENDING_SEND; + + if (self->priv->local_sending_state == new_state) + return FALSE; + + DEBUG ("Updating local sending state: %d => %d for stream %s", + self->priv->local_sending_state, new_state, self->priv->object_path); + + self->priv->local_sending_state = new_state; + g_object_notify (G_OBJECT (self), "local-sending-state"); + + reason_array = _tp_base_call_state_reason_new (actor_handle, reason, + dbus_reason, message); + + tp_svc_call_stream_emit_local_sending_state_changed ( + TP_SVC_CALL_STREAM (self), new_state, reason_array); + + g_value_array_free (reason_array); + + return TRUE; +} + +/** + * tp_base_call_stream_get_remote_sending_state: + * @self: a #TpBaseCallStream + * @contact: the #TpHandle of a member contact + * + * + * + * Returns: the #TpSendingState of @contact. + * Since: 0.17.5 + */ +TpSendingState +tp_base_call_stream_get_remote_sending_state (TpBaseCallStream *self, + TpHandle contact) +{ + gpointer state_p; + + g_return_val_if_fail (TP_IS_BASE_CALL_STREAM (self), TP_SENDING_STATE_NONE); + + state_p = g_hash_table_lookup (self->priv->remote_members, + GUINT_TO_POINTER (contact)); + + return GPOINTER_TO_UINT (state_p); +} + +/** + * tp_base_call_stream_update_remote_sending_state: + * @self: a #TpBaseCallStream + * @contact: the #TpHandle to update or add to members + * @new_state: the new sending state of @contact + * @actor_handle: the contact responsible for the change, or 0 if no contact was + * responsible. + * @reason: the #TpCallStateChangeReason of the change + * @dbus_reason: a specific reason for the change, which may be a D-Bus error in + * the Telepathy namespace, a D-Bus error in any other namespace (for + * implementation-specific errors), or the empty string to indicate that the + * state change was not an error. + * @message: an optional debug message, to expediate debugging the potentially + * many processes involved in a call. + * + * If @contact is not member, add it. Otherwise update its sending state. Emits + * RemoteMemberChanged DBus signal if needed. + * + * Returns: %TRUE if state was updated, %FALSE if it was already set to + * @new_state. + * Since: 0.17.5 + */ +gboolean +tp_base_call_stream_update_remote_sending_state (TpBaseCallStream *self, + TpHandle contact, + TpSendingState new_state, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message) +{ + gpointer state_p; + gboolean exists; + GHashTable *updates; + GHashTable *identifiers; + GArray *removed_empty; + GValueArray *reason_array; + + g_return_val_if_fail (TP_IS_BASE_CALL_STREAM (self), FALSE); + + if (new_state == TP_SENDING_STATE_SENDING && + self->priv->channel != NULL && + tp_base_channel_is_requested (TP_BASE_CHANNEL (self->priv->channel)) && + !tp_base_call_channel_is_accepted (self->priv->channel)) + new_state = TP_SENDING_STATE_PENDING_SEND; + + exists = g_hash_table_lookup_extended (self->priv->remote_members, + GUINT_TO_POINTER (contact), NULL, &state_p); + + if (exists && GPOINTER_TO_UINT (state_p) == new_state) + return FALSE; + + DEBUG ("Updating remote member %d state: %d => %d for stream %s", + contact, GPOINTER_TO_UINT (state_p), new_state, self->priv->object_path); + + g_hash_table_insert (self->priv->remote_members, + GUINT_TO_POINTER (contact), + GUINT_TO_POINTER (new_state)); + g_object_notify (G_OBJECT (self), "remote-members"); + + updates = g_hash_table_new (g_direct_hash, g_direct_equal); + g_hash_table_insert (updates, + GUINT_TO_POINTER (contact), + GUINT_TO_POINTER (new_state)); + identifiers = _tp_base_call_dup_member_identifiers (self->priv->conn, updates); + removed_empty = g_array_new (FALSE, FALSE, sizeof (TpHandle)); + reason_array = _tp_base_call_state_reason_new (actor_handle, reason, + dbus_reason, message); + + tp_svc_call_stream_emit_remote_members_changed (self, updates, identifiers, + removed_empty, reason_array); + + g_array_unref (removed_empty); + g_value_array_free (reason_array); + g_hash_table_unref (updates); + g_hash_table_unref (identifiers); + + return TRUE; +} + +/** + * tp_base_call_stream_remove_member: + * @self: a #TpBaseCallStream + * @contact: the #TpHandle to remove from members + * @actor_handle: the contact responsible for the change, or 0 if no contact was + * responsible. + * @reason: the #TpCallStateChangeReason of the change + * @dbus_reason: a specific reason for the change, which may be a D-Bus error in + * the Telepathy namespace, a D-Bus error in any other namespace (for + * implementation-specific errors), or the empty string to indicate that the + * state change was not an error. + * @message: an optional debug message, to expediate debugging the potentially + * many processes involved in a call. + * + * Remove @contact from stream members, emitting RemoteMembersChanged DBus + * signal if needed. Do nothing if @contact is not member. + * + * Returns: %TRUE if @contact was removed, %FALSE if it was not member. + * Since: 0.17.5 + */ +gboolean +tp_base_call_stream_remove_member (TpBaseCallStream *self, + TpHandle contact, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message) +{ + GHashTable *empty_table; + GArray *removed_array; + GValueArray *reason_array; + + g_return_val_if_fail (TP_IS_BASE_CALL_STREAM (self), FALSE); + + if (!g_hash_table_remove (self->priv->remote_members, + GUINT_TO_POINTER (contact))) + return FALSE; + g_object_notify (G_OBJECT (self), "remote-members"); + + empty_table = g_hash_table_new (g_direct_hash, g_direct_equal); + removed_array = g_array_sized_new (FALSE, TRUE, sizeof (TpHandle), 1); + g_array_append_val (removed_array, contact); + reason_array = _tp_base_call_state_reason_new (actor_handle, reason, + dbus_reason, message); + + tp_svc_call_stream_emit_remote_members_changed (self, empty_table, + empty_table, removed_array, reason_array); + + g_value_array_free (reason_array); + g_hash_table_unref (empty_table); + g_array_unref (removed_array); + + return TRUE; +} + +static void +tp_base_call_stream_set_sending_dbus (TpSvcCallStream *iface, + gboolean sending, + DBusGMethodInvocation *context) +{ + TpBaseCallStream *self = TP_BASE_CALL_STREAM (iface); + GError *error = NULL; + + if (_tp_base_call_stream_set_sending (TP_BASE_CALL_STREAM (iface), sending, + tp_base_channel_get_self_handle ((TpBaseChannel *) self->priv->channel), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + "User changed the sending state", &error)) + { + tp_svc_call_stream_return_from_set_sending (context); + } + else + { + dbus_g_method_return_error (context, error); + } + + g_clear_error (&error); +} + +static void +tp_base_call_stream_request_receiving (TpSvcCallStream *iface, + TpHandle contact, + gboolean receiving, + DBusGMethodInvocation *context) +{ + TpBaseCallStream *self = TP_BASE_CALL_STREAM (iface); + TpBaseCallStreamClass *klass = TP_BASE_CALL_STREAM_GET_CLASS (self); + GError *error = NULL; + TpSendingState remote_sending_state; + gboolean can_request_receiving; + + g_object_get (self, "can-request-receiving", &can_request_receiving, NULL); + if (!can_request_receiving) + { + g_set_error (&error, TP_ERRORS, TP_ERROR_NOT_CAPABLE, + "The contact does not support requesting to receive"); + goto error; + } + + if (!g_hash_table_lookup_extended (self->priv->remote_members, + GUINT_TO_POINTER (contact), NULL, (gpointer *) &remote_sending_state)) + { + g_set_error (&error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Contact %u is not member of this stream", contact); + goto error; + } + + if (klass->request_receiving == NULL) + { + g_set_error_literal (&error, TP_ERRORS, TP_ERROR_NOT_IMPLEMENTED, + "This CM does not implement request_receiving"); + goto error; + } + + + /* Determine if there is a state change for our receiving side + * aka remote sending + */ + switch (remote_sending_state) + { + case TP_SENDING_STATE_NONE: + case TP_SENDING_STATE_PENDING_STOP_SENDING: + if (!receiving) + goto out; + break; + case TP_SENDING_STATE_SENDING: + case TP_SENDING_STATE_PENDING_SEND: + if (receiving) + goto out; + break; + default: + g_assert_not_reached (); + } + + if (!klass->request_receiving (self, contact, receiving, &error)) + goto error; + +out: + tp_svc_call_stream_return_from_request_receiving (context); + return; + +error: + dbus_g_method_return_error (context, error); + g_clear_error (&error); +} + +static void +call_stream_iface_init (gpointer g_iface, gpointer iface_data) +{ + TpSvcCallStreamClass *klass = + (TpSvcCallStreamClass *) g_iface; + +#define IMPLEMENT(x, suffix) tp_svc_call_stream_implement_##x (\ + klass, tp_base_call_stream_##x##suffix) + IMPLEMENT(set_sending, _dbus); + IMPLEMENT(request_receiving,); +#undef IMPLEMENT +} + +/* These functions are used only internally */ + +void +_tp_base_call_stream_set_content (TpBaseCallStream *self, + TpBaseCallContent *content) +{ + g_return_if_fail (TP_IS_BASE_CALL_STREAM (self)); + g_return_if_fail (TP_IS_BASE_CALL_CONTENT (content)); + g_return_if_fail (self->priv->content == NULL); + + self->priv->content = content; + self->priv->channel = _tp_base_call_content_get_channel (content); +} + +TpBaseCallContent * +_tp_base_call_stream_get_content (TpBaseCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_STREAM (self), NULL); + g_return_val_if_fail (self->priv->content != NULL, NULL); + + return self->priv->content; +} + +TpBaseCallChannel * +_tp_base_call_stream_get_channel (TpBaseCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_STREAM (self), NULL); + + return self->priv->channel; +} + +gboolean +_tp_base_call_stream_set_sending (TpBaseCallStream *self, + gboolean send, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message, + GError **error) +{ + TpBaseCallStreamClass *klass = TP_BASE_CALL_STREAM_GET_CLASS (self); + + /* Determine if there is a state change for our sending side */ + switch (self->priv->local_sending_state) + { + case TP_SENDING_STATE_NONE: + case TP_SENDING_STATE_PENDING_SEND: + if (!send) + goto out; + break; + case TP_SENDING_STATE_SENDING: + case TP_SENDING_STATE_PENDING_STOP_SENDING: + if (send) + goto out; + break; + default: + g_assert_not_reached (); + } + + if (klass->set_sending == NULL) + { + g_set_error_literal (error, TP_ERRORS, TP_ERROR_NOT_IMPLEMENTED, + "This CM does not implement SetSending"); + return FALSE; + } + + if (!klass->set_sending (self, send, error)) + return FALSE; + +out: + tp_base_call_stream_update_local_sending_state (self, + send ? TP_SENDING_STATE_SENDING : TP_SENDING_STATE_NONE, + actor_handle, reason, dbus_reason, message); + + return TRUE; +} + +GHashTable * +_tp_base_call_stream_get_remote_members (TpBaseCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_CALL_STREAM (self), NULL); + + return self->priv->remote_members; +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-call-stream.h telepathy-glib-0.17.5/telepathy-glib/base-call-stream.h --- telepathy-glib-0.17.4/telepathy-glib/base-call-stream.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-call-stream.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,125 @@ +/* + * base-call-stream.h - Header for TpBaseCallStream + * Copyright © 2009–2011 Collabora Ltd. + * @author Sjoerd Simons + * @author Will Thompson + * @author Xavier Claessens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef TP_BASE_CALL_STREAM_H +#define TP_BASE_CALL_STREAM_H + +#include + +#include +#include + +G_BEGIN_DECLS + +typedef struct _TpBaseCallChannel TpBaseCallChannel; + +typedef struct _TpBaseCallStream TpBaseCallStream; +typedef struct _TpBaseCallStreamPrivate TpBaseCallStreamPrivate; +typedef struct _TpBaseCallStreamClass TpBaseCallStreamClass; + +typedef GPtrArray * (*TpBaseCallStreamGetInterfacesFunc) ( + TpBaseCallStream *self); +typedef gboolean (*TpBaseCallStreamSetSendingFunc) (TpBaseCallStream *self, + gboolean sending, + GError **error); +typedef gboolean (*TpBaseCallStreamRequestReceivingFunc) (TpBaseCallStream *self, + TpHandle contact, + gboolean receive, + GError **error); + +struct _TpBaseCallStreamClass { + /**/ + GObjectClass parent_class; + + TpDBusPropertiesMixinClass dbus_props_class; + + /*< public >*/ + TpBaseCallStreamRequestReceivingFunc request_receiving; + TpBaseCallStreamSetSendingFunc set_sending; + TpBaseCallStreamGetInterfacesFunc get_interfaces; + + /**/ + gpointer future[4]; +}; + +struct _TpBaseCallStream { + /**/ + GObject parent; + + TpBaseCallStreamPrivate *priv; +}; + +GType tp_base_call_stream_get_type (void); + +/* TYPE MACROS */ +#define TP_TYPE_BASE_CALL_STREAM \ + (tp_base_call_stream_get_type ()) +#define TP_BASE_CALL_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TYPE_BASE_CALL_STREAM, TpBaseCallStream)) +#define TP_BASE_CALL_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), TP_TYPE_BASE_CALL_STREAM, \ + TpBaseCallStreamClass)) +#define TP_IS_BASE_CALL_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TYPE_BASE_CALL_STREAM)) +#define TP_IS_BASE_CALL_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TYPE_BASE_CALL_STREAM)) +#define TP_BASE_CALL_STREAM_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TYPE_BASE_CALL_STREAM, \ + TpBaseCallStreamClass)) + +TpBaseConnection *tp_base_call_stream_get_connection ( + TpBaseCallStream *self); +const gchar *tp_base_call_stream_get_object_path ( + TpBaseCallStream *self); + +TpSendingState tp_base_call_stream_get_local_sending_state ( + TpBaseCallStream *self); +gboolean tp_base_call_stream_update_local_sending_state ( + TpBaseCallStream *self, + TpSendingState new_state, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message); + +TpSendingState tp_base_call_stream_get_remote_sending_state ( + TpBaseCallStream *self, + TpHandle contact); +gboolean tp_base_call_stream_update_remote_sending_state ( + TpBaseCallStream *self, + TpHandle contact, + TpSendingState new_state, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message); +gboolean tp_base_call_stream_remove_member ( + TpBaseCallStream *self, + TpHandle contact, + TpHandle actor_handle, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message); + +G_END_DECLS + +#endif diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-channel.c telepathy-glib-0.17.5/telepathy-glib/base-channel.c --- telepathy-glib-0.17.4/telepathy-glib/base-channel.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-channel.c 2012-02-20 17:31:02.000000000 +0000 @@ -29,9 +29,10 @@ * implementations by implementing some of its properties, and defining other * relevant properties. * - * Subclasses should fill in #TpBaseChannelClass.channel_type, - * #TpBaseChannelClass.target_handle_type and #TpBaseChannelClass.interfaces, - * and implement the #TpBaseChannelClass.close virtual function. + * Subclasses should fill in #TpBaseChannelClass.channel_type and + * #TpBaseChannelClass.target_handle_type; and implement the + * #TpBaseChannelClass.get_interfaces and + * #TpBaseChannelClass.close virtual functions. * * If the channel type and/or interfaces being implemented define immutable * D-Bus properties besides those on the Channel interface, the subclass should @@ -60,8 +61,7 @@ * (e.g. #TP_IFACE_CHANNEL_TYPE_TEXT) * @target_handle_type: The type of handle that is the target of channels of * this type - * @interfaces: Extra interfaces provided by this channel (this SHOULD NOT - * include the channel type and interface itself) + * @interfaces: Deprecated. Replaced by @get_interfaces. * @close: A virtual function called to close the channel, which will be called * by tp_base_channel_close() and by the implementation of the Closed D-Bus * method. @@ -75,6 +75,10 @@ * #TpExportableChannel:object-path property is not set. The default * implementation simply generates a unique path based on the object's address * in memory. The returned string will be freed automatically. + * @get_interfaces: Extra interfaces provided by this channel (this SHOULD NOT + * include the channel type and interface itself). Implementation must first + * chainup on parent class implementation and then add extra interfaces into + * the #GPtrArray. Replaces @interfaces. * * The class structure for #TpBaseChannel * @@ -199,7 +203,38 @@ * Since: 0.11.14 */ +/** + * TpBaseChannelGetInterfacesFunc: + * @chan: a channel + * + * Signature of an implementation of #TpBaseChannelClass.get_interfaces virtual + * function. + * + * Implementation must first chainup on parent class implementation and then + * add extra interfaces into the #GPtrArray. + * + * |[ + * static GPtrArray * + * my_channel_get_interfaces (TpBaseChannel *self) + * { + * GPtrArray *interfaces; + * + * interfaces = TP_BASE_CHANNEL_CLASS (my_channel_parent_class)->get_interfaces (self); + * + * g_ptr_array_add (interfaces, TP_IFACE_BADGERS); + * + * return interfaces; + * } + * ]| + * + * Returns: (transfer container): a #GPtrArray of static strings for D-Bus + * interfaces implemented by this client. + * + * Since: 0.17.5 + */ + #include "config.h" + #include "base-channel.h" #include @@ -207,6 +242,7 @@ #include #include #include +#include "telepathy-glib/group-mixin.h" #include #include #include @@ -423,6 +459,32 @@ } /** + * tp_base_channel_get_self_handle: + * @chan: a channel + * + * If @chan has a #TpGroupMixin, returns the value of group's self handle. + * Otherwise return the value of #TpBaseConnection:self-handle. + * + * Returns: the self handle of @chan + * + * Since: 0.17.5 + */ +TpHandle +tp_base_channel_get_self_handle (TpBaseChannel *chan) +{ + if (TP_HAS_GROUP_MIXIN (chan)) + { + guint ret = 0; + + tp_group_mixin_get_self_handle (G_OBJECT (chan), &ret, NULL); + if (ret != 0) + return ret; + } + + return tp_base_connection_get_self_handle (chan->priv->conn); +} + +/** * tp_base_channel_get_target_handle: * @chan: a channel * @@ -559,6 +621,23 @@ return escaped; } +static GPtrArray * +tp_base_channel_get_basic_interfaces (TpBaseChannel *self) +{ + GPtrArray *interfaces = g_ptr_array_new (); + const char **ptr; + + /* copy the klass->interfaces property for backwards compatibility */ + for (ptr = TP_BASE_CHANNEL_GET_CLASS (self)->interfaces; + ptr != NULL && *ptr != NULL; + ptr++) + { + g_ptr_array_add (interfaces, (char *) *ptr); + } + + return interfaces; +} + static void tp_base_channel_init (TpBaseChannel *self) { @@ -671,8 +750,14 @@ g_value_set_object (value, chan->priv->conn); break; case PROP_INTERFACES: - g_value_set_boxed (value, klass->interfaces); - break; + { + GPtrArray *interfaces = klass->get_interfaces (chan); + + g_ptr_array_add (interfaces, NULL); + g_value_set_boxed (value, interfaces->pdata); + g_ptr_array_unref (interfaces); + break; + } case PROP_CHANNEL_DESTROYED: g_value_set_boolean (value, chan->priv->destroyed); break; @@ -878,6 +963,8 @@ tp_base_channel_fill_basic_immutable_properties; tp_base_channel_class->get_object_path_suffix = tp_base_channel_get_basic_object_path_suffix; + tp_base_channel_class->get_interfaces = + tp_base_channel_get_basic_interfaces; } static void @@ -906,8 +993,12 @@ { TpBaseChannel *chan = TP_BASE_CHANNEL (iface); TpBaseChannelClass *klass = TP_BASE_CHANNEL_GET_CLASS (chan); + GPtrArray *interfaces = klass->get_interfaces (chan); - tp_svc_channel_return_from_get_interfaces (context, klass->interfaces); + g_ptr_array_add (interfaces, NULL); + tp_svc_channel_return_from_get_interfaces (context, + (const char **) interfaces->pdata); + g_ptr_array_unref (interfaces); } static void diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-channel.h telepathy-glib-0.17.5/telepathy-glib/base-channel.h --- telepathy-glib-0.17.4/telepathy-glib/base-channel.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-channel.h 2012-02-20 16:56:41.000000000 +0000 @@ -39,6 +39,7 @@ typedef void (*TpBaseChannelFillPropertiesFunc) (TpBaseChannel *chan, GHashTable *properties); typedef gchar *(*TpBaseChannelGetPathFunc) (TpBaseChannel *chan); +typedef GPtrArray *(*TpBaseChannelGetInterfacesFunc) (TpBaseChannel *chan); struct _TpBaseChannelClass { @@ -55,9 +56,10 @@ TpBaseChannelCloseFunc close; TpBaseChannelFillPropertiesFunc fill_immutable_properties; TpBaseChannelGetPathFunc get_object_path_suffix; + TpBaseChannelGetInterfacesFunc get_interfaces; /*< private >*/ - GCallback _reserved[10]; + GCallback _reserved[9]; }; struct _TpBaseChannel @@ -75,6 +77,7 @@ const gchar *tp_base_channel_get_object_path (TpBaseChannel *chan); TpBaseConnection *tp_base_channel_get_connection (TpBaseChannel *chan); +TpHandle tp_base_channel_get_self_handle (TpBaseChannel *chan); TpHandle tp_base_channel_get_target_handle (TpBaseChannel *chan); TpHandle tp_base_channel_get_initiator (TpBaseChannel *chan); gboolean tp_base_channel_is_requested (TpBaseChannel *chan); diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-client.c telepathy-glib-0.17.5/telepathy-glib/base-client.c --- telepathy-glib-0.17.4/telepathy-glib/base-client.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-client.c 2012-02-20 16:55:59.000000000 +0000 @@ -173,6 +173,8 @@ * Since: 0.15.3 */ +#include "config.h" + #include "telepathy-glib/base-client.h" #include "telepathy-glib/base-client-internal.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-connection.c telepathy-glib-0.17.5/telepathy-glib/base-connection.c --- telepathy-glib-0.17.4/telepathy-glib/base-connection.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-connection.c 2012-02-20 16:55:59.000000000 +0000 @@ -228,6 +228,7 @@ * must be void). For use in D-Bus method implementations. */ +#include "config.h" #include #include @@ -1533,8 +1534,7 @@ "Telepathy identifier for protocol", "Identifier string used when the protocol name is required.", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_PROTOCOL, param_spec); /** @@ -1549,8 +1549,7 @@ "Connection.SelfHandle", "The handle of type %TP_HANDLE_TYPE_CONTACT representing the local user.", 0, G_MAXUINT, 0, - G_PARAM_READWRITE | - G_PARAM_STATIC_BLURB); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_SELF_HANDLE, param_spec); /** diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-connection-manager.c telepathy-glib-0.17.5/telepathy-glib/base-connection-manager.c --- telepathy-glib-0.17.4/telepathy-glib/base-connection-manager.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-connection-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -31,6 +31,8 @@ * only need to override the members of the class data structure. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-contact-list.c telepathy-glib-0.17.5/telepathy-glib/base-contact-list.c --- telepathy-glib-0.17.4/telepathy-glib/base-contact-list.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-contact-list.c 2012-02-20 16:55:59.000000000 +0000 @@ -238,6 +238,8 @@ * Since: 0.13.0 */ +#include "config.h" + #include #include @@ -4439,6 +4441,7 @@ } g_simple_async_result_complete (rename_result); + g_object_unref (rename_result); } static void @@ -4455,12 +4458,15 @@ g_simple_async_result_set_from_error (rename_result, error); g_clear_error (&error); g_simple_async_result_complete (rename_result); - return; + goto out; } tp_base_contact_list_remove_group_async (self, g_simple_async_result_get_op_res_gpointer (rename_result), - emulate_rename_group_remove_cb, rename_result); + emulate_rename_group_remove_cb, g_object_ref (rename_result)); + +out: + g_object_unref (rename_result); } static void @@ -4491,7 +4497,7 @@ old_members = tp_base_contact_list_dup_group_members (self, old_name); tp_base_contact_list_add_to_group_async (self, new_name, old_members, - emulate_rename_group_add_cb, result); + emulate_rename_group_add_cb, g_object_ref (result)); g_object_unref (result); tp_handle_set_destroy (old_members); } diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-media-call-channel.c telepathy-glib-0.17.5/telepathy-glib/base-media-call-channel.c --- telepathy-glib-0.17.4/telepathy-glib/base-media-call-channel.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-media-call-channel.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,575 @@ +/* + * base-media-call-channel.c - Source for TpBaseMediaCallChannel + * Copyright © 2011 Collabora Ltd. + * @author Olivier Crete + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:base-media-call-channel + * @title: TpBaseMediaCallChannel + * @short_description: base class for #TpSvcChannelTypeCall RTP media implementations + * @see_also: #TpBaseCallChannel, #TpBaseMediaCallContent, #TpBaseMediaCallStream + * + * This is a base class for connection managers that use standard RTP media. + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallChannel: + * + * A base class for call channel implementations with standard RTP + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallChannelClass: + * @hold_state_changed: optional; virtual method called when the hold state + * changed + * @accept: optional; virtual method called when the call is locally accepted + * and contents are ready. This replaces #TpBaseCallChannelClass.accept. + * + * The class structure for #TpBaseMediaCallChannel + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallChannelVoidFunc: + * @self: a #TpBaseMediaCallChannel + * + * Signature of an implementation of #TpBaseMediaCallChannelClass.accept. + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallChannelHoldStateChangedFunc: + * @self: a #TpBaseMediaCallChannel + * @hold_state: the new #TpLocalHoldState + * @hold_state_reason: the #TpLocalHoldStateReason for this change + * + * Signature of an implementation of + * #TpBaseMediaCallChannelClass.hold_state_changed. + * + * Since: 0.17.5 + */ + +#include "config.h" + +#include "base-media-call-channel.h" + +#define DEBUG_FLAG TP_DEBUG_CALL + +#include "telepathy-glib/base-call-content.h" +#include "telepathy-glib/base-call-internal.h" +#include "telepathy-glib/base-media-call-stream.h" +#include "telepathy-glib/base-connection.h" +#include "telepathy-glib/channel-iface.h" +#include "telepathy-glib/debug-internal.h" +#include "telepathy-glib/dbus.h" +#include "telepathy-glib/enums.h" +#include "telepathy-glib/gtypes.h" +#include "telepathy-glib/interfaces.h" +#include "telepathy-glib/svc-call.h" +#include "telepathy-glib/svc-channel.h" +#include "telepathy-glib/svc-properties-interface.h" +#include "telepathy-glib/util.h" + +static void hold_iface_init (gpointer g_iface, gpointer iface_data); + +G_DEFINE_ABSTRACT_TYPE_WITH_CODE (TpBaseMediaCallChannel, + tp_base_media_call_channel, TP_TYPE_BASE_CALL_CHANNEL, + + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_HOLD, + hold_iface_init) +) + +/* private structure */ +struct _TpBaseMediaCallChannelPrivate +{ + TpLocalHoldState hold_state; + TpLocalHoldStateReason hold_state_reason; + + gboolean accepted; +}; + +/* properties */ +enum +{ + LAST_PROPERTY +}; + +static GPtrArray * +tp_base_media_call_channel_get_interfaces (TpBaseChannel *base) +{ + GPtrArray *interfaces; + + interfaces = TP_BASE_CHANNEL_CLASS ( + tp_base_media_call_channel_parent_class)->get_interfaces (base); + + g_ptr_array_add (interfaces, TP_IFACE_CHANNEL_INTERFACE_HOLD); + g_ptr_array_add (interfaces, TP_IFACE_CHANNEL_INTERFACE_DTMF); + + return interfaces; +} + +static void +call_members_changed_cb (TpBaseMediaCallChannel *self, + GHashTable *updates, + GHashTable *identifiers, + GArray *removed, + GValueArray *reason, + gpointer user_data) +{ + TpBaseCallChannel *bcc = TP_BASE_CALL_CHANNEL (self); + GList *l, *l2; + GHashTable *call_members = tp_base_call_channel_get_call_members (bcc); + + /* check for remote hold */ + + for (l = tp_base_call_channel_get_contents (bcc); l != NULL; l = l->next) + { + for (l2 = tp_base_call_content_get_streams (l->data); + l2 != NULL; l2 = l2->next) + { + TpBaseMediaCallStream *stream = TP_BASE_MEDIA_CALL_STREAM (l2->data); + GHashTable *remote_members = _tp_base_call_stream_get_remote_members ( + TP_BASE_CALL_STREAM (stream)); + gboolean all_held = TRUE; + GHashTableIter iter; + gpointer contact; + + g_hash_table_iter_init (&iter, remote_members); + while (g_hash_table_iter_next (&iter, &contact, NULL)) + { + gpointer value; + + if (g_hash_table_lookup_extended (call_members, contact, NULL, + &value)) + { + TpCallMemberFlags flags = GPOINTER_TO_UINT (value); + if ((flags & TP_CALL_MEMBER_FLAG_HELD) == 0) + all_held = FALSE; + } + } + + _tp_base_media_call_stream_set_remotely_held (stream, all_held); + } + } +} + +static void +tp_base_media_call_channel_try_accept (TpBaseMediaCallChannel *self) +{ + TpBaseCallChannel *bcc = TP_BASE_CALL_CHANNEL (self); + TpBaseMediaCallChannelClass *klass = + TP_BASE_MEDIA_CALL_CHANNEL_GET_CLASS (self); + GList *l; + gboolean notready = FALSE; + + if (self->priv->accepted) + return; + + for (l = tp_base_call_channel_get_contents (bcc); l; l = l->next) + notready |= !_tp_base_media_call_content_ready_to_accept (l->data); + + if (notready && !_tp_base_media_channel_is_held (self)) + return; + + if (klass->accept != NULL) + klass->accept (self); + + TP_BASE_CALL_CHANNEL_CLASS (tp_base_media_call_channel_parent_class)->accept (bcc); + + self->priv->accepted = TRUE; +} + +static void +streams_changed_cb (GObject *stream, + gpointer spec, + TpBaseMediaCallChannel *self) +{ + tp_base_media_call_channel_try_accept (self); + + if (self->priv->accepted) + g_signal_handlers_disconnect_by_func (stream, streams_changed_cb, self); +} + +static void +wait_for_streams_to_be_receiving (TpBaseMediaCallChannel *self) +{ + TpBaseCallChannel *bcc = TP_BASE_CALL_CHANNEL (self); + GList *l; + + for (l = tp_base_call_channel_get_contents (bcc); l; l = l->next) + { + TpBaseCallContent *content = l->data; + GList *l_stream; + + if (tp_base_call_content_get_disposition (content) != + TP_CALL_CONTENT_DISPOSITION_INITIAL) + continue; + + for (l_stream = tp_base_call_content_get_streams (content); + l_stream; + l_stream = l_stream->next) + { + TpBaseCallStream *stream = l_stream->data; + + g_signal_connect (stream, "notify::receiving-state", + G_CALLBACK (streams_changed_cb), self); + g_signal_connect (stream, "notify::remote-members", + G_CALLBACK (streams_changed_cb), self); + } + } +} + +static void +tp_base_media_call_channel_accept (TpBaseCallChannel *bcc) +{ + TpBaseMediaCallChannel *self = TP_BASE_MEDIA_CALL_CHANNEL (bcc); + + tp_base_media_call_channel_try_accept (self); + + if (!self->priv->accepted) + wait_for_streams_to_be_receiving (self); +} + +static void +tp_base_media_call_channel_remote_accept (TpBaseCallChannel *self) +{ + g_list_foreach (tp_base_call_channel_get_contents (self), + (GFunc) _tp_base_media_call_content_remote_accepted, NULL); +} + +static gboolean +tp_base_media_call_channel_is_connected (TpBaseCallChannel *self) +{ + GList *l; + + g_return_val_if_fail (TP_IS_BASE_MEDIA_CALL_CHANNEL (self), FALSE); + + for (l = tp_base_call_channel_get_contents (self); l != NULL; l = l->next) + { + GList *streams = tp_base_call_content_get_streams (l->data); + + for (; streams != NULL; streams = streams->next) + { + GList *endpoints; + gboolean has_connected_endpoint = FALSE; + + endpoints = tp_base_media_call_stream_get_endpoints (streams->data); + for (; endpoints != NULL; endpoints = endpoints->next) + { + TpStreamEndpointState state = tp_call_stream_endpoint_get_state ( + endpoints->data, TP_STREAM_COMPONENT_DATA); + + if (state == TP_STREAM_ENDPOINT_STATE_PROVISIONALLY_CONNECTED || + state == TP_STREAM_ENDPOINT_STATE_FULLY_CONNECTED) + { + has_connected_endpoint = TRUE; + break; + } + } + if (!has_connected_endpoint) + return FALSE; + } + } + + return TRUE; +} + +static void +tp_base_media_call_channel_class_init (TpBaseMediaCallChannelClass *klass) +{ + TpBaseChannelClass *base_channel_class = TP_BASE_CHANNEL_CLASS (klass); + TpBaseCallChannelClass *base_call_channel_class = + TP_BASE_CALL_CHANNEL_CLASS (klass); + + g_type_class_add_private (klass, sizeof (TpBaseMediaCallChannelPrivate)); + + base_channel_class->get_interfaces = tp_base_media_call_channel_get_interfaces; + + base_call_channel_class->accept = tp_base_media_call_channel_accept; + base_call_channel_class->remote_accept = + tp_base_media_call_channel_remote_accept; + base_call_channel_class->is_connected = + tp_base_media_call_channel_is_connected; +} + +static void +tp_base_media_call_channel_init (TpBaseMediaCallChannel *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + TP_TYPE_BASE_MEDIA_CALL_CHANNEL, TpBaseMediaCallChannelPrivate); + + self->priv->hold_state = TP_LOCAL_HOLD_STATE_UNHELD; + self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_REQUESTED; + + g_signal_connect (self, "call-members-changed", + G_CALLBACK (call_members_changed_cb), NULL); +} + +static void update_hold_state (TpBaseMediaCallChannel *self); + +static void +set_hold_state (TpBaseMediaCallChannel *self, + TpLocalHoldState hold_state, + TpLocalHoldStateReason hold_state_reason) +{ + TpBaseMediaCallChannelClass *klass = + TP_BASE_MEDIA_CALL_CHANNEL_GET_CLASS (self); + gboolean changed; + + g_return_if_fail (hold_state_reason < NUM_TP_LOCAL_HOLD_STATE_REASONS); + + changed = (self->priv->hold_state != hold_state); + + self->priv->hold_state = hold_state; + self->priv->hold_state_reason = hold_state_reason; + + if (changed) + { + if (klass->hold_state_changed != NULL) + klass->hold_state_changed (self, hold_state, hold_state_reason); + + tp_svc_channel_interface_hold_emit_hold_state_changed (self, hold_state, + hold_state_reason); + + update_hold_state (self); + } +} + +static void +update_hold_state (TpBaseMediaCallChannel *self) +{ + TpBaseCallChannel *bcc = TP_BASE_CALL_CHANNEL (self); + GList *l, *l2; + gboolean is_started = TRUE; + gboolean is_stopped = TRUE; + TpLocalHoldState new_hold_state = self->priv->hold_state; + + if (self->priv->hold_state != TP_LOCAL_HOLD_STATE_PENDING_HOLD && + self->priv->hold_state != TP_LOCAL_HOLD_STATE_PENDING_UNHOLD) + return; + + if (!tp_base_call_channel_is_accepted (TP_BASE_CALL_CHANNEL (self))) + goto done; + + for (l = tp_base_call_channel_get_contents (bcc); l != NULL; l = l->next) + { + for (l2 = tp_base_call_content_get_streams (l->data); + l2 != NULL; l2 = l2->next) + { + TpBaseMediaCallStream *stream = TP_BASE_MEDIA_CALL_STREAM (l2->data); + + tp_base_media_call_stream_update_receiving_state (stream); + tp_base_media_call_stream_update_sending_state (stream); + + if (tp_base_media_call_stream_get_sending_state (stream) != + TP_STREAM_FLOW_STATE_STOPPED || + tp_base_media_call_stream_get_receiving_state (stream) != + TP_STREAM_FLOW_STATE_STOPPED) + is_stopped = FALSE; + if (tp_base_media_call_stream_get_sending_state (stream) != + TP_STREAM_FLOW_STATE_STARTED || + tp_base_media_call_stream_get_receiving_state (stream) != + TP_STREAM_FLOW_STATE_STARTED) + is_started = FALSE; + } + } + +done: + + if (self->priv->hold_state == TP_LOCAL_HOLD_STATE_PENDING_HOLD && + is_stopped) + new_hold_state = TP_LOCAL_HOLD_STATE_HELD; + else if (self->priv->hold_state == TP_LOCAL_HOLD_STATE_PENDING_UNHOLD && + is_started) + new_hold_state = TP_LOCAL_HOLD_STATE_UNHELD; + + if (new_hold_state != self->priv->hold_state) + set_hold_state (self, new_hold_state, self->priv->hold_state_reason); +} + +static void +hold_change_failed (TpBaseMediaCallChannel *self) +{ + TpBaseCallChannel *bcc = TP_BASE_CALL_CHANNEL (self); + GList *l, *l2; + + if (self->priv->hold_state == TP_LOCAL_HOLD_STATE_PENDING_UNHOLD) + { + set_hold_state (self, TP_LOCAL_HOLD_STATE_PENDING_HOLD, + TP_LOCAL_HOLD_STATE_REASON_RESOURCE_NOT_AVAILABLE); + } + + for (l = tp_base_call_channel_get_contents (bcc); l != NULL; l = l->next) + { + for (l2 = tp_base_call_content_get_streams (l->data); + l2 != NULL; l2 = l2->next) + { + TpBaseMediaCallStream *stream = TP_BASE_MEDIA_CALL_STREAM (l2->data); + + tp_base_media_call_stream_update_receiving_state (stream); + tp_base_media_call_stream_update_sending_state (stream); + } + } + + /* Ensure we escape channel pending state if there is no more pending stream state + * change. */ + update_hold_state (self); +} + +static void +tp_base_media_call_channel_get_hold_state ( + TpSvcChannelInterfaceHold *hold_iface, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallChannel *self = TP_BASE_MEDIA_CALL_CHANNEL (hold_iface); + + tp_svc_channel_interface_hold_return_from_get_hold_state (context, + self->priv->hold_state, self->priv->hold_state_reason); +} + +static void +tp_base_media_call_channel_request_hold ( + TpSvcChannelInterfaceHold *hold_iface, + gboolean hold, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallChannel *self = TP_BASE_MEDIA_CALL_CHANNEL (hold_iface); + + if ((hold && (self->priv->hold_state == TP_LOCAL_HOLD_STATE_HELD || + self->priv->hold_state == TP_LOCAL_HOLD_STATE_PENDING_HOLD)) || + (!hold && (self->priv->hold_state == TP_LOCAL_HOLD_STATE_UNHELD || + self->priv->hold_state == TP_LOCAL_HOLD_STATE_PENDING_UNHOLD))) + { + self->priv->hold_state_reason = TP_LOCAL_HOLD_STATE_REASON_REQUESTED; + goto out; + } + + if (hold) + { + set_hold_state (self, TP_LOCAL_HOLD_STATE_PENDING_HOLD, + TP_LOCAL_HOLD_STATE_REASON_REQUESTED); + } + else + { + set_hold_state (self, TP_LOCAL_HOLD_STATE_PENDING_UNHOLD, + TP_LOCAL_HOLD_STATE_REASON_REQUESTED); + } + + out: + tp_svc_channel_interface_hold_return_from_request_hold (context); +} + +static void +hold_iface_init (gpointer g_iface, gpointer iface_data) +{ + TpSvcChannelInterfaceHoldClass *klass = + (TpSvcChannelInterfaceHoldClass *) g_iface; + +#define IMPLEMENT(x, suffix) tp_svc_channel_interface_hold_implement_##x (\ + klass, tp_base_media_call_channel_##x##suffix) + IMPLEMENT(get_hold_state,); + IMPLEMENT(request_hold,); +#undef IMPLEMENT +} + +void +_tp_base_media_call_channel_endpoint_state_changed ( + TpBaseMediaCallChannel *self) +{ + TpBaseChannel *bc = TP_BASE_CHANNEL (self); + TpBaseCallChannel *bcc = TP_BASE_CALL_CHANNEL (self); + + switch (tp_base_call_channel_get_state (bcc)) + { + case TP_CALL_STATE_INITIALISING: + if (_tp_base_call_channel_is_connected (bcc)) + { + tp_base_call_channel_set_state (bcc, TP_CALL_STATE_INITIALISED, + tp_base_channel_get_self_handle (bc), + TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", + "There is a connected endpoint for each stream"); + } + break; + case TP_CALL_STATE_ACTIVE: + if (!_tp_base_call_channel_is_connected (bcc)) + { + tp_base_call_channel_set_state (bcc, TP_CALL_STATE_ACCEPTED, + tp_base_channel_get_self_handle (bc), + TP_CALL_STATE_CHANGE_REASON_CONNECTIVITY_ERROR, + TP_ERROR_STR_CONNECTION_LOST, + "There is no longer connected endpoint for each stream"); + } + break; + case TP_CALL_STATE_ACCEPTED: + if (_tp_base_call_channel_is_connected (bcc)) + { + tp_base_call_channel_set_state (bcc, TP_CALL_STATE_ACTIVE, + tp_base_channel_get_self_handle (bc), + TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", + "There is a connected endpoint for each stream"); + } + break; + default: + break; + } +} + +gboolean +_tp_base_media_channel_is_held (TpBaseMediaCallChannel *self) +{ + switch (self->priv->hold_state) + { + case TP_LOCAL_HOLD_STATE_PENDING_HOLD: + case TP_LOCAL_HOLD_STATE_HELD: + return TRUE; + case TP_LOCAL_HOLD_STATE_PENDING_UNHOLD: + case TP_LOCAL_HOLD_STATE_UNHELD: + return FALSE; + default: + g_assert_not_reached (); + return FALSE; + } +} + +void +_tp_base_media_call_channel_streams_sending_state_changed ( + TpBaseMediaCallChannel *self, + gboolean success) +{ + if (success) + update_hold_state (self); + else + hold_change_failed (self); +} + +void +_tp_base_media_call_channel_streams_receiving_state_changed ( + TpBaseMediaCallChannel *self, + gboolean success) +{ + if (success) + update_hold_state (self); + else + hold_change_failed (self); +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-media-call-channel.h telepathy-glib-0.17.5/telepathy-glib/base-media-call-channel.h --- telepathy-glib-0.17.4/telepathy-glib/base-media-call-channel.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-media-call-channel.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,79 @@ +/* + * base-media-call-channel.h - Header for TpBaseMediaCallChannel + * Copyright © 2011 Collabora Ltd. + * @author Olivier Crete + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __TP_BASE_MEDIA_CALL_CHANNEL_H__ +#define __TP_BASE_MEDIA_CALL_CHANNEL_H__ + +#include + +G_BEGIN_DECLS + +typedef struct _TpBaseMediaCallChannel TpBaseMediaCallChannel; +typedef struct _TpBaseMediaCallChannelPrivate TpBaseMediaCallChannelPrivate; +typedef struct _TpBaseMediaCallChannelClass TpBaseMediaCallChannelClass; + +typedef void (*TpBaseMediaCallChannelHoldStateChangedFunc) ( + TpBaseMediaCallChannel *self, + TpLocalHoldState hold_state, + TpLocalHoldStateReason hold_state_reason); +typedef void (*TpBaseMediaCallChannelVoidFunc) (TpBaseMediaCallChannel *self); + +struct _TpBaseMediaCallChannelClass { + /**/ + TpBaseCallChannelClass parent_class; + + /*< public >*/ + TpBaseMediaCallChannelHoldStateChangedFunc hold_state_changed; + TpBaseMediaCallChannelVoidFunc accept; + + /**/ + gpointer future[4]; +}; + +struct _TpBaseMediaCallChannel { + /**/ + TpBaseCallChannel parent; + + TpBaseMediaCallChannelPrivate *priv; +}; + +GType tp_base_media_call_channel_get_type (void); + +/* TYPE MACROS */ +#define TP_TYPE_BASE_MEDIA_CALL_CHANNEL \ + (tp_base_media_call_channel_get_type ()) +#define TP_BASE_MEDIA_CALL_CHANNEL(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ + TP_TYPE_BASE_MEDIA_CALL_CHANNEL, TpBaseMediaCallChannel)) +#define TP_BASE_MEDIA_CALL_CHANNEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + TP_TYPE_BASE_MEDIA_CALL_CHANNEL, TpBaseMediaCallChannelClass)) +#define TP_IS_BASE_MEDIA_CALL_CHANNEL(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TYPE_BASE_MEDIA_CALL_CHANNEL)) +#define TP_IS_BASE_MEDIA_CALL_CHANNEL_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TYPE_BASE_MEDIA_CALL_CHANNEL)) +#define TP_BASE_MEDIA_CALL_CHANNEL_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + TP_TYPE_BASE_MEDIA_CALL_CHANNEL, TpBaseMediaCallChannelClass)) + + +G_END_DECLS + +#endif /* #ifndef __TP_BASE_MEDIA_CALL_CHANNEL_H__*/ diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-media-call-content.c telepathy-glib-0.17.5/telepathy-glib/base-media-call-content.c --- telepathy-glib-0.17.4/telepathy-glib/base-media-call-content.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-media-call-content.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,1172 @@ +/* + * base-media-call-content.c - Source for TpBaseMediaCallContent + * Copyright (C) 2009-2011 Collabora Ltd. + * @author Sjoerd Simons + * @author Xavier Claessens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:base-media-call-content + * @title: TpBaseMediaCallContent + * @short_description: base class for #TpSvcCallContentInterfaceMedia + * implementations + * @see_also: #TpSvcCallContentInterfaceMedia, #TpBaseCallChannel, + * #TpBaseCallContent and #TpBaseCallStream + * + * This base class makes it easier to write #TpSvcCallContentInterfaceMedia + * implementations by implementing its properties and methods. + * + * Subclasses must still implement #TpBaseCallContent's virtual methods. + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallContent: + * + * A base class for media call content implementations + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallContentClass: + * + * The class structure for #TpBaseMediaCallContent + * + * Since: 0.17.5 + */ + +#include "config.h" + +#include "base-media-call-content.h" + +#include + +#define DEBUG_FLAG TP_DEBUG_CALL +#include "telepathy-glib/base-call-internal.h" +#include "telepathy-glib/base-call-channel.h" +#include "telepathy-glib/base-channel.h" +#include "telepathy-glib/base-connection.h" +#include "telepathy-glib/base-media-call-stream.h" +#include "telepathy-glib/dbus.h" +#include "telepathy-glib/debug-internal.h" +#include "telepathy-glib/dtmf.h" +#include "telepathy-glib/gtypes.h" +#include "telepathy-glib/interfaces.h" +#include "telepathy-glib/svc-call.h" +#include "telepathy-glib/svc-properties-interface.h" +#include "telepathy-glib/util.h" +#include "telepathy-glib/util-internal.h" +#include "telepathy-glib/_gen/signals-marshal.h" + +#define DTMF_PAUSE_MS (3000) + +static void call_content_media_iface_init (gpointer, gpointer); + +G_DEFINE_ABSTRACT_TYPE_WITH_CODE (TpBaseMediaCallContent, + tp_base_media_call_content, TP_TYPE_BASE_CALL_CONTENT, + + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CALL_CONTENT_INTERFACE_MEDIA, + call_content_media_iface_init) + ) + +/* properties */ +enum +{ + /* Call.Content.Interface.Media properties */ + + PROP_REMOTE_MEDIA_DESCRIPTIONS = 1, + PROP_LOCAL_MEDIA_DESCRIPTIONS, + PROP_MEDIA_DESCRIPTION_OFFER, + PROP_PACKETIZATION, + PROP_CURRENT_DTMF_EVENT, + PROP_CURRENT_DTMF_STATE, + + /* Call.Content.Interface.DTMF properties */ + + PROP_CURRENTLY_SENDING_TONES, + PROP_DEFERRED_TONES +}; + +enum /* signals */ +{ + LOCAL_MEDIA_DESCRIPTION_UPDATED, + LAST_SIGNAL +}; + +static guint _signals[LAST_SIGNAL] = { 0, }; + +/* private structure */ +struct _TpBaseMediaCallContentPrivate +{ + /* TpHandle -> reffed GHashTable */ + GHashTable *remote_media_descriptions; + /* TpHandle -> reffed GHashTable */ + GHashTable *local_media_descriptions; + TpCallContentMediaDescription *current_offer; + TpCallContentPacketizationType packetization; + TpDTMFEvent current_dtmf_event; + TpSendingState current_dtmf_state; + + gchar *requested_tones; + const gchar *currently_sending_tones; + gchar *deferred_tones; + gboolean multiple_tones; + gboolean tones_cancelled; + guint tones_pause_timeout_id; + gulong channel_state_changed_id; + + /* GQueue of GSimpleAsyncResult with a TpCallContentMediaDescription + * as op_res_gpointer */ + GQueue *outstanding_offers; + GSimpleAsyncResult *current_offer_result; + GCancellable *current_offer_cancellable; +}; + +static GPtrArray *tp_base_media_call_content_get_interfaces ( + TpBaseCallContent *bcc); + +static gboolean tp_base_media_call_content_start_tone (TpBaseCallContent *self, + TpDTMFEvent event, + GError **error); +static gboolean tp_base_media_call_content_stop_tone (TpBaseCallContent *self, + GError **error); +static gboolean tp_base_media_call_content_multiple_tones ( + TpBaseCallContent *self, + const gchar *tones, + GError **error); +static void tp_base_media_call_content_dtmf_next (TpBaseMediaCallContent *self); + +static void +tp_base_media_call_content_init (TpBaseMediaCallContent *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + TP_TYPE_BASE_MEDIA_CALL_CONTENT, TpBaseMediaCallContentPrivate); + + self->priv->outstanding_offers = g_queue_new (); + self->priv->local_media_descriptions = g_hash_table_new_full (NULL, NULL, + NULL, (GDestroyNotify) g_hash_table_unref); + self->priv->remote_media_descriptions = g_hash_table_new_full (NULL, NULL, + NULL, (GDestroyNotify) g_hash_table_unref); +} + +static void +call_content_deinit (TpBaseCallContent *base) +{ + TpBaseMediaCallContent *self = TP_BASE_MEDIA_CALL_CONTENT (base); + + g_queue_foreach (self->priv->outstanding_offers, (GFunc) g_object_unref, NULL); + g_queue_clear (self->priv->outstanding_offers); + + if (self->priv->current_offer_cancellable != NULL) + g_cancellable_cancel (self->priv->current_offer_cancellable); + + TP_BASE_CALL_CONTENT_CLASS ( + tp_base_media_call_content_parent_class)->deinit (base); +} + +static void +tp_base_media_call_content_dispose (GObject *object) +{ + TpBaseMediaCallContent *self = TP_BASE_MEDIA_CALL_CONTENT (object); + + g_assert (self->priv->current_offer == NULL); + g_assert (self->priv->current_offer_result == NULL); + g_assert (g_queue_is_empty (self->priv->outstanding_offers)); + + tp_clear_pointer (&self->priv->local_media_descriptions, g_hash_table_unref); + tp_clear_pointer (&self->priv->remote_media_descriptions, g_hash_table_unref); + + if (self->priv->tones_pause_timeout_id != 0) + g_source_remove (self->priv->tones_pause_timeout_id); + self->priv->tones_pause_timeout_id = 0; + + if (self->priv->channel_state_changed_id != 0) + { + TpBaseCallChannel *channel = _tp_base_call_content_get_channel ( + TP_BASE_CALL_CONTENT (self)); + + g_signal_handler_disconnect (channel, + self->priv->channel_state_changed_id); + self->priv->channel_state_changed_id = 0; + } + + if (G_OBJECT_CLASS (tp_base_media_call_content_parent_class)->dispose) + G_OBJECT_CLASS (tp_base_media_call_content_parent_class)->dispose (object); +} + +static void +tp_base_media_call_content_finalize (GObject *object) +{ + TpBaseMediaCallContent *self = TP_BASE_MEDIA_CALL_CONTENT (object); + + g_queue_free (self->priv->outstanding_offers); + + g_free (self->priv->requested_tones); + g_free (self->priv->deferred_tones); + + if (G_OBJECT_CLASS (tp_base_media_call_content_parent_class)->finalize) + G_OBJECT_CLASS (tp_base_media_call_content_parent_class)->finalize (object); +} + +static void +tp_base_media_call_content_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + TpBaseMediaCallContent *self = TP_BASE_MEDIA_CALL_CONTENT (object); + + switch (property_id) + { + case PROP_REMOTE_MEDIA_DESCRIPTIONS: + g_value_set_boxed (value, self->priv->remote_media_descriptions); + break; + case PROP_LOCAL_MEDIA_DESCRIPTIONS: + g_value_set_boxed (value, self->priv->local_media_descriptions); + break; + case PROP_MEDIA_DESCRIPTION_OFFER: + { + const gchar *object_path = "/"; + GHashTable *properties; + GValueArray *value_array; + + if (self->priv->current_offer != NULL) + { + object_path = tp_call_content_media_description_get_object_path ( + self->priv->current_offer); + properties = _tp_call_content_media_description_dup_properties ( + self->priv->current_offer); + } + else + { + properties = g_hash_table_new (NULL, NULL); + } + + value_array = tp_value_array_build (2, + DBUS_TYPE_G_OBJECT_PATH, object_path, + TP_HASH_TYPE_MEDIA_DESCRIPTION_PROPERTIES, properties, + G_TYPE_INVALID); + + g_value_take_boxed (value, value_array); + g_hash_table_unref (properties); + break; + } + case PROP_PACKETIZATION: + g_value_set_uint (value, self->priv->packetization); + break; + case PROP_CURRENT_DTMF_EVENT: + g_value_set_uchar (value, self->priv->current_dtmf_event); + break; + case PROP_CURRENT_DTMF_STATE: + g_value_set_uint (value, self->priv->current_dtmf_state); + break; + case PROP_CURRENTLY_SENDING_TONES: + g_value_set_boolean (value, + self->priv->currently_sending_tones != NULL); + break; + case PROP_DEFERRED_TONES: + if (self->priv->deferred_tones == NULL) + g_value_set_static_string (value, ""); + else + g_value_set_string (value, self->priv->deferred_tones); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_base_media_call_content_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + TpBaseMediaCallContent *self = TP_BASE_MEDIA_CALL_CONTENT (object); + + switch (property_id) + { + case PROP_PACKETIZATION: + self->priv->packetization = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_base_media_call_content_class_init (TpBaseMediaCallContentClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + TpBaseCallContentClass *bcc_class = TP_BASE_CALL_CONTENT_CLASS (klass); + GParamSpec *param_spec; + static TpDBusPropertiesMixinPropImpl content_media_props[] = { + { "RemoteMediaDescriptions", "remote-media-descriptions", NULL }, + { "LocalMediaDescriptions", "local-media-descriptions", NULL }, + { "MediaDescriptionOffer", "media-description-offer", NULL }, + { "Packetization", "packetization", NULL }, + { "CurrentDTMFEvent", "current-dtmf-event", NULL }, + { "CurrentDTMFState", "current-dtmf-state", NULL }, + { NULL } + }; + + g_type_class_add_private (klass, sizeof (TpBaseMediaCallContentPrivate)); + + object_class->get_property = tp_base_media_call_content_get_property; + object_class->set_property = tp_base_media_call_content_set_property; + object_class->dispose = tp_base_media_call_content_dispose; + object_class->finalize = tp_base_media_call_content_finalize; + + bcc_class->deinit = call_content_deinit; + bcc_class->get_interfaces = tp_base_media_call_content_get_interfaces; + bcc_class->start_tone = tp_base_media_call_content_start_tone; + bcc_class->stop_tone = tp_base_media_call_content_stop_tone; + bcc_class->stop_tone = tp_base_media_call_content_stop_tone; + bcc_class->multiple_tones = tp_base_media_call_content_multiple_tones; + + /** + * TpBaseMediaCallContent:remote-media-descriptions: + * + * #GHashTable{contact #TpHandle, properties #GHashTable} + * The map of contacts to remote media descriptions. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("remote-media-descriptions", + "RemoteMediaDescriptions", + "The map of contacts to remote media descriptions", + TP_HASH_TYPE_CONTACT_MEDIA_DESCRIPTION_PROPERTIES_MAP, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_REMOTE_MEDIA_DESCRIPTIONS, + param_spec); + + /** + * TpBaseMediaCallContent:local-media-descriptions: + * + * #GHashTable{contact #TpHandle, properties #GHashTable} + * The map of contacts to local media descriptions. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("local-media-descriptions", + "LocalMediaDescriptions", + "The map of contacts to local media descriptions", + TP_HASH_TYPE_CONTACT_MEDIA_DESCRIPTION_PROPERTIES_MAP, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_LOCAL_MEDIA_DESCRIPTIONS, + param_spec); + + /** + * TpBaseMediaCallContent:media-description-offer: + * + * #GValueArray{object-path, contact #TpHandle, properties #GHashTable}. + * The current media description offer if any. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("media-description-offer", + "MediaDescriptionOffer", + "The current media description offer if any", + TP_STRUCT_TYPE_MEDIA_DESCRIPTION_OFFER, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_MEDIA_DESCRIPTION_OFFER, + param_spec); + + /** + * TpBaseMediaCallContent:packetization: + * + * The #TpCallContentPacketizationType of this content. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("packetization", "Packetization", + "The Packetization of this content", + 0, G_MAXUINT, TP_CALL_CONTENT_PACKETIZATION_TYPE_RTP, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_PACKETIZATION, + param_spec); + + /** + * TpBaseMediaCallContent:current-dtmf-event: + * + * The currently being played #TpDTMFEvent if any + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uchar ("current-dtmf-event", + "CurrentDTMFEvent", + "The currently being played dtmf event if any", + 0, NUM_TP_DTMF_EVENTS - 1, 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CURRENT_DTMF_EVENT, + param_spec); + + /** + * TpBaseMediaCallContent:current-dtmf-state: + * + * The #TpSendingState of the dtmf events + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("current-dtmf-state", + "CurrentDTMFState", + "The sending state of the dtmf events", + 0, NUM_TP_SENDING_STATES - 1, TP_SENDING_STATE_NONE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CURRENT_DTMF_STATE, + param_spec); + + g_object_class_override_property (object_class, PROP_CURRENTLY_SENDING_TONES, + "currently-sending-tones"); + g_object_class_override_property (object_class, PROP_DEFERRED_TONES, + "deferred-tones"); + + /** + * TpBaseMediaCallContent::local-media-description-updated + * @self: the #TpCallChannel + * @contact: the remote contact + * @properties: the new media description properties asv + * + * The ::local-media-description-changed signal is emitted whenever the local + * media description changes for a remote contact. + * + * Since: 0.17.5 + */ + _signals[LOCAL_MEDIA_DESCRIPTION_UPDATED] = g_signal_new ( + "local-media-description-updated", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + _tp_marshal_VOID__UINT_BOXED, + G_TYPE_NONE, + 2, G_TYPE_UINT, G_TYPE_HASH_TABLE); + + tp_dbus_properties_mixin_implement_interface (object_class, + TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_MEDIA, + tp_dbus_properties_mixin_getter_gobject_properties, + NULL, + content_media_props); +} + +static void +set_local_properties (TpBaseMediaCallContent *self, + TpHandle contact, + GHashTable *properties) +{ + DEBUG ("Set local properties for contact %u", contact); + + g_hash_table_insert (self->priv->local_media_descriptions, + GUINT_TO_POINTER (contact), + g_hash_table_ref (properties)); + + g_signal_emit (self, _signals[LOCAL_MEDIA_DESCRIPTION_UPDATED], 0, + contact, properties); + + tp_svc_call_content_interface_media_emit_local_media_description_changed ( + self, properties); +} + +static void +set_remote_properties (TpBaseMediaCallContent *self, + TpHandle contact, + GHashTable *properties) +{ + GHashTable *update; + + DEBUG ("Set remote properties for contact %u", contact); + + g_hash_table_insert (self->priv->remote_media_descriptions, + GUINT_TO_POINTER (contact), + g_hash_table_ref (properties)); + + update = g_hash_table_new (NULL, NULL); + g_hash_table_insert (update, + GUINT_TO_POINTER (contact), + properties); + + tp_svc_call_content_interface_media_emit_remote_media_descriptions_changed ( + self, update); + + g_hash_table_unref (update); +} + +static void next_offer (TpBaseMediaCallContent *self); + +static void +offer_finished_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + TpBaseMediaCallContent *self = user_data; + TpCallContentMediaDescription *md = (TpCallContentMediaDescription *) source; + GHashTable *local_properties = NULL; + GHashTable *remote_properties = NULL; + TpHandle contact; + GError *error = NULL; + + g_assert (self->priv->current_offer == md); + + if (!_tp_call_content_media_description_offer_finish (md, result, + &local_properties, &error)) + { + DEBUG ("Offer failed: %s", error->message); + g_simple_async_result_take_error (self->priv->current_offer_result, + error); + goto out; + } + + DEBUG ("Accepted offer: %s", + tp_call_content_media_description_get_object_path (md)); + + /* Accepted, update local and remote MediaDescription */ + remote_properties = _tp_call_content_media_description_dup_properties (md); + contact = tp_call_content_media_description_get_remote_contact (md); + set_local_properties (self, contact, local_properties); + set_remote_properties (self, contact, remote_properties); + +out: + g_simple_async_result_complete (self->priv->current_offer_result); + g_clear_object (&self->priv->current_offer); + g_clear_object (&self->priv->current_offer_result); + g_clear_object (&self->priv->current_offer_cancellable); + tp_svc_call_content_interface_media_emit_media_description_offer_done (self); + + next_offer (self); + + tp_clear_pointer (&local_properties, g_hash_table_unref); + tp_clear_pointer (&remote_properties, g_hash_table_unref); + g_object_unref (self); +} + +static void +next_offer (TpBaseMediaCallContent *self) +{ + const gchar *object_path; + GHashTable *properties; + + if (self->priv->current_offer_result != NULL) + { + DEBUG ("Waiting for the current offer to finish" + " before starting the next one"); + return; + } + + self->priv->current_offer_result = g_queue_pop_head ( + self->priv->outstanding_offers); + if (self->priv->current_offer_result == NULL) + { + DEBUG ("No more offers outstanding"); + return; + } + + g_assert (self->priv->current_offer == NULL); + g_assert (self->priv->current_offer_cancellable == NULL); + + self->priv->current_offer = g_simple_async_result_get_op_res_gpointer ( + self->priv->current_offer_result); + g_object_ref (self->priv->current_offer); + self->priv->current_offer_cancellable = g_cancellable_new (); + + _tp_call_content_media_description_offer_async (self->priv->current_offer, + self->priv->current_offer_cancellable, + offer_finished_cb, + g_object_ref (self)); + + object_path = tp_call_content_media_description_get_object_path ( + self->priv->current_offer); + properties = _tp_call_content_media_description_dup_properties ( + self->priv->current_offer); + + DEBUG ("emitting NewMediaDescriptionOffer: %s", object_path); + tp_svc_call_content_interface_media_emit_new_media_description_offer (self, + object_path, properties); + g_hash_table_unref (properties); +} + +/** + * tp_base_media_call_content_get_local_media_description: + * @self: a #TpBaseMediaCallContent + * @contact: the contact + * + * Get the media description used to stream to @contact. + * + * Returns: borrowed #GHashTable mapping iface propery string to #GValue. + * Since: 0.17.5 + */ +GHashTable * +tp_base_media_call_content_get_local_media_description ( + TpBaseMediaCallContent *self, + TpHandle contact) +{ + g_return_val_if_fail (TP_IS_BASE_MEDIA_CALL_CONTENT (self), NULL); + + return g_hash_table_lookup (self->priv->local_media_descriptions, + GUINT_TO_POINTER (contact)); +} + +/** + * tp_base_media_call_content_offer_media_description_async: + * @self: a #TpBaseMediaCallContent + * @md: a #TpCallContentMediaDescription + * @callback: a callback to call when the operation finishes + * @user_data: data to pass to @callback + * + * Offer @md for media description negociation. + * + * Since: 0.17.5 + */ +void +tp_base_media_call_content_offer_media_description_async ( + TpBaseMediaCallContent *self, + TpCallContentMediaDescription *md, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + g_return_if_fail (TP_IS_BASE_MEDIA_CALL_CONTENT (self)); + g_return_if_fail (TP_IS_CALL_CONTENT_MEDIA_DESCRIPTION (md)); + + result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, + tp_base_media_call_content_offer_media_description_async); + + g_simple_async_result_set_op_res_gpointer (result, + g_object_ref (md), g_object_unref); + + g_queue_push_tail (self->priv->outstanding_offers, result); + next_offer (self); +} + +/** + * tp_base_media_call_content_offer_media_description_finish: + * @self: a #TpBaseMediaCallContent + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Finishes tp_base_media_call_content_offer_media_description_async(). + * + * Since: 0.17.5 + */ +gboolean +tp_base_media_call_content_offer_media_description_finish ( + TpBaseMediaCallContent *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (self, + tp_base_media_call_content_offer_media_description_async); +} + +static void +tp_base_media_call_content_update_local_media_description ( + TpSvcCallContentInterfaceMedia *iface, + GHashTable *properties, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallContent *self = TP_BASE_MEDIA_CALL_CONTENT (iface); + GHashTable *current_properties; + GPtrArray *codecs; + gpointer contact; + + if (self->priv->current_offer != NULL) + { + GError error = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, + "There is a media description offer around so " + "UpdateMediaDescription shouldn't be called." }; + dbus_g_method_return_error (context, &error); + return; + } + + if (!g_hash_table_lookup_extended (properties, + TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_REMOTE_CONTACT, + NULL, &contact)) + { + GError error = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "The media description is missing the RemoteContact key." }; + dbus_g_method_return_error (context, &error); + return; + } + + current_properties = g_hash_table_lookup ( + self->priv->local_media_descriptions, + contact); + + if (current_properties == NULL) + { + GError error = { TP_ERRORS, TP_ERROR_NOT_AVAILABLE, + "The initial MediaDescription object has not yet appeared" }; + dbus_g_method_return_error (context, &error); + return; + } + + + codecs = tp_asv_get_boxed (properties, + TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_CODECS, + TP_ARRAY_TYPE_CODEC_LIST); + if (!codecs || codecs->len == 0) + { + GError error = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Codecs can not be empty" }; + dbus_g_method_return_error (context, &error); + return; + } + + set_local_properties (self, GPOINTER_TO_UINT (contact), properties); + + tp_svc_call_content_interface_media_return_from_update_local_media_description + (context); +} + +static void +tp_base_media_call_content_fail (TpSvcCallContentInterfaceMedia *iface, + const GValueArray *reason_array, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallContent *self = TP_BASE_MEDIA_CALL_CONTENT (iface); + TpBaseCallContent *content = (TpBaseCallContent *) self; + TpBaseCallChannel *channel; + + channel = _tp_base_call_content_get_channel (content); + _tp_base_call_channel_remove_content_internal (channel, content, + reason_array); + + tp_svc_call_content_interface_media_return_from_fail (context); +} + +static void +tp_base_media_call_content_acknowledge_dtmf_change ( + TpSvcCallContentInterfaceMedia *iface, + guchar in_Event, + guint in_State, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallContent *self = TP_BASE_MEDIA_CALL_CONTENT (iface); + + if (self->priv->current_dtmf_event != in_Event) + { + GError error = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "The acknoledgement is not for the right event"}; + dbus_g_method_return_error (context, &error); + return; + } + + if (in_State != TP_SENDING_STATE_SENDING && + in_State != TP_SENDING_STATE_NONE) + { + GError error = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "The new sending state can not be a pending state"}; + dbus_g_method_return_error (context, &error); + return; + } + + if (in_State == self->priv->current_dtmf_state) + goto out; + + if (self->priv->current_dtmf_state != TP_SENDING_STATE_PENDING_SEND && + self->priv->current_dtmf_state != TP_SENDING_STATE_PENDING_STOP_SENDING) + { + GError error = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Acknowledge rejected because we are not in a pending state"}; + dbus_g_method_return_error (context, &error); + return; + } + + if ((self->priv->current_dtmf_state == TP_SENDING_STATE_PENDING_SEND && + in_State != TP_SENDING_STATE_SENDING) || + (self->priv->current_dtmf_state == + TP_SENDING_STATE_PENDING_STOP_SENDING && + in_State != TP_SENDING_STATE_NONE)) + { + GError error = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "The new sending state does not match the pending state"}; + dbus_g_method_return_error (context, &error); + return; + } + + /* Only tell the UI we are sending if we are actually sending */ + if (in_State == TP_SENDING_STATE_SENDING) + tp_svc_call_content_interface_dtmf_emit_sending_tones (self, + self->priv->currently_sending_tones); + else if (in_State == TP_SENDING_STATE_NONE && + self->priv->currently_sending_tones && + self->priv->currently_sending_tones[0]) + self->priv->currently_sending_tones++; + + self->priv->current_dtmf_state = in_State; + + tp_base_media_call_content_dtmf_next (self); + +out: + + tp_svc_call_content_interface_media_return_from_acknowledge_dtmf_change ( + context); +} + + +static void +call_content_media_iface_init (gpointer g_iface, gpointer iface_data) +{ + TpSvcCallContentInterfaceMediaClass *klass = + (TpSvcCallContentInterfaceMediaClass *) g_iface; + +#define IMPLEMENT(x) tp_svc_call_content_interface_media_implement_##x (\ + klass, tp_base_media_call_content_##x) + IMPLEMENT(update_local_media_description); + IMPLEMENT(acknowledge_dtmf_change); + IMPLEMENT(fail); +#undef IMPLEMENT +} + +gboolean +_tp_base_media_call_content_ready_to_accept (TpBaseMediaCallContent *self) +{ + TpBaseCallContent *bcc = TP_BASE_CALL_CONTENT (self); + GList *item; + gboolean ret = TRUE; + gboolean initial = tp_base_call_content_get_disposition (bcc) == + TP_CALL_CONTENT_DISPOSITION_INITIAL; + + for (item = tp_base_call_content_get_streams (bcc); item; item = item->next) + { + TpBaseMediaCallStream *stream = item->data; + GHashTable *members = _tp_base_call_stream_get_remote_members ( + TP_BASE_CALL_STREAM (stream)); + GHashTableIter iter; + gpointer key, value; + TpStreamFlowState receiving_state = + tp_base_media_call_stream_get_receiving_state (stream); + + /* On incoming calls, start streaming (sending) when we accept the call, + * if that was what the other side proposed + */ + if (initial && !tp_base_channel_is_requested ( + TP_BASE_CHANNEL (_tp_base_call_content_get_channel (bcc))) && + tp_base_call_stream_get_local_sending_state ( + TP_BASE_CALL_STREAM (stream)) == TP_SENDING_STATE_PENDING_SEND) + { + tp_base_media_call_stream_set_local_sending (stream, TRUE); + } + g_hash_table_iter_init (&iter, members); + while (g_hash_table_iter_next (&iter, &key, &value)) + { + TpSendingState member_state = GPOINTER_TO_INT (value); + + if (member_state == TP_SENDING_STATE_PENDING_SEND || + member_state == TP_SENDING_STATE_SENDING) + { + tp_base_media_call_stream_update_receiving_state (stream); + if (receiving_state != TP_STREAM_FLOW_STATE_STARTED) + { + if (initial) + ret = FALSE; + } + } + } + } + + return ret; +} + +void +_tp_base_media_call_content_remote_accepted (TpBaseMediaCallContent *self) +{ + TpBaseCallContent *bcc = TP_BASE_CALL_CONTENT (self); + GList *l; + + if (tp_base_call_content_get_disposition (bcc) != + TP_CALL_CONTENT_DISPOSITION_INITIAL) + return; + + for (l = tp_base_call_content_get_streams (bcc); l != NULL; l = l->next) + { + TpBaseMediaCallStream *stream = TP_BASE_MEDIA_CALL_STREAM (l->data); + TpSendingState local = tp_base_call_stream_get_local_sending_state ( + TP_BASE_CALL_STREAM (stream)); + + if (local == TP_SENDING_STATE_SENDING) + tp_base_media_call_stream_set_local_sending (stream, TRUE); + } +} + +static gboolean +tp_base_media_call_content_start_tone (TpBaseCallContent *bcc, + TpDTMFEvent event, + GError **error) +{ + TpBaseMediaCallContent *self = TP_BASE_MEDIA_CALL_CONTENT (bcc); + + gchar buf[2] = { 0, 0 }; + + if (tp_base_call_content_get_media_type (bcc) != TP_MEDIA_STREAM_TYPE_AUDIO) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, + "Method does not exist"); + return FALSE; + } + + if (self->priv->currently_sending_tones != NULL) + { + g_set_error (error, TP_ERRORS, TP_ERROR_SERVICE_BUSY, + "Already sending a tone"); + return FALSE; + } + + buf[0] = tp_dtmf_event_to_char (event); + + if (_tp_dtmf_char_classify (buf[0]) == DTMF_CHAR_CLASS_MEANINGLESS) + { + g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, + "Invalid DTMF event %s", buf); + return FALSE; + } + + self->priv->multiple_tones = FALSE; + self->priv->requested_tones = g_strdup (buf); + self->priv->currently_sending_tones = self->priv->requested_tones; + + g_free (self->priv->deferred_tones); + self->priv->deferred_tones = NULL; + + tp_base_media_call_content_dtmf_next (self); + + return TRUE; +} + +static gboolean +tp_base_media_call_content_stop_tone (TpBaseCallContent *bcc, + GError **error) +{ + TpBaseMediaCallContent *self = TP_BASE_MEDIA_CALL_CONTENT (bcc); + + + if (tp_base_call_content_get_media_type (bcc) != TP_MEDIA_STREAM_TYPE_AUDIO) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, + "Method does not exist"); + return FALSE; + } + + if (self->priv->currently_sending_tones == NULL) + { + g_set_error (error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "No tone is currently being played"); + return FALSE; + } + + self->priv->currently_sending_tones = ""; + self->priv->tones_cancelled = TRUE; + + tp_base_media_call_content_dtmf_next (self); + + return TRUE; +} + +static gboolean +tp_base_media_call_content_multiple_tones (TpBaseCallContent *bcc, + const gchar *tones, + GError **error) + +{ + TpBaseMediaCallContent *self = TP_BASE_MEDIA_CALL_CONTENT (bcc); + guint i; + + if (tp_base_call_content_get_media_type (bcc) != TP_MEDIA_STREAM_TYPE_AUDIO) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, + "Method does not exist"); + return FALSE; + } + + if (self->priv->currently_sending_tones != NULL) + { + g_set_error (error, TP_ERRORS, TP_ERROR_SERVICE_BUSY, + "Already sending a tone"); + return FALSE; + } + + for (i = 0; tones[i] != '\0'; i++) + { + if (_tp_dtmf_char_classify (tones[i]) == DTMF_CHAR_CLASS_MEANINGLESS) + { + g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, + "Invalid character in DTMF string starting at %s", + tones + i); + return FALSE; + } + } + + self->priv->multiple_tones = TRUE; + self->priv->requested_tones = g_strdup (tones); + self->priv->currently_sending_tones = self->priv->requested_tones; + g_free (self->priv->deferred_tones); + self->priv->deferred_tones = NULL; + + tp_base_media_call_content_dtmf_next (self); + + return TRUE; +} + +static gboolean +dtmf_pause_timeout_func (gpointer data) +{ + TpBaseMediaCallContent *self = data; + + self->priv->tones_pause_timeout_id = 0; + + tp_base_media_call_content_dtmf_next (self); + + return FALSE; +} + +static void +channel_state_changed_cb (TpBaseCallChannel *channel, TpCallState state, + TpCallFlags flags, gpointer reason, GHashTable *details, + TpBaseMediaCallContent *self) +{ + if (state != TP_CALL_STATE_ACTIVE) + return; + + if (self->priv->channel_state_changed_id != 0) + { + g_signal_handler_disconnect (self, self->priv->channel_state_changed_id); + self->priv->channel_state_changed_id = 0; + } + + tp_base_media_call_content_dtmf_next (self); +} + +static void +tp_base_media_call_content_dtmf_next (TpBaseMediaCallContent *self) +{ + g_assert (self->priv->currently_sending_tones != NULL); + + switch (self->priv->current_dtmf_state) + { + case TP_SENDING_STATE_PENDING_SEND: + if (self->priv->tones_cancelled) + { + self->priv->current_dtmf_state = + TP_SENDING_STATE_PENDING_STOP_SENDING; + tp_svc_call_content_interface_media_emit_dtmf_change_requested (self, + self->priv->current_dtmf_event, + self->priv->current_dtmf_state); + return; + } + break; + case TP_SENDING_STATE_PENDING_STOP_SENDING: + /* Waiting on streaming implementation, do nothing */ + break; + case TP_SENDING_STATE_SENDING: + if (self->priv->tones_cancelled || self->priv->multiple_tones) + { + self->priv->current_dtmf_state = + TP_SENDING_STATE_PENDING_STOP_SENDING; + + tp_svc_call_content_interface_media_emit_dtmf_change_requested (self, + self->priv->current_dtmf_event, + self->priv->current_dtmf_state); + } + break; + case TP_SENDING_STATE_NONE: + { + gchar next; + TpBaseCallChannel *channel = _tp_base_call_content_get_channel ( + TP_BASE_CALL_CONTENT (self)); + + /* Waiting for timeout */ + if (self->priv->tones_pause_timeout_id != 0) + return; + + if (channel && + tp_base_call_channel_get_state (channel) != TP_CALL_STATE_ACTIVE) + { + if (self->priv->channel_state_changed_id == 0) + self->priv->channel_state_changed_id = + g_signal_connect (channel, "call-state-changed", + G_CALLBACK (channel_state_changed_cb), self); + return; + } + + next = self->priv->currently_sending_tones[0]; + + if (next) + { + switch (_tp_dtmf_char_classify (next)) + { + case DTMF_CHAR_CLASS_EVENT: + self->priv->current_dtmf_event = _tp_dtmf_char_to_event (next); + self->priv->current_dtmf_state = TP_SENDING_STATE_PENDING_SEND; + + tp_svc_call_content_interface_media_emit_dtmf_change_requested ( + self, self->priv->current_dtmf_event, + self->priv->current_dtmf_state); + break; + case DTMF_CHAR_CLASS_PAUSE: + self->priv->tones_pause_timeout_id = g_timeout_add ( + DTMF_PAUSE_MS, dtmf_pause_timeout_func, self); + tp_svc_call_content_interface_dtmf_emit_sending_tones (self, + self->priv->currently_sending_tones); + break; + case DTMF_CHAR_CLASS_WAIT_FOR_USER: + self->priv->deferred_tones = + g_strdup (self->priv->currently_sending_tones + 1); + self->priv->currently_sending_tones = ""; + tp_svc_call_content_interface_dtmf_emit_tones_deferred (self, + self->priv->deferred_tones); + + /* Let's stop here ! */ + goto done; + break; + default: + g_assert_not_reached (); + } + } + else + { + done: + tp_svc_call_content_interface_dtmf_emit_stopped_tones (self, + self->priv->tones_cancelled && self->priv->multiple_tones); + self->priv->tones_cancelled = FALSE; + g_free (self->priv->requested_tones); + self->priv->requested_tones = NULL; + self->priv->currently_sending_tones = NULL; + } + } + break; + default: + g_assert_not_reached (); + } +} + +static GPtrArray * +tp_base_media_call_content_get_interfaces (TpBaseCallContent *bcc) +{ + GPtrArray *interfaces; + + interfaces = TP_BASE_CALL_CONTENT_CLASS ( + tp_base_media_call_content_parent_class)->get_interfaces (bcc); + + g_ptr_array_add (interfaces, TP_IFACE_CALL_CONTENT_INTERFACE_MEDIA); + + if (tp_base_call_content_get_media_type (bcc) == TP_MEDIA_STREAM_TYPE_AUDIO) + g_ptr_array_add (interfaces, TP_IFACE_CALL_CONTENT_INTERFACE_DTMF); + + return interfaces; +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-media-call-content.h telepathy-glib-0.17.5/telepathy-glib/base-media-call-content.h --- telepathy-glib-0.17.4/telepathy-glib/base-media-call-content.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-media-call-content.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,85 @@ +/* + * base-media-call-content.h - Header for TpBaseMediaCallContent + * Copyright (C) 2009-2011 Collabora Ltd. + * @author Sjoerd Simons + * @author Xavier Claessens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __TP_BASE_MEDIA_CALL_CONTENT_H__ +#define __TP_BASE_MEDIA_CALL_CONTENT_H__ + +#include + +#include +#include + +G_BEGIN_DECLS + +typedef struct _TpBaseMediaCallContent TpBaseMediaCallContent; +typedef struct _TpBaseMediaCallContentPrivate TpBaseMediaCallContentPrivate; +typedef struct _TpBaseMediaCallContentClass TpBaseMediaCallContentClass; + +struct _TpBaseMediaCallContentClass { + /**/ + TpBaseCallContentClass parent_class; + + gpointer future[4]; +}; + +struct _TpBaseMediaCallContent { + /**/ + TpBaseCallContent parent; + + TpBaseMediaCallContentPrivate *priv; +}; + +GType tp_base_media_call_content_get_type (void); + +/* TYPE MACROS */ +#define TP_TYPE_BASE_MEDIA_CALL_CONTENT \ + (tp_base_media_call_content_get_type ()) +#define TP_BASE_MEDIA_CALL_CONTENT(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), \ + TP_TYPE_BASE_MEDIA_CALL_CONTENT, TpBaseMediaCallContent)) +#define TP_BASE_MEDIA_CALL_CONTENT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + TP_TYPE_BASE_MEDIA_CALL_CONTENT, TpBaseMediaCallContentClass)) +#define TP_IS_BASE_MEDIA_CALL_CONTENT(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TYPE_BASE_MEDIA_CALL_CONTENT)) +#define TP_IS_BASE_MEDIA_CALL_CONTENT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TYPE_BASE_MEDIA_CALL_CONTENT)) +#define TP_BASE_MEDIA_CALL_CONTENT_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + TP_TYPE_BASE_MEDIA_CALL_CONTENT, TpBaseMediaCallContentClass)) + +GHashTable *tp_base_media_call_content_get_local_media_description ( + TpBaseMediaCallContent *self, + TpHandle contact); + +void tp_base_media_call_content_offer_media_description_async ( + TpBaseMediaCallContent *self, + TpCallContentMediaDescription *md, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_base_media_call_content_offer_media_description_finish ( + TpBaseMediaCallContent *self, + GAsyncResult *result, + GError **error); + +G_END_DECLS + +#endif /* #ifndef __TP_BASE_MEDIA_CALL_CONTENT_H__*/ diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-media-call-stream.c telepathy-glib-0.17.5/telepathy-glib/base-media-call-stream.c --- telepathy-glib-0.17.4/telepathy-glib/base-media-call-stream.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-media-call-stream.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,1432 @@ +/* + * base-media-call-stream.c - Source for TpBaseMediaCallStream + * Copyright (C) 2009-2011 Collabora Ltd. + * @author Sjoerd Simons + * @author Jonny Lamb + * @author David Laban + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:base-media-call-stream + * @title: TpBaseMediaCallStream + * @short_description: base class for #TpSvcCallStreamInterfaceMedia + * implementations + * @see_also: #TpSvcCallStreamInterfaceMedia, #TpBaseCallChannel, + * #TpBaseCallStream and #TpBaseCallContent + * + * This base class makes it easier to write #TpSvcCallStreamInterfaceMedia + * implementations by implementing some of its properties and methods. + * + * Subclasses must still implement #TpBaseCallStream's virtual methods plus + * #TpBaseMediaCallStreamClass.add_local_candidates and + * #TpBaseMediaCallStreamClass.finish_initial_candidates. + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallStream: + * + * A base class for media call stream implementations + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallStreamClass: + * @report_sending_failure: optional; called to indicate a failure in the + * outgoing portion of the stream + * @report_receiving_failure: optional; called to indicate a failure in the + * incoming portion of the stream + * @add_local_candidates: mandatory; called when new candidates are added + * @finish_initial_candidates: optional; called when the initial batch of + * candidates has been added, and should now be processed/sent to the remote + * side + * @request_receiving: optional (see #TpBaseCallStream:can-request-receiving); + * virtual method called when user requested receiving from the given remote + * contact. This virtual method should be implemented instead of + * #TpBaseCallStream.request_receiving + * @set_sending: mandatory; virtual method called when user requested to + * start/stop sending to remote contacts. This virtual method should be + * implemented instead of #TpBaseCallStream.set_sending + * + * The class structure for #TpBaseMediaCallStream + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallStreamFinishInitialCandidatesFunc: + * @self: a #TpBaseMediaCallStream + * @error: a #GError to fill + * + * Signature of an implementation of + * #TpBaseMediaCallStreamClass.finish_initial_candidates. + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallStreamAddCandidatesFunc: + * @self: a #TpBaseMediaCallStream + * @candidates: a #GPtrArray of #GValueArray containing candidates info + * @error: a #GError to fill + * + * Signature of an implementation of + * #TpBaseMediaCallStreamClass.add_local_candidates. + * + * Implementation should validate the added @candidates and return a subset + * (or all) of them that are accepted. Implementation should return a new + * #GPtrArray build in a way that g_ptr_array_unref() is enough to free all its + * memory. It is fine to just add element pointers from @candidates to the + * returned #GPtrArray without deep-copy them. + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallStreamReportFailureFunc: + * @self: a #TpBaseMediaCallStream + * @old_state: the previous #TpStreamFlowState + * @reason: the #TpCallStateChangeReason of the change + * @dbus_reason: a specific reason for the change, which may be a D-Bus error in + * the Telepathy namespace, a D-Bus error in any other namespace (for + * implementation-specific errors), or the empty string to indicate that the + * state change was not an error. + * @message: an optional debug message, to expediate debugging the potentially + * many processes involved in a call. + * + * Signature of an implementation of + * #TpBaseMediaCallStreamClass.report_sending_failure and + * #TpBaseMediaCallStreamClass.report_receiving_failure. + * + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallStreamSetSendingFunc: + * @self: a #TpBaseMediaCallStream + * @sending: whether or not user would like to be sending + * @error: a #GError to fill + * + * Signature of an implementation of #TpBaseMediaCallStreamClass.set_sending. + * + * Returns: %TRUE on success, %FALSE otherwise. + * Since: 0.17.5 + */ + +/** + * TpBaseMediaCallStreamRequestReceivingFunc: + * @self: a #TpBaseMediaCallStream + * @contact: the contact from who user wants to start or stop receiving + * @receive: wheter or not user would like to be receiving + * + * Signature of an implementation of + * #TpBaseMediaCallStreamClass.request_receiving. + * + * Since: 0.17.5 + */ + +#include "config.h" + +#include "base-media-call-stream.h" + +#define DEBUG_FLAG TP_DEBUG_CALL +#include "telepathy-glib/base-call-content.h" +#include "telepathy-glib/base-call-channel.h" +#include "telepathy-glib/base-call-internal.h" +#include "telepathy-glib/base-channel.h" +#include "telepathy-glib/base-connection.h" +#include "telepathy-glib/base-media-call-channel.h" +#include "telepathy-glib/call-stream-endpoint.h" +#include "telepathy-glib/dbus.h" +#include "telepathy-glib/debug-internal.h" +#include "telepathy-glib/enums.h" +#include "telepathy-glib/gtypes.h" +#include "telepathy-glib/interfaces.h" +#include "telepathy-glib/svc-properties-interface.h" +#include "telepathy-glib/svc-call.h" +#include "telepathy-glib/util.h" + +static void call_stream_media_iface_init (gpointer, gpointer); + +G_DEFINE_ABSTRACT_TYPE_WITH_CODE (TpBaseMediaCallStream, + tp_base_media_call_stream, TP_TYPE_BASE_CALL_STREAM, + + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CALL_STREAM_INTERFACE_MEDIA, + call_stream_media_iface_init) + ) + +/* properties */ +enum +{ + PROP_SENDING_STATE = 1, + PROP_RECEIVING_STATE, + PROP_TRANSPORT, + PROP_LOCAL_CANDIDATES, + PROP_LOCAL_CREDENTIALS, + PROP_STUN_SERVERS, + PROP_RELAY_INFO, + PROP_HAS_SERVER_INFO, + PROP_ENDPOINTS, + PROP_ICE_RESTART_PENDING +}; + +/* private structure */ +struct _TpBaseMediaCallStreamPrivate +{ + TpStreamFlowState sending_state; + TpStreamFlowState receiving_state; + TpStreamTransportType transport; + /* GPtrArray of owned GValueArray (dbus struct) */ + GPtrArray *local_candidates; + gchar *username; + gchar *password; + /* GPtrArray of owned GValueArray (dbus struct) */ + GPtrArray *stun_servers; + /* GPtrArray of reffed GHashTable (asv) */ + GPtrArray *relay_info; + gboolean has_server_info; + /* GList of reffed TpCallStreamEndpoint */ + GList *endpoints; + gboolean ice_restart_pending; + /* Intset of TpHandle that have requested to receive */ + TpIntset *receiving_requests; + + gboolean local_sending; + gboolean remotely_held; +}; + +static GPtrArray *tp_base_media_call_stream_get_interfaces ( + TpBaseCallStream *bcs); +static gboolean tp_base_media_call_stream_request_receiving ( + TpBaseCallStream *bcs, + TpHandle contact, + gboolean receive, + GError **error); +static gboolean tp_base_media_call_stream_set_sending (TpBaseCallStream *self, + gboolean sending, + GError **error); + +static void +tp_base_media_call_stream_init (TpBaseMediaCallStream *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + TP_TYPE_BASE_MEDIA_CALL_STREAM, TpBaseMediaCallStreamPrivate); + + self->priv->local_candidates = g_ptr_array_new_with_free_func ( + (GDestroyNotify) g_value_array_free); + self->priv->username = g_strdup (""); + self->priv->password = g_strdup (""); + self->priv->receiving_requests = tp_intset_new (); + self->priv->sending_state = TP_STREAM_FLOW_STATE_STOPPED; + self->priv->receiving_state = TP_STREAM_FLOW_STATE_STOPPED; + + g_signal_connect (self, "notify::remote-members", + G_CALLBACK (tp_base_media_call_stream_update_receiving_state), NULL); +} + +static void +endpoints_list_destroy (GList *endpoints) +{ + g_list_free_full (endpoints, g_object_unref); +} + +static void +tp_base_media_call_stream_dispose (GObject *object) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (object); + + tp_clear_pointer (&self->priv->endpoints, endpoints_list_destroy); + + if (G_OBJECT_CLASS (tp_base_media_call_stream_parent_class)->dispose) + G_OBJECT_CLASS (tp_base_media_call_stream_parent_class)->dispose (object); +} + +static void +tp_base_media_call_stream_finalize (GObject *object) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (object); + + tp_clear_pointer (&self->priv->local_candidates, g_ptr_array_unref); + tp_clear_pointer (&self->priv->stun_servers, g_ptr_array_unref); + tp_clear_pointer (&self->priv->relay_info, g_ptr_array_unref); + tp_clear_pointer (&self->priv->username, g_free); + tp_clear_pointer (&self->priv->password, g_free); + tp_clear_pointer (&self->priv->receiving_requests, tp_intset_destroy); + + G_OBJECT_CLASS (tp_base_media_call_stream_parent_class)->finalize (object); +} + +static void +tp_base_media_call_stream_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (object); + + switch (property_id) + { + case PROP_SENDING_STATE: + g_value_set_uint (value, self->priv->sending_state); + break; + case PROP_RECEIVING_STATE: + g_value_set_uint (value, self->priv->receiving_state); + break; + case PROP_TRANSPORT: + g_value_set_uint (value, self->priv->transport); + break; + case PROP_LOCAL_CANDIDATES: + g_value_set_boxed (value, self->priv->local_candidates); + break; + case PROP_LOCAL_CREDENTIALS: + { + g_value_take_boxed (value, tp_value_array_build (2, + G_TYPE_STRING, self->priv->username, + G_TYPE_STRING, self->priv->password, + G_TYPE_INVALID)); + break; + } + case PROP_STUN_SERVERS: + { + if (self->priv->stun_servers != NULL) + g_value_set_boxed (value, self->priv->stun_servers); + else + g_value_take_boxed (value, g_ptr_array_new ()); + break; + } + case PROP_RELAY_INFO: + { + if (self->priv->relay_info != NULL) + g_value_set_boxed (value, self->priv->relay_info); + else + g_value_take_boxed (value, g_ptr_array_new ()); + break; + } + case PROP_HAS_SERVER_INFO: + g_value_set_boolean (value, self->priv->has_server_info); + break; + case PROP_ENDPOINTS: + { + GPtrArray *arr = g_ptr_array_sized_new (1); + GList *l; + + for (l = self->priv->endpoints; l != NULL; l = g_list_next (l)) + { + TpCallStreamEndpoint *e = l->data; + + g_ptr_array_add (arr, + g_strdup (tp_call_stream_endpoint_get_object_path (e))); + } + + g_value_take_boxed (value, arr); + break; + } + case PROP_ICE_RESTART_PENDING: + g_value_set_boolean (value, self->priv->ice_restart_pending); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_base_media_call_stream_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (object); + + switch (property_id) + { + case PROP_TRANSPORT: + self->priv->transport = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_base_media_call_stream_class_init (TpBaseMediaCallStreamClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *param_spec; + TpBaseCallStreamClass *bcs_class = TP_BASE_CALL_STREAM_CLASS (klass); + + static TpDBusPropertiesMixinPropImpl stream_media_props[] = { + { "SendingState", "sending-state", NULL }, + { "ReceivingState", "receiving-state", NULL }, + { "Transport", "transport", NULL }, + { "LocalCandidates", "local-candidates", NULL }, + { "LocalCredentials", "local-credentials", NULL }, + { "STUNServers", "stun-servers", NULL }, + { "RelayInfo", "relay-info", NULL }, + { "HasServerInfo", "has-server-info", NULL }, + { "Endpoints", "endpoints", NULL }, + { "ICERestartPending", "ice-restart-pending", NULL }, + { NULL } + }; + + g_type_class_add_private (klass, sizeof (TpBaseMediaCallStreamPrivate)); + + object_class->set_property = tp_base_media_call_stream_set_property; + object_class->get_property = tp_base_media_call_stream_get_property; + object_class->dispose = tp_base_media_call_stream_dispose; + object_class->finalize = tp_base_media_call_stream_finalize; + + bcs_class->get_interfaces = tp_base_media_call_stream_get_interfaces; + bcs_class->request_receiving = tp_base_media_call_stream_request_receiving; + bcs_class->set_sending = tp_base_media_call_stream_set_sending; + + /** + * TpBaseMediaCallStream:sending-state: + * + * The sending #TpStreamFlowState. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("sending-state", "SendingState", + "The sending state", + 0, G_MAXUINT, TP_STREAM_FLOW_STATE_STOPPED, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_SENDING_STATE, + param_spec); + + /** + * TpBaseMediaCallStream:receiving-state: + * + * The receiving #TpStreamFlowState. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("receiving-state", "ReceivingState", + "The receiving state", + 0, G_MAXUINT, TP_STREAM_FLOW_STATE_STOPPED, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_RECEIVING_STATE, + param_spec); + + /** + * TpBaseMediaCallStream:transport: + * + * The #TpStreamTransportType of this stream. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("transport", "Transport", + "The transport type of this stream", + 0, G_MAXUINT, TP_STREAM_TRANSPORT_TYPE_UNKNOWN, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_TRANSPORT, + param_spec); + + /** + * TpBaseMediaCallStream:local-candidates: + * + * #GPtrArray{candidate #GValueArray} + * List of local candidates. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("local-candidates", "LocalCandidates", + "List of local candidates", + TP_ARRAY_TYPE_CANDIDATE_LIST, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_LOCAL_CANDIDATES, + param_spec); + + /** + * TpBaseMediaCallStream:local-credentials: + * + * #GValueArray{username string, password string} + * ufrag and pwd as defined by ICE. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("local-credentials", "LocalCredentials", + "ufrag and pwd as defined by ICE", + TP_STRUCT_TYPE_STREAM_CREDENTIALS, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_LOCAL_CREDENTIALS, + param_spec); + + /** + * TpBaseMediaCallStream:stun-servers: + * + * #GPtrArray{stun-server #GValueArray} + * List of STUN servers. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("stun-servers", "STUNServers", + "List of STUN servers", + TP_ARRAY_TYPE_SOCKET_ADDRESS_IP_LIST, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_STUN_SERVERS, + param_spec); + + /** + * TpBaseMediaCallStream:relay-info: + * + * #GPtrArray{relay-info asv} + * List of relay information. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("relay-info", "RelayInfo", + "List of relay information", + TP_ARRAY_TYPE_STRING_VARIANT_MAP_LIST, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_RELAY_INFO, + param_spec); + + /** + * TpBaseMediaCallStream:has-server-info: + * + * %TRUE if #TpBaseMediaCallStream:relay-info and + * #TpBaseMediaCallStream:stun-servers have been set. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("has-server-info", "HasServerInfo", + "True if the server information about STUN and " + "relay servers has been retrieved", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_HAS_SERVER_INFO, + param_spec); + + /** + * TpBaseMediaCallStream:endpoints: + * + * #GPtrArray{object-path string} + * The endpoints of this content. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("endpoints", "Endpoints", + "The endpoints of this content", + TP_ARRAY_TYPE_OBJECT_PATH_LIST, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_ENDPOINTS, + param_spec); + + /** + * TpBaseMediaCallStream:ice-restart-pending: + * + * %TRUE when ICERestartRequested signal is emitted, and %FALSE when + * SetCredentials is called. Useful for debugging. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("ice-restart-pending", "ICERestartPending", + "True when ICERestartRequested signal is emitted, and False when " + "SetCredentials is called. Useful for debugging", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_ICE_RESTART_PENDING, + param_spec); + + tp_dbus_properties_mixin_implement_interface (object_class, + TP_IFACE_QUARK_CALL_STREAM_INTERFACE_MEDIA, + tp_dbus_properties_mixin_getter_gobject_properties, + NULL, + stream_media_props); +} + +/** + * tp_base_media_call_stream_get_username: + * @self: a #TpBaseMediaCallStream + * + * + * + * Returns: the username part of #TpBaseMediaCallStream:local-credentials + * Since: 0.17.5 + */ +const gchar * +tp_base_media_call_stream_get_username (TpBaseMediaCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self), NULL); + + return self->priv->username; +} + +/** + * tp_base_media_call_stream_get_password: + * @self: a #TpBaseMediaCallStream + * + * + * + * Returns: the password part of #TpBaseMediaCallStream:local-credentials + * Since: 0.17.5 + */ +const gchar * +tp_base_media_call_stream_get_password (TpBaseMediaCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self), NULL); + + return self->priv->password; +} + +static void +maybe_got_server_info (TpBaseMediaCallStream *self) +{ + if (self->priv->has_server_info || + self->priv->stun_servers == NULL || + self->priv->relay_info == NULL) + return; + + DEBUG ("Got server info for stream %s", + tp_base_call_stream_get_object_path ((TpBaseCallStream *) self)); + + self->priv->has_server_info = TRUE; + tp_svc_call_stream_interface_media_emit_server_info_retrieved (self); +} + +/** + * tp_base_media_call_stream_set_stun_servers: + * @self: a #TpBaseMediaCallStream + * @stun_servers: the new stun servers + * + * Set the STUN servers. The #GPtrArray should have a free_func defined such as + * g_ptr_array_ref() is enough to keep the data and g_ptr_array_unref() is + * enough to release it later. + * + * Note that this replaces the previously set STUN servers, it is not an + * addition. + * + * Since: 0.17.5 + */ +void +tp_base_media_call_stream_set_stun_servers (TpBaseMediaCallStream *self, + GPtrArray *stun_servers) +{ + g_return_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self)); + g_return_if_fail (stun_servers != NULL); + + tp_clear_pointer (&self->priv->stun_servers, g_ptr_array_unref); + self->priv->stun_servers = g_ptr_array_ref (stun_servers); + + tp_svc_call_stream_interface_media_emit_stun_servers_changed (self, + self->priv->stun_servers); + + maybe_got_server_info (self); +} + +/** + * tp_base_media_call_stream_set_relay_info: + * @self: a #TpBaseMediaCallStream + * @relays: the new relays info + * + * Set the relays info. The #GPtrArray should have a free_func defined such as + * g_ptr_array_ref() is enough to keep the data and g_ptr_array_unref() is + * enough to release it later. + * + * Note that this replaces the previously set relays, it is not an addition. + * + * Since: 0.17.5 + */ +void +tp_base_media_call_stream_set_relay_info (TpBaseMediaCallStream *self, + GPtrArray *relays) +{ + g_return_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self)); + g_return_if_fail (relays != NULL); + + tp_clear_pointer (&self->priv->relay_info, g_ptr_array_unref); + self->priv->relay_info = g_ptr_array_ref (relays); + + tp_svc_call_stream_interface_media_emit_relay_info_changed (self, + self->priv->relay_info); + + maybe_got_server_info (self); +} + +/** + * tp_base_media_call_stream_add_endpoint: + * @self: a #TpBaseMediaCallStream + * @endpoint: a #TpCallStreamEndpoint + * + * Add @endpoint to #TpBaseMediaCallStream:endpoints list, and emits + * EndpointsChanged DBus signal. + * + * Since: 0.17.5 + */ +void +tp_base_media_call_stream_add_endpoint (TpBaseMediaCallStream *self, + TpCallStreamEndpoint *endpoint) +{ + const gchar *object_path; + GPtrArray *added; + GPtrArray *removed; + + g_return_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self)); + g_return_if_fail (TP_IS_CALL_STREAM_ENDPOINT (endpoint)); + + _tp_call_stream_endpoint_set_stream (endpoint, self); + + object_path = tp_call_stream_endpoint_get_object_path (endpoint); + DEBUG ("Add endpoint %s to stream %s", object_path, + tp_base_call_stream_get_object_path ((TpBaseCallStream *) self)); + + self->priv->endpoints = g_list_append (self->priv->endpoints, + g_object_ref (endpoint)); + + added = g_ptr_array_new (); + removed = g_ptr_array_new (); + g_ptr_array_add (added, (gpointer) object_path); + + tp_svc_call_stream_interface_media_emit_endpoints_changed (self, + added, removed); + + g_ptr_array_unref (added); + g_ptr_array_unref (removed); +} + + +/** + * tp_base_media_call_stream_remove_endpoint: + * @self: a #TpBaseMediaCallStream + * @endpoint: a #TpCallStreamEndpoint + * + * Remove @endpoint from #TpBaseMediaCallStream:endpoints list, and emits + * EndpointsChanged DBus signal. + * + * Since: 0.17.5 + */ +void +tp_base_media_call_stream_remove_endpoint (TpBaseMediaCallStream *self, + TpCallStreamEndpoint *endpoint) +{ + const gchar *object_path; + GPtrArray *added; + GPtrArray *removed; + + g_return_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self)); + g_return_if_fail (TP_IS_CALL_STREAM_ENDPOINT (endpoint)); + g_return_if_fail (g_list_find (self->priv->endpoints, endpoint) != NULL); + + object_path = tp_call_stream_endpoint_get_object_path (endpoint); + DEBUG ("Remove endpoint %s from stream %s", object_path, + tp_base_call_stream_get_object_path ((TpBaseCallStream *) self)); + + self->priv->endpoints = g_list_remove (self->priv->endpoints, + endpoint); + + added = g_ptr_array_new (); + removed = g_ptr_array_new (); + g_ptr_array_add (removed, (gpointer) object_path); + + tp_svc_call_stream_interface_media_emit_endpoints_changed (self, + added, removed); + + g_ptr_array_unref (added); + g_ptr_array_unref (removed); + g_object_unref (endpoint); +} + +/** + * tp_base_media_call_stream_get_endpoints: + * @self: a #TpBaseMediaCallStream + * + * Same as #TpBaseMediaCallStream:endpoints but as a #GList of + * #TpCallStreamEndpoint. + * + * Returns: Borrowed #GList of #TpCallStreamEndpoint. + * Since: 0.17.5 + */ +GList * +tp_base_media_call_stream_get_endpoints (TpBaseMediaCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self), NULL); + + return self->priv->endpoints; +} + +static const char * +stream_flow_state_to_string (TpStreamFlowState state) +{ + const char *str = "INVALID"; + + switch (state) + { + case TP_STREAM_FLOW_STATE_STOPPED: + str = "STOPPED"; + break; + case TP_STREAM_FLOW_STATE_PENDING_START: + str = "PENDING_START"; + break; + case TP_STREAM_FLOW_STATE_PENDING_STOP: + str = "PENDING_STOP"; + break; + case TP_STREAM_FLOW_STATE_STARTED: + str = "STARTED"; + break; + } + + return str; +} + +static gboolean +ignore_state_change (TpStreamFlowState old_state, + TpStreamFlowState new_state) +{ + if ((old_state == new_state) || + (new_state == TP_STREAM_FLOW_STATE_PENDING_START && + old_state == TP_STREAM_FLOW_STATE_STARTED) || + (new_state == TP_STREAM_FLOW_STATE_PENDING_STOP && + old_state == TP_STREAM_FLOW_STATE_STOPPED)) + return TRUE; + + return FALSE; +} + +static void +set_sending_state (TpBaseMediaCallStream *self, + TpStreamFlowState state) +{ + if (ignore_state_change (self->priv->sending_state, state)) + return; + + DEBUG ("%s => %s (path: %s)", + stream_flow_state_to_string (self->priv->sending_state), + stream_flow_state_to_string (state), + tp_base_call_stream_get_object_path (TP_BASE_CALL_STREAM (self))); + + self->priv->sending_state = state; + g_object_notify (G_OBJECT (self), "sending-state"); + + tp_svc_call_stream_interface_media_emit_sending_state_changed (self, state); +} + +/** + * tp_base_media_call_stream_update_sending_state: + * @self: a #TpBaseMediaCallStream + * + * Update the sending state. + * + * Since: 0.17.5 + */ +void +tp_base_media_call_stream_update_sending_state (TpBaseMediaCallStream *self) +{ + TpBaseCallChannel *channel = _tp_base_call_stream_get_channel ( + TP_BASE_CALL_STREAM (self)); + gboolean sending = FALSE; + + if (channel == NULL) + goto done; + + if (TP_IS_BASE_MEDIA_CALL_CHANNEL (channel)) + { + TpBaseMediaCallChannel *mediachan = TP_BASE_MEDIA_CALL_CHANNEL (channel); + + if (_tp_base_media_channel_is_held (mediachan)) + goto done; + } + + if (self->priv->remotely_held) + goto done; + + sending = self->priv->local_sending; + +done: + + if (sending) + set_sending_state (self, TP_STREAM_FLOW_STATE_PENDING_START); + else + set_sending_state (self, TP_STREAM_FLOW_STATE_PENDING_STOP); +} + +/** + * tp_base_media_call_stream_get_sending_state: + * @self: a #TpBaseMediaCallStream + * + * + * + * Returns: the value of #TpBaseMediaCallStream:sending-state. + * Since: 0.17.5 + */ +TpStreamFlowState +tp_base_media_call_stream_get_sending_state (TpBaseMediaCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self), + TP_STREAM_FLOW_STATE_STOPPED); + + return self->priv->sending_state; +} + +/** + * tp_base_media_call_stream_set_local_sending: + * @self: a #TpBaseMediaCallStream + * @sending: whether or not we are sending + * + * Set local sending state. + * + * Since: 0.17.5 + */ +void +tp_base_media_call_stream_set_local_sending (TpBaseMediaCallStream *self, + gboolean sending) +{ + g_return_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self)); + + if (sending == self->priv->local_sending) + return; + + self->priv->local_sending = sending; + + tp_base_media_call_stream_update_sending_state (self); +} + +void +_tp_base_media_call_stream_set_remotely_held (TpBaseMediaCallStream *self, + gboolean remotely_held) +{ + g_return_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self)); + + if (remotely_held == self->priv->remotely_held) + return; + + self->priv->remotely_held = remotely_held; + + tp_base_media_call_stream_update_sending_state (self); +} + +static void +set_receiving_state (TpBaseMediaCallStream *self, + TpStreamFlowState state) +{ + if (ignore_state_change (self->priv->receiving_state, state)) + return; + + DEBUG ("%s => %s (path: %s)", + stream_flow_state_to_string (self->priv->receiving_state), + stream_flow_state_to_string (state), + tp_base_call_stream_get_object_path (TP_BASE_CALL_STREAM (self))); + + self->priv->receiving_state = state; + g_object_notify (G_OBJECT (self), "receiving-state"); + + tp_svc_call_stream_interface_media_emit_receiving_state_changed (self, state); +} + +/** + * tp_base_media_call_stream_update_receiving_state: + * @self: a #TpBaseMediaCallStream + * + * Update the receiving state. + * + * Since: 0.17.5 + */ +void +tp_base_media_call_stream_update_receiving_state (TpBaseMediaCallStream *self) +{ + TpBaseCallStream *bcs = TP_BASE_CALL_STREAM (self); + GHashTable *remote_members = _tp_base_call_stream_get_remote_members (bcs); + GHashTableIter iter; + gpointer key, value; + gboolean remote_sending = FALSE; + TpBaseCallChannel *channel = _tp_base_call_stream_get_channel (bcs); + + if (channel == NULL || !_tp_base_call_channel_is_locally_accepted (channel)) + goto done; + + if (TP_IS_BASE_MEDIA_CALL_CHANNEL (channel)) + { + TpBaseMediaCallChannel *mediachan = TP_BASE_MEDIA_CALL_CHANNEL (channel); + + if (_tp_base_media_channel_is_held (mediachan)) + goto done; + } + + g_hash_table_iter_init (&iter, remote_members); + while (g_hash_table_iter_next (&iter, &key, &value)) + { + TpSendingState state = GPOINTER_TO_UINT (value); + + switch (state) + { + case TP_SENDING_STATE_SENDING: + case TP_SENDING_STATE_PENDING_SEND: + remote_sending = TRUE; + break; + case TP_SENDING_STATE_PENDING_STOP_SENDING: + case TP_SENDING_STATE_NONE: + break; + default: + g_assert_not_reached (); + } + if (remote_sending) + break; + } + +done: + + if (remote_sending) + set_receiving_state (self, TP_STREAM_FLOW_STATE_PENDING_START); + else + set_receiving_state (self, TP_STREAM_FLOW_STATE_PENDING_STOP); +} + +/** + * tp_base_media_call_stream_get_receiving_state: + * @self: a #TpBaseMediaCallStream + * + * + * + * Returns: the value of #TpBaseMediaCallStream:receiving-state. + * Since: 0.17.5 + */ +TpStreamFlowState +tp_base_media_call_stream_get_receiving_state (TpBaseMediaCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self), + TP_STREAM_FLOW_STATE_STOPPED); + + return self->priv->receiving_state; +} + +/** + * tp_base_media_call_stream_get_local_candidates: + * @self: a #TpBaseMediaCallStream + * + * + * + * Returns: the value of #TpBaseMediaCallStream:local-candidates as a #GtrArray + * Since: 0.17.5 + */ +GPtrArray * +tp_base_media_call_stream_get_local_candidates (TpBaseMediaCallStream *self) +{ + g_return_val_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (self), NULL); + + return self->priv->local_candidates; +} + + +/* TpBaseCallStreamClass virtual methods implementation */ + +static gboolean +tp_base_media_call_stream_set_sending (TpBaseCallStream *bcs, + gboolean sending, + GError **error) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (bcs); + TpBaseMediaCallStreamClass *klass = + TP_BASE_MEDIA_CALL_STREAM_GET_CLASS (self); + + if (sending) + { + if (klass->set_sending != NULL && + !klass->set_sending (self, sending, error)) + return FALSE; + } + else + { + tp_base_media_call_stream_set_local_sending (self, FALSE); + + /* Already stopped, lets call the callback directly */ + if (self->priv->sending_state == TP_STREAM_FLOW_STATE_STOPPED && + klass->set_sending != NULL) + return klass->set_sending (self, sending, error); + } + + return TRUE; +} + +static GPtrArray * +tp_base_media_call_stream_get_interfaces (TpBaseCallStream *bcs) +{ + GPtrArray *interfaces; + + interfaces = TP_BASE_CALL_STREAM_CLASS ( + tp_base_media_call_stream_parent_class)->get_interfaces (bcs); + + g_ptr_array_add (interfaces, TP_IFACE_CALL_STREAM_INTERFACE_MEDIA); + + return interfaces; +} + +static gboolean +tp_base_media_call_stream_request_receiving (TpBaseCallStream *bcs, + TpHandle contact, + gboolean receive, + GError **error) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (bcs); + TpBaseMediaCallStreamClass *klass = + TP_BASE_MEDIA_CALL_STREAM_GET_CLASS (self); + TpBaseCallChannel *channel = _tp_base_call_stream_get_channel (bcs); + + if (receive) + { + tp_base_call_stream_update_remote_sending_state (bcs, contact, + TP_SENDING_STATE_PENDING_SEND, + tp_base_channel_get_self_handle (TP_BASE_CHANNEL (channel)), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + "User asked the remote side to start sending"); + + if (self->priv->receiving_state == TP_STREAM_FLOW_STATE_STARTED) + { + if (klass->request_receiving != NULL) + { + klass->request_receiving (self, contact, TRUE); + return TRUE; + } + } + + tp_intset_add (self->priv->receiving_requests, contact); + + tp_base_media_call_stream_update_receiving_state (self); + } + else + { + tp_base_call_stream_update_remote_sending_state (bcs, contact, + TP_SENDING_STATE_PENDING_STOP_SENDING, + tp_base_channel_get_self_handle (TP_BASE_CHANNEL (channel)), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + "User asked the remote side to stop sending"); + + tp_intset_remove (self->priv->receiving_requests, contact); + + if (klass->request_receiving != NULL) + klass->request_receiving (self, contact, FALSE); + } + + return TRUE; +} + +/* DBus method implementation */ + +static gboolean +correct_state_transition (TpStreamFlowState old_state, + TpStreamFlowState new_state) +{ + switch (new_state) + { + case TP_STREAM_FLOW_STATE_STARTED: + return (old_state == TP_STREAM_FLOW_STATE_PENDING_START); + case TP_STREAM_FLOW_STATE_STOPPED: + return (old_state == TP_STREAM_FLOW_STATE_PENDING_STOP); + default: + return FALSE; + } +} + +static void +tp_base_media_call_stream_complete_sending_state_change ( + TpSvcCallStreamInterfaceMedia *iface, + TpStreamFlowState state, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (iface); + TpBaseMediaCallStreamClass *klass = + TP_BASE_MEDIA_CALL_STREAM_GET_CLASS (self); + TpBaseCallChannel *channel = _tp_base_call_stream_get_channel ( + TP_BASE_CALL_STREAM (self)); + + if (!correct_state_transition (self->priv->sending_state, state)) + { + GError e = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Invalid sending state transition" }; + dbus_g_method_return_error (context, &e); + return; + } + + self->priv->sending_state = state; + + if (channel != NULL && TP_IS_BASE_MEDIA_CALL_CHANNEL (channel)) + _tp_base_media_call_channel_streams_sending_state_changed ( + TP_BASE_MEDIA_CALL_CHANNEL (channel), TRUE); + + if (state == TP_STREAM_FLOW_STATE_STOPPED && + klass->set_sending != NULL) + klass->set_sending (self, FALSE, NULL); + + tp_svc_call_stream_interface_media_emit_sending_state_changed (self, state); + tp_svc_call_stream_interface_media_return_from_complete_sending_state_change + (context); +} + +static void +tp_base_media_call_stream_report_sending_failure ( + TpSvcCallStreamInterfaceMedia *iface, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (iface); + TpBaseMediaCallStreamClass *klass = + TP_BASE_MEDIA_CALL_STREAM_GET_CLASS (self); + TpStreamFlowState old_state = self->priv->sending_state; + TpBaseCallChannel *channel = _tp_base_call_stream_get_channel ( + TP_BASE_CALL_STREAM (self)); + + if (self->priv->sending_state == TP_STREAM_FLOW_STATE_STOPPED) + goto done; + + self->priv->sending_state = TP_STREAM_FLOW_STATE_STOPPED; + g_object_notify (G_OBJECT (self), "sending-state"); + + if (channel != NULL && TP_IS_BASE_MEDIA_CALL_CHANNEL (channel)) + _tp_base_media_call_channel_streams_sending_state_changed ( + TP_BASE_MEDIA_CALL_CHANNEL (channel), FALSE); + + if (klass->report_sending_failure != NULL) + klass->report_sending_failure (self, old_state, reason, dbus_reason, + message); + + tp_svc_call_stream_interface_media_emit_sending_state_changed (self, + self->priv->sending_state); + +done: + tp_svc_call_stream_interface_media_return_from_report_sending_failure ( + context); +} + +static void +tp_base_media_call_stream_complete_receiving_state_change ( + TpSvcCallStreamInterfaceMedia *iface, + TpStreamFlowState state, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (iface); + TpBaseMediaCallStreamClass *klass = + TP_BASE_MEDIA_CALL_STREAM_GET_CLASS (self); + TpBaseCallChannel *channel = _tp_base_call_stream_get_channel ( + TP_BASE_CALL_STREAM (self)); + + if (!correct_state_transition (self->priv->receiving_state, state)) + { + GError e = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Invalid receiving state transition" }; + dbus_g_method_return_error (context, &e); + return; + } + + self->priv->receiving_state = state; + g_object_notify (G_OBJECT (self), "receiving-state"); + + if (channel != NULL && TP_IS_BASE_MEDIA_CALL_CHANNEL (channel)) + _tp_base_media_call_channel_streams_receiving_state_changed ( + TP_BASE_MEDIA_CALL_CHANNEL (channel), TRUE); + + if (state == TP_STREAM_FLOW_STATE_STARTED) + { + TpIntsetFastIter iter; + TpHandle contact; + + tp_intset_fast_iter_init (&iter, self->priv->receiving_requests); + while (tp_intset_fast_iter_next (&iter, &contact)) + { + if (klass->request_receiving != NULL) + klass->request_receiving (self, contact, TRUE); + } + + tp_intset_clear (self->priv->receiving_requests); + } + + tp_svc_call_stream_interface_media_emit_receiving_state_changed (self, state); + tp_svc_call_stream_interface_media_return_from_complete_receiving_state_change + (context); +} + +static void +tp_base_media_call_stream_report_receiving_failure ( + TpSvcCallStreamInterfaceMedia *iface, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (iface); + TpBaseMediaCallStreamClass *klass = + TP_BASE_MEDIA_CALL_STREAM_GET_CLASS (self); + TpStreamFlowState old_state = self->priv->receiving_state; + TpBaseCallChannel *channel = _tp_base_call_stream_get_channel ( + TP_BASE_CALL_STREAM (self)); + + /* Clear all receving requests, we can't receive */ + tp_intset_clear (self->priv->receiving_requests); + + if (self->priv->receiving_state == TP_STREAM_FLOW_STATE_STOPPED) + goto done; + + self->priv->receiving_state = TP_STREAM_FLOW_STATE_STOPPED; + g_object_notify (G_OBJECT (self), "receiving-state"); + + if (channel != NULL && TP_IS_BASE_MEDIA_CALL_CHANNEL (channel)) + _tp_base_media_call_channel_streams_receiving_state_changed ( + TP_BASE_MEDIA_CALL_CHANNEL (channel), FALSE); + + if (klass->report_receiving_failure != NULL) + klass->report_receiving_failure (self, old_state, + reason, dbus_reason, message); + + tp_svc_call_stream_interface_media_emit_receiving_state_changed (self, + self->priv->receiving_state); + +done: + tp_svc_call_stream_interface_media_return_from_report_receiving_failure ( + context); +} + +static void +tp_base_media_call_stream_set_credentials (TpSvcCallStreamInterfaceMedia *iface, + const gchar *username, + const gchar *password, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (iface); + + g_free (self->priv->username); + g_free (self->priv->password); + self->priv->username = g_strdup (username); + self->priv->password = g_strdup (password); + + tp_clear_pointer (&self->priv->local_candidates, g_ptr_array_unref); + self->priv->local_candidates = g_ptr_array_new_with_free_func ( + (GDestroyNotify) g_value_array_free); + + g_object_notify (G_OBJECT (self), "local-candidates"); + g_object_notify (G_OBJECT (self), "local-credentials"); + + tp_svc_call_stream_interface_media_emit_local_credentials_changed (self, + username, password); + + tp_svc_call_stream_interface_media_return_from_set_credentials (context); +} + +static void +tp_base_media_call_stream_add_candidates (TpSvcCallStreamInterfaceMedia *iface, + const GPtrArray *candidates, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (iface); + TpBaseMediaCallStreamClass *klass = + TP_BASE_MEDIA_CALL_STREAM_GET_CLASS (self); + GPtrArray *accepted_candidates = NULL; + guint i; + GError *error = NULL; + + if (klass->add_local_candidates == NULL) + { + GError e = { TP_ERRORS, TP_ERROR_NOT_IMPLEMENTED, + "Connection Manager did not implement " + "TpBaseMediaCallStream::add_local_candidates vmethod" }; + dbus_g_method_return_error (context, &e); + return; + } + + DEBUG ("Adding %d candidates to stream %s", candidates->len, + tp_base_call_stream_get_object_path ((TpBaseCallStream *) self)); + + accepted_candidates = klass->add_local_candidates (self, candidates, &error); + if (accepted_candidates == NULL) + { + dbus_g_method_return_error (context, error); + g_clear_error (&error); + return; + } + + for (i = 0; i < accepted_candidates->len; i++) + { + GValueArray *c = g_ptr_array_index (accepted_candidates, i); + + g_ptr_array_add (self->priv->local_candidates, + g_value_array_copy (c)); + } + + tp_svc_call_stream_interface_media_emit_local_candidates_added (self, + accepted_candidates); + tp_svc_call_stream_interface_media_return_from_add_candidates (context); + + g_ptr_array_unref (accepted_candidates); +} + +static void +tp_base_media_call_stream_finish_initial_candidates ( + TpSvcCallStreamInterfaceMedia *iface, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (iface); + TpBaseMediaCallStreamClass *klass = + TP_BASE_MEDIA_CALL_STREAM_GET_CLASS (self); + GError *error = NULL; + + if (klass->finish_initial_candidates != NULL) + if (!klass->finish_initial_candidates (self, &error)) + { + dbus_g_method_return_error (context, error); + g_clear_error (&error); + return; + } + + tp_svc_call_stream_interface_media_return_from_finish_initial_candidates ( + context); +} + +static void +tp_base_media_call_stream_fail (TpSvcCallStreamInterfaceMedia *iface, + const GValueArray *reason_array, + DBusGMethodInvocation *context) +{ + TpBaseMediaCallStream *self = TP_BASE_MEDIA_CALL_STREAM (iface); + TpBaseCallStream *base = TP_BASE_CALL_STREAM (self); + TpBaseCallChannel *channel; + TpBaseCallContent *content; + + channel = _tp_base_call_stream_get_channel (base); + content = _tp_base_call_stream_get_content (base); + + _tp_base_call_content_remove_stream_internal (content, base, reason_array); + + /* If it was the last stream, remove the content */ + if (tp_base_call_content_get_streams (content) == NULL) + { + _tp_base_call_channel_remove_content_internal (channel, content, + reason_array); + } + + tp_svc_call_stream_interface_media_return_from_fail (context); +} + +static void +call_stream_media_iface_init (gpointer g_iface, gpointer iface_data) +{ + TpSvcCallStreamInterfaceMediaClass *klass = + (TpSvcCallStreamInterfaceMediaClass *) g_iface; + +#define IMPLEMENT(x) tp_svc_call_stream_interface_media_implement_##x (\ + klass, tp_base_media_call_stream_##x) + IMPLEMENT(complete_sending_state_change); + IMPLEMENT(report_sending_failure); + IMPLEMENT(complete_receiving_state_change); + IMPLEMENT(report_receiving_failure); + IMPLEMENT(set_credentials); + IMPLEMENT(add_candidates); + IMPLEMENT(finish_initial_candidates); + IMPLEMENT(fail); +#undef IMPLEMENT +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-media-call-stream.h telepathy-glib-0.17.5/telepathy-glib/base-media-call-stream.h --- telepathy-glib-0.17.4/telepathy-glib/base-media-call-stream.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-media-call-stream.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,126 @@ +/* + * base-media-call-stream.h - Header for TpBaseMediaCallStream + * Copyright (C) 2009-2011 Collabora Ltd. + * @author Sjoerd Simons + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __TP_BASE_MEDIA_CALL_STREAM_H__ +#define __TP_BASE_MEDIA_CALL_STREAM_H__ + +#include +#include + +G_BEGIN_DECLS + +typedef struct _TpBaseMediaCallStream TpBaseMediaCallStream; +typedef struct _TpBaseMediaCallStreamPrivate TpBaseMediaCallStreamPrivate; +typedef struct _TpBaseMediaCallStreamClass TpBaseMediaCallStreamClass; + +typedef gboolean (*TpBaseMediaCallStreamFinishInitialCandidatesFunc) ( + TpBaseMediaCallStream *self, + GError **error); +typedef GPtrArray *(*TpBaseMediaCallStreamAddCandidatesFunc) ( + TpBaseMediaCallStream *self, + const GPtrArray *candidates, + GError **error); +typedef void (*TpBaseMediaCallStreamReportFailureFunc) ( + TpBaseMediaCallStream *self, + TpStreamFlowState old_state, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + const gchar *message); + +typedef void (*TpBaseMediaCallStreamRequestReceivingFunc) ( + TpBaseMediaCallStream *self, + TpHandle contact, + gboolean receive); +typedef gboolean (*TpBaseMediaCallStreamSetSendingFunc) ( + TpBaseMediaCallStream *self, + gboolean sending, + GError **error); + +struct _TpBaseMediaCallStreamClass { + /**/ + TpBaseCallStreamClass parent_class; + + /*< public >*/ + TpBaseMediaCallStreamReportFailureFunc report_sending_failure; + TpBaseMediaCallStreamReportFailureFunc report_receiving_failure; + TpBaseMediaCallStreamAddCandidatesFunc add_local_candidates; + TpBaseMediaCallStreamFinishInitialCandidatesFunc finish_initial_candidates; + + TpBaseMediaCallStreamRequestReceivingFunc request_receiving; + TpBaseMediaCallStreamSetSendingFunc set_sending; + + /**/ + gpointer future[4]; +}; + +struct _TpBaseMediaCallStream { + /**/ + TpBaseCallStream parent; + + TpBaseMediaCallStreamPrivate *priv; +}; + +GType tp_base_media_call_stream_get_type (void); + +/* TYPE MACROS */ +#define TP_TYPE_BASE_MEDIA_CALL_STREAM \ + (tp_base_media_call_stream_get_type ()) +#define TP_BASE_MEDIA_CALL_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), TP_TYPE_BASE_MEDIA_CALL_STREAM, TpBaseMediaCallStream)) +#define TP_BASE_MEDIA_CALL_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), TP_TYPE_BASE_MEDIA_CALL_STREAM, \ + TpBaseMediaCallStreamClass)) +#define TP_IS_BASE_MEDIA_CALL_STREAM(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TYPE_BASE_MEDIA_CALL_STREAM)) +#define TP_IS_BASE_MEDIA_CALL_STREAM_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TYPE_BASE_MEDIA_CALL_STREAM)) +#define TP_BASE_MEDIA_CALL_STREAM_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TYPE_BASE_MEDIA_CALL_STREAM, \ + TpBaseMediaCallStreamClass)) + +void tp_base_media_call_stream_set_relay_info (TpBaseMediaCallStream *self, + GPtrArray *relays); +void tp_base_media_call_stream_set_stun_servers (TpBaseMediaCallStream *self, + GPtrArray *stun_servers); +void tp_base_media_call_stream_add_endpoint (TpBaseMediaCallStream *self, + TpCallStreamEndpoint *endpoint); +void tp_base_media_call_stream_remove_endpoint (TpBaseMediaCallStream *self, + TpCallStreamEndpoint *endpoint); +GList *tp_base_media_call_stream_get_endpoints (TpBaseMediaCallStream *self); +const gchar *tp_base_media_call_stream_get_username ( + TpBaseMediaCallStream *self); +const gchar *tp_base_media_call_stream_get_password ( + TpBaseMediaCallStream *self); +TpStreamFlowState tp_base_media_call_stream_get_sending_state ( + TpBaseMediaCallStream *self); +TpStreamFlowState tp_base_media_call_stream_get_receiving_state ( + TpBaseMediaCallStream *self); +void tp_base_media_call_stream_update_receiving_state ( + TpBaseMediaCallStream *self); +void tp_base_media_call_stream_update_sending_state ( + TpBaseMediaCallStream *self); +void tp_base_media_call_stream_set_local_sending (TpBaseMediaCallStream *self, + gboolean sending); +GPtrArray *tp_base_media_call_stream_get_local_candidates ( + TpBaseMediaCallStream *self); + +G_END_DECLS + +#endif /* #ifndef __TP_BASE_MEDIA_CALL_STREAM_H__*/ diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-password-channel.c telepathy-glib-0.17.5/telepathy-glib/base-password-channel.c --- telepathy-glib-0.17.4/telepathy-glib/base-password-channel.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-password-channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -52,6 +52,8 @@ * The class of a #TpBasePasswordChannel. */ +#include "config.h" + #include "telepathy-glib/base-password-channel.h" #include @@ -74,11 +76,6 @@ G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CHANNEL_INTERFACE_SASL_AUTHENTICATION, sasl_auth_iface_init)); -static const gchar *tp_base_password_channel_interfaces[] = { - TP_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION, - NULL -}; - static const gchar *tp_base_password_channel_available_mechanisms[] = { "X-TELEPATHY-PASSWORD", NULL @@ -128,6 +125,19 @@ gboolean may_save_response; }; +static GPtrArray * +tp_base_password_channel_get_interfaces (TpBaseChannel *base) +{ + GPtrArray *interfaces; + + interfaces = TP_BASE_CHANNEL_CLASS ( + tp_base_password_channel_parent_class)->get_interfaces (base); + + g_ptr_array_add (interfaces, TP_IFACE_CHANNEL_INTERFACE_SASL_AUTHENTICATION); + + return interfaces; +} + static void tp_base_password_channel_init (TpBasePasswordChannel *self) { @@ -283,7 +293,7 @@ chan_class->channel_type = TP_IFACE_CHANNEL_TYPE_SERVER_AUTHENTICATION; chan_class->target_handle_type = TP_HANDLE_TYPE_NONE; - chan_class->interfaces = tp_base_password_channel_interfaces; + chan_class->get_interfaces = tp_base_password_channel_get_interfaces; chan_class->close = tp_base_password_channel_close; chan_class->fill_immutable_properties = tp_base_password_channel_fill_immutable_properties; diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-protocol.c telepathy-glib-0.17.5/telepathy-glib/base-protocol.c --- telepathy-glib-0.17.4/telepathy-glib/base-protocol.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-protocol.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/base-room-config.c telepathy-glib-0.17.5/telepathy-glib/base-room-config.c --- telepathy-glib-0.17.4/telepathy-glib/base-room-config.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/base-room-config.c 2012-02-20 16:55:59.000000000 +0000 @@ -17,6 +17,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/basic-proxy-factory.c telepathy-glib-0.17.5/telepathy-glib/basic-proxy-factory.c --- telepathy-glib-0.17.4/telepathy-glib/basic-proxy-factory.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/basic-proxy-factory.c 2012-02-20 16:55:59.000000000 +0000 @@ -51,6 +51,8 @@ * Since: 0.13.2 */ +#include "config.h" + #include "telepathy-glib/basic-proxy-factory.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-channel.c telepathy-glib-0.17.5/telepathy-glib/call-channel.c --- telepathy-glib-0.17.4/telepathy-glib/call-channel.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-channel.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,1621 @@ +/* + * call-channel.h - high level API for Call channels + * + * Copyright (C) 2011 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:call-channel + * @title: TpCallChannel + * @short_description: proxy object for a call channel + * + * #TpCallChannel is a sub-class of #TpChannel providing convenient API + * to make calls + */ + +/** + * TpCallChannel: + * + * Data structure representing a #TpCallChannel. + * + * Since: 0.17.5 + */ + +/** + * TpCallChannelClass: + * + * The class of a #TpCallChannel. + * + * Since: 0.17.5 + */ + +#include "config.h" + +#include "telepathy-glib/call-channel.h" + +#include + +#include +#include +#include +#include +#include +#include +#include + +#define DEBUG_FLAG TP_DEBUG_CALL +#include "telepathy-glib/automatic-client-factory-internal.h" +#include "telepathy-glib/call-internal.h" +#include "telepathy-glib/channel-internal.h" +#include "telepathy-glib/connection-internal.h" +#include "telepathy-glib/debug-internal.h" +#include "telepathy-glib/proxy-internal.h" +#include "telepathy-glib/util-internal.h" +#include "telepathy-glib/_gen/signals-marshal.h" + +G_DEFINE_TYPE (TpCallChannel, tp_call_channel, TP_TYPE_CHANNEL) + +struct _TpCallChannelPrivate +{ + /* Array of TpCallContents */ + GPtrArray *contents; + TpCallState state; + TpCallFlags flags; + GHashTable *state_details; + TpCallStateReason *state_reason; + gboolean hardware_streaming; + /* TpHandle -> TpCallMemberFlags */ + GHashTable *members; + gboolean initial_audio; + gboolean initial_video; + gchar *initial_audio_name; + gchar *initial_video_name; + gboolean mutable_contents; + + GSimpleAsyncResult *core_result; + gboolean properties_retrieved; + gboolean initial_members_retrieved; +}; + +enum /* props */ +{ + PROP_CONTENTS = 1, + PROP_STATE, + PROP_FLAGS, + PROP_STATE_DETAILS, + PROP_STATE_REASON, + PROP_HARDWARE_STREAMING, + PROP_INITIAL_AUDIO, + PROP_INITIAL_VIDEO, + PROP_INITIAL_AUDIO_NAME, + PROP_INITIAL_VIDEO_NAME, + PROP_MUTABLE_CONTENTS, +}; + +enum /* signals */ +{ + CONTENT_ADDED, + CONTENT_REMOVED, + STATE_CHANGED, + MEMBERS_CHANGED, + LAST_SIGNAL +}; + +static guint _signals[LAST_SIGNAL] = { 0, }; + +static TpCallContent * +_tp_call_content_new (TpCallChannel *self, + const gchar *object_path) +{ + return g_object_new (TP_TYPE_CALL_CONTENT, + "bus-name", tp_proxy_get_bus_name (self), + "dbus-daemon", tp_proxy_get_dbus_daemon (self), + "dbus-connection", tp_proxy_get_dbus_connection (self), + "object-path", object_path, + "connection", tp_channel_borrow_connection ((TpChannel *) self), + NULL); +} + +/** + * TpCallStateReason: + * @actor: the contact responsible for the change, or 0 if no contact was + * responsible + * @reason: the reason for the change. If + * #TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED then the @actor member will + * dictate whether it was the local user or a remote contact responsible + * @dbus_reason: A specific reason for the change, which may be a D-Bus error in + * the Telepathy namespace, a D-Bus error in any other namespace + * (for implementation-specific errors), or the empty string to indicate that + * the state change was not an error + * + * Data structure representing the reason for a call state change. + * + * Since: 0.17.5 + */ + +static TpCallStateReason * +_tp_call_state_reason_new_full (TpHandle actor, + TpCallStateChangeReason reason, + const gchar *dbus_reason) +{ + TpCallStateReason *r; + + r = g_slice_new0 (TpCallStateReason); + r->actor = actor; + r->reason = reason; + r->dbus_reason = g_strdup (dbus_reason); + r->ref_count = 1; + + return r; +} + +TpCallStateReason * +_tp_call_state_reason_new (const GValueArray *value_array) +{ + TpHandle handle; + TpCallStateChangeReason reason; + const gchar *dbus_reason; + + tp_value_array_unpack ((GValueArray *) value_array, 3, + &handle, + &reason, + &dbus_reason); + + return _tp_call_state_reason_new_full (handle, reason, dbus_reason); +} + +TpCallStateReason * +_tp_call_state_reason_ref (TpCallStateReason *r) +{ + g_atomic_int_inc (&r->ref_count); + return r; +} + +void +_tp_call_state_reason_unref (TpCallStateReason *r) +{ + g_return_if_fail (r != NULL); + + if (g_atomic_int_dec_and_test (&r->ref_count)) + { + g_free (r->dbus_reason); + g_slice_free (TpCallStateReason, r); + } +} + +G_DEFINE_BOXED_TYPE (TpCallStateReason, tp_call_state_reason, + _tp_call_state_reason_ref, _tp_call_state_reason_unref); + +/* Convert GHashTable to GHashTable. + * Assuming value does not need to be copied */ +GHashTable * +_tp_call_members_convert_table (TpConnection *connection, + GHashTable *table, + GHashTable *identifiers) +{ + GHashTable *result; + GHashTableIter iter; + gpointer key, value; + + result = g_hash_table_new_full (NULL, NULL, g_object_unref, NULL); + + g_hash_table_iter_init (&iter, table); + while (g_hash_table_iter_next (&iter, &key, &value)) + { + TpHandle handle = GPOINTER_TO_UINT (key); + const gchar *id; + TpContact *contact; + + id = g_hash_table_lookup (identifiers, key); + if (id == NULL) + { + DEBUG ("Missing identifier for member %u - broken CM", handle); + continue; + } + + contact = tp_connection_dup_contact_if_possible (connection, handle, id); + if (contact == NULL) + { + DEBUG ("Can't create contact for (%u, %s) pair - CM does not have " + "immutable handles?", handle, id); + continue; + } + + g_hash_table_insert (result, contact, value); + } + + return result; +} + +/* Convert GArray to GPtrArray. + * Assuming the TpContact already exists. */ +GPtrArray * +_tp_call_members_convert_array (TpConnection *connection, + const GArray *array) +{ + GPtrArray *result; + guint i; + + result = _tp_g_ptr_array_new_full (array->len, g_object_unref); + + for (i = 0; i < array->len; i++) + { + TpHandle handle = g_array_index (array, TpHandle, i); + TpContact *contact; + + /* The contact is supposed to already exists */ + contact = _tp_connection_lookup_contact (connection, handle); + if (contact == NULL) + { + DEBUG ("No TpContact found for handle %u", handle); + continue; + } + + g_ptr_array_add (result, g_object_ref (contact)); + } + + return result; +} + +static TpCallContent * +ensure_content (TpCallChannel *self, + const gchar *object_path) +{ + TpCallContent *content; + guint i; + + for (i = 0; i < self->priv->contents->len; i++) + { + content = g_ptr_array_index (self->priv->contents, i); + + if (!tp_strdiff (tp_proxy_get_object_path (content), object_path)) + return content; + } + + DEBUG ("Content added: %s", object_path); + + content = _tp_call_content_new (self, object_path); + g_ptr_array_add (self->priv->contents, content); + g_signal_emit (self, _signals[CONTENT_ADDED], 0, content); + + return content; +} + +static void +content_added_cb (TpChannel *channel, + const gchar *object_path, + gpointer user_data, + GObject *weak_object) +{ + TpCallChannel *self = (TpCallChannel *) channel; + + if (!self->priv->properties_retrieved) + return; + + ensure_content (self, object_path); +} + +static void +content_removed_cb (TpChannel *channel, + const gchar *object_path, + const GValueArray *reason, + gpointer user_data, + GObject *weak_object) +{ + TpCallChannel *self = (TpCallChannel *) channel; + guint i; + + if (!self->priv->properties_retrieved) + return; + + for (i = 0; i < self->priv->contents->len; i++) + { + TpCallContent *content = g_ptr_array_index (self->priv->contents, i); + + if (!tp_strdiff (tp_proxy_get_object_path (content), object_path)) + { + TpCallStateReason *r; + + DEBUG ("Content removed: %s", object_path); + + r = _tp_call_state_reason_new (reason); + + g_object_ref (content); + g_ptr_array_remove_index_fast (self->priv->contents, i); + g_signal_emit (self, _signals[CONTENT_REMOVED], 0, content, r); + g_signal_emit_by_name (content, "removed"); + g_object_unref (content); + + _tp_call_state_reason_unref (r); + + return; + } + } + + DEBUG ("Content '%s' removed but not found", object_path); +} + +static void +call_state_changed_cb (TpChannel *channel, + guint state, + guint flags, + const GValueArray *reason, + GHashTable *details, + gpointer user_data, + GObject *weak_object) +{ + TpCallChannel *self = (TpCallChannel *) channel; + + if (!self->priv->properties_retrieved) + return; + + DEBUG ("Call state changed to %u (flags: %u)", state, flags); + + tp_clear_pointer (&self->priv->state_reason, _tp_call_state_reason_unref); + tp_clear_pointer (&self->priv->state_details, g_hash_table_unref); + + self->priv->state = state; + self->priv->flags = flags; + self->priv->state_reason = _tp_call_state_reason_new (reason); + self->priv->state_details = g_hash_table_ref (details); + + g_object_notify ((GObject *) self, "state"); + g_object_notify ((GObject *) self, "flags"); + g_object_notify ((GObject *) self, "state-reason"); + g_object_notify ((GObject *) self, "state-details"); + + g_signal_emit (self, _signals[STATE_CHANGED], 0, self->priv->state, + self->priv->flags, self->priv->state_reason, self->priv->state_details); +} + +typedef struct +{ + TpCallChannel *self; + GHashTable *updates; + GPtrArray *removed; + TpCallStateReason *reason; +} UpdateCallMembersData; + +static void +update_call_members_prepared_cb (GObject *object, + GAsyncResult *result, + gpointer user_data) +{ + UpdateCallMembersData *data = user_data; + TpCallChannel *self = data->self; + GError *error = NULL; + + if (!_tp_channel_contacts_queue_prepare_finish ((TpChannel *) self, + result, NULL, &error)) + { + DEBUG ("Error preparing call members: %s", error->message); + g_clear_error (&error); + } + + tp_g_hash_table_update (self->priv->members, data->updates, + g_object_ref, NULL); + + if (data->removed != NULL) + { + guint i; + + for (i = 0; i < data->removed->len; i++) + { + g_hash_table_remove (self->priv->members, + g_ptr_array_index (data->removed, i)); + } + } + + if (!self->priv->initial_members_retrieved) + { + self->priv->initial_members_retrieved = TRUE; + + g_assert (self->priv->core_result != NULL); + g_simple_async_result_complete (self->priv->core_result); + g_clear_object (&self->priv->core_result); + } + else + { + g_signal_emit (self, _signals[MEMBERS_CHANGED], 0, + data->updates, data->removed, data->reason); + } + + tp_clear_pointer (&data->updates, g_hash_table_unref); + tp_clear_pointer (&data->removed, g_ptr_array_unref); + tp_clear_pointer (&data->reason, _tp_call_state_reason_unref); + g_slice_free (UpdateCallMembersData, data); +} + +static void +update_call_members (TpCallChannel *self, + GHashTable *updates, + GPtrArray *removed, + TpCallStateReason *reason) +{ + GHashTableIter iter; + gpointer key, value; + GPtrArray *contacts; + UpdateCallMembersData *data; + + /* We want to expose only prepared contacts. Collect TpContact objects and + * prepared them in the channel's queue to make sure it does not reorder + * events. + * Applications where delay to display the call is critical shouldn't set + * contact features on the factory, in which case this becomes no-op. + */ + + contacts = _tp_g_ptr_array_new_full (g_hash_table_size (updates), + g_object_unref); + + g_hash_table_iter_init (&iter, updates); + while (g_hash_table_iter_next (&iter, &key, &value)) + g_ptr_array_add (contacts, g_object_ref (key)); + + data = g_slice_new0 (UpdateCallMembersData); + data->self = self; + data->updates = g_hash_table_ref (updates); + data->removed = removed != NULL ? g_ptr_array_ref (removed) : NULL; + data->reason = reason != NULL ? _tp_call_state_reason_ref (reason) : NULL; + + _tp_channel_contacts_queue_prepare_async ((TpChannel *) self, + contacts, update_call_members_prepared_cb, data); +} + +static void +call_members_changed_cb (TpChannel *channel, + GHashTable *updates, + GHashTable *identifiers, + const GArray *removed, + const GValueArray *reason, + gpointer user_data, + GObject *weak_object) +{ + TpCallChannel *self = (TpCallChannel *) channel; + TpConnection *connection; + GHashTable *updates_contacts; + GPtrArray *removed_contacts; + TpCallStateReason *r; + + DEBUG ("Call members: %d changed, %d removed", + g_hash_table_size (updates), removed->len); + + connection = tp_channel_borrow_connection (channel); + updates_contacts = _tp_call_members_convert_table (connection, + updates, identifiers); + removed_contacts = _tp_call_members_convert_array (connection, + removed); + r = _tp_call_state_reason_new (reason); + + update_call_members (self, updates_contacts, removed_contacts, r); + + g_hash_table_unref (updates_contacts); + g_ptr_array_unref (removed_contacts); + _tp_call_state_reason_unref (r); +} + +static void +got_all_properties_cb (TpProxy *proxy, + GHashTable *properties, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + TpCallChannel *self = (TpCallChannel *) proxy; + TpConnection *connection; + GPtrArray *contents; + GHashTable *members; + GHashTable *identifiers; + GHashTable *contacts; + guint i; + + if (error != NULL) + { + DEBUG ("Could not get the call channel properties: %s", error->message); + g_simple_async_result_set_from_error (self->priv->core_result, error); + g_simple_async_result_complete (self->priv->core_result); + g_clear_object (&self->priv->core_result); + return; + } + + connection = tp_channel_borrow_connection ((TpChannel *) self); + g_assert (tp_connection_has_immortal_handles (connection)); + + self->priv->properties_retrieved = TRUE; + + contents = tp_asv_get_boxed (properties, + "Contents", TP_ARRAY_TYPE_OBJECT_PATH_LIST); + self->priv->state = tp_asv_get_uint32 (properties, + "CallState", NULL); + self->priv->flags = tp_asv_get_uint32 (properties, + "CallFlags", NULL); + self->priv->state_details = g_hash_table_ref (tp_asv_get_boxed (properties, + "CallStateDetails", TP_HASH_TYPE_STRING_VARIANT_MAP)); + self->priv->state_reason = _tp_call_state_reason_new (tp_asv_get_boxed (properties, + "CallStateReason", TP_STRUCT_TYPE_CALL_STATE_REASON)); + members = tp_asv_get_boxed (properties, + "CallMembers", TP_HASH_TYPE_CALL_MEMBER_MAP); + identifiers = tp_asv_get_boxed (properties, + "MemberIdentifiers", TP_HASH_TYPE_HANDLE_IDENTIFIER_MAP); + + contacts = _tp_call_members_convert_table (connection, members, identifiers); + update_call_members (self, contacts, NULL, NULL); + g_hash_table_unref (contacts); + + for (i = 0; i < contents->len; i++) + { + const gchar *object_path = g_ptr_array_index (contents, i); + + DEBUG ("Initial content added: %s", object_path); + + g_ptr_array_add (self->priv->contents, + _tp_call_content_new (self, object_path)); + } + + /* core_result will be complete in update_call_members_prepared_cb() when + * the initial members are prepared. */ +} + +static void +_tp_call_channel_prepare_core_async (TpProxy *proxy, + const TpProxyFeature *feature, + GAsyncReadyCallback callback, + gpointer user_data) +{ + TpCallChannel *self = (TpCallChannel *) proxy; + TpChannel *channel = (TpChannel *) self; + + tp_cli_channel_type_call_connect_to_content_added (channel, + content_added_cb, NULL, NULL, NULL, NULL); + tp_cli_channel_type_call_connect_to_content_removed (channel, + content_removed_cb, NULL, NULL, NULL, NULL); + tp_cli_channel_type_call_connect_to_call_state_changed (channel, + call_state_changed_cb, NULL, NULL, NULL, NULL); + tp_cli_channel_type_call_connect_to_call_members_changed (channel, + call_members_changed_cb, NULL, NULL, NULL, NULL); + + g_assert (self->priv->core_result == NULL); + self->priv->core_result = g_simple_async_result_new ((GObject *) self, + callback, user_data, _tp_call_channel_prepare_core_async); + + tp_cli_dbus_properties_call_get_all (self, -1, + TP_IFACE_CHANNEL_TYPE_CALL, + got_all_properties_cb, NULL, NULL, NULL); +} + +static void +tp_call_channel_constructed (GObject *obj) +{ + TpCallChannel *self = (TpCallChannel *) obj; + GHashTable *properties = tp_channel_borrow_immutable_properties ( + (TpChannel *) self); + + G_OBJECT_CLASS (tp_call_channel_parent_class)->constructed (obj); + + /* We can already set immutable properties */ + self->priv->hardware_streaming = tp_asv_get_boolean (properties, + TP_PROP_CHANNEL_TYPE_CALL_HARDWARE_STREAMING, NULL); + self->priv->initial_audio = tp_asv_get_boolean (properties, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, NULL); + self->priv->initial_video = tp_asv_get_boolean (properties, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, NULL); + self->priv->initial_audio_name = g_strdup (tp_asv_get_string (properties, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO_NAME)); + self->priv->initial_video_name = g_strdup (tp_asv_get_string (properties, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO_NAME)); + self->priv->mutable_contents = tp_asv_get_boolean (properties, + TP_PROP_CHANNEL_TYPE_CALL_MUTABLE_CONTENTS, NULL); + + if (!self->priv->initial_audio) + tp_clear_pointer (&self->priv->initial_audio_name, g_free); + if (!self->priv->initial_video) + tp_clear_pointer (&self->priv->initial_video_name, g_free); +} + +static void +tp_call_channel_dispose (GObject *obj) +{ + TpCallChannel *self = (TpCallChannel *) obj; + + g_assert (self->priv->core_result == NULL); + + tp_clear_pointer (&self->priv->contents, g_ptr_array_unref); + tp_clear_pointer (&self->priv->state_details, g_hash_table_unref); + tp_clear_pointer (&self->priv->state_reason, _tp_call_state_reason_unref); + tp_clear_pointer (&self->priv->members, g_hash_table_unref); + tp_clear_pointer (&self->priv->initial_audio_name, g_free); + tp_clear_pointer (&self->priv->initial_video_name, g_free); + + G_OBJECT_CLASS (tp_call_channel_parent_class)->dispose (obj); +} + +static void +tp_call_channel_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + TpCallChannel *self = (TpCallChannel *) object; + + switch (property_id) + { + case PROP_CONTENTS: + g_value_set_boxed (value, self->priv->contents); + break; + + case PROP_STATE: + g_value_set_uint (value, self->priv->state); + break; + + case PROP_FLAGS: + g_value_set_uint (value, self->priv->flags); + break; + + case PROP_STATE_DETAILS: + g_value_set_boxed (value, self->priv->state_details); + break; + + case PROP_STATE_REASON: + g_value_set_boxed (value, self->priv->state_reason); + break; + + case PROP_HARDWARE_STREAMING: + g_value_set_boolean (value, self->priv->hardware_streaming); + break; + + case PROP_INITIAL_AUDIO: + g_value_set_boolean (value, self->priv->initial_audio); + break; + + case PROP_INITIAL_VIDEO: + g_value_set_boolean (value, self->priv->initial_video); + break; + + case PROP_INITIAL_AUDIO_NAME: + g_value_set_string (value, self->priv->initial_audio_name); + break; + + case PROP_INITIAL_VIDEO_NAME: + g_value_set_string (value, self->priv->initial_video_name); + break; + + case PROP_MUTABLE_CONTENTS: + g_value_set_boolean (value, self->priv->mutable_contents); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +enum { + FEAT_CORE, + N_FEAT +}; + +static const TpProxyFeature * +tp_call_channel_list_features (TpProxyClass *cls G_GNUC_UNUSED) +{ + static TpProxyFeature features[N_FEAT + 1] = { { 0 } }; + + if (G_LIKELY (features[0].name != 0)) + return features; + + /* started from constructed */ + features[FEAT_CORE].name = TP_CALL_CHANNEL_FEATURE_CORE; + features[FEAT_CORE].prepare_async = _tp_call_channel_prepare_core_async; + features[FEAT_CORE].core = TRUE; + + /* assert that the terminator at the end is there */ + g_assert (features[N_FEAT].name == 0); + + return features; +} + +static void +tp_call_channel_class_init (TpCallChannelClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + TpProxyClass *proxy_class = (TpProxyClass *) klass; + GParamSpec *param_spec; + + gobject_class->constructed = tp_call_channel_constructed; + gobject_class->get_property = tp_call_channel_get_property; + gobject_class->dispose = tp_call_channel_dispose; + + proxy_class->list_features = tp_call_channel_list_features; + + g_type_class_add_private (gobject_class, sizeof (TpCallChannelPrivate)); + + /* FIXME: Should be annoted with + * + * Type: GLib.PtrArray + * Transfer: container + * + * But it does not work (bgo#663846) and makes gtkdoc fail myserably. + */ + + /** + * TpCallChannel:contents: + * + * #GPtrArray of #TpCallContent objects. The list of content objects that are + * part of this call. + * + * It is NOT guaranteed that %TP_CALL_CONTENT_FEATURE_CORE is prepared on + * those objects. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("contents", "Contents", + "The content objects of this call", + G_TYPE_PTR_ARRAY, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_CONTENTS, param_spec); + + /** + * TpCallChannel:state: + * + * A #TpChannelCallState specifying the state of the call. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("state", "Call state", + "The state of the call", + 0, G_MAXUINT, 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_STATE, param_spec); + + /** + * TpCallChannel:flags: + * + * A #TpCallFlags specifying the flags of the call state. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("flags", "Call flags", + "The flags of the call", + 0, G_MAXUINT, 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_FLAGS, param_spec); + + /** + * TpCallChannel:state-details: + * + * Detailed information about #TpCallChannel:state. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("state-details", "State details", + "The details of the call", + G_TYPE_HASH_TABLE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, + PROP_STATE_DETAILS, param_spec); + + /** + * TpCallChannel:state-reason: + * + * Reason why #TpCallChannel:state last changed. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("state-reason", "State reason", + "The reason of the call's state", + TP_TYPE_CALL_STATE_REASON, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, + PROP_STATE_REASON, param_spec); + + /** + * TpCallChannel:hardware-streaming: + * + * Whether or not the streaming is done by dedicated hardware. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("hardware-streaming", "Hardware streaming", + "Hardware streaming", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, + PROP_HARDWARE_STREAMING, param_spec); + + /** + * TpCallChannel:initial-audio: + * + * Whether or not the Call was started with audio. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("initial-audio", "Initial audio", + "Initial audio", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, + PROP_INITIAL_AUDIO, param_spec); + + /** + * TpCallChannel:initial-video: + * + * Whether or not the Call was started with video. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("initial-video", "Initial video", + "Initial video", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, + PROP_INITIAL_VIDEO, param_spec); + + /** + * TpCallChannel:initial-audio-name: + * + * If #TpCallChannel:initial-audio is set to %TRUE, then this property will + * is the name of the intial audio content, %NULL otherwise. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_string ("initial-audio-name", "Initial audio name", + "Initial audio name", + NULL, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, + PROP_INITIAL_AUDIO_NAME, param_spec); + + /** + * TpCallChannel:initial-video-name: + * + * If #TpCallChannel:initial-video is set to %TRUE, then this property will + * is the name of the intial video content, %NULL otherwise. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_string ("initial-video-name", "Initial video name", + "Initial video name", + NULL, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, + PROP_INITIAL_VIDEO_NAME, param_spec); + + /** + * TpCallChannel:mutable-contents: + * + * Whether or not call contents can be added or removed. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("mutable-contents", "Mutable contents", + "Mutable contents", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, + PROP_MUTABLE_CONTENTS, param_spec); + + /** + * TpCallChannel::content-added + * @self: the #TpCallChannel + * @content: the newly added #TpCallContent + * + * The ::content-added signal is emitted whenever a + * #TpCallContent is added to @self. + * + * It is NOT guaranteed that %TP_CALL_CONTENT_FEATURE_CORE is prepared on + * @content. + * + * Since: 0.17.5 + */ + _signals[CONTENT_ADDED] = g_signal_new ("content-added", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, G_TYPE_OBJECT); + + /** + * TpCallChannel::content-removed + * @self: the #TpCallChannel + * @content: the newly removed #TpCallContent + * @reason: a #TpCallStateReason + * + * The ::content-removed signal is emitted whenever a + * #TpCallContent is removed from @self. + * + * It is NOT guaranteed that %TP_CALL_CONTENT_FEATURE_CORE is prepared on + * @content. + * + * Since: 0.17.5 + */ + _signals[CONTENT_REMOVED] = g_signal_new ("content-removed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + _tp_marshal_VOID__OBJECT_BOXED, + G_TYPE_NONE, + 2, G_TYPE_OBJECT, TP_TYPE_CALL_STATE_REASON); + + /** + * TpCallChannel::state-changed + * @self: the #TpCallChannel + * @state: the new #TpCallState + * @flags: the new #TpCallFlags + * @reason: the #TpCallStateReason for the change + * @details: additional details + * + * The ::state-changed signal is emitted whenever the + * call state changes. + * + * Since: 0.17.5 + */ + _signals[STATE_CHANGED] = g_signal_new ("state-changed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + _tp_marshal_VOID__UINT_UINT_BOXED_BOXED, + G_TYPE_NONE, + 4, G_TYPE_UINT, G_TYPE_UINT, TP_TYPE_CALL_STATE_REASON, + G_TYPE_HASH_TABLE); + + /** + * TpCallChannel::members-changed + * @self: the #TpCallChannel + * @updates: (type GLib.HashTable) (element-type TelepathyGLib.Contact uint): + * #GHashTable mapping #TpContact to its new #TpCallMemberFlags + * @removed: (type GLib.PtrArray) (element-type TelepathyGLib.Contact): + * #GPtrArray of #TpContact removed from the call members + * @reason: the #TpCallStateReason for the change + * + * The ::members-changed signal is emitted whenever the call's members + * changes. + * + * The #TpContact objects are guaranteed to have all of the features + * previously passed to tp_simple_client_factory_add_contact_features() + * prepared. + * + * Since: 0.17.5 + */ + _signals[MEMBERS_CHANGED] = g_signal_new ("members-changed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + _tp_marshal_VOID__BOXED_BOXED_BOXED, + G_TYPE_NONE, + 3, G_TYPE_HASH_TABLE, G_TYPE_PTR_ARRAY, TP_TYPE_CALL_STATE_REASON); +} + +static void +tp_call_channel_init (TpCallChannel *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self), TP_TYPE_CALL_CHANNEL, + TpCallChannelPrivate); + + self->priv->contents = g_ptr_array_new_with_free_func (g_object_unref); + self->priv->members = g_hash_table_new_full (NULL, NULL, + g_object_unref, NULL); +} + +TpCallChannel * +_tp_call_channel_new_with_factory (TpSimpleClientFactory *factory, + TpConnection *conn, + const gchar *object_path, + const GHashTable *immutable_properties, + GError **error) +{ + TpProxy *conn_proxy = (TpProxy *) conn; + + g_return_val_if_fail (TP_IS_CONNECTION (conn), NULL); + g_return_val_if_fail (object_path != NULL, NULL); + g_return_val_if_fail (immutable_properties != NULL, NULL); + + if (!tp_dbus_check_valid_object_path (object_path, error)) + return NULL; + + return g_object_new (TP_TYPE_CALL_CHANNEL, + "connection", conn, + "dbus-daemon", conn_proxy->dbus_daemon, + "bus-name", conn_proxy->bus_name, + "object-path", object_path, + "handle-type", (guint) TP_UNKNOWN_HANDLE_TYPE, + "channel-properties", immutable_properties, + "factory", factory, + NULL); +} + +/** + * TP_CALL_CHANNEL_FEATURE_CORE: + * + * Expands to a call to a function that returns a quark for the "core" + * feature on a #TpCallChannel. + * + * One can ask for a feature to be prepared using the tp_proxy_prepare_async() + * function, and waiting for it to trigger the callback. + */ +GQuark +tp_call_channel_get_feature_quark_core (void) +{ + return g_quark_from_static_string ("tp-call-channel-feature-core"); +} + +/** + * tp_call_channel_get_contents: + * @self: a #TpCallChannel + * + * + * + * Returns: (transfer none) (type GLib.PtrArray) (element-type TelepathyGLib.CallContent): + * the value of #TpCallChannel:contents + * Since: 0.17.5 + */ +GPtrArray * +tp_call_channel_get_contents (TpCallChannel *self) +{ + g_return_val_if_fail (TP_IS_CALL_CHANNEL (self), NULL); + + return self->priv->contents; +} + +/** + * tp_call_channel_get_state: + * @self: a #TpCallChannel + * @flags: (out) (allow-none) (transfer none): a place to set the value of + * #TpCallChannel:flags + * @details: (out) (allow-none) (transfer none): a place to set the value of + * #TpCallChannel:state-details + * @reason: (out) (allow-none) (transfer none): a place to set the value of + * #TpCallChannel:state-reason + * + * + * + * Returns: the value of #TpCallChannel:state + * Since: 0.17.5 + */ +TpCallState +tp_call_channel_get_state (TpCallChannel *self, + TpCallFlags *flags, + GHashTable **details, + TpCallStateReason **reason) +{ + g_return_val_if_fail (TP_IS_CALL_CHANNEL (self), TP_CALL_STATE_UNKNOWN); + + if (flags != NULL) + *flags = self->priv->flags; + if (details != NULL) + *details = self->priv->state_details; + if (reason != NULL) + *reason = self->priv->state_reason; + + return self->priv->state; +} + +/** + * tp_call_channel_has_hardware_streaming: + * @self: a #TpCallChannel + * + * + * + * Returns: the value of #TpCallChannel:hardware-streaming + * Since: 0.17.5 + */ +gboolean +tp_call_channel_has_hardware_streaming (TpCallChannel *self) +{ + g_return_val_if_fail (TP_IS_CALL_CHANNEL (self), FALSE); + + return self->priv->hardware_streaming; +} + +/** + * tp_call_channel_has_initial_audio: + * @self: a #TpCallChannel + * @initial_audio_name: (out) (allow-none) (transfer none): a place to set the + * value of #TpCallChannel:initial-audio-name + * + * + * + * Returns: the value of #TpCallChannel:initial-audio + * Since: 0.17.5 + */ +gboolean +tp_call_channel_has_initial_audio (TpCallChannel *self, + const gchar **initial_audio_name) +{ + g_return_val_if_fail (TP_IS_CALL_CHANNEL (self), FALSE); + + if (initial_audio_name != NULL) + *initial_audio_name = self->priv->initial_audio_name; + + return self->priv->initial_audio; +} + +/** + * tp_call_channel_has_initial_video: + * @self: a #TpCallChannel + * @initial_video_name: (out) (allow-none) (transfer none): a place to set the + * value of #TpCallChannel:initial-video-name + * + * + * + * Returns: the value of #TpCallChannel:initial-video + * Since: 0.17.5 + */ +gboolean +tp_call_channel_has_initial_video (TpCallChannel *self, + const gchar **initial_video_name) +{ + g_return_val_if_fail (TP_IS_CALL_CHANNEL (self), FALSE); + + if (initial_video_name != NULL) + *initial_video_name = self->priv->initial_video_name; + + return self->priv->initial_video; +} + +/** + * tp_call_channel_has_mutable_contents: + * @self: a #TpCallChannel + * + * + * + * Returns: the value of #TpCallChannel:mutable-contents + * Since: 0.17.5 + */ +gboolean +tp_call_channel_has_mutable_contents (TpCallChannel *self) +{ + g_return_val_if_fail (TP_IS_CALL_CHANNEL (self), FALSE); + + return self->priv->mutable_contents; +} + +/** + * tp_call_channel_get_members: + * @self: a #TpCallChannel + * + * Get the members of this call. + * + * The #TpContact objects are guaranteed to have all of the features + * previously passed to tp_simple_client_factory_add_contact_features() + * prepared. + * + * Returns: (transfer none) (type GLib.HashTable) (element-type TelepathyGLib.Contact uint): + * #GHashTable mapping #TpContact to its new #TpCallMemberFlags + * Since: 0.17.5 + */ +GHashTable * +tp_call_channel_get_members (TpCallChannel *self) +{ + g_return_val_if_fail (TP_IS_CALL_CHANNEL (self), NULL); + + return self->priv->members; +} + +/** + * tp_call_channel_has_dtmf: + * @self: a #TpCallChannel + * + * Whether or not %self has the %TP_IFACE_CHANNEL_INTERFACE_DTMF + * interfaces + * + * Returns: whether or not @self supports DTMF + * Since: 0.17.5 + */ +gboolean +tp_call_channel_has_dtmf (TpCallChannel *self) +{ + g_return_val_if_fail (TP_IS_CALL_CHANNEL (self), FALSE); + + return tp_proxy_has_interface_by_id (self, + TP_IFACE_QUARK_CHANNEL_INTERFACE_DTMF); +} + +static void +generic_async_cb (TpChannel *channel, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + GSimpleAsyncResult *result = user_data; + + if (error != NULL) + { + DEBUG ("Error: %s", error->message); + g_simple_async_result_set_from_error (result, error); + } + + g_simple_async_result_complete (result); +} + +/** + * tp_call_channel_set_ringing_async: + * @self: a #TpCallChannel + * @callback: a callback to call when the operation finishes + * @user_data: data to pass to @callback + * + * Indicate that the local user has been alerted about the incoming call. + * + * Since: 0.17.5 + */ +void +tp_call_channel_set_ringing_async (TpCallChannel *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + g_return_if_fail (TP_IS_CALL_CHANNEL (self)); + + result = g_simple_async_result_new (G_OBJECT (self), callback, + user_data, tp_call_channel_set_ringing_async); + + tp_cli_channel_type_call_call_set_ringing (TP_CHANNEL (self), -1, + generic_async_cb, result, g_object_unref, G_OBJECT (self)); +} + +/** + * tp_call_channel_set_ringing_finish: + * @self: a #TpCallChannel + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Finishes tp_call_channel_set_ringing_async(). + * + * Since: 0.17.5 + */ +gboolean +tp_call_channel_set_ringing_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (self, tp_call_channel_set_ringing_async); +} + +/** + * tp_call_channel_set_queued_async: + * @self: a #TpCallChannel + * @callback: a callback to call when the operation finishes + * @user_data: data to pass to @callback + * + * Notifies the CM that the local user is already in a call, so this call has + * been put in a call-waiting style queue. + * + * Since: 0.17.5 + */ +void +tp_call_channel_set_queued_async (TpCallChannel *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + g_return_if_fail (TP_IS_CALL_CHANNEL (self)); + + result = g_simple_async_result_new (G_OBJECT (self), callback, + user_data, tp_call_channel_set_queued_async); + + tp_cli_channel_type_call_call_set_queued (TP_CHANNEL (self), -1, + generic_async_cb, result, g_object_unref, G_OBJECT (self)); +} + +/** + * tp_call_channel_set_queued_finish: + * @self: a #TpCallChannel + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Finishes tp_call_channel_set_queued_async(). + * + * Since: 0.17.5 + */ +gboolean +tp_call_channel_set_queued_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (self, tp_call_channel_set_queued_async); +} + +/** + * tp_call_channel_accept_async: + * @self: a #TpCallChannel + * @callback: a callback to call when the operation finishes + * @user_data: data to pass to @callback + * + * For incoming calls with #TpCallChannel:state set to + * %TP_CALL_STATE_INITIALISED, accept the incoming call. This changes + * #TpCallChannel:state to %TP_CALL_STATE_ACCEPTED. + * + * For outgoing calls with #TpCallChannel:state set to + * %TP_CALL_STATE_PENDING_INITIATOR, actually call the remote contact; this + * changes #TpCallChannel:state to + * %TP_CALL_STATE_INITIALISING. + * + * Since: 0.17.5 + */ +void +tp_call_channel_accept_async (TpCallChannel *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + g_return_if_fail (TP_IS_CALL_CHANNEL (self)); + + result = g_simple_async_result_new (G_OBJECT (self), callback, + user_data, tp_call_channel_accept_async); + + tp_cli_channel_type_call_call_accept (TP_CHANNEL (self), -1, + generic_async_cb, result, g_object_unref, G_OBJECT (self)); +} + +/** + * tp_call_channel_accept_finish: + * @self: a #TpCallChannel + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Finishes tp_call_channel_accept_async(). + * + * Since: 0.17.5 + */ +gboolean +tp_call_channel_accept_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (self, tp_call_channel_accept_async); +} + +/** + * tp_call_channel_hangup_async: + * @self: a #TpCallChannel + * @reason: a TpCallStateChangeReason + * @detailed_reason: a more specific reason for the call hangup, if one is + * available, or an empty or %NULL string otherwise + * @message: a human-readable message to be sent to the remote contact(s) + * @callback: a callback to call when the operation finishes + * @user_data: data to pass to @callback + * + * Request that the call is ended. All contents will be removed from @self so + * that the #TpCallChannel:contents property will be the empty list. + * + * Since: 0.17.5 + */ +void +tp_call_channel_hangup_async (TpCallChannel *self, + TpCallStateChangeReason reason, + gchar *detailed_reason, + gchar *message, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + g_return_if_fail (TP_IS_CALL_CHANNEL (self)); + + result = g_simple_async_result_new (G_OBJECT (self), callback, + user_data, tp_call_channel_hangup_async); + + tp_cli_channel_type_call_call_hangup (TP_CHANNEL (self), -1, + reason, detailed_reason, message, + generic_async_cb, result, g_object_unref, G_OBJECT (self)); +} + +/** + * tp_call_channel_hangup_finish: + * @self: a #TpCallChannel + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Finishes tp_call_channel_hangup_async(). + * + * Since: 0.17.5 + */ +gboolean +tp_call_channel_hangup_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (self, tp_call_channel_hangup_async); +} + +static void +add_content_cb (TpChannel *channel, + const gchar *object_path, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + TpCallChannel *self = (TpCallChannel *) channel; + GSimpleAsyncResult *result = user_data; + + if (error != NULL) + { + DEBUG ("Error: %s", error->message); + g_simple_async_result_set_from_error (result, error); + } + else + { + g_simple_async_result_set_op_res_gpointer (result, + g_object_ref (ensure_content (self, object_path)), + g_object_unref); + } + + g_simple_async_result_complete (result); +} + +/** + * tp_call_channel_add_content_async: + * @self: a #TpCallChannel + * @name: the suggested name of the content to add + * @type: the media stream type of the content to be added to the call, from + * #TpMediaStreamType + * @initial_direction: The initial direction of the content + * @callback: a callback to call when the operation finishes + * @user_data: data to pass to @callback + * + * Request that a new Content of type @type is added to @self. Callers should + * check the value of the #TpCallChannel:mutable-contents property before trying + * to add another content as it might not be allowed. + * + * Since: 0.17.5 + */ +void +tp_call_channel_add_content_async (TpCallChannel *self, + gchar *name, + TpMediaStreamType type, + TpMediaStreamDirection initial_direction, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + g_return_if_fail (TP_IS_CALL_CHANNEL (self)); + + result = g_simple_async_result_new (G_OBJECT (self), callback, + user_data, tp_call_channel_add_content_async); + + tp_cli_channel_type_call_call_add_content (TP_CHANNEL (self), -1, + name, type, initial_direction, + add_content_cb, result, g_object_unref, G_OBJECT (self)); +} + +/** + * tp_call_channel_add_content_finish: + * @self: a #TpCallChannel + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Finishes tp_call_channel_add_content_async(). + * + * The returned #TpCallContent is NOT guaranteed to have + * %TP_CALL_CONTENT_FEATURE_CORE prepared. + * + * Returns: (transfer full): reference to the new #TpCallContent. + * Since: 0.17.5 + */ +TpCallContent * +tp_call_channel_add_content_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_return_copy_pointer (self, + tp_call_channel_add_content_async, g_object_ref); +} + +static void +send_tones_cb (GObject *source, + GAsyncResult *res, + gpointer user_data) +{ + GSimpleAsyncResult *result = user_data; + guint count; + GError *error = NULL; + + if (!tp_call_content_send_tones_finish ((TpCallContent *) source, res, + &error)) + g_simple_async_result_take_error (result, error); + + /* Decrement the op count */ + count = GPOINTER_TO_UINT (g_simple_async_result_get_op_res_gpointer (result)); + g_simple_async_result_set_op_res_gpointer (result, GUINT_TO_POINTER (--count), + NULL); + + if (count == 0) + g_simple_async_result_complete (result); + + g_object_unref (result); +} + +/** + * tp_call_channel_send_tones_async: + * @self: a #TpCallChannel + * @tones: a string representation of one or more DTMF events. + * @cancellable: optional #GCancellable object, %NULL to ignore + * @callback: a callback to call when the operation finishes + * @user_data: data to pass to @callback + * + * Send @tones on every of @self's contents which have the + * %TP_IFACE_CALL_CONTENT_INTERFACE_DTMF interface. + * + * For more details, see tp_call_content_send_tones_async(). + * + * Since: 0.17.5 + */ +void +tp_call_channel_send_tones_async (TpCallChannel *self, + const gchar *tones, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + guint i; + guint count = 0; + + g_return_if_fail (TP_IS_CALL_CHANNEL (self)); + + result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, + tp_call_channel_send_tones_async); + + for (i = 0; i < self->priv->contents->len; i++) + { + TpCallContent *content = g_ptr_array_index (self->priv->contents, i); + + if (!tp_proxy_has_interface_by_id (content, + TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_DTMF)) + continue; + + count++; + tp_call_content_send_tones_async (content, tones, cancellable, + send_tones_cb, g_object_ref (result)); + } + + if (count == 0) + { + g_simple_async_result_set_error (result, + TP_ERRORS, TP_ERROR_NOT_CAPABLE, + "Channel has no content implementing DTMF interface"); + g_simple_async_result_complete_in_idle (result); + } + else + { + g_simple_async_result_set_op_res_gpointer (result, + GUINT_TO_POINTER (count), NULL); + } + + g_object_unref (result); +} + +/** + * tp_call_channel_send_tones_finish: + * @self: a #TpCallChannel + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Finishes tp_call_channel_send_tones_async(). + * + * Returns: %TRUE on success, %FALSE otherwise. + * Since: 0.17.5 + */ +gboolean +tp_call_channel_send_tones_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (self, tp_call_channel_send_tones_async) +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-channel.h telepathy-glib-0.17.5/telepathy-glib/call-channel.h --- telepathy-glib-0.17.4/telepathy-glib/call-channel.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-channel.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,143 @@ +/* + * call-channel.h - high level API for Call channels + * + * Copyright (C) 2011 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __TP_CALL_CHANNEL_H__ +#define __TP_CALL_CHANNEL_H__ + +#include + +G_BEGIN_DECLS + +#define TP_TYPE_CALL_CHANNEL (tp_call_channel_get_type ()) +#define TP_CALL_CHANNEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TYPE_CALL_CHANNEL, TpCallChannel)) +#define TP_CALL_CHANNEL_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), TP_TYPE_CALL_CHANNEL, TpCallChannelClass)) +#define TP_IS_CALL_CHANNEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TYPE_CALL_CHANNEL)) +#define TP_IS_CALL_CHANNEL_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), TP_TYPE_CALL_CHANNEL)) +#define TP_CALL_CHANNEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TYPE_CALL_CHANNEL, TpCallChannelClass)) + +/* forward declaration, see call-content.h for the rest */ +typedef struct _TpCallContent TpCallContent; + +typedef struct _TpCallChannel TpCallChannel; +typedef struct _TpCallChannelClass TpCallChannelClass; +typedef struct _TpCallChannelPrivate TpCallChannelPrivate; + +struct _TpCallChannel +{ + /**/ + TpChannel parent; + TpCallChannelPrivate *priv; +}; + +struct _TpCallChannelClass +{ + /**/ + TpChannelClass parent_class; + GCallback _padding[7]; +}; + +GType tp_call_channel_get_type (void); + +typedef struct _TpCallStateReason TpCallStateReason; +struct _TpCallStateReason +{ + TpHandle actor; + TpCallStateChangeReason reason; + gchar *dbus_reason; + + /**/ + guint ref_count; +}; + +#define TP_TYPE_CALL_STATE_REASON (tp_call_state_reason_get_type ()) +GType tp_call_state_reason_get_type (void); + +#define TP_CALL_CHANNEL_FEATURE_CORE \ + tp_call_channel_get_feature_quark_core () +GQuark tp_call_channel_get_feature_quark_core (void) G_GNUC_CONST; + +GPtrArray *tp_call_channel_get_contents (TpCallChannel *self); +TpCallState tp_call_channel_get_state (TpCallChannel *self, + TpCallFlags *flags, + GHashTable **details, + TpCallStateReason **reason); +gboolean tp_call_channel_has_hardware_streaming (TpCallChannel *self); +gboolean tp_call_channel_has_initial_audio (TpCallChannel *self, + const gchar **initial_audio_name); +gboolean tp_call_channel_has_initial_video (TpCallChannel *self, + const gchar **initial_video_name); +gboolean tp_call_channel_has_mutable_contents (TpCallChannel *self); +GHashTable *tp_call_channel_get_members (TpCallChannel *self); + +gboolean tp_call_channel_has_dtmf (TpCallChannel *self); + +void tp_call_channel_set_ringing_async (TpCallChannel *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_call_channel_set_ringing_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error); + +void tp_call_channel_set_queued_async (TpCallChannel *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_call_channel_set_queued_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error); + +void tp_call_channel_accept_async (TpCallChannel *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_call_channel_accept_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error); + +void tp_call_channel_hangup_async (TpCallChannel *self, + TpCallStateChangeReason reason, + gchar *detailed_reason, + gchar *message, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_call_channel_hangup_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error); + +void tp_call_channel_add_content_async (TpCallChannel *self, + gchar *name, + TpMediaStreamType type, + TpMediaStreamDirection initial_direction, + GAsyncReadyCallback callback, + gpointer user_data); +TpCallContent *tp_call_channel_add_content_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error); + +void tp_call_channel_send_tones_async (TpCallChannel *self, + const gchar *tones, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_call_channel_send_tones_finish (TpCallChannel *self, + GAsyncResult *result, + GError **error); + +G_END_DECLS + +#endif diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-content.c telepathy-glib-0.17.5/telepathy-glib/call-content.c --- telepathy-glib-0.17.4/telepathy-glib/call-content.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-content.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,945 @@ +/* + * call-content.h - high level API for Call contents + * + * Copyright (C) 2011 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:call-content + * @title: TpCallContent + * @short_description: proxy object for a call content + * + * #TpCallContent is a sub-class of #TpProxy providing convenient API + * to represent #TpCallChannel's content. + */ + +/** + * TpCallContent: + * + * Data structure representing a #TpCallContent. + * + * Since: 0.17.5 + */ + +/** + * TpCallContentClass: + * + * The class of a #TpCallContent. + * + * Since: 0.17.5 + */ + +#include "config.h" + +#include "telepathy-glib/call-content.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define DEBUG_FLAG TP_DEBUG_CALL +#include "telepathy-glib/debug-internal.h" +#include "telepathy-glib/call-internal.h" +#include "telepathy-glib/proxy-internal.h" +#include "telepathy-glib/util-internal.h" +#include "telepathy-glib/_gen/signals-marshal.h" + +#include "_gen/tp-cli-call-content-body.h" + +G_DEFINE_TYPE (TpCallContent, tp_call_content, TP_TYPE_PROXY) + +typedef struct _SendTonesData SendTonesData; + +struct _TpCallContentPrivate +{ + TpConnection *connection; + + gchar *name; + TpMediaStreamType media_type; + TpCallContentDisposition disposition; + GPtrArray *streams; + + gboolean properties_retrieved; + + GQueue *tones_queue; + SendTonesData *current_tones; +}; + +enum +{ + PROP_CONNECTION = 1, + PROP_NAME, + PROP_MEDIA_TYPE, + PROP_DISPOSITION, + PROP_STREAMS +}; + +enum +{ + REMOVED, + STREAMS_ADDED, + STREAMS_REMOVED, + LAST_SIGNAL +}; + +static guint _signals[LAST_SIGNAL] = { 0, }; + +static TpCallStream * +_tp_call_stream_new (TpCallContent *self, + const gchar *object_path) +{ + return g_object_new (TP_TYPE_CALL_STREAM, + "bus-name", tp_proxy_get_bus_name (self), + "dbus-daemon", tp_proxy_get_dbus_daemon (self), + "dbus-connection", tp_proxy_get_dbus_connection (self), + "object-path", object_path, + "connection", self->priv->connection, + NULL); +} + +static void +streams_added_cb (TpCallContent *self, + const GPtrArray *streams, + gpointer user_data, + GObject *weak_object) +{ + guint i; + GPtrArray *added_streams; + + if (!self->priv->properties_retrieved) + return; + + added_streams = g_ptr_array_sized_new (streams->len); + + for (i = 0; i < streams->len; i++) + { + const gchar *object_path = g_ptr_array_index (streams, i); + TpCallStream *stream ; + + DEBUG ("Stream added: %s", object_path); + + stream = _tp_call_stream_new (self, object_path); + g_ptr_array_add (self->priv->streams, stream); + g_ptr_array_add (added_streams, stream); + } + + g_signal_emit (self, _signals[STREAMS_ADDED], 0, added_streams); + g_ptr_array_unref (added_streams); +} + +static void +streams_removed_cb (TpCallContent *self, + const GPtrArray *streams, + const GValueArray *reason, + gpointer user_data, + GObject *weak_object) +{ + GPtrArray *removed_streams; + guint i; + + if (!self->priv->properties_retrieved) + return; + + removed_streams = _tp_g_ptr_array_new_full (streams->len, g_object_unref); + + for (i = 0; i < streams->len; i++) + { + const gchar *object_path = g_ptr_array_index (streams, i); + gboolean found = FALSE; + guint j; + + for (j = 0; j < self->priv->streams->len; j++) + { + TpCallStream *stream = g_ptr_array_index (self->priv->streams, j); + + if (!tp_strdiff (tp_proxy_get_object_path (stream), object_path)) + { + DEBUG ("Stream removed: %s", object_path); + + found = TRUE; + g_ptr_array_add (removed_streams, g_object_ref (stream)); + g_ptr_array_remove_index_fast (self->priv->streams, j); + break; + } + } + + if (!found) + DEBUG ("Stream '%s' removed but not found", object_path); + } + + if (removed_streams->len > 0) + { + TpCallStateReason *r; + + r = _tp_call_state_reason_new (reason); + g_signal_emit (self, _signals[STREAMS_REMOVED], 0, removed_streams, r); + _tp_call_state_reason_unref (r); + } + + g_ptr_array_unref (removed_streams); +} + +static void tones_stopped_cb (TpCallContent *self, + gboolean cancelled, + gpointer user_data, + GObject *weak_object); + +static void +got_all_properties_cb (TpProxy *proxy, + GHashTable *properties, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + TpCallContent *self = (TpCallContent *) proxy; + const gchar * const *interfaces; + GPtrArray *streams; + guint i; + + if (error != NULL) + { + DEBUG ("Could not get the call content properties: %s", error->message); + _tp_proxy_set_feature_prepared (proxy, + TP_CALL_CONTENT_FEATURE_CORE, FALSE); + return; + } + + self->priv->properties_retrieved = TRUE; + + interfaces = tp_asv_get_boxed (properties, + "Interfaces", G_TYPE_STRV); + self->priv->name = g_strdup (tp_asv_get_string (properties, + "Name")); + self->priv->media_type = tp_asv_get_uint32 (properties, + "Type", NULL); + self->priv->disposition = tp_asv_get_uint32 (properties, + "Disposition", NULL); + streams = tp_asv_get_boxed (properties, + "Streams", TP_ARRAY_TYPE_OBJECT_PATH_LIST); + + tp_proxy_add_interfaces ((TpProxy *) self, interfaces); + + for (i = 0; i < streams->len; i++) + { + const gchar *object_path = g_ptr_array_index (streams, i); + + DEBUG ("Initial stream added: %s", object_path); + + g_ptr_array_add (self->priv->streams, + _tp_call_stream_new (self, object_path)); + } + + if (tp_proxy_has_interface_by_id (self, + TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_DTMF)) + { + tp_cli_call_content_interface_dtmf_connect_to_stopped_tones (self, + tones_stopped_cb, NULL, NULL, NULL, NULL); + } + + _tp_proxy_set_feature_prepared (proxy, TP_CALL_CONTENT_FEATURE_CORE, TRUE); +} + +struct _SendTonesData +{ + TpCallContent *content; + gchar *tones; + GSimpleAsyncResult *result; + GCancellable *cancellable; + guint cancel_id; +}; + +static void maybe_send_tones (TpCallContent *self); +static void send_tones_cancelled_cb (GCancellable *cancellable, + SendTonesData *data); + +static SendTonesData * +send_tones_data_new (TpCallContent *self, + const gchar *tones, + GSimpleAsyncResult *result, + GCancellable *cancellable) +{ + SendTonesData *data; + + data = g_slice_new0 (SendTonesData); + data->content = g_object_ref (self); + data->tones = g_strdup (tones); + data->result = g_object_ref (result); + + if (cancellable != NULL) + { + data->cancellable = g_object_ref (cancellable); + data->cancel_id = g_cancellable_connect (cancellable, + G_CALLBACK (send_tones_cancelled_cb), data, NULL); + } + + return data; +} + +static void +send_tones_data_free (SendTonesData *data) +{ + g_free (data->tones); + g_object_unref (data->result); + g_object_unref (data->content); + + if (data->cancellable != NULL) + { + if (data->cancel_id != 0) + g_cancellable_disconnect (data->cancellable, data->cancel_id); + + g_object_unref (data->cancellable); + } + + g_slice_free (SendTonesData, data); +} + +static gboolean +send_tones_cancelled_idle_cb (gpointer user_data) +{ + SendTonesData *data = user_data; + TpCallContent *self = data->content; + + /* If it is the tone currently being played, stop it. Otherwise wait for its + * turn in the queue to preserve order. */ + if (self->priv->current_tones == data) + { + tp_cli_call_content_interface_dtmf_call_stop_tone (self, -1, + NULL, NULL, NULL, NULL); + } + + return FALSE; +} + +static void +send_tones_cancelled_cb (GCancellable *cancellable, + SendTonesData *data) +{ + /* Cancel in idle for thread-safeness */ + g_idle_add (send_tones_cancelled_idle_cb, data); +} + +static void +complete_sending_tones (TpCallContent *self, + const GError *error) +{ + if (self->priv->current_tones == NULL) + return; + + if (error != NULL) + { + g_simple_async_result_set_from_error (self->priv->current_tones->result, + error); + } + + g_simple_async_result_complete (self->priv->current_tones->result); + + send_tones_data_free (self->priv->current_tones); + self->priv->current_tones = NULL; + + maybe_send_tones (self); +} + +static void +tones_stopped_cb (TpCallContent *self, + gboolean cancelled, + gpointer user_data, + GObject *weak_object) +{ + if (cancelled) + { + GError e = { TP_ERRORS, TP_ERROR_CANCELLED, + "The DTMF tones were actively cancelled via StopTones" }; + complete_sending_tones (self, &e); + return; + } + + complete_sending_tones (self, NULL); +} + +static void +multiple_tones_cb (TpCallContent *self, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + if (error != NULL) + complete_sending_tones (self, error); +} + +static void +maybe_send_tones (TpCallContent *self) +{ + if (self->priv->current_tones != NULL) + return; + + if (g_queue_is_empty (self->priv->tones_queue)) + return; + + self->priv->current_tones = g_queue_pop_head (self->priv->tones_queue); + + /* Yes this is safe if cancellable is NULL! */ + if (g_cancellable_is_cancelled (self->priv->current_tones->cancellable)) + { + GError e = { TP_ERRORS, TP_ERROR_CANCELLED, + "The DTMF tones were cancelled before it has started" }; + complete_sending_tones (self, &e); + return; + } + + DEBUG ("Emitting multiple tones: %s", self->priv->current_tones->tones); + tp_cli_call_content_interface_dtmf_call_multiple_tones (self, -1, + self->priv->current_tones->tones, multiple_tones_cb, NULL, NULL, NULL); +} + +static void +tp_call_content_constructed (GObject *obj) +{ + TpCallContent *self = (TpCallContent *) obj; + + ((GObjectClass *) tp_call_content_parent_class)->constructed (obj); + + /* Connect signals for mutable properties */ + tp_cli_call_content_connect_to_streams_added (self, + streams_added_cb, NULL, NULL, G_OBJECT (self), NULL); + tp_cli_call_content_connect_to_streams_removed (self, + streams_removed_cb, NULL, NULL, G_OBJECT (self), NULL); + + tp_cli_dbus_properties_call_get_all (self, -1, + TP_IFACE_CALL_CONTENT, + got_all_properties_cb, NULL, NULL, G_OBJECT (self)); +} + +static void +tp_call_content_dispose (GObject *object) +{ + TpCallContent *self = (TpCallContent *) object; + + g_clear_object (&self->priv->connection); + tp_clear_pointer (&self->priv->name, g_free); + tp_clear_pointer (&self->priv->streams, g_ptr_array_unref); + + G_OBJECT_CLASS (tp_call_content_parent_class)->dispose (object); +} + +static void +tp_call_content_finalize (GObject *object) +{ + TpCallContent *self = (TpCallContent *) object; + + /* Results hold a ref on self, finalize can't happen if queue isn't empty */ + g_assert (self->priv->current_tones == NULL); + g_assert (g_queue_is_empty (self->priv->tones_queue)); + g_queue_free (self->priv->tones_queue); + + G_OBJECT_CLASS (tp_call_content_parent_class)->finalize (object); +} + +static void +tp_call_content_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + TpCallContent *self = (TpCallContent *) object; + + switch (property_id) + { + case PROP_CONNECTION: + g_value_set_object (value, self->priv->connection); + break; + case PROP_NAME: + g_value_set_string (value, self->priv->name); + break; + case PROP_MEDIA_TYPE: + g_value_set_uint (value, self->priv->media_type); + break; + case PROP_DISPOSITION: + g_value_set_uint (value, self->priv->disposition); + break; + case PROP_STREAMS: + g_value_set_boxed (value, self->priv->streams); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_call_content_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + TpCallContent *self = (TpCallContent *) object; + + switch (property_id) + { + case PROP_CONNECTION: + g_assert (self->priv->connection == NULL); /* construct-only */ + self->priv->connection = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +enum { + FEAT_CORE, + N_FEAT +}; + +static const TpProxyFeature * +tp_call_content_list_features (TpProxyClass *cls G_GNUC_UNUSED) +{ + static TpProxyFeature features[N_FEAT + 1] = { { 0 } }; + + if (G_LIKELY (features[0].name != 0)) + return features; + + /* started from constructed */ + features[FEAT_CORE].name = TP_CALL_CONTENT_FEATURE_CORE; + features[FEAT_CORE].core = TRUE; + + /* assert that the terminator at the end is there */ + g_assert (features[N_FEAT].name == 0); + + return features; +} + +static void +tp_call_content_class_init (TpCallContentClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + TpProxyClass *proxy_class = (TpProxyClass *) klass; + GParamSpec *param_spec; + + gobject_class->constructed = tp_call_content_constructed; + gobject_class->get_property = tp_call_content_get_property; + gobject_class->set_property = tp_call_content_set_property; + gobject_class->dispose = tp_call_content_dispose; + gobject_class->finalize = tp_call_content_finalize; + + proxy_class->list_features = tp_call_content_list_features; + proxy_class->interface = TP_IFACE_QUARK_CALL_CONTENT; + + g_type_class_add_private (gobject_class, sizeof (TpCallContentPrivate)); + tp_call_content_init_known_interfaces (); + + /** + * TpCallContent:connection: + * + * The #TpConnection of the call. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_object ("connection", "Connection", + "The connection of this content", + TP_TYPE_CONNECTION, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_CONNECTION, + param_spec); + + /** + * TpCallContent:name: + * + * The name of this content. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_string ("name", "Name", + "The name of this content, if any", + "", + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_NAME, param_spec); + + /** + * TpCallContent:media-type: + * + * The media type of this content, from #TpMediaStreamType. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("media-type", "Media type", + "The media type of this content", + 0, G_MAXUINT, 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_MEDIA_TYPE, param_spec); + + /** + * TpCallContent:disposition: + * + * The disposition of this content, from #TpCallContentDisposition. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("disposition", "Disposition", + "The disposition of this content", + 0, G_MAXUINT, 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_DISPOSITION, param_spec); + + /* FIXME: Should be annoted with + * + * Type: GLib.PtrArray + * Transfer: container + * + * But it does not work (bgo#663846) and makes gtkdoc fail myserably. + */ + + /** + * TpCallContent:streams: + * + * #GPtrArray of #TpCallStream objects. The list of stream objects that are + * part of this content. + * + * It is NOT guaranteed that %TP_CALL_STREAM_FEATURE_CORE is prepared on + * those objects. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("streams", "Stream", + "The streams of this content", + G_TYPE_PTR_ARRAY, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_STREAMS, + param_spec); + + /** + * TpCallContent::removed + * @self: the #TpCallContent + * + * The ::removed signal is emitted when @self is removed from + * a #TpCallChannel. + * + * Since: 0.17.5 + */ + _signals[REMOVED] = g_signal_new ("removed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + + /** + * TpCallContent::streams-added + * @self: the #TpCallContent + * @streams: (type GLib.PtrArray) (element-type TelepathyGLib.CallStream): + * a #GPtrArray of newly added #TpCallStream + * + * The ::streams-added signal is emitted whenever + * #TpCallStream are added to @self. + * + * It is NOT guaranteed that %TP_CALL_STREAM_FEATURE_CORE is prepared on + * stream objects. + * + * Since: 0.17.5 + */ + _signals[STREAMS_ADDED] = g_signal_new ("streams-added", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + g_cclosure_marshal_VOID__BOXED, + G_TYPE_NONE, + 1, G_TYPE_PTR_ARRAY); + + /** + * TpCallContent::streams-removed + * @self: the #TpCallContent + * @streams: (type GLib.PtrArray) (element-type TelepathyGLib.CallStream): + * a #GPtrArray of newly removed #TpCallStream + * @reason: a #TpCallStateReason + * + * The ::streams-removed signal is emitted whenever + * #TpCallStreams are removed from @self. + * + * It is NOT guaranteed that %TP_CALL_STREAM_FEATURE_CORE is prepared on + * stream objects. + * + * Since: 0.17.5 + */ + _signals[STREAMS_REMOVED] = g_signal_new ("streams-removed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + _tp_marshal_VOID__BOXED_BOXED, + G_TYPE_NONE, + 2, G_TYPE_PTR_ARRAY, TP_TYPE_CALL_STATE_REASON); + +} + +static void +tp_call_content_init (TpCallContent *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self), TP_TYPE_CALL_CONTENT, + TpCallContentPrivate); + + self->priv->streams = g_ptr_array_new_with_free_func (g_object_unref); + self->priv->tones_queue = g_queue_new (); +} + +/** + * tp_call_content_init_known_interfaces: + * + * Ensure that the known interfaces for #TpCallContent have been set up. + * This is done automatically when necessary, but for correct + * overriding of library interfaces by local extensions, you should + * call this function before calling + * tp_proxy_or_subclass_hook_on_interface_add() with first argument + * %TP_TYPE_CALL_CONTENT. + * + * Since: 0.17.5 + */ +void +tp_call_content_init_known_interfaces (void) +{ + static gsize once = 0; + + if (g_once_init_enter (&once)) + { + GType tp_type = TP_TYPE_CALL_CONTENT; + + tp_proxy_init_known_interfaces (); + tp_proxy_or_subclass_hook_on_interface_add (tp_type, + tp_cli_call_content_add_signals); + tp_proxy_subclass_add_error_mapping (tp_type, + TP_ERROR_PREFIX, TP_ERRORS, TP_TYPE_ERROR); + + g_once_init_leave (&once, 1); + } +} + +/** + * TP_CALL_CONTENT_FEATURE_CORE: + * + * Expands to a call to a function that returns a quark for the "core" + * feature on a #TpCallContent. + * + * One can ask for a feature to be prepared using the tp_proxy_prepare_async() + * function, and waiting for it to trigger the callback. + */ +GQuark +tp_call_content_get_feature_quark_core (void) +{ + return g_quark_from_static_string ("tp-call-content-feature-core"); +} + +/** + * tp_call_content_get_name: + * @self: a #TpCallContent + * + * + * + * Returns: the value of #TpCallContent:name + * Since: 0.17.5 + */ +const gchar * +tp_call_content_get_name (TpCallContent *self) +{ + g_return_val_if_fail (TP_IS_CALL_CONTENT (self), NULL); + + return self->priv->name; +} + +/** + * tp_call_content_get_media_type: + * @self: a #TpCallContent + * + * + * + * Returns: the value of #TpCallContent:name + * Since: 0.17.5 + */ +TpMediaStreamType +tp_call_content_get_media_type (TpCallContent *self) +{ + g_return_val_if_fail (TP_IS_CALL_CONTENT (self), 0); + + return self->priv->media_type; +} + +/** + * tp_call_content_get_disposition: + * @self: a #TpCallContent + * + * + * + * Returns: the value of #TpCallContent:disposition + * Since: 0.17.5 + */ +TpCallContentDisposition +tp_call_content_get_disposition (TpCallContent *self) +{ + g_return_val_if_fail (TP_IS_CALL_CONTENT (self), 0); + + return self->priv->disposition; +} + +/** + * tp_call_content_get_streams: + * @self: a #TpCallContent + * + * + * + * Returns: (transfer none) (type GLib.PtrArray) (element-type TelepathyGLib.CallStream): + * the value of #TpCallContent:streams + * Since: 0.17.5 + */ +GPtrArray * +tp_call_content_get_streams (TpCallContent *self) +{ + g_return_val_if_fail (TP_IS_CALL_CONTENT (self), NULL); + + return self->priv->streams; +} + +static void +generic_async_cb (TpCallContent *self, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + GSimpleAsyncResult *result = user_data; + + if (error != NULL) + { + DEBUG ("Error: %s", error->message); + g_simple_async_result_set_from_error (result, error); + } + + g_simple_async_result_complete (result); +} + +/** + * tp_call_content_remove_async: + * @self: a #TpCallContent + * @callback: a callback to call when the operation finishes + * @user_data: data to pass to @callback + * + * Remove the content from the call. This will cause #TpCallContent::removed + * to be emitted. + * + * Since: 0.17.5 + */ +void +tp_call_content_remove_async (TpCallContent *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + g_return_if_fail (TP_IS_CALL_CONTENT (self)); + + result = g_simple_async_result_new (G_OBJECT (self), callback, + user_data, tp_call_content_remove_async); + + tp_cli_call_content_call_remove (self, -1, + generic_async_cb, result, g_object_unref, G_OBJECT (self)); +} + +/** + * tp_call_content_remove_finish: + * @self: a #TpCallContent + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Finishes tp_call_content_remove_async(). + * + * Since: 0.17.5 + */ +gboolean +tp_call_content_remove_finish (TpCallContent *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (self, tp_call_content_remove_async); +} + +/** + * tp_call_content_send_tones_async: + * @self: a #TpCallContent + * @tones: a string representation of one or more DTMF events. + * @cancellable: optional #GCancellable object, %NULL to ignore + * @callback: a callback to call when the operation finishes + * @user_data: data to pass to @callback + * + * Send @tones DTMF code on @self content. @self must have the + * %TP_IFACE_CALL_CONTENT_INTERFACE_DTMF interface. + * + * If DTMF tones are already being played, this request is queued. + * + * Since: 0.17.5 + */ +void +tp_call_content_send_tones_async (TpCallContent *self, + const gchar *tones, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + SendTonesData *data; + + g_return_if_fail (TP_IS_CALL_CONTENT (self)); + + if (!tp_proxy_has_interface_by_id (self, + TP_IFACE_QUARK_CALL_CONTENT_INTERFACE_DTMF)) + { + g_simple_async_report_error_in_idle (G_OBJECT (self), + callback, user_data, TP_ERRORS, TP_ERROR_NOT_CAPABLE, + "Content does not support DTMF"); + return; + } + + result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, + tp_call_content_send_tones_async); + + data = send_tones_data_new (self, tones, result, cancellable); + g_queue_push_tail (self->priv->tones_queue, data); + + maybe_send_tones (self); + + g_object_unref (result); +} + +/** + * tp_call_content_send_tones_finish: + * @self: a #TpCallContent + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Finishes tp_call_content_send_tones_async(). + * + * Returns: %TRUE on success, %FALSE otherwise. + * Since: 0.17.5 + */ +gboolean +tp_call_content_send_tones_finish (TpCallContent *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (self, tp_call_content_send_tones_async); +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-content.h telepathy-glib-0.17.5/telepathy-glib/call-content.h --- telepathy-glib-0.17.4/telepathy-glib/call-content.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-content.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,87 @@ +/* + * call-content.h - high level API for Call contents + * + * Copyright (C) 2011 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __TP_CALL_CONTENT_H__ +#define __TP_CALL_CONTENT_H__ + +#include +#include + +G_BEGIN_DECLS + +#define TP_TYPE_CALL_CONTENT (tp_call_content_get_type ()) +#define TP_CALL_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TYPE_CALL_CONTENT, TpCallContent)) +#define TP_CALL_CONTENT_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), TP_TYPE_CALL_CONTENT, TpCallContentClass)) +#define TP_IS_CALL_CONTENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TYPE_CALL_CONTENT)) +#define TP_IS_CALL_CONTENT_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), TP_TYPE_CALL_CONTENT)) +#define TP_CALL_CONTENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TYPE_CALL_CONTENT, TpCallContentClass)) + +/* TpCallContent is forward-declared in call-channel.h */ +typedef struct _TpCallContentClass TpCallContentClass; +typedef struct _TpCallContentPrivate TpCallContentPrivate; + +struct _TpCallContent +{ + /**/ + TpProxy parent; + TpCallContentPrivate *priv; +}; + +struct _TpCallContentClass +{ + /**/ + TpProxyClass parent_class; + GCallback _padding[7]; +}; + +GType tp_call_content_get_type (void); + +void tp_call_content_init_known_interfaces (void); + +#define TP_CALL_CONTENT_FEATURE_CORE \ + tp_call_content_get_feature_quark_core () +GQuark tp_call_content_get_feature_quark_core (void) G_GNUC_CONST; + +const gchar *tp_call_content_get_name (TpCallContent *self); +TpMediaStreamType tp_call_content_get_media_type (TpCallContent *self); +TpCallContentDisposition tp_call_content_get_disposition (TpCallContent *self); +GPtrArray *tp_call_content_get_streams (TpCallContent *self); + +void tp_call_content_remove_async (TpCallContent *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_call_content_remove_finish (TpCallContent *self, + GAsyncResult *result, + GError **error); + +void tp_call_content_send_tones_async (TpCallContent *self, + const gchar *tones, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_call_content_send_tones_finish (TpCallContent *self, + GAsyncResult *result, + GError **error); + +G_END_DECLS + +#include + +#endif diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-content-media-description.c telepathy-glib-0.17.5/telepathy-glib/call-content-media-description.c --- telepathy-glib-0.17.4/telepathy-glib/call-content-media-description.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-content-media-description.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,715 @@ +/* + * call-content-media-description.c - Source for TpyCallContentMediaDescription + * Copyright (C) 2009-2011 Collabora Ltd. + * @author Sjoerd Simons + * @author Olivier Crete + * @author Xavier Claessens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:call-content-media-description + * @title: TpCallContentMediaDescription + * @short_description: implementation of #TpSvcCallContentMediaDescription + * @see_also: #TpBaseMediaCallContent + * + * This class is used to negociate the media description used with a remote + * contact. To be used with #TpBaseMediaCallContent implementations. + * + * Since: 0.17.5 + */ + +/** + * TpCallContentMediaDescription: + * + * A class for media content description + * + * Since: 0.17.5 + */ + +/** + * TpCallContentMediaDescriptionClass: + * + * The class structure for #TpCallContentMediaDescription + * + * Since: 0.17.5 + */ + +#include "config.h" + +#include "call-content-media-description.h" + +#define DEBUG_FLAG TP_DEBUG_CALL +#include "telepathy-glib/base-call-internal.h" +#include "telepathy-glib/debug-internal.h" +#include "telepathy-glib/dbus.h" +#include "telepathy-glib/gtypes.h" +#include "telepathy-glib/handle.h" +#include "telepathy-glib/interfaces.h" +#include "telepathy-glib/svc-call.h" +#include "telepathy-glib/svc-properties-interface.h" +#include "telepathy-glib/util.h" +#include "telepathy-glib/util-internal.h" + +static void call_content_media_description_iface_init (gpointer, gpointer); + +G_DEFINE_TYPE_WITH_CODE(TpCallContentMediaDescription, + tp_call_content_media_description, + G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CALL_CONTENT_MEDIA_DESCRIPTION, + call_content_media_description_iface_init); + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, + tp_dbus_properties_mixin_iface_init); + ); + +static const gchar *tp_call_content_media_description_interfaces[] = { + NULL +}; + +/* properties */ +enum +{ + PROP_OBJECT_PATH = 1, + PROP_DBUS_DAEMON, + + PROP_INTERFACES, + PROP_FURTHER_NEGOTIATION_REQUIRED, + PROP_HAS_REMOTE_INFORMATION, + PROP_CODECS, + PROP_REMOTE_CONTACT, + PROP_SSRCS +}; + +/* private structure */ +struct _TpCallContentMediaDescriptionPrivate +{ + TpDBusDaemon *dbus_daemon; + gchar *object_path; + + gboolean further_negotiation_required; + gboolean has_remote_information; + /* GPtrArray of owned GValueArray */ + GPtrArray *codecs; + TpHandle remote_contact; + /* TpHandle -> reffed GArray */ + GHashTable *ssrcs; + + GSimpleAsyncResult *result; + GCancellable *cancellable; + guint handler_id; +}; + +static void +tp_call_content_media_description_init (TpCallContentMediaDescription *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + TP_TYPE_CALL_CONTENT_MEDIA_DESCRIPTION, + TpCallContentMediaDescriptionPrivate); + + self->priv->ssrcs = g_hash_table_new_full (NULL, NULL, NULL, + (GDestroyNotify) g_array_unref); + self->priv->codecs = g_ptr_array_new_with_free_func ( + (GDestroyNotify) g_value_array_free); +} + +static void +tp_call_content_media_description_dispose (GObject *object) +{ + TpCallContentMediaDescription *self = (TpCallContentMediaDescription *) object; + + g_assert (self->priv->result == NULL); + + tp_clear_pointer (&self->priv->codecs, g_ptr_array_unref); + tp_clear_pointer (&self->priv->ssrcs, g_hash_table_unref); + g_clear_object (&self->priv->dbus_daemon); + + /* release any references held by the object here */ + if (G_OBJECT_CLASS (tp_call_content_media_description_parent_class)->dispose) + G_OBJECT_CLASS (tp_call_content_media_description_parent_class)->dispose ( + object); +} + +static void +tp_call_content_media_description_finalize (GObject *object) +{ + TpCallContentMediaDescription *self = (TpCallContentMediaDescription *) object; + + g_free (self->priv->object_path); + + G_OBJECT_CLASS (tp_call_content_media_description_parent_class)->finalize ( + object); +} + +static void +tp_call_content_media_description_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + TpCallContentMediaDescription *self = (TpCallContentMediaDescription *) object; + + switch (property_id) + { + case PROP_OBJECT_PATH: + g_value_set_string (value, self->priv->object_path); + break; + case PROP_DBUS_DAEMON: + g_value_set_object (value, self->priv->dbus_daemon); + break; + case PROP_INTERFACES: + g_value_set_boxed (value, tp_call_content_media_description_interfaces); + break; + case PROP_FURTHER_NEGOTIATION_REQUIRED: + g_value_set_boolean (value, self->priv->further_negotiation_required); + break; + case PROP_HAS_REMOTE_INFORMATION: + g_value_set_boolean (value, self->priv->has_remote_information); + break; + case PROP_CODECS: + g_value_set_boxed (value, self->priv->codecs); + break; + case PROP_REMOTE_CONTACT: + g_value_set_uint (value, self->priv->remote_contact); + break; + case PROP_SSRCS: + g_value_set_boxed (value, self->priv->ssrcs); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_call_content_media_description_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + TpCallContentMediaDescription *self = (TpCallContentMediaDescription *) object; + + switch (property_id) + { + case PROP_OBJECT_PATH: + g_assert (self->priv->object_path == NULL); /* construct-only */ + self->priv->object_path = g_value_dup_string (value); + break; + case PROP_DBUS_DAEMON: + g_assert (self->priv->dbus_daemon == NULL); /* construct-only */ + self->priv->dbus_daemon = g_value_dup_object (value); + break; + case PROP_FURTHER_NEGOTIATION_REQUIRED: + self->priv->further_negotiation_required = g_value_get_boolean (value); + break; + case PROP_HAS_REMOTE_INFORMATION: + self->priv->has_remote_information = g_value_get_boolean (value); + break; + case PROP_REMOTE_CONTACT: + self->priv->remote_contact = g_value_get_uint (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_call_content_media_description_class_init ( + TpCallContentMediaDescriptionClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *spec; + static TpDBusPropertiesMixinPropImpl media_description_props[] = { + { "Interfaces", "interfaces", NULL }, + { "FurtherNegotiationRequired", "further-negotiation-required", NULL }, + { "HasRemoteInformation", "has-remote-information", NULL}, + { "Codecs", "codecs", NULL }, + { "RemoteContact", "remote-contact", NULL }, + { "SSRCs", "ssrcs", NULL }, + { NULL } + }; + static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { + { TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION, + tp_dbus_properties_mixin_getter_gobject_properties, + NULL, + media_description_props, + }, + { NULL } + }; + + g_type_class_add_private (klass, sizeof (TpCallContentMediaDescriptionPrivate)); + + object_class->get_property = tp_call_content_media_description_get_property; + object_class->set_property = tp_call_content_media_description_set_property; + object_class->dispose = tp_call_content_media_description_dispose; + object_class->finalize = tp_call_content_media_description_finalize; + + /** + * TpCallContentMediaDescription:object-path: + * + * The D-Bus object path used for this object on the bus. + * + * Since: 0.17.5 + */ + spec = g_param_spec_string ("object-path", "D-Bus object path", + "The D-Bus object path used for this " + "object on the bus.", + NULL, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_OBJECT_PATH, spec); + + /** + * TpCallContentMediaDescription:dbus-daemon: + * + * The connection to the DBus daemon owning the CM. + * + * Since: 0.17.5 + */ + spec = g_param_spec_object ("dbus-daemon", + "The DBus daemon connection", + "The connection to the DBus daemon owning the CM", + TP_TYPE_DBUS_DAEMON, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_DBUS_DAEMON, spec); + + /** + * TpCallContentMediaDescription:interfaces: + * + * Additional interfaces implemented by this object. + * + * Since: 0.17.5 + */ + spec = g_param_spec_boxed ("interfaces", + "Interfaces", + "Extra interfaces provided by this media description", + G_TYPE_STRV, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_INTERFACES, + spec); + + /** + * TpCallContentMediaDescription:further-negotiation-required: + * + * %TRUE if more negotiation is required after MediaDescription is processed. + * + * Since: 0.17.5 + */ + spec = g_param_spec_boolean ("further-negotiation-required", + "FurtherNegotiationRequired", + "More negotiation is required after MediaDescription is processed", + FALSE, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, + PROP_FURTHER_NEGOTIATION_REQUIRED, + spec); + + /** + * TpCallContentMediaDescription:further-negotiation-required: + * + * %TRUE if the MediaDescription contains remote information. + * + * Since: 0.17.5 + */ + spec = g_param_spec_boolean ("has-remote-information", + "HasRemoteInformation", + "True if the MediaDescription contains remote information", + FALSE, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, + PROP_HAS_REMOTE_INFORMATION, + spec); + + /** + * TpCallContentMediaDescription:codecs: + * + * #GPtrArray{codecs #GValueArray}. + * A list of codecs the remote contact supports. + * + * Since: 0.17.5 + */ + spec = g_param_spec_boxed ("codecs", + "Codecs", + "A list of codecs the remote contact supports", + TP_ARRAY_TYPE_CODEC_LIST, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CODECS, + spec); + + /** + * TpCallContentMediaDescription:remote-contact: + * + * The contact #TpHandle that this media description applies to. + * + * Since: 0.17.5 + */ + spec = g_param_spec_uint ("remote-contact", + "RemoteContact", + "The contact handle that this media description applies to", + 0, G_MAXUINT, 0, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_REMOTE_CONTACT, + spec); + + /** + * TpCallContentMediaDescription:ssrcs: + * + * #GHashTable{contact #TpHandle, #GArray{uint}} + * A map of contacts to SSRCs. + * + * Since: 0.17.5 + */ + spec = g_param_spec_boxed ("ssrcs", + "SSRCs", + "A map of handles to SSRCs", + TP_HASH_TYPE_CONTACT_SSRCS_MAP, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_SSRCS, spec); + + klass->dbus_props_class.interfaces = prop_interfaces; + tp_dbus_properties_mixin_class_init (object_class, + G_STRUCT_OFFSET (TpCallContentMediaDescriptionClass, dbus_props_class)); +} + +/** + * tp_call_content_media_description_new: + * @dbus_daemon: value of #TpCallContentMediaDescription:dbus-daemon property + * @object_path: value of #TpCallContentMediaDescription:object-path property + * @remote_contact: value of + * #TpCallContentMediaDescription:remote-contact property + * @has_remote_information: value of + * #TpCallContentMediaDescription:has_remote_information property + * @further_negotiation_required: value of + * #TpCallContentMediaDescription:further_negotiation_required property + * + * Create a new #TpCallContentMediaDescription object. More information can be + * added after construction using + * tp_call_content_media_description_append_codec() and + * tp_call_content_media_description_add_ssrc(). + * + * Once all information has been filled, the media description can be offered + * using tp_base_media_call_content_offer_media_description(). + * + * Returns: a new #TpCallContentMediaDescription. + * Since: 0.17.5 + */ +TpCallContentMediaDescription * +tp_call_content_media_description_new (TpDBusDaemon *dbus_daemon, + const gchar *object_path, + TpHandle remote_contact, + gboolean has_remote_information, + gboolean further_negotiation_required) +{ + g_return_val_if_fail (g_variant_is_object_path (object_path), NULL); + + return g_object_new (TP_TYPE_CALL_CONTENT_MEDIA_DESCRIPTION, + "dbus-daemon", dbus_daemon, + "object-path", object_path, + "further-negotiation-required", further_negotiation_required, + "has-remote-information", has_remote_information, + "remote-contact", remote_contact, + NULL); +} + +/** + * tp_call_content_media_description_get_object_path: + * @self: a #TpCallContentMediaDescription + * + * + * + * Returns: the value of #TpCallContentMediaDescription:object-path + * Since: 0.17.5 + */ +const gchar * +tp_call_content_media_description_get_object_path ( + TpCallContentMediaDescription *self) +{ + g_return_val_if_fail (TP_IS_CALL_CONTENT_MEDIA_DESCRIPTION (self), NULL); + + return self->priv->object_path; +} + +/** + * tp_call_content_media_description_get_remote_contact: + * @self: a #TpCallContentMediaDescription + * + * + * + * Returns: the value of #TpCallContentMediaDescription:remote-contact + * Since: 0.17.5 + */ +TpHandle +tp_call_content_media_description_get_remote_contact ( + TpCallContentMediaDescription *self) +{ + g_return_val_if_fail (TP_IS_CALL_CONTENT_MEDIA_DESCRIPTION (self), 0); + + return self->priv->remote_contact; +} + +/** + * tp_call_content_media_description_add_ssrc: + * @self: a #TpCallContentMediaDescription + * @contact: if you use this API, you know what it is about + * @ssrc: if you use this API, you know what it is about + * + * if you use this API, you know what it is about + * + * Since: 0.17.5 + */ +void +tp_call_content_media_description_add_ssrc (TpCallContentMediaDescription *self, + TpHandle contact, + guint ssrc) +{ + GArray *array; + guint i; + + g_return_if_fail (TP_IS_CALL_CONTENT_MEDIA_DESCRIPTION (self)); + + array = g_hash_table_lookup (self->priv->ssrcs, + GUINT_TO_POINTER (contact)); + + if (array == NULL) + { + array = g_array_new (FALSE, FALSE, sizeof (guint)); + g_hash_table_insert (self->priv->ssrcs, + GUINT_TO_POINTER (contact), + array); + } + + for (i = 0; i < array->len; i++) + { + if (g_array_index (array, guint, i) == ssrc) + return; + } + g_array_append_val (array, ssrc); +} + +/** + * tp_call_content_media_description_append_codec: + * @self: a #TpCallContentMediaDescription + * @identifier: if you use this API, you know what it is about + * @name: if you use this API, you know what it is about + * @clock_rate: if you use this API, you know what it is about + * @channels: if you use this API, you know what it is about + * @updated: if you use this API, you know what it is about + * @parameters: if you use this API, you know what it is about + * + * Add description for a supported codec. + * + * Since: 0.17.5 + */ +void +tp_call_content_media_description_append_codec ( + TpCallContentMediaDescription *self, + guint identifier, + const gchar *name, + guint clock_rate, + guint channels, + gboolean updated, + GHashTable *parameters) +{ + g_return_if_fail (TP_IS_CALL_CONTENT_MEDIA_DESCRIPTION (self)); + + if (parameters == NULL) + parameters = g_hash_table_new (g_str_hash, g_str_equal); + + g_ptr_array_add (self->priv->codecs, tp_value_array_build (6, + G_TYPE_UINT, identifier, + G_TYPE_STRING, name, + G_TYPE_UINT, clock_rate, + G_TYPE_UINT, channels, + G_TYPE_BOOLEAN, updated, + TP_HASH_TYPE_STRING_STRING_MAP, parameters, + G_TYPE_INVALID)); +} + +static void +cancelled_cb (GCancellable *cancellable, + gpointer user_data) +{ + TpCallContentMediaDescription *self = user_data; + + tp_dbus_daemon_unregister_object (self->priv->dbus_daemon, G_OBJECT (self)); + + g_simple_async_result_set_error (self->priv->result, + G_IO_ERROR, G_IO_ERROR_CANCELLED, + "Media Description cancelled"); + g_simple_async_result_complete_in_idle (self->priv->result); + + g_clear_object (&self->priv->cancellable); + g_clear_object (&self->priv->result); + self->priv->handler_id = 0; +} + +void +_tp_call_content_media_description_offer_async ( + TpCallContentMediaDescription *self, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_return_if_fail (TP_IS_CALL_CONTENT_MEDIA_DESCRIPTION (self)); + g_return_if_fail (self->priv->result == NULL); + + self->priv->result = g_simple_async_result_new (G_OBJECT (self), + callback, user_data, _tp_call_content_media_description_offer_async); + + if (cancellable != NULL) + { + self->priv->cancellable = g_object_ref (cancellable); + self->priv->handler_id = g_cancellable_connect ( + cancellable, G_CALLBACK (cancelled_cb), self, NULL); + } + + /* register object on the bus */ + DEBUG ("Registering %s", self->priv->object_path); + tp_dbus_daemon_register_object (self->priv->dbus_daemon, + self->priv->object_path, G_OBJECT (self)); +} + +gboolean +_tp_call_content_media_description_offer_finish ( + TpCallContentMediaDescription *self, + GAsyncResult *result, + GHashTable **properties, + GError **error) +{ + _tp_implement_finish_copy_pointer (self, + _tp_call_content_media_description_offer_async, + g_hash_table_ref, properties); +} + +GHashTable * +_tp_call_content_media_description_dup_properties ( + TpCallContentMediaDescription *self) +{ + g_return_val_if_fail (TP_IS_CALL_CONTENT_MEDIA_DESCRIPTION (self), NULL); + + return tp_asv_new ( + TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACES, + G_TYPE_STRV, tp_call_content_media_description_interfaces, + TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_FURTHER_NEGOTIATION_REQUIRED, + G_TYPE_BOOLEAN, self->priv->further_negotiation_required, + TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_HAS_REMOTE_INFORMATION, + G_TYPE_BOOLEAN, self->priv->has_remote_information, + TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_CODECS, + TP_ARRAY_TYPE_CODEC_LIST, self->priv->codecs, + TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_REMOTE_CONTACT, + G_TYPE_UINT, self->priv->remote_contact, + TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_SSRCS, + TP_HASH_TYPE_CONTACT_SSRCS_MAP, self->priv->ssrcs, + NULL); +} + +static void +tp_call_content_media_description_accept (TpSvcCallContentMediaDescription *iface, + GHashTable *properties, + DBusGMethodInvocation *context) +{ + TpCallContentMediaDescription *self = (TpCallContentMediaDescription *) iface; + GPtrArray *codecs; + gboolean valid; + TpHandle remote_contact; + + DEBUG ("%s was accepted", self->priv->object_path); + + if (self->priv->cancellable != NULL) + { + g_cancellable_disconnect (self->priv->cancellable, self->priv->handler_id); + g_clear_object (&self->priv->cancellable); + self->priv->handler_id = 0; + } + + codecs = tp_asv_get_boxed (properties, + TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_CODECS, + TP_ARRAY_TYPE_CODEC_LIST); + if (!codecs || codecs->len == 0) + { + GError error = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Codecs can not be empty" }; + dbus_g_method_return_error (context, &error); + return; + } + + remote_contact = tp_asv_get_uint32 (properties, + TP_PROP_CALL_CONTENT_MEDIA_DESCRIPTION_REMOTE_CONTACT, + &valid); + if (valid && remote_contact != self->priv->remote_contact) + { + GError error = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Remote contact must the same as in request." }; + dbus_g_method_return_error (context, &error); + return; + } + + g_simple_async_result_set_op_res_gpointer (self->priv->result, + g_hash_table_ref (properties), (GDestroyNotify) g_hash_table_unref); + g_simple_async_result_complete (self->priv->result); + g_clear_object (&self->priv->result); + + tp_svc_call_content_media_description_return_from_accept (context); + + tp_dbus_daemon_unregister_object (self->priv->dbus_daemon, G_OBJECT (self)); +} + +static void +tp_call_content_media_description_reject (TpSvcCallContentMediaDescription *iface, + const GValueArray *reason_array, + DBusGMethodInvocation *context) +{ + TpCallContentMediaDescription *self = (TpCallContentMediaDescription *) iface; + + DEBUG ("%s was rejected", self->priv->object_path); + + if (!self->priv->has_remote_information) + { + GError error = { TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Can not reject an empty Media Description" }; + dbus_g_method_return_error (context, &error); + return; + } + + if (self->priv->cancellable != NULL) + { + g_cancellable_disconnect (self->priv->cancellable, + self->priv->handler_id); + g_clear_object (&self->priv->cancellable); + self->priv->handler_id = 0; + } + + g_simple_async_result_set_error (self->priv->result, + G_IO_ERROR, G_IO_ERROR_FAILED, "Media description was rejected"); + g_simple_async_result_complete (self->priv->result); + g_clear_object (&self->priv->result); + + tp_svc_call_content_media_description_return_from_reject (context); + + tp_dbus_daemon_unregister_object (self->priv->dbus_daemon, G_OBJECT (self)); +} + +static void +call_content_media_description_iface_init (gpointer iface, gpointer data) +{ + TpSvcCallContentMediaDescriptionClass *klass = + (TpSvcCallContentMediaDescriptionClass *) iface; + +#define IMPLEMENT(x) tp_svc_call_content_media_description_implement_##x (\ + klass, tp_call_content_media_description_##x) + IMPLEMENT(accept); + IMPLEMENT(reject); +#undef IMPLEMENT +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-content-media-description.h telepathy-glib-0.17.5/telepathy-glib/call-content-media-description.h --- telepathy-glib-0.17.4/telepathy-glib/call-content-media-description.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-content-media-description.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,103 @@ +/* + * call-content-media-description.h - Header for TpyCallContentMediaDescription + * Copyright (C) 2009-2011 Collabora Ltd. + * @author Sjoerd Simons + * @author Olivier Crete + * @author Xavier Claessens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __TP_CALL_CONTENT_MEDIA_DESCRIPTION_H__ +#define __TP_CALL_CONTENT_MEDIA_DESCRIPTION_H__ + +#include +#include + +#include +#include +#include + +G_BEGIN_DECLS + +typedef struct _TpCallContentMediaDescription TpCallContentMediaDescription; +typedef struct _TpCallContentMediaDescriptionPrivate + TpCallContentMediaDescriptionPrivate; +typedef struct _TpCallContentMediaDescriptionClass + TpCallContentMediaDescriptionClass; + +struct _TpCallContentMediaDescriptionClass { + /**/ + GObjectClass parent_class; + + TpDBusPropertiesMixinClass dbus_props_class; + gpointer future[4]; +}; + +struct _TpCallContentMediaDescription { + /**/ + GObject parent; + + TpCallContentMediaDescriptionPrivate *priv; +}; + +GType tp_call_content_media_description_get_type (void); + +/* TYPE MACROS */ +#define TP_TYPE_CALL_CONTENT_MEDIA_DESCRIPTION \ + (tp_call_content_media_description_get_type ()) +#define TP_CALL_CONTENT_MEDIA_DESCRIPTION(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), \ + TP_TYPE_CALL_CONTENT_MEDIA_DESCRIPTION, TpCallContentMediaDescription)) +#define TP_CALL_CONTENT_MEDIA_DESCRIPTION_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + TP_TYPE_CALL_CONTENT_MEDIA_DESCRIPTION, TpCallContentMediaDescriptionClass)) +#define TP_IS_CALL_CONTENT_MEDIA_DESCRIPTION(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TYPE_CALL_CONTENT_MEDIA_DESCRIPTION)) +#define TP_IS_CALL_CONTENT_MEDIA_DESCRIPTION_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TYPE_CALL_CONTENT_MEDIA_DESCRIPTION)) +#define TP_CALL_CONTENT_MEDIA_DESCRIPTION_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TYPE_CALL_CONTENT_MEDIA_DESCRIPTION, \ + TpCallContentMediaDescriptionClass)) + +TpCallContentMediaDescription *tp_call_content_media_description_new ( + TpDBusDaemon *dbus_daemon, + const gchar *object_path, + TpHandle remote_contact, + gboolean has_remote_information, + gboolean further_negotiation_required); + +const gchar *tp_call_content_media_description_get_object_path ( + TpCallContentMediaDescription *self); +TpHandle tp_call_content_media_description_get_remote_contact ( + TpCallContentMediaDescription *self); + +void tp_call_content_media_description_add_ssrc ( + TpCallContentMediaDescription *self, + TpHandle contact, + guint ssrc); + +void tp_call_content_media_description_append_codec ( + TpCallContentMediaDescription *self, + guint identifier, + const gchar *name, + guint clock_rate, + guint channels, + gboolean updated, + GHashTable *parameters); + +G_END_DECLS + +#endif /* #ifndef __TP_CALL_CONTENT_MEDIA_DESCRIPTION_H__*/ diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-content-media-description.xml telepathy-glib-0.17.5/telepathy-glib/call-content-media-description.xml --- telepathy-glib-0.17.4/telepathy-glib/call-content-media-description.xml 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-content-media-description.xml 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,12 @@ + + +Call misc interfaces, version 1 + + + + + + + diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-content.xml telepathy-glib-0.17.5/telepathy-glib/call-content.xml --- telepathy-glib-0.17.4/telepathy-glib/call-content.xml 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-content.xml 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,13 @@ + + +Call Content interfaces, version 1 + + + + + + + + diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-internal.h telepathy-glib-0.17.5/telepathy-glib/call-internal.h --- telepathy-glib-0.17.4/telepathy-glib/call-internal.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-internal.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * Internals for TpCallChannel, TpCallContent and TpCallStream + * + * Copyright (C) 2011 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef TP_CALL_INTERNAL_H +#define TP_CALL_INTERNAL_H + +#include + +G_BEGIN_DECLS + +/* implemented in call-channel.c */ +TpCallStateReason *_tp_call_state_reason_new (const GValueArray *value_array); +TpCallStateReason *_tp_call_state_reason_ref (TpCallStateReason *r); +void _tp_call_state_reason_unref (TpCallStateReason *r); +GHashTable *_tp_call_members_convert_table (TpConnection *connection, + GHashTable *table, + GHashTable *identifiers); +GPtrArray *_tp_call_members_convert_array (TpConnection *connection, + const GArray *array); + +G_END_DECLS + +#endif diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-misc.c telepathy-glib-0.17.5/telepathy-glib/call-misc.c --- telepathy-glib-0.17.4/telepathy-glib/call-misc.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-misc.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,97 @@ +/* + * call.c - misc low level API for Call + * + * Copyright (C) 2011 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:call-misc + * @title: Misc Call APIs + * @short_description: Misc generated APISs for Call + * + * This contains generated APIs to be used by #TpCallChannel, #TpCallStream, + * #TpCallContent or telepathy-farstream. Should not be needed for normal + * clients. + */ + +#include "config.h" + +#include "telepathy-glib/call-misc.h" +#include "telepathy-glib/errors.h" +#include "telepathy-glib/interfaces.h" +#include "telepathy-glib/proxy-subclass.h" + +#include "_gen/tp-cli-call-content-media-description-body.h" +#include "_gen/tp-cli-call-stream-endpoint-body.h" + +/** + * tp_call_stream_endpoint_init_known_interfaces: + * + * Ensure that the known interfaces for #TpProxy have been set up. + * This is done automatically when necessary, but for correct + * overriding of library interfaces by local extensions, you should + * call this function before calling + * tp_proxy_or_subclass_hook_on_interface_add() with first argument + * %TP_TYPE_PROXY. + * + * Since: 0.17.5 + */ +void +tp_call_stream_endpoint_init_known_interfaces (void) +{ + static gsize once = 0; + + if (g_once_init_enter (&once)) + { + GType tp_type = TP_TYPE_PROXY; + + tp_proxy_init_known_interfaces (); + tp_proxy_or_subclass_hook_on_interface_add (tp_type, + tp_cli_call_stream_endpoint_add_signals); + + g_once_init_leave (&once, 1); + } +} + +/** + * tp_call_content_media_description_init_known_interfaces: + * + * Ensure that the known interfaces for #TpProxy have been set up. + * This is done automatically when necessary, but for correct + * overriding of library interfaces by local extensions, you should + * call this function before calling + * tp_proxy_or_subclass_hook_on_interface_add() with first argument + * %TP_TYPE_PROXY. + * + * Since: 0.17.5 + */ +void +tp_call_content_media_description_init_known_interfaces (void) +{ + static gsize once = 0; + + if (g_once_init_enter (&once)) + { + GType tp_type = TP_TYPE_PROXY; + + tp_proxy_init_known_interfaces (); + tp_proxy_or_subclass_hook_on_interface_add (tp_type, + tp_cli_call_content_media_description_add_signals); + + g_once_init_leave (&once, 1); + } +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-misc.h telepathy-glib-0.17.5/telepathy-glib/call-misc.h --- telepathy-glib-0.17.4/telepathy-glib/call-misc.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-misc.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,36 @@ +/* + * call.h - misc low level API for Call + * + * Copyright (C) 2011 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __TP_CALL_MISC_H__ +#define __TP_CALL_MISC_H__ + +#include + +G_BEGIN_DECLS + +void tp_call_stream_endpoint_init_known_interfaces (void); +void tp_call_content_media_description_init_known_interfaces (void); + +G_END_DECLS + +#include +#include + +#endif diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-stream.c telepathy-glib-0.17.5/telepathy-glib/call-stream.c --- telepathy-glib-0.17.4/telepathy-glib/call-stream.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-stream.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,663 @@ +/* + * call-stream.h - high level API for Call streams + * + * Copyright (C) 2011 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:call-stream + * @title: TpCallStream + * @short_description: proxy object for a call stream + * + * #TpCallStream is a sub-class of #TpProxy providing convenient API + * to represent #TpCallChannel's stream. + */ + +/** + * TpCallStream: + * + * Data structure representing a #TpCallStream. + * + * Since: 0.17.5 + */ + +/** + * TpCallStreamClass: + * + * The class of a #TpCallStream. + * + * Since: 0.17.5 + */ + +#include "config.h" + +#include "telepathy-glib/call-stream.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#define DEBUG_FLAG TP_DEBUG_CALL +#include "telepathy-glib/debug-internal.h" +#include "telepathy-glib/call-internal.h" +#include "telepathy-glib/proxy-internal.h" +#include "telepathy-glib/util-internal.h" +#include "telepathy-glib/_gen/signals-marshal.h" + +#include "_gen/tp-cli-call-stream-body.h" + +G_DEFINE_TYPE (TpCallStream, tp_call_stream, TP_TYPE_PROXY) + +struct _TpCallStreamPrivate +{ + TpConnection *connection; + + /* TpContact -> TpSendingState */ + GHashTable *remote_members; + TpSendingState local_sending_state; + gboolean can_request_receiving; + + gboolean properties_retrieved; +}; + +enum +{ + PROP_CONNECTION = 1, + PROP_LOCAL_SENDING_STATE, + PROP_CAN_REQUEST_RECEIVING, +}; + +enum /* signals */ +{ + LOCAL_SENDING_STATE_CHANGED, + REMOTE_MEMBERS_CHANGED, + LAST_SIGNAL +}; + +static guint _signals[LAST_SIGNAL] = { 0, }; + +static void +update_remote_members (TpCallStream *self, + GHashTable *updates, + GPtrArray *removed) +{ + if (updates != NULL) + { + tp_g_hash_table_update (self->priv->remote_members, updates, + g_object_ref, NULL); + } + + if (removed != NULL) + { + guint i; + + for (i = 0; i < removed->len; i++) + { + g_hash_table_remove (self->priv->remote_members, + g_ptr_array_index (removed, i)); + } + } +} + +static void +remote_members_changed_cb (TpCallStream *self, + GHashTable *updates, + GHashTable *identifiers, + const GArray *removed, + const GValueArray *reason, + gpointer user_data, + GObject *weak_object) +{ + GHashTable *updates_contacts; + GPtrArray *removed_contacts; + TpCallStateReason *r; + + if (!self->priv->properties_retrieved) + return; + + DEBUG ("Remote members: %d updated, %d removed", + g_hash_table_size (updates), removed->len); + + updates_contacts = _tp_call_members_convert_table (self->priv->connection, + updates, identifiers); + removed_contacts = _tp_call_members_convert_array (self->priv->connection, + removed); + r = _tp_call_state_reason_new (reason); + + update_remote_members (self, updates_contacts, removed_contacts); + + g_signal_emit (self, _signals[REMOTE_MEMBERS_CHANGED], 0, + updates_contacts, removed_contacts, r); + + g_hash_table_unref (updates_contacts); + g_ptr_array_unref (removed_contacts); + _tp_call_state_reason_unref (r); +} + +static void +local_sending_state_changed_cb (TpCallStream *self, + guint state, + const GValueArray *reason, + gpointer user_data, + GObject *weak_object) +{ + TpCallStateReason *r; + + if (!self->priv->properties_retrieved) + return; + + self->priv->local_sending_state = state; + g_object_notify (G_OBJECT (self), "local-sending-state"); + + r = _tp_call_state_reason_new (reason); + g_signal_emit (self, _signals[LOCAL_SENDING_STATE_CHANGED], 0, + self->priv->local_sending_state, r); + _tp_call_state_reason_unref (r); +} + +static void +got_all_properties_cb (TpProxy *proxy, + GHashTable *properties, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + TpCallStream *self = (TpCallStream *) proxy; + const gchar * const *interfaces; + GHashTable *remote_members; + GHashTable *identifiers; + GHashTable *contacts; + + if (error != NULL) + { + DEBUG ("Could not get the call stream properties: %s", error->message); + _tp_proxy_set_feature_prepared (proxy, + TP_CALL_STREAM_FEATURE_CORE, FALSE); + return; + } + + self->priv->properties_retrieved = TRUE; + + interfaces = tp_asv_get_boxed (properties, + "Interfaces", G_TYPE_STRV); + remote_members = tp_asv_get_boxed (properties, + "RemoteMembers", TP_HASH_TYPE_CONTACT_SENDING_STATE_MAP), + identifiers = tp_asv_get_boxed (properties, + "RemoteMemberIdentifiers", TP_HASH_TYPE_HANDLE_IDENTIFIER_MAP); + self->priv->local_sending_state = tp_asv_get_uint32 (properties, + "LocalSendingState", NULL); + self->priv->can_request_receiving = tp_asv_get_boolean (properties, + "CanRequestReceiving", NULL); + + tp_proxy_add_interfaces ((TpProxy *) self, interfaces); + + contacts = _tp_call_members_convert_table (self->priv->connection, + remote_members, identifiers); + update_remote_members (self, contacts, NULL); + g_hash_table_unref (contacts); + + _tp_proxy_set_feature_prepared (proxy, TP_CALL_STREAM_FEATURE_CORE, TRUE); +} + +static void +tp_call_stream_constructed (GObject *obj) +{ + TpCallStream *self = (TpCallStream *) obj; + + ((GObjectClass *) tp_call_stream_parent_class)->constructed (obj); + + /* Connect signals for mutable properties */ + tp_cli_call_stream_connect_to_remote_members_changed (self, + remote_members_changed_cb, NULL, NULL, G_OBJECT (self), NULL); + tp_cli_call_stream_connect_to_local_sending_state_changed (self, + local_sending_state_changed_cb, NULL, NULL, G_OBJECT (self), NULL); + + tp_cli_dbus_properties_call_get_all (self, -1, + TP_IFACE_CALL_STREAM, + got_all_properties_cb, NULL, NULL, G_OBJECT (self)); +} + +static void +tp_call_stream_dispose (GObject *object) +{ + TpCallStream *self = (TpCallStream *) object; + + g_clear_object (&self->priv->connection); + tp_clear_pointer (&self->priv->remote_members, g_hash_table_unref); + + G_OBJECT_CLASS (tp_call_stream_parent_class)->dispose (object); +} + +static void +tp_call_stream_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + TpCallStream *self = (TpCallStream *) object; + TpCallStreamPrivate *priv = self->priv; + + switch (property_id) + { + case PROP_CONNECTION: + g_value_set_object (value, self->priv->connection); + break; + case PROP_LOCAL_SENDING_STATE: + g_value_set_uint (value, priv->local_sending_state); + break; + case PROP_CAN_REQUEST_RECEIVING: + g_value_set_boolean (value, priv->can_request_receiving); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_call_stream_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + TpCallStream *self = (TpCallStream *) object; + + switch (property_id) + { + case PROP_CONNECTION: + g_assert (self->priv->connection == NULL); /* construct-only */ + self->priv->connection = g_value_dup_object (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +enum { + FEAT_CORE, + N_FEAT +}; + +static const TpProxyFeature * +tp_call_stream_list_features (TpProxyClass *cls G_GNUC_UNUSED) +{ + static TpProxyFeature features[N_FEAT + 1] = { { 0 } }; + + if (G_LIKELY (features[0].name != 0)) + return features; + + /* started from constructed */ + features[FEAT_CORE].name = TP_CALL_STREAM_FEATURE_CORE; + features[FEAT_CORE].core = TRUE; + + /* assert that the terminator at the end is there */ + g_assert (features[N_FEAT].name == 0); + + return features; +} + +static void +tp_call_stream_class_init (TpCallStreamClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + TpProxyClass *proxy_class = (TpProxyClass *) klass; + GParamSpec *param_spec; + + gobject_class->constructed = tp_call_stream_constructed; + gobject_class->get_property = tp_call_stream_get_property; + gobject_class->set_property = tp_call_stream_set_property; + gobject_class->dispose = tp_call_stream_dispose; + + proxy_class->list_features = tp_call_stream_list_features; + proxy_class->interface = TP_IFACE_QUARK_CALL_STREAM; + + g_type_class_add_private (gobject_class, sizeof (TpCallStreamPrivate)); + tp_call_stream_init_known_interfaces (); + + /** + * TpCallStream:connection: + * + * The #TpConnection of the call. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_object ("connection", "Connection", + "The connection of this content", + TP_TYPE_CONNECTION, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_CONNECTION, + param_spec); + + /** + * TpCallStream:local-sending-state: + * + * The local user's sending state, from #TpSendingState. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("local-sending-state", "LocalSendingState", + "Local sending state", + 0, G_MAXUINT, 0, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_LOCAL_SENDING_STATE, + param_spec); + + /** + * TpCallStream:can-request-receiving: + * + * If %TRUE, the user can request that a remote contact starts sending on this + * stream. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("can-request-receiving", + "CanRequestReceiving", + "If true, the user can request that a remote contact starts sending on" + "this stream.", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (gobject_class, PROP_CAN_REQUEST_RECEIVING, + param_spec); + + /** + * TpCallStream::local-sending-state-changed + * @self: the #TpCallStream + * @state: the new #TpSendingState + * @reason: the #TpCallStateReason for the change + * + * The ::local-sending-state-changed signal is emitted whenever the + * stream sending state changes. + * + * Since: 0.17.5 + */ + _signals[LOCAL_SENDING_STATE_CHANGED] = g_signal_new ("local-sending-state-changed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + _tp_marshal_VOID__UINT_BOXED, + G_TYPE_NONE, + 4, G_TYPE_UINT, G_TYPE_UINT, TP_TYPE_CALL_STATE_REASON, + G_TYPE_HASH_TABLE); + + /** + * TpCallStream::remote-members-changed + * @self: the #TpCallStream + * @updates: (type GLib.HashTable) (element-type TelepathyGLib.Contact uint): + * #GHashTable mapping #TpContact to its new #TpSendingState + * @removed: (type GLib.PtrArray) (element-type TelepathyGLib.Contact): + * #GPtrArray of #TpContact removed from remote contacts + * @reason: the #TpCallStateReason for the change + * + * The ::remote-members-changed signal is emitted whenever the + * stream's remote members changes. + * + * It is NOT guaranteed that #TpContact objects have any feature prepared. + * + * Since: 0.17.5 + */ + _signals[REMOTE_MEMBERS_CHANGED] = g_signal_new ("remote-members-changed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + _tp_marshal_VOID__BOXED_BOXED_BOXED, + G_TYPE_NONE, + 3, G_TYPE_HASH_TABLE, G_TYPE_PTR_ARRAY, TP_TYPE_CALL_STATE_REASON); +} + +static void +tp_call_stream_init (TpCallStream *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE ((self), TP_TYPE_CALL_STREAM, + TpCallStreamPrivate); + + self->priv->remote_members = g_hash_table_new_full (NULL, NULL, + g_object_unref, NULL); +} + +/** + * tp_call_stream_init_known_interfaces: + * + * Ensure that the known interfaces for #TpCallStream have been set up. + * This is done automatically when necessary, but for correct + * overriding of library interfaces by local extensions, you should + * call this function before calling + * tp_proxy_or_subclass_hook_on_interface_add() with first argument + * %TP_TYPE_CALL_STREAM. + * + * Since: 0.17.5 + */ +void +tp_call_stream_init_known_interfaces (void) +{ + static gsize once = 0; + + if (g_once_init_enter (&once)) + { + GType tp_type = TP_TYPE_CALL_STREAM; + + tp_proxy_init_known_interfaces (); + tp_proxy_or_subclass_hook_on_interface_add (tp_type, + tp_cli_call_stream_add_signals); + tp_proxy_subclass_add_error_mapping (tp_type, + TP_ERROR_PREFIX, TP_ERRORS, TP_TYPE_ERROR); + + g_once_init_leave (&once, 1); + } +} + +/** + * TP_CALL_STREAM_FEATURE_CORE: + * + * Expands to a call to a function that returns a quark for the "core" + * feature on a #TpCallStream. + * + * One can ask for a feature to be prepared using the tp_proxy_prepare_async() + * function, and waiting for it to trigger the callback. + */ +GQuark +tp_call_stream_get_feature_quark_core (void) +{ + return g_quark_from_static_string ("tp-call-stream-feature-core"); +} + +/** + * tp_call_stream_get_local_sending_state: + * @self: a #TpCallStream + * + * + * + * Returns: the value of #TpCallStream:local-seding-state + * Since: 0.17.5 + */ +TpSendingState +tp_call_stream_get_local_sending_state (TpCallStream *self) +{ + g_return_val_if_fail (TP_IS_CALL_STREAM (self), TP_SENDING_STATE_NONE); + + return self->priv->local_sending_state; +} + +/** + * tp_call_stream_can_request_receiving: + * @self: a #TpCallStream + * + * + * + * Returns: the value of #TpCallStream:can-request-receiving + * Since: 0.17.5 + */ +gboolean +tp_call_stream_can_request_receiving (TpCallStream *self) +{ + g_return_val_if_fail (TP_IS_CALL_STREAM (self), FALSE); + + return self->priv->can_request_receiving; +} + +/** + * tp_call_stream_get_remote_members: + * @self: a #TpCallStream + * + * Get the remote contacts to who this stream is connected, mapped to their + * sending state. + * + * It is NOT guaranteed that #TpContact objects have any feature prepared. + * + * Returns: (transfer none) (type GLib.HashTable) (element-type TelepathyGLib.Contact uint): + * #GHashTable mapping #TpContact to its new #TpSendingState + * Since: 0.17.5 + */ +GHashTable * +tp_call_stream_get_remote_members (TpCallStream *self) +{ + g_return_val_if_fail (TP_IS_CALL_STREAM (self), NULL); + + return self->priv->remote_members; +} + +static void +generic_async_cb (TpCallStream *self, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + GSimpleAsyncResult *result = user_data; + + if (error != NULL) + { + DEBUG ("Error: %s", error->message); + g_simple_async_result_set_from_error (result, error); + } + + g_simple_async_result_complete (result); +} + +/** + * tp_call_stream_set_sending_async: + * @self: a #TpCallStream + * @send: the requested sending state + * @callback: a callback to call when the operation finishes + * @user_data: data to pass to @callback + * + * Set the stream to start or stop sending media from the local user to other + * contacts. + * + * If @send is %TRUE, #TpCallStream:local-sending-state should change to + * %TP_SENDING_STATE_SENDING, if it isn't already. + * If @send is %FALSE, #TpCallStream:local-sending-state should change to + * %TP_SENDING_STATE_NONE, if it isn't already. + * + * Since: 0.17.5 + */ +void +tp_call_stream_set_sending_async (TpCallStream *self, + gboolean send, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + g_return_if_fail (TP_IS_CALL_STREAM (self)); + + result = g_simple_async_result_new (G_OBJECT (self), callback, + user_data, tp_call_stream_set_sending_async); + + tp_cli_call_stream_call_set_sending (self, -1, send, + generic_async_cb, result, g_object_unref, G_OBJECT (self)); +} + +/** + * tp_call_stream_set_sending_finish: + * @self: a #TpCallStream + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Finishes tp_call_stream_set_sending_async(). + * + * Since: 0.17.5 + */ +gboolean +tp_call_stream_set_sending_finish (TpCallStream *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (self, tp_call_stream_set_sending_async); +} + +/** + * tp_call_stream_request_receiving_async: + * @self: a #TpCallStream + * @contact: contact from which sending is requested + * @receive: the requested receiving state + * @callback: a callback to call when the operation finishes + * @user_data: data to pass to @callback + * + * Request that a remote contact stops or starts sending on this stream. + * + * The #TpCallStream:can-request-receiving property defines whether the protocol + * allows the local user to request the other side start sending on this stream. + * + * If @receive is %TRUE, request that the given contact starts to send media. + * If @receive is %FALSE, request that the given contact stops sending media. + * + * Since: 0.17.5 + */ +void +tp_call_stream_request_receiving_async (TpCallStream *self, + TpContact *contact, + gboolean receive, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + g_return_if_fail (TP_IS_CALL_STREAM (self)); + g_return_if_fail (TP_IS_CONTACT (contact)); + g_return_if_fail (tp_contact_get_connection (contact) == + self->priv->connection); + + result = g_simple_async_result_new (G_OBJECT (self), callback, + user_data, tp_call_stream_set_sending_async); + + tp_cli_call_stream_call_request_receiving (self, -1, + tp_contact_get_handle (contact), receive, + generic_async_cb, result, g_object_unref, G_OBJECT (self)); +} + +/** + * tp_call_stream_request_receiving_finish: + * @self: a #TpCallStream + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Finishes tp_call_stream_request_receiving_async(). + * + * Since: 0.17.5 + */ +gboolean +tp_call_stream_request_receiving_finish (TpCallStream *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (self, tp_call_stream_request_receiving_async); +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-stream-endpoint.c telepathy-glib-0.17.5/telepathy-glib/call-stream-endpoint.c --- telepathy-glib-0.17.4/telepathy-glib/call-stream-endpoint.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-stream-endpoint.c 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,954 @@ +/* + * call-stream-endpoint.c - Source for TpCallStreamEndpoint + * Copyright (C) 2009-2011 Collabora Ltd. + * @author Sjoerd Simons + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * SECTION:call-stream-endpoint + * @title: TpCallStreamEndpoint + * @short_description: class for #TpSvcCallStreamEndpoint implementations + * @see_also: #TpBaseMediaCallStream + * + * This class makes it easier to write #TpSvcCallStreamEndpoint + * implementations by implementing its properties and methods. + * + * Since: 0.17.5 + */ + +/** + * TpCallStreamEndpoint: + * + * A class for call stream endpoint implementations + * + * Since: 0.17.5 + */ + +/** + * TpCallStreamEndpointClass: + * + * The class structure for #TpCallStreamEndpoint + * + * Since: 0.17.5 + */ + +#include "config.h" + +#include "call-stream-endpoint.h" + +#include + +#define DEBUG_FLAG TP_DEBUG_CALL +#include "telepathy-glib/base-call-internal.h" +#include "telepathy-glib/base-media-call-channel.h" +#include "telepathy-glib/base-media-call-stream.h" +#include "telepathy-glib/dbus.h" +#include "telepathy-glib/dbus-properties-mixin.h" +#include "telepathy-glib/debug-internal.h" +#include "telepathy-glib/enums.h" +#include "telepathy-glib/errors.h" +#include "telepathy-glib/gtypes.h" +#include "telepathy-glib/interfaces.h" +#include "telepathy-glib/svc-call.h" +#include "telepathy-glib/svc-properties-interface.h" +#include "telepathy-glib/util.h" +#include "telepathy-glib/util-internal.h" +#include "telepathy-glib/_gen/signals-marshal.h" + +static void call_stream_endpoint_iface_init (gpointer, gpointer); + +G_DEFINE_TYPE_WITH_CODE(TpCallStreamEndpoint, + tp_call_stream_endpoint, + G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_CALL_STREAM_ENDPOINT, + call_stream_endpoint_iface_init); + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_DBUS_PROPERTIES, + tp_dbus_properties_mixin_iface_init); +); + +/* properties */ +enum +{ + PROP_OBJECT_PATH = 1, + PROP_DBUS_DAEMON, + + PROP_REMOTE_CREDENTIALS, + PROP_REMOTE_CANDIDATES, + PROP_SELECTED_CANDIDATE_PAIRS, + PROP_ENDPOINT_STATE, + PROP_TRANSPORT, + PROP_CONTROLLING, + PROP_IS_ICE_LITE +}; + +enum /* signals */ +{ + CANDIDATE_SELECTED, + CANDIDATE_ACCEPTED, + CANDIDATE_REJECTED, + LAST_SIGNAL +}; + +static guint _signals[LAST_SIGNAL] = { 0, }; + +struct _TpCallStreamEndpointPrivate +{ + TpDBusDaemon *dbus_daemon; + gchar *object_path; + + gchar *username; + gchar *password; + /* GPtrArray of owned #GValueArray (dbus struct) */ + GPtrArray *remote_candidates; + /* GPtrArray of owned #GValueArray (dbus struct) */ + GPtrArray *selected_candidate_pairs; + /* TpStreamComponent -> TpStreamEndpointState map */ + GHashTable *endpoint_state; + TpStreamTransportType transport; + gboolean controlling; + gboolean is_ice_lite; + + /* borrowed */ + TpBaseMediaCallStream *stream; +}; + +static void +tp_call_stream_endpoint_init (TpCallStreamEndpoint *self) +{ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + TP_TYPE_CALL_STREAM_ENDPOINT, TpCallStreamEndpointPrivate); + + self->priv->username = g_strdup (""); + self->priv->password = g_strdup (""); + self->priv->remote_candidates = g_ptr_array_new_with_free_func ( + (GDestroyNotify) g_value_array_free); + self->priv->selected_candidate_pairs = g_ptr_array_new_with_free_func ( + (GDestroyNotify) g_value_array_free); + self->priv->endpoint_state = g_hash_table_new (NULL, NULL); +} + +static void +tp_call_stream_endpoint_constructed (GObject *obj) +{ + TpCallStreamEndpoint *self = TP_CALL_STREAM_ENDPOINT (obj); + + /* register object on the bus */ + DEBUG ("Registering %s", self->priv->object_path); + tp_dbus_daemon_register_object (self->priv->dbus_daemon, + self->priv->object_path, obj); + + if (G_OBJECT_CLASS (tp_call_stream_endpoint_parent_class)->constructed != NULL) + G_OBJECT_CLASS (tp_call_stream_endpoint_parent_class)->constructed (obj); +} + +static void +tp_call_stream_endpoint_dispose (GObject *object) +{ + TpCallStreamEndpoint *self = TP_CALL_STREAM_ENDPOINT (object); + + tp_dbus_daemon_unregister_object (self->priv->dbus_daemon, G_OBJECT (self)); + + g_clear_object (&self->priv->dbus_daemon); + + if (G_OBJECT_CLASS (tp_call_stream_endpoint_parent_class)->dispose) + G_OBJECT_CLASS (tp_call_stream_endpoint_parent_class)->dispose (object); +} + +static void +tp_call_stream_endpoint_finalize (GObject *object) +{ + TpCallStreamEndpoint *self = TP_CALL_STREAM_ENDPOINT (object); + + tp_clear_pointer (&self->priv->object_path, g_free); + tp_clear_pointer (&self->priv->username, g_free); + tp_clear_pointer (&self->priv->password, g_free); + tp_clear_pointer (&self->priv->remote_candidates, g_ptr_array_unref); + tp_clear_pointer (&self->priv->selected_candidate_pairs, g_ptr_array_unref); + tp_clear_pointer (&self->priv->endpoint_state, g_hash_table_unref); + + G_OBJECT_CLASS (tp_call_stream_endpoint_parent_class)->finalize (object); +} + +static void +tp_call_stream_endpoint_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + TpCallStreamEndpoint *self = TP_CALL_STREAM_ENDPOINT (object); + + switch (property_id) + { + case PROP_OBJECT_PATH: + g_value_set_string (value, self->priv->object_path); + break; + case PROP_DBUS_DAEMON: + g_value_set_object (value, self->priv->dbus_daemon); + break; + case PROP_REMOTE_CREDENTIALS: + { + GValueArray *remote_credentials; + + remote_credentials = tp_value_array_build (2, + G_TYPE_STRING, self->priv->username, + G_TYPE_STRING, self->priv->password, + G_TYPE_INVALID); + g_value_take_boxed (value, remote_credentials); + break; + } + case PROP_REMOTE_CANDIDATES: + g_value_set_boxed (value, self->priv->remote_candidates); + break; + case PROP_SELECTED_CANDIDATE_PAIRS: + g_value_set_boxed (value, self->priv->selected_candidate_pairs); + break; + case PROP_ENDPOINT_STATE: + g_value_set_boxed (value, self->priv->endpoint_state); + break; + case PROP_TRANSPORT: + g_value_set_uint (value, self->priv->transport); + break; + case PROP_CONTROLLING: + g_value_set_boolean (value, self->priv->controlling); + break; + case PROP_IS_ICE_LITE: + g_value_set_boolean (value, self->priv->is_ice_lite); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_call_stream_endpoint_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) +{ + TpCallStreamEndpoint *self = TP_CALL_STREAM_ENDPOINT (object); + + switch (property_id) + { + case PROP_OBJECT_PATH: + g_assert (self->priv->object_path == NULL); /* construct-only */ + self->priv->object_path = g_value_dup_string (value); + break; + case PROP_DBUS_DAEMON: + g_assert (self->priv->dbus_daemon == NULL); /* construct-only */ + self->priv->dbus_daemon = g_value_dup_object (value); + break; + case PROP_TRANSPORT: + self->priv->transport = g_value_get_uint (value); + break; + case PROP_IS_ICE_LITE: + self->priv->is_ice_lite = g_value_get_boolean (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +tp_call_stream_endpoint_class_init (TpCallStreamEndpointClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + GParamSpec *param_spec; + static TpDBusPropertiesMixinPropImpl endpoint_props[] = { + { "RemoteCredentials", "remote-credentials", NULL }, + { "RemoteCandidates", "remote-candidates", NULL }, + { "SelectedCandidatePairs", "selected-candidate-pairs", NULL }, + { "EndpointState", "endpoint-state", NULL }, + { "Transport", "transport", NULL }, + { "Controlling", "controlling", NULL }, + { "IsICELite", "is-ice-lite", NULL }, + { NULL } + }; + static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { + { TP_IFACE_CALL_STREAM_ENDPOINT, + tp_dbus_properties_mixin_getter_gobject_properties, + NULL, + endpoint_props, + }, + { NULL } + }; + + g_type_class_add_private (klass, sizeof (TpCallStreamEndpointPrivate)); + + object_class->dispose = tp_call_stream_endpoint_dispose; + object_class->finalize = tp_call_stream_endpoint_finalize; + object_class->constructed = tp_call_stream_endpoint_constructed; + object_class->set_property = tp_call_stream_endpoint_set_property; + object_class->get_property = tp_call_stream_endpoint_get_property; + + /** + * TpCallStreamEndpoint:object-path: + * + * The D-Bus object path used for this object on the bus. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_string ("object-path", "D-Bus object path", + "The D-Bus object path used for this " + "object on the bus.", + NULL, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_OBJECT_PATH, param_spec); + + /** + * TpCallStreamEndpoint:dbus-daemon: + * + * The connection to the DBus daemon owning the CM. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_object ("dbus-daemon", + "The DBus daemon connection", + "The connection to the DBus daemon owning the CM", + TP_TYPE_DBUS_DAEMON, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_DBUS_DAEMON, param_spec); + + /** + * TpCallStreamEndpoint:remote-credentials: + * + * #GValueArray{username string, password string} + * The remote credentials of this endpoint. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("remote-credentials", + "RemoteCredentials", + "The remote credentials of this endpoint", + TP_STRUCT_TYPE_STREAM_CREDENTIALS, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_REMOTE_CREDENTIALS, + param_spec); + + /** + * TpCallStreamEndpoint:remote-candidates: + * + * #GPtrArray{candidate #GValueArray} + * The remote candidates of this endpoint. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("remote-candidates", + "RemoteCandidates", + "The remote candidates of this endpoint", + TP_ARRAY_TYPE_CANDIDATE_LIST, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_REMOTE_CANDIDATES, + param_spec); + + /** + * TpCallStreamEndpoint:selected-candidate-pairs: + * + * #GPtrArray{local-candidate #GValueArray, remote-candidate #GValueArray} + * The candidate pairs selected for this endpoint. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("selected-candidate-pairs", + "SelectedCandidatePairs", + "The candidate pairs selected for this endpoint", + TP_ARRAY_TYPE_CANDIDATE_PAIR_LIST, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_SELECTED_CANDIDATE_PAIRS, + param_spec); + + /** + * TpCallStreamEndpoint:endpoint-state: + * + * #GHashTable{#TpStreamComponent -> #TpStreamEndpointState} + * The state of this endpoint. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boxed ("endpoint-state", "EndpointState", + "The state of this endpoint.", + TP_HASH_TYPE_COMPONENT_STATE_MAP, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_ENDPOINT_STATE, + param_spec); + + /** + * TpCallStreamEndpoint:transport: + * + * The #TpStreamTransportType for the content of this endpoint. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_uint ("transport", + "Transport", + "The transport type for the content of this endpoint.", + 0, G_MAXUINT, TP_STREAM_TRANSPORT_TYPE_UNKNOWN, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_TRANSPORT, param_spec); + + /** + * TpCallStreamEndpoint:controlling: + * + * Whether or not the local side is taking the controlling role. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("controlling", + "Controlling", + "The local side is taking the controlling role.", + FALSE, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_CONTROLLING, param_spec); + + /** + * TpCallStreamEndpoint:is-ice-lite: + * + * Whether or not the Remote side is an ICE Lite endpoint. + * + * Since: 0.17.5 + */ + param_spec = g_param_spec_boolean ("is-ice-lite", + "IsICELite", + "The Remote side is an ICE Lite endpoint.", + FALSE, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_IS_ICE_LITE, param_spec); + + klass->dbus_props_class.interfaces = prop_interfaces; + tp_dbus_properties_mixin_class_init (object_class, + G_STRUCT_OFFSET (TpCallStreamEndpointClass, dbus_props_class)); + + /** + * TpCallStreamEndpoint::candidate-selected + * @self: the #TpCallStreamEndpoint + * @local_candidate: the local candidate + * @remote_candidate: the remote candidate + * + * The ::candidate-selected signal is emitted whenever + * SetSelectedCandidatePair DBus method has been called on this object. + * + * Since: 0.17.5 + */ + _signals[CANDIDATE_SELECTED] = g_signal_new ("candidate-selected", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + _tp_marshal_VOID__BOXED_BOXED, + G_TYPE_NONE, + 2, TP_STRUCT_TYPE_CANDIDATE, TP_STRUCT_TYPE_CANDIDATE); + + /** + * TpCallStreamEndpoint::candidate-accepted + * @self: the #TpCallStreamEndpoint + * @local_candidate: the local candidate + * @remote_candidate: the remote candidate + * + * The ::candidate-accepted signal is emitted whenever + * AcceptSelectedCandidatePair DBus method has been called on this object. + * + * Since: 0.17.5 + */ + _signals[CANDIDATE_ACCEPTED] = g_signal_new ("candidate-accepted", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + _tp_marshal_VOID__BOXED_BOXED, + G_TYPE_NONE, + 2, TP_STRUCT_TYPE_CANDIDATE, TP_STRUCT_TYPE_CANDIDATE); + + /** + * TpCallStreamEndpoint::candidate-rejected + * @self: the #TpCallStreamEndpoint + * @local_candidate: the local candidate + * @remote_candidate: the remote candidate + * + * The ::candidate-rejected signal is emitted whenever + * RejectSelectedCandidatePair DBus method has been called on this object. + * + * Since: 0.17.5 + */ + _signals[CANDIDATE_REJECTED] = g_signal_new ("candidate-rejected", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + _tp_marshal_VOID__BOXED_BOXED, + G_TYPE_NONE, + 2, TP_STRUCT_TYPE_CANDIDATE, TP_STRUCT_TYPE_CANDIDATE); +} + +/** + * tp_call_stream_endpoint_new: + * @dbus_daemon: value of #TpCallStreamEndpoint:dbus-daemon property + * @object_path: value of #TpCallStreamEndpoint:object-path property + * @transport: value of #TpCallStreamEndpoint:transport property + * @is_ice_lite: value of #TpCallStreamEndpoint:is_ice_lite property + * + * Create a new #TpCallStreamEndpoint object. It is registered on the bus + * at construction, and is unregistered at dispose. + * + * Returns: a new #TpCallStreamEndpoint. + * Since: 0.17.5 + */ +TpCallStreamEndpoint * +tp_call_stream_endpoint_new (TpDBusDaemon *dbus_daemon, + const gchar *object_path, + TpStreamTransportType transport, + gboolean is_ice_lite) +{ + g_return_val_if_fail (TP_IS_DBUS_DAEMON (dbus_daemon), NULL); + g_return_val_if_fail (g_variant_is_object_path (object_path), NULL); + + return g_object_new (TP_TYPE_CALL_STREAM_ENDPOINT, + "dbus-daemon", dbus_daemon, + "object-path", object_path, + "transport", transport, + "is-ice-lite", is_ice_lite, + NULL); +} + +/** + * tp_call_stream_endpoint_get_object_path: + * @self: a #TpCallStreamEndpoint + * + * + * + * Returns: the value of #TpCallStreamEndpoint:object-path + * Since: 0.17.5 + */ +const gchar * +tp_call_stream_endpoint_get_object_path (TpCallStreamEndpoint *self) +{ + g_return_val_if_fail (TP_IS_CALL_STREAM_ENDPOINT (self), NULL); + + return self->priv->object_path; +} + +/** + * tp_call_stream_endpoint_get_state: + * @self: a #TpCallStreamEndpoint + * @component: a #TpStreamComponent + * + * + * + * Returns: the state of @self's @component + * Since: 0.17.5 + */ +TpStreamEndpointState +tp_call_stream_endpoint_get_state (TpCallStreamEndpoint *self, + TpStreamComponent component) +{ + g_return_val_if_fail (TP_IS_CALL_STREAM_ENDPOINT (self), + TP_MEDIA_STREAM_STATE_DISCONNECTED); + + return GPOINTER_TO_UINT (g_hash_table_lookup (self->priv->endpoint_state, + GUINT_TO_POINTER (component))); +} + +/** + * tp_call_stream_endpoint_add_new_candidates: + * @self: a #TpCallStreamEndpoint + * @candidates: #GPtrArray of #GValueArray defining the candidates to add + * + * Add @candidates to the #TpCallStreamEndpoint:remote-candidates property. + * See Also: tp_call_stream_endpoint_add_new_candidate(). + * + * Since: 0.17.5 + */ +void +tp_call_stream_endpoint_add_new_candidates (TpCallStreamEndpoint *self, + const GPtrArray *candidates) +{ + guint i; + + g_return_if_fail (TP_IS_CALL_STREAM_ENDPOINT (self)); + + if (candidates == NULL || candidates->len == 0) + return; + + DEBUG ("Add %d candidates to endpoint %s", + candidates->len, self->priv->object_path); + + for (i = 0; i < candidates->len; i++) + { + GValueArray *c = g_ptr_array_index (candidates, i); + + g_ptr_array_add (self->priv->remote_candidates, + g_value_array_copy (c)); + } + + tp_svc_call_stream_endpoint_emit_remote_candidates_added (self, + candidates); +} + +/** + * tp_call_stream_endpoint_add_new_candidate: + * @self: a #TpCallStreamEndpoint + * @component: a #TpStreamComponent + * @address: an IP address + * @port: a port number + * @info_hash: string -> #GValue mapping for extra info + * + * Add a candidate to the #TpCallStreamEndpoint:remote-candidates property. + * See Also: tp_call_stream_endpoint_add_new_candidates(). + * + * Since: 0.17.5 + */ +void +tp_call_stream_endpoint_add_new_candidate (TpCallStreamEndpoint *self, + TpStreamComponent component, + const gchar *address, + guint port, + const GHashTable *info_hash) +{ + GPtrArray *candidates; + GValueArray *c; + + g_return_if_fail (TP_IS_CALL_STREAM_ENDPOINT (self)); + g_return_if_fail (address != NULL); + g_return_if_fail (port < 65536); + g_return_if_fail (info_hash != NULL); + + DEBUG ("Add one candidates to endpoint %s", self->priv->object_path); + + c = tp_value_array_build (4, + G_TYPE_UINT, component, + G_TYPE_STRING, address, + G_TYPE_UINT, port, + TP_HASH_TYPE_CANDIDATE_INFO, info_hash, + G_TYPE_INVALID); + + g_ptr_array_add (self->priv->remote_candidates, c); + + candidates = g_ptr_array_new (); + g_ptr_array_add (candidates, c); + tp_svc_call_stream_endpoint_emit_remote_candidates_added (self, + candidates); + g_ptr_array_unref (candidates); +} + +/** + * tp_call_stream_endpoint_set_remote_credentials: + * @self: a #TpCallStreamEndpoint + * @username: the username + * @password: the password + * + * Set the username and password to use for @self's crendentials. + * + * Since: 0.17.5 + */ +void +tp_call_stream_endpoint_set_remote_credentials (TpCallStreamEndpoint *self, + const gchar *username, + const gchar *password) +{ + g_return_if_fail (TP_IS_CALL_STREAM_ENDPOINT (self)); + + if (!tp_strdiff (self->priv->username, username) && + !tp_strdiff (self->priv->password, password)) + return; + + g_free (self->priv->username); + g_free (self->priv->password); + + self->priv->username = g_strdup (username); + self->priv->password = g_strdup (password); + + tp_svc_call_stream_endpoint_emit_remote_credentials_set (self, username, + password); +} + +static gboolean +validate_candidate (const GValueArray *candidate, + GError **error) +{ + const GValue *value; + + if (candidate->n_values != 4) + { + g_set_error (error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "A candidate should have 4 values, got %d", candidate->n_values); + return FALSE; + } + + value = g_value_array_get_nth ((GValueArray *) candidate, 0); + if (g_value_get_uint (value) >= NUM_TP_STREAM_COMPONENTS) + { + g_set_error (error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Invalid component id: %d", g_value_get_uint (value)); + return FALSE; + } + + value = g_value_array_get_nth ((GValueArray *) candidate, 1); + if (tp_str_empty (g_value_get_string (value))) + { + g_set_error (error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Invalid address: %s", g_value_get_string (value)); + return FALSE; + } + + value = g_value_array_get_nth ((GValueArray *) candidate, 2); + if (g_value_get_uint (value) > 65535) + { + g_set_error (error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Invalid port: %d", g_value_get_uint (value)); + return FALSE; + } + + return TRUE; +} + +static TpStreamComponent +get_candidate_component (const GValueArray *candidate) +{ + GValue *component_value; + + component_value = g_value_array_get_nth ((GValueArray *) candidate, 0); + + return g_value_get_uint (component_value); +} + +static gboolean +common_checks (TpCallStreamEndpoint *self, + const GValueArray *local_candidate, + const GValueArray *remote_candidate, + GError **error) +{ + if (!validate_candidate (local_candidate, error)) + return FALSE; + if (!validate_candidate (remote_candidate, error)) + return FALSE; + + if (get_candidate_component (local_candidate) != + get_candidate_component (remote_candidate)) + { + g_set_error_literal (error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Component must be the same in local and remote candidate"); + return FALSE; + } + + if (!self->priv->controlling) + { + g_set_error_literal (error, TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Only controlling side can call SetSelectedCandidatePair"); + return FALSE; + } + + return TRUE; +} + +static void +call_stream_endpoint_set_selected_candidate_pair (TpSvcCallStreamEndpoint *iface, + const GValueArray *local_candidate, + const GValueArray *remote_candidate, + DBusGMethodInvocation *context) +{ + TpCallStreamEndpoint *self = TP_CALL_STREAM_ENDPOINT (iface); + TpStreamComponent component; + GValueArray *pair; + guint i; + GError *error = NULL; + + if (!common_checks (self, local_candidate, remote_candidate, &error)) + { + dbus_g_method_return_error (context, error); + g_clear_error (&error); + return; + } + + component = get_candidate_component (local_candidate); + + DEBUG ("Candidate selected for component %d for endpoint %s", component, + self->priv->object_path); + + /* Remove the pair for that component if we already had one */ + for (i = 0; i < self->priv->selected_candidate_pairs->len; i++) + { + GValueArray *this_pair; + TpStreamComponent this_component; + + this_pair = g_ptr_array_index (self->priv->selected_candidate_pairs, i); + this_component = get_candidate_component ( + g_value_get_boxed (g_value_array_get_nth (this_pair, 0))); + + if (this_component == component) + { + g_ptr_array_remove_index (self->priv->selected_candidate_pairs, i); + break; + } + } + + pair = tp_value_array_build (2, + TP_STRUCT_TYPE_CANDIDATE, local_candidate, + TP_STRUCT_TYPE_CANDIDATE, remote_candidate, + G_TYPE_INVALID); + g_ptr_array_add (self->priv->selected_candidate_pairs, pair); + + tp_svc_call_stream_endpoint_emit_candidate_pair_selected (self, + local_candidate, remote_candidate); + + g_signal_emit (self, _signals[CANDIDATE_SELECTED], 0, + local_candidate, remote_candidate); + + tp_svc_call_stream_endpoint_return_from_set_selected_candidate_pair (context); +} + +static void +call_stream_endpoint_set_endpoint_state (TpSvcCallStreamEndpoint *iface, + TpStreamComponent component, + TpStreamEndpointState state, + DBusGMethodInvocation *context) +{ + TpCallStreamEndpoint *self = TP_CALL_STREAM_ENDPOINT (iface); + + if (component >= NUM_TP_STREAM_COMPONENTS) + { + GError *error = g_error_new (TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Stream component %d is out of the valid range.", state); + dbus_g_method_return_error (context, error); + g_error_free (error); + return; + } + + if (state >= NUM_TP_STREAM_ENDPOINT_STATES) + { + GError *error = g_error_new (TP_ERRORS, TP_ERROR_INVALID_ARGUMENT, + "Stream state %d is out of the valid range.", state); + dbus_g_method_return_error (context, error); + g_error_free (error); + return; + } + + DEBUG ("State changed to %d for component %d for endpoint %s", + state, component, self->priv->object_path); + + g_hash_table_insert (self->priv->endpoint_state, + GUINT_TO_POINTER (component), + GUINT_TO_POINTER (state)); + g_object_notify (G_OBJECT (self), "endpoint-state"); + + tp_svc_call_stream_endpoint_emit_endpoint_state_changed (self, + component, state); + + if (component == TP_STREAM_COMPONENT_DATA) + { + TpBaseCallChannel *chan = _tp_base_call_stream_get_channel ( + TP_BASE_CALL_STREAM (self->priv->stream)); + + if (chan && TP_IS_BASE_MEDIA_CALL_CHANNEL (chan)) + _tp_base_media_call_channel_endpoint_state_changed ( + TP_BASE_MEDIA_CALL_CHANNEL (chan)); + } + + tp_svc_call_stream_endpoint_return_from_set_endpoint_state (context); +} + +static void +call_stream_endpoint_accept_selected_candidate_pair ( + TpSvcCallStreamEndpoint *iface, + const GValueArray *local_candidate, + const GValueArray *remote_candidate, + DBusGMethodInvocation *context) +{ + TpCallStreamEndpoint *self = TP_CALL_STREAM_ENDPOINT (iface); + GError *error = NULL; + + if (!common_checks (self, local_candidate, remote_candidate, &error)) + { + dbus_g_method_return_error (context, error); + g_clear_error (&error); + return; + } + + DEBUG ("Selected candidate accepted for endpoint %s", + self->priv->object_path); + + g_signal_emit (self, _signals[CANDIDATE_ACCEPTED], 0, + local_candidate, remote_candidate); + + tp_svc_call_stream_endpoint_return_from_accept_selected_candidate_pair ( + context); +} + +static void +call_stream_endpoint_reject_selected_candidate_pair ( + TpSvcCallStreamEndpoint *iface, + const GValueArray *local_candidate, + const GValueArray *remote_candidate, + DBusGMethodInvocation *context) +{ + TpCallStreamEndpoint *self = TP_CALL_STREAM_ENDPOINT (iface); + GError *error = NULL; + + if (!common_checks (self, local_candidate, remote_candidate, &error)) + { + dbus_g_method_return_error (context, error); + g_clear_error (&error); + return; + } + + DEBUG ("Selected candidate rejected for endpoint %s", + self->priv->object_path); + + g_signal_emit (self, _signals[CANDIDATE_REJECTED], 0, + local_candidate, remote_candidate); + + tp_svc_call_stream_endpoint_return_from_reject_selected_candidate_pair ( + context); +} + +static void +call_stream_endpoint_set_controlling (TpSvcCallStreamEndpoint *iface, + gboolean controlling, + DBusGMethodInvocation *context) +{ + TpCallStreamEndpoint *self = TP_CALL_STREAM_ENDPOINT (iface); + + self->priv->controlling = controlling; + + tp_svc_call_stream_endpoint_emit_controlling_changed (self, controlling); + tp_svc_call_stream_endpoint_return_from_set_controlling (context); +} + +static void +call_stream_endpoint_iface_init (gpointer iface, gpointer data) +{ + TpSvcCallStreamEndpointClass *klass = + (TpSvcCallStreamEndpointClass *) iface; + +#define IMPLEMENT(x) tp_svc_call_stream_endpoint_implement_##x (\ + klass, call_stream_endpoint_##x) + IMPLEMENT(set_selected_candidate_pair); + IMPLEMENT(set_endpoint_state); + IMPLEMENT(accept_selected_candidate_pair); + IMPLEMENT(reject_selected_candidate_pair); + IMPLEMENT(set_controlling); +#undef IMPLEMENT +} + +/* Internal functions */ + +void +_tp_call_stream_endpoint_set_stream (TpCallStreamEndpoint *self, + TpBaseMediaCallStream *stream) +{ + g_return_if_fail (TP_IS_CALL_STREAM_ENDPOINT (self)); + g_return_if_fail (TP_IS_BASE_MEDIA_CALL_STREAM (stream)); + g_return_if_fail (self->priv->stream == NULL); + + self->priv->stream = stream; +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-stream-endpoint.h telepathy-glib-0.17.5/telepathy-glib/call-stream-endpoint.h --- telepathy-glib-0.17.4/telepathy-glib/call-stream-endpoint.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-stream-endpoint.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * call-stream-endpoint.h - Header for TpCallStreamEndpoint + * Copyright (C) 2009-2011 Collabora Ltd. + * @author Sjoerd Simons + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __TP_CALL_STREAM_ENDPOINT_H__ +#define __TP_CALL_STREAM_ENDPOINT_H__ + +#include + +#include +#include + +#include + +G_BEGIN_DECLS + +typedef struct _TpCallStreamEndpoint TpCallStreamEndpoint; +typedef struct _TpCallStreamEndpointPrivate TpCallStreamEndpointPrivate; +typedef struct _TpCallStreamEndpointClass TpCallStreamEndpointClass; + +struct _TpCallStreamEndpointClass { + /**/ + GObjectClass parent_class; + + TpDBusPropertiesMixinClass dbus_props_class; +}; + +struct _TpCallStreamEndpoint { + /**/ + GObject parent; + + TpCallStreamEndpointPrivate *priv; +}; + +GType tp_call_stream_endpoint_get_type (void); + +/* TYPE MACROS */ +#define TP_TYPE_CALL_STREAM_ENDPOINT \ + (tp_call_stream_endpoint_get_type ()) +#define TP_CALL_STREAM_ENDPOINT(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj), \ + TP_TYPE_CALL_STREAM_ENDPOINT, TpCallStreamEndpoint)) +#define TP_CALL_STREAM_ENDPOINT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass), \ + TP_TYPE_CALL_STREAM_ENDPOINT, TpCallStreamEndpointClass)) +#define TP_IS_CALL_STREAM_ENDPOINT(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj), TP_TYPE_CALL_STREAM_ENDPOINT)) +#define TP_IS_CALL_STREAM_ENDPOINT_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass), TP_TYPE_CALL_STREAM_ENDPOINT)) +#define TP_CALL_STREAM_ENDPOINT_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), \ + TP_TYPE_CALL_STREAM_ENDPOINT, TpCallStreamEndpointClass)) + +TpCallStreamEndpoint *tp_call_stream_endpoint_new (TpDBusDaemon *dbus_daemon, + const gchar *object_path, + TpStreamTransportType transport, + gboolean is_ice_lite); + +const gchar *tp_call_stream_endpoint_get_object_path ( + TpCallStreamEndpoint *self); + +TpStreamEndpointState tp_call_stream_endpoint_get_state ( + TpCallStreamEndpoint *self, + TpStreamComponent component); + +void tp_call_stream_endpoint_add_new_candidates (TpCallStreamEndpoint *self, + const GPtrArray *candidates); +void tp_call_stream_endpoint_add_new_candidate (TpCallStreamEndpoint *self, + TpStreamComponent component, + const gchar *address, + guint port, + const GHashTable *info_hash); + +void tp_call_stream_endpoint_set_remote_credentials ( + TpCallStreamEndpoint *self, + const gchar *username, + const gchar *password); + + +G_END_DECLS + +#endif /* #ifndef __TP_CALL_STREAM_ENDPOINT_H__*/ diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-stream-endpoint.xml telepathy-glib-0.17.5/telepathy-glib/call-stream-endpoint.xml --- telepathy-glib-0.17.4/telepathy-glib/call-stream-endpoint.xml 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-stream-endpoint.xml 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,9 @@ + + +Call misc interfaces, version 1 + + + + diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-stream.h telepathy-glib-0.17.5/telepathy-glib/call-stream.h --- telepathy-glib-0.17.4/telepathy-glib/call-stream.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-stream.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,87 @@ +/* + * call-stream.h - high level API for Call streams + * + * Copyright (C) 2011 Collabora Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef __TP_CALL_STREAM_H__ +#define __TP_CALL_STREAM_H__ + +#include +#include + +G_BEGIN_DECLS + +#define TP_TYPE_CALL_STREAM (tp_call_stream_get_type ()) +#define TP_CALL_STREAM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TP_TYPE_CALL_STREAM, TpCallStream)) +#define TP_CALL_STREAM_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), TP_TYPE_CALL_STREAM, TpCallStreamClass)) +#define TP_IS_CALL_STREAM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TP_TYPE_CALL_STREAM)) +#define TP_IS_CALL_STREAM_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((obj), TP_TYPE_CALL_STREAM)) +#define TP_CALL_STREAM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TYPE_CALL_STREAM, TpCallStreamClass)) + +typedef struct _TpCallStream TpCallStream; +typedef struct _TpCallStreamClass TpCallStreamClass; +typedef struct _TpCallStreamPrivate TpCallStreamPrivate; + +struct _TpCallStream +{ + /**/ + TpProxy parent; + TpCallStreamPrivate *priv; +}; + +struct _TpCallStreamClass +{ + /**/ + TpProxyClass parent_class; + GCallback _padding[7]; +}; + +GType tp_call_stream_get_type (void); + +void tp_call_stream_init_known_interfaces (void); + +#define TP_CALL_STREAM_FEATURE_CORE \ + tp_call_stream_get_feature_quark_core () +GQuark tp_call_stream_get_feature_quark_core (void) G_GNUC_CONST; + +TpSendingState tp_call_stream_get_local_sending_state (TpCallStream *self); +gboolean tp_call_stream_can_request_receiving (TpCallStream *self); +GHashTable *tp_call_stream_get_remote_members (TpCallStream *self); + +void tp_call_stream_set_sending_async (TpCallStream *self, + gboolean send, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_call_stream_set_sending_finish (TpCallStream *self, + GAsyncResult *result, + GError **error); + +void tp_call_stream_request_receiving_async (TpCallStream *self, + TpContact *contact, + gboolean receive, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_call_stream_request_receiving_finish (TpCallStream *self, + GAsyncResult *result, + GError **error); + +G_END_DECLS + +#include + +#endif diff -Nru telepathy-glib-0.17.4/telepathy-glib/call-stream.xml telepathy-glib-0.17.5/telepathy-glib/call-stream.xml --- telepathy-glib-0.17.4/telepathy-glib/call-stream.xml 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/call-stream.xml 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,10 @@ + + +Call Stream interfaces, version 1 + + + + + diff -Nru telepathy-glib-0.17.4/telepathy-glib/capabilities.c telepathy-glib-0.17.5/telepathy-glib/capabilities.c --- telepathy-glib-0.17.4/telepathy-glib/capabilities.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/capabilities.c 2012-02-20 16:55:59.000000000 +0000 @@ -17,6 +17,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/capabilities.h" #include "telepathy-glib/capabilities-internal.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/channel.c telepathy-glib-0.17.5/telepathy-glib/channel.c --- telepathy-glib-0.17.4/telepathy-glib/channel.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/channel-internal.h" #include @@ -1607,8 +1609,7 @@ */ param_spec = g_param_spec_boolean ("channel-ready", "Channel ready?", "Initially FALSE; changes to TRUE when introspection finishes", FALSE, - G_PARAM_READABLE - | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CHANNEL_READY, param_spec); @@ -1620,8 +1621,7 @@ */ param_spec = g_param_spec_object ("connection", "TpConnection", "The connection to which this object belongs.", TP_TYPE_CONNECTION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); @@ -1640,8 +1640,7 @@ */ param_spec = g_param_spec_uint ("group-self-handle", "Group.SelfHandle", "Undefined if not a group", 0, G_MAXUINT32, 0, - G_PARAM_READABLE - | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_GROUP_SELF_HANDLE, param_spec); @@ -1661,8 +1660,7 @@ */ param_spec = g_param_spec_uint ("group-flags", "Group.GroupFlags", "0 if not a group", 0, G_MAXUINT32, 0, - G_PARAM_READABLE - | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_GROUP_FLAGS, param_spec); diff -Nru telepathy-glib-0.17.4/telepathy-glib/channel-contacts.c telepathy-glib-0.17.5/telepathy-glib/channel-contacts.c --- telepathy-glib-0.17.4/telepathy-glib/channel-contacts.c 2011-12-13 08:47:46.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/channel-contacts.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/channel-internal.h" #include @@ -232,13 +234,13 @@ } } -typedef struct +struct _ContactsQueueItem { GSimpleAsyncResult *result; GPtrArray *contacts; GPtrArray *ids; GArray *handles; -} ContactsQueueItem; +}; static ContactsQueueItem * contacts_queue_item_new (GPtrArray *contacts, @@ -273,9 +275,7 @@ contacts_queue_head_ready (TpChannel *self, const GError *error) { - ContactsQueueItem *item; - - item = g_queue_pop_head (self->priv->contacts_queue); + ContactsQueueItem *item = self->priv->current_item; if (error != NULL) { @@ -284,6 +284,7 @@ } g_simple_async_result_complete (item->result); + self->priv->current_item = NULL; process_contacts_queue (self); contacts_queue_item_free (item); @@ -366,8 +367,7 @@ GArray *features; const GError *error = NULL; - item = g_queue_peek_head (self->priv->contacts_queue); - if (item == NULL) + if (self->priv->current_item != NULL) return; /* self can't die while there are queued items because item->result keeps a @@ -387,6 +387,11 @@ return; } + item = g_queue_pop_head (self->priv->contacts_queue); + if (item == NULL) + return; + self->priv->current_item = item; + features = tp_simple_client_factory_dup_contact_features ( tp_proxy_get_factory (self->priv->connection), self->priv->connection); @@ -450,10 +455,7 @@ g_simple_async_result_set_op_res_gpointer (item->result, item, NULL); g_queue_push_tail (self->priv->contacts_queue, item); - - /* If this is the only item in the queue, we can process it right away */ - if (self->priv->contacts_queue->length == 1) - process_contacts_queue (self); + process_contacts_queue (self); } void diff -Nru telepathy-glib-0.17.4/telepathy-glib/channel-dispatcher.c telepathy-glib-0.17.5/telepathy-glib/channel-dispatcher.c --- telepathy-glib-0.17.4/telepathy-glib/channel-dispatcher.c 2011-07-12 14:13:58.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/channel-dispatcher.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/channel-dispatcher.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/channel-dispatch-operation.c telepathy-glib-0.17.5/telepathy-glib/channel-dispatch-operation.c --- telepathy-glib-0.17.4/telepathy-glib/channel-dispatch-operation.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/channel-dispatch-operation.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/channel-dispatch-operation.h" #include "telepathy-glib/channel-dispatch-operation-internal.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/channel-factory-iface.c telepathy-glib-0.17.5/telepathy-glib/channel-factory-iface.c --- telepathy-glib-0.17.4/telepathy-glib/channel-factory-iface.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/channel-factory-iface.c 2012-02-20 16:55:59.000000000 +0000 @@ -35,6 +35,8 @@ * Deprecated: 0.11.7 */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/channel-group.c telepathy-glib-0.17.5/telepathy-glib/channel-group.c --- telepathy-glib-0.17.4/telepathy-glib/channel-group.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/channel-group.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/channel-internal.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/channel-iface.c telepathy-glib-0.17.5/telepathy-glib/channel-iface.c --- telepathy-glib-0.17.4/telepathy-glib/channel-iface.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/channel-iface.c 2012-02-20 16:55:59.000000000 +0000 @@ -29,6 +29,8 @@ * used in #TpChannelFactoryIface to represent the returned channel objects. */ +#include "config.h" + #include #include @@ -50,8 +52,7 @@ */ param_spec = g_param_spec_string ("object-path", "D-Bus object path", "The D-Bus object path used for this object on the bus.", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_interface_install_property (klass, param_spec); /** @@ -74,8 +75,7 @@ param_spec = g_param_spec_string ("channel-type", "Telepathy channel type", "The D-Bus interface representing the type of this channel.", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_interface_install_property (klass, param_spec); /** @@ -97,8 +97,7 @@ param_spec = g_param_spec_uint ("handle-type", "Handle type", "The TpHandleType of this channel's associated handle.", 0, G_MAXUINT32, TP_UNKNOWN_HANDLE_TYPE, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_interface_install_property (klass, param_spec); /** @@ -122,8 +121,7 @@ "this channel communicates, whose type is given by the handle-type " "property.", 0, G_MAXUINT32, 0, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_interface_install_property (klass, param_spec); } } diff -Nru telepathy-glib-0.17.4/telepathy-glib/channel-internal.h telepathy-glib-0.17.5/telepathy-glib/channel-internal.h --- telepathy-glib-0.17.4/telepathy-glib/channel-internal.h 2011-10-19 09:17:04.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/channel-internal.h 2012-02-09 15:05:12.000000000 +0000 @@ -35,6 +35,8 @@ gchar *message; } LocalPendingInfo; +typedef struct _ContactsQueueItem ContactsQueueItem; + struct _TpChannelPrivate { gulong conn_invalidated_id; @@ -87,6 +89,8 @@ gboolean cm_too_old_for_contacts; GQueue *contacts_queue; + /* Item currently being prepared, not part of contacts_queue anymore */ + ContactsQueueItem *current_item; /* NULL, or TpHandle => TpChannelChatState; * if non-NULL, we're watching for ChatStateChanged */ diff -Nru telepathy-glib-0.17.4/telepathy-glib/channel-request.c telepathy-glib-0.17.5/telepathy-glib/channel-request.c --- telepathy-glib-0.17.4/telepathy-glib/channel-request.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/channel-request.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/channel-request.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/channel.xml telepathy-glib-0.17.5/telepathy-glib/channel.xml --- telepathy-glib-0.17.4/telepathy-glib/channel.xml 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/channel.xml 2012-02-20 16:56:41.000000000 +0000 @@ -6,6 +6,7 @@ + @@ -20,6 +21,7 @@ + diff -Nru telepathy-glib-0.17.4/telepathy-glib/client.c telepathy-glib-0.17.5/telepathy-glib/client.c --- telepathy-glib-0.17.4/telepathy-glib/client.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/client.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/client.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/client-channel-factory.c telepathy-glib-0.17.5/telepathy-glib/client-channel-factory.c --- telepathy-glib-0.17.4/telepathy-glib/client-channel-factory.c 2011-03-03 12:54:10.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/client-channel-factory.c 2012-02-20 16:55:59.000000000 +0000 @@ -63,6 +63,8 @@ * Since: 0.13.2 */ +#include "config.h" + #include "telepathy-glib/client-channel-factory.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/client-message.c telepathy-glib-0.17.5/telepathy-glib/client-message.c --- telepathy-glib-0.17.4/telepathy-glib/client-message.c 2011-03-03 12:54:10.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/client-message.c 2012-02-20 16:55:59.000000000 +0000 @@ -32,6 +32,8 @@ * Since: 0.13.9 */ +#include "config.h" + #include "client-message.h" #include "client-message-internal.h" #include "message-internal.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/cm-message.c telepathy-glib-0.17.5/telepathy-glib/cm-message.c --- telepathy-glib-0.17.4/telepathy-glib/cm-message.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/cm-message.c 2012-02-20 16:55:59.000000000 +0000 @@ -29,6 +29,8 @@ * Since: 0.13.9 */ +#include "config.h" + #include "cm-message.h" #include "cm-message-internal.h" #include "message-internal.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/codegen.am telepathy-glib-0.17.5/telepathy-glib/codegen.am --- telepathy-glib-0.17.4/telepathy-glib/codegen.am 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/codegen.am 2012-02-20 16:56:41.000000000 +0000 @@ -3,6 +3,10 @@ codegen_extra_dist = \ account.xml \ account-manager.xml \ + call-content.xml \ + call-content-media-description.xml \ + call-stream.xml \ + call-stream-endpoint.xml \ channel.xml \ channel-dispatcher.xml \ channel-dispatch-operation.xml \ @@ -40,6 +44,10 @@ _gen/gtypes.h \ _gen/tp-cli-account.h \ _gen/tp-cli-account-manager.h \ + _gen/tp-cli-call-content.h \ + _gen/tp-cli-call-content-media-description.h \ + _gen/tp-cli-call-stream.h \ + _gen/tp-cli-call-stream-endpoint.h \ _gen/tp-cli-channel.h \ _gen/tp-cli-channel-dispatcher.h \ _gen/tp-cli-channel-dispatch-operation.h \ @@ -54,6 +62,10 @@ _gen/tp-cli-protocol.h \ _gen/tp-svc-account.h \ _gen/tp-svc-account-manager.h \ + _gen/tp-svc-call-content.h \ + _gen/tp-svc-call-content-media-description.h \ + _gen/tp-svc-call-stream.h \ + _gen/tp-svc-call-stream-endpoint.h \ _gen/tp-svc-channel.h \ _gen/tp-svc-channel-dispatcher.h \ _gen/tp-svc-channel-dispatch-operation.h \ @@ -80,6 +92,10 @@ _gen/register-dbus-glib-marshallers-body.h \ _gen/tp-cli-account-body.h \ _gen/tp-cli-account-manager-body.h \ + _gen/tp-cli-call-content-body.h \ + _gen/tp-cli-call-content-media-description-body.h \ + _gen/tp-cli-call-stream-body.h \ + _gen/tp-cli-call-stream-endpoint-body.h \ _gen/tp-cli-channel-body.h \ _gen/tp-cli-channel-dispatcher-body.h \ _gen/tp-cli-channel-dispatch-operation-body.h \ @@ -94,6 +110,10 @@ _gen/tp-cli-protocol-body.h \ _gen/tp-svc-account.c \ _gen/tp-svc-account-manager.c \ + _gen/tp-svc-call-content.c \ + _gen/tp-svc-call-content-media-description.c \ + _gen/tp-svc-call-stream.c \ + _gen/tp-svc-call-stream-endpoint.c \ _gen/tp-svc-channel.c \ _gen/tp-svc-channel-dispatcher.c \ _gen/tp-svc-channel-dispatch-operation.c \ @@ -218,6 +238,14 @@ subclass=--subclass=TpAccount; \ subclass_assert=--subclass-assert=TP_IS_ACCOUNT; \ ;; \ + call-content) \ + subclass=--subclass=TpCallContent; \ + subclass_assert=--subclass-assert=TP_IS_CALL_CONTENT; \ + ;; \ + call-stream) \ + subclass=--subclass=TpCallStream; \ + subclass_assert=--subclass-assert=TP_IS_CALL_STREAM; \ + ;; \ channel) \ subclass=--subclass=TpChannel; \ subclass_assert=--subclass-assert=TP_IS_CHANNEL; \ diff -Nru telepathy-glib-0.17.4/telepathy-glib/connection-aliasing.c telepathy-glib-0.17.5/telepathy-glib/connection-aliasing.c --- telepathy-glib-0.17.4/telepathy-glib/connection-aliasing.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/connection-aliasing.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/connection.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/connection-avatars.c telepathy-glib-0.17.5/telepathy-glib/connection-avatars.c --- telepathy-glib-0.17.4/telepathy-glib/connection-avatars.c 2011-11-24 16:02:21.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/connection-avatars.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/connection.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/connection.c telepathy-glib-0.17.5/telepathy-glib/connection.c --- telepathy-glib-0.17.4/telepathy-glib/connection.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/connection.c 2012-02-20 16:56:41.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/connection.h" #include @@ -1731,8 +1733,7 @@ param_spec = g_param_spec_uint ("status", "Status", "The status of this connection", 0, G_MAXUINT32, TP_UNKNOWN_CONNECTION_STATUS, - G_PARAM_READABLE - | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_STATUS, param_spec); @@ -1827,8 +1828,7 @@ param_spec = g_param_spec_uint ("status-reason", "Last status change reason", "The reason why #TpConnection:status changed to its current value", 0, G_MAXUINT32, TP_CONNECTION_STATUS_REASON_NONE_SPECIFIED, - G_PARAM_READABLE - | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_STATUS_REASON, param_spec); @@ -1848,8 +1848,7 @@ */ param_spec = g_param_spec_boolean ("connection-ready", "Connection ready?", "Initially FALSE; changes to TRUE when introspection finishes", FALSE, - G_PARAM_READABLE - | G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION_READY, param_spec); @@ -3507,3 +3506,70 @@ return self->priv->balance_uri; } + +static void +_tp_connection_void_cb (TpConnection *proxy, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + GSimpleAsyncResult *result = G_SIMPLE_ASYNC_RESULT (user_data); + + if (error != NULL) + g_simple_async_result_set_from_error (result, error); + + g_simple_async_result_complete_in_idle (result); + g_object_unref (G_OBJECT (result)); +} + +/** + * tp_connection_disconnect_async: + * @self: a #TpConnection + * @callback: a callback to call when the request is satisfied + * @user_data: data to pass to @callback + * + * Disconnect the connection. + * + * This method is intended for use by AccountManager implementations, + * such as Mission Control. To disconnect a connection managed by an + * AccountManager, either use tp_account_request_presence_async() + * or tp_account_set_enabled_async(), depending whether the intention is + * to put the account offline temporarily, or disable it longer-term. + * + * Since: 0.17.5 + */ +void +tp_connection_disconnect_async (TpConnection *self, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *result; + + g_return_if_fail (TP_IS_CONNECTION (self)); + + result = g_simple_async_result_new (G_OBJECT (self), callback, + user_data, tp_connection_disconnect_async); + + tp_cli_connection_call_disconnect (self, -1, _tp_connection_void_cb, result, + NULL, NULL); +} + +/** + * tp_connection_disconnect_finish: + * @self: a #TpConnection + * @result: a #GAsyncResult + * @error: a #GError to fill + * + * Interpret the result of tp_connection_disconnect_async(). + * + * Returns: %TRUE if the call was successful, otherwise %FALSE + * + * Since: 0.17.5 + */ +gboolean +tp_connection_disconnect_finish (TpConnection *self, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (self, tp_connection_disconnect_async); +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/connection-contact-info.c telepathy-glib-0.17.5/telepathy-glib/connection-contact-info.c --- telepathy-glib-0.17.4/telepathy-glib/connection-contact-info.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/connection-contact-info.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/connection.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/connection-contact-list.c telepathy-glib-0.17.5/telepathy-glib/connection-contact-list.c --- telepathy-glib-0.17.4/telepathy-glib/connection-contact-list.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/connection-contact-list.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/connection-contact-list.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/connection.h telepathy-glib-0.17.5/telepathy-glib/connection.h --- telepathy-glib-0.17.4/telepathy-glib/connection.h 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/connection.h 2012-02-20 16:55:59.000000000 +0000 @@ -292,6 +292,13 @@ gint *balance, guint *scale, const gchar **currency); const gchar * tp_connection_get_balance_uri (TpConnection *self); +void tp_connection_disconnect_async (TpConnection *self, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_connection_disconnect_finish (TpConnection *self, + GAsyncResult *result, + GError **error); + G_END_DECLS #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/connection-handles.c telepathy-glib-0.17.5/telepathy-glib/connection-handles.c --- telepathy-glib-0.17.4/telepathy-glib/connection-handles.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/connection-handles.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/connection-internal.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/connection-manager.c telepathy-glib-0.17.5/telepathy-glib/connection-manager.c --- telepathy-glib-0.17.4/telepathy-glib/connection-manager.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/connection-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/connection-manager.h" #include @@ -1465,8 +1467,7 @@ param_spec = g_param_spec_uint ("info-source", "CM info source", "Where we got the current information on supported protocols", TP_CM_INFO_SOURCE_NONE, TP_CM_INFO_SOURCE_LIVE, TP_CM_INFO_SOURCE_NONE, - G_PARAM_READABLE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INFO_SOURCE, param_spec); @@ -1478,8 +1479,7 @@ param_spec = g_param_spec_string ("connection-manager", "CM name", "The name of the connection manager, e.g. \"gabble\" (read-only)", NULL, - G_PARAM_READABLE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION_MANAGER, param_spec); @@ -1495,8 +1495,7 @@ param_spec = g_param_spec_string ("manager-file", ".manager filename", "The .manager filename", NULL, - G_PARAM_CONSTRUCT | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_MANAGER_FILE, param_spec); @@ -1508,8 +1507,7 @@ */ param_spec = g_param_spec_boolean ("always-introspect", "Always introspect?", "Opportunistically introspect the CM when it's run", FALSE, - G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ALWAYS_INTROSPECT, param_spec); diff -Nru telepathy-glib-0.17.4/telepathy-glib/connection.xml telepathy-glib-0.17.5/telepathy-glib/connection.xml --- telepathy-glib-0.17.4/telepathy-glib/connection.xml 2011-04-26 09:30:09.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/connection.xml 2012-02-20 16:56:41.000000000 +0000 @@ -6,6 +6,7 @@ + diff -Nru telepathy-glib-0.17.4/telepathy-glib/contact.c telepathy-glib-0.17.5/telepathy-glib/contact.c --- telepathy-glib-0.17.4/telepathy-glib/contact.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/contact.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/contact-list-channel.c telepathy-glib-0.17.5/telepathy-glib/contact-list-channel.c --- telepathy-glib-0.17.4/telepathy-glib/contact-list-channel.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/contact-list-channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/contact-operations.c telepathy-glib-0.17.5/telepathy-glib/contact-operations.c --- telepathy-glib-0.17.4/telepathy-glib/contact-operations.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/contact-operations.c 2012-02-20 16:55:59.000000000 +0000 @@ -17,6 +17,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/contact-search.c telepathy-glib-0.17.5/telepathy-glib/contact-search.c --- telepathy-glib-0.17.4/telepathy-glib/contact-search.c 2011-04-26 09:30:09.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/contact-search.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/contact-search.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/contact-search-result.c telepathy-glib-0.17.5/telepathy-glib/contact-search-result.c --- telepathy-glib-0.17.4/telepathy-glib/contact-search-result.c 2011-03-03 12:54:10.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/contact-search-result.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/contact-search-result.h" #include "telepathy-glib/contact-search-internal.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/contacts-mixin.c telepathy-glib-0.17.5/telepathy-glib/contacts-mixin.c --- telepathy-glib-0.17.4/telepathy-glib/contacts-mixin.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/contacts-mixin.c 2012-02-20 16:55:59.000000000 +0000 @@ -48,6 +48,8 @@ * */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/dbus.c telepathy-glib-0.17.5/telepathy-glib/dbus.c --- telepathy-glib-0.17.4/telepathy-glib/dbus.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/dbus.c 2012-02-20 16:55:59.000000000 +0000 @@ -51,6 +51,8 @@ * Since: 0.7.9 */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/dbus-daemon.c telepathy-glib-0.17.5/telepathy-glib/dbus-daemon.c --- telepathy-glib-0.17.4/telepathy-glib/dbus-daemon.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/dbus-daemon.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/dbus-tube-channel.c telepathy-glib-0.17.5/telepathy-glib/dbus-tube-channel.c --- telepathy-glib-0.17.4/telepathy-glib/dbus-tube-channel.c 2011-10-11 15:02:48.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/dbus-tube-channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -45,7 +45,7 @@ * Since: 0.15.6 */ -#include +#include "config.h" #include "telepathy-glib/dbus-tube-channel.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/debug.c telepathy-glib-0.17.5/telepathy-glib/debug.c --- telepathy-glib-0.17.4/telepathy-glib/debug.c 2011-10-11 21:35:21.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/debug.c 2012-02-20 16:56:41.000000000 +0000 @@ -114,6 +114,7 @@ { "contact-lists", TP_DEBUG_CONTACT_LISTS }, { "sasl", TP_DEBUG_SASL }, { "room-config", TP_DEBUG_ROOM_CONFIG }, + { "call", TP_DEBUG_CALL }, { 0, } }; diff -Nru telepathy-glib-0.17.4/telepathy-glib/debug-internal.h telepathy-glib-0.17.5/telepathy-glib/debug-internal.h --- telepathy-glib-0.17.4/telepathy-glib/debug-internal.h 2011-10-11 21:35:21.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/debug-internal.h 2012-02-20 16:56:41.000000000 +0000 @@ -30,7 +30,8 @@ TP_DEBUG_CLIENT = 1 << 14, TP_DEBUG_CONTACT_LISTS = 1 << 15, TP_DEBUG_SASL = 1 << 16, - TP_DEBUG_ROOM_CONFIG = 1 << 17 + TP_DEBUG_ROOM_CONFIG = 1 << 17, + TP_DEBUG_CALL = 1 << 18 } TpDebugFlags; gboolean _tp_debug_flag_is_set (TpDebugFlags flag); diff -Nru telepathy-glib-0.17.4/telepathy-glib/debug-sender.c telepathy-glib-0.17.5/telepathy-glib/debug-sender.c --- telepathy-glib-0.17.4/telepathy-glib/debug-sender.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/debug-sender.c 2012-02-20 16:55:59.000000000 +0000 @@ -17,9 +17,10 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "debug-sender.h" #include "config.h" +#include "debug-sender.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/dtmf.c telepathy-glib-0.17.5/telepathy-glib/dtmf.c --- telepathy-glib-0.17.4/telepathy-glib/dtmf.c 2011-03-03 12:54:10.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/dtmf.c 2012-02-20 16:56:41.000000000 +0000 @@ -18,11 +18,15 @@ */ #include "config.h" + #include "telepathy-glib/dtmf.h" + +#include #include #include + /** * SECTION:dtmf * @title: DTMF dialstring interpreter @@ -88,8 +92,8 @@ #define INVALID_DTMF_EVENT ((TpDTMFEvent) 0xFF) -static TpDTMFEvent -tp_dtmf_char_to_event (gchar c) +TpDTMFEvent +_tp_dtmf_char_to_event (gchar c) { switch (c) { @@ -129,16 +133,8 @@ } } -typedef enum -{ - DTMF_CHAR_CLASS_MEANINGLESS, - DTMF_CHAR_CLASS_PAUSE, - DTMF_CHAR_CLASS_EVENT, - DTMF_CHAR_CLASS_WAIT_FOR_USER -} DTMFCharClass; - -static DTMFCharClass -tp_dtmf_char_classify (gchar c) +DTMFCharClass +_tp_dtmf_char_classify (gchar c) { switch (c) { @@ -154,7 +150,7 @@ return DTMF_CHAR_CLASS_PAUSE; default: - if (tp_dtmf_char_to_event (c) != INVALID_DTMF_EVENT) + if (_tp_dtmf_char_to_event (c) != INVALID_DTMF_EVENT) return DTMF_CHAR_CLASS_EVENT; else return DTMF_CHAR_CLASS_MEANINGLESS; @@ -292,7 +288,7 @@ return FALSE; } - switch (tp_dtmf_char_classify (*self->priv->dialstring_remaining)) + switch (_tp_dtmf_char_classify (*self->priv->dialstring_remaining)) { case DTMF_CHAR_CLASS_EVENT: if (was_playing) @@ -306,7 +302,7 @@ /* We're at the end of a gap or pause, or in our initial state. * Play the tone straight away. */ tp_dtmf_player_emit_started_tone (self, - tp_dtmf_char_to_event (*self->priv->dialstring_remaining)); + _tp_dtmf_char_to_event (*self->priv->dialstring_remaining)); self->priv->timer_id = g_timeout_add (self->priv->tone_ms, tp_dtmf_player_timer_cb, self); } @@ -399,7 +395,7 @@ for (i = 0; tones[i] != '\0'; i++) { - if (tp_dtmf_char_classify (tones[i]) == DTMF_CHAR_CLASS_MEANINGLESS) + if (_tp_dtmf_char_classify (tones[i]) == DTMF_CHAR_CLASS_MEANINGLESS) { g_set_error (error, TP_ERROR, TP_ERROR_INVALID_ARGUMENT, "Invalid character in DTMF string starting at %s", diff -Nru telepathy-glib-0.17.4/telepathy-glib/errors.c telepathy-glib-0.17.5/telepathy-glib/errors.c --- telepathy-glib-0.17.4/telepathy-glib/errors.c 2011-10-11 15:02:48.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/errors.c 2012-02-20 16:56:41.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include #include @@ -245,6 +247,10 @@ * Raised when the call's streaming implementation has some kind of internal * error. * Since: 0.15.6 + * @TP_ERROR_CAPTCHA_NOT_SUPPORTED: + * org.freedesktop.Telepathy.Error.Media.CaptchaNotSupported: + * Raised if no UI is available to present captchas, or if one is + * available but it is unable to answer any of the captchas given. * * Enumerated type representing the Telepathy D-Bus errors. */ diff -Nru telepathy-glib-0.17.4/telepathy-glib/errors.h telepathy-glib-0.17.5/telepathy-glib/errors.h --- telepathy-glib-0.17.4/telepathy-glib/errors.h 2011-10-11 15:02:48.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/errors.h 2012-02-20 16:56:41.000000000 +0000 @@ -93,6 +93,7 @@ TP_ERROR_MEDIA_CODECS_INCOMPATIBLE, /*< nick=Media.CodecsIncompatible >*/ TP_ERROR_MEDIA_UNSUPPORTED_TYPE, /*< nick=Media.UnsupportedType >*/ TP_ERROR_MEDIA_STREAMING_ERROR, /*< nick=Media.StreamingError >*/ + TP_ERROR_CAPTCHA_NOT_SUPPORTED, /*< nick=CaptchaNotSupported >*/ } TpError; const gchar *tp_error_get_dbus_name (TpError error); diff -Nru telepathy-glib-0.17.4/telepathy-glib/exportable-channel.c telepathy-glib-0.17.5/telepathy-glib/exportable-channel.c --- telepathy-glib-0.17.4/telepathy-glib/exportable-channel.c 2011-03-03 12:54:10.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/exportable-channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -53,6 +53,7 @@ */ #include "config.h" + #include "exportable-channel.h" #include @@ -79,8 +80,7 @@ */ param_spec = g_param_spec_string ("object-path", "D-Bus object path", "The D-Bus object path used for this object on the bus.", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_interface_install_property (klass, param_spec); /** @@ -129,8 +129,7 @@ "Channel properties", "The channel properties", TP_HASH_TYPE_QUALIFIED_PROPERTY_VALUE_MAP, - G_PARAM_READABLE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_interface_install_property (klass, param_spec); /** @@ -149,8 +148,7 @@ "If true, the channel has *really* closed, rather than just " "appearing to do so", FALSE, - G_PARAM_READABLE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_interface_install_property (klass, param_spec); } } diff -Nru telepathy-glib-0.17.4/telepathy-glib/extra-gtkdoc.h telepathy-glib-0.17.5/telepathy-glib/extra-gtkdoc.h --- telepathy-glib-0.17.4/telepathy-glib/extra-gtkdoc.h 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/extra-gtkdoc.h 2012-02-20 17:31:02.000000000 +0000 @@ -951,7 +951,9 @@ * @short_description: client-side wrappers for authentication channels * * The ServerAuthentication channel type represents a request for client/UI - * processes to carry out authentication with a server. + * processes to carry out authentication with a server, including password + * authentication (prove that you are who you say you are) and captcha + * authentication (prove that you are not a bot). * * Since: 0.13.7 */ @@ -968,6 +970,10 @@ * allows providing a simple password to the connection manager for it to * use with SASL or non-SASL mechanisms. * + * The CaptchaAuthentication interface (since 0.17.5) allows + * interactive captcha-solving so that the user can prove that they are not + * a bot, on protocols requiring this. + * * Since: 0.13.7 */ @@ -995,3 +1001,67 @@ * * Since: 0.17.1 */ + +/** + * SECTION:connection-addressing + * @title: Connection Addressing interface + * @short_description: client-side wrappers for the Addressing interface + * @see_also: #TpConnection + * + * An interface for connections in protocols where contacts' unique + * identifiers can be expressed as vCard fields and/or URIs. + * + * Since: 0.17.5 + */ + +/** + * SECTION:svc-channel-call + * @title: Service-side Channel Call interface + * @short_description: GInterface to implement call channels + * + * Call channels represent real-time audio or video streaming, including + * voice over IP, webcams, and telephony. + * + * Since: 0.17.5 + */ + +/** + * SECTION:cli-call-channel + * @title: Channel Call interfaces + * @short_description: client-side wrappers for call channels + * + * Call channels represent real-time audio or video streaming, including + * voice over IP, webcams, and telephony. + * + * Since: 0.17.5 + */ + +/** + * SECTION:cli-call-content + * @title: Channel Call content interfaces + * @short_description: client-side wrappers for call contents + * + * Represents the contents of a call. + * + * Since: 0.17.5 + */ + +/** + * SECTION:cli-call-stream + * @title: Channel Call stream interfaces + * @short_description: client-side wrappers for call streams + * + * Represents the streams of a call. + * + * Since: 0.17.5 + */ + +/** + * SECTION:cli-call-misc + * @title: Channel Call misc interfaces + * @short_description: client-side wrappers for misc call interfaces + * + * Misc interfaces for calls. + * + * Since: 0.17.5 + */ diff -Nru telepathy-glib-0.17.4/telepathy-glib/file-transfer-channel.c telepathy-glib-0.17.5/telepathy-glib/file-transfer-channel.c --- telepathy-glib-0.17.4/telepathy-glib/file-transfer-channel.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/file-transfer-channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -94,7 +94,7 @@ * Since: 0.15.5 */ -#include +#include "config.h" #include "telepathy-glib/file-transfer-channel.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/gnio-util.c telepathy-glib-0.17.5/telepathy-glib/gnio-util.c --- telepathy-glib-0.17.4/telepathy-glib/gnio-util.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/gnio-util.c 2012-02-20 16:56:41.000000000 +0000 @@ -35,7 +35,7 @@ * for UNIX sockets (only available on platforms with gio-unix). */ -#include +#include "config.h" #include @@ -43,6 +43,7 @@ #include #include #include +#include #include @@ -365,6 +366,88 @@ #endif } +static void +send_credentials_with_byte_async_thread (GSimpleAsyncResult *res, + GObject *object, + GCancellable *cancellable) +{ + guchar byte; + GError *error = NULL; + + byte = GPOINTER_TO_UINT (g_simple_async_result_get_op_res_gpointer (res)); + + if (!tp_unix_connection_send_credentials_with_byte ( + (GSocketConnection *) object, byte, cancellable, &error)) + { + g_simple_async_result_take_error (res, error); + } +} + +/** + * tp_unix_connection_send_credentials_with_byte_async: + * @connection: A #GUnixConnection. + * @byte: the byte to send with the credentials + * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. + * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied + * @user_data: (closure): the data to pass to callback function + * + * Asynchronously send credentials. + * + * For more details, see tp_unix_connection_send_credentials_with_byte() which + * is the synchronous version of this call. + * + * When the operation is finished, @callback will be called. You can then call + * tp_unix_connection_send_credentials_with_byte_finish() to get the result of + * the operation. + * + * Since: 0.17.5 + **/ +void +tp_unix_connection_send_credentials_with_byte_async ( + GSocketConnection *connection, + guchar byte, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *res; + + res = g_simple_async_result_new (G_OBJECT (connection), callback, user_data, + tp_unix_connection_send_credentials_with_byte_async); + + /* Extra casting to guint to work around GNOME#661546 for GLib < 2.32 */ + g_simple_async_result_set_op_res_gpointer (res, + GUINT_TO_POINTER ((guint) byte), NULL); + + g_simple_async_result_run_in_thread (res, + send_credentials_with_byte_async_thread, G_PRIORITY_DEFAULT, cancellable); + + g_object_unref (res); +} + +/** + * tp_unix_connection_send_credentials_with_byte_finish: + * @connection: A #GUnixConnection. + * @result: a #GAsyncResult. + * @error: a #GError, or %NULL + * + * Finishes an asynchronous send credentials operation started with + * tp_unix_connection_send_credentials_with_byte_async(). + * + * Returns: %TRUE if the operation was successful, otherwise %FALSE. + * + * Since: 0.17.5 + **/ +gboolean +tp_unix_connection_send_credentials_with_byte_finish ( + GSocketConnection *connection, + GAsyncResult *result, + GError **error) +{ + _tp_implement_finish_void (connection, + tp_unix_connection_send_credentials_with_byte_async); +} + #ifdef HAVE_GIO_UNIX static GCredentials * _tp_unix_connection_receive_credentials_with_byte (GUnixConnection *connection, @@ -575,3 +658,131 @@ return FALSE; #endif } + +typedef struct +{ + GCredentials *creds; + guchar byte; +} ReceiveCredentialsWithByteData; + +static ReceiveCredentialsWithByteData * +receive_credentials_with_byte_data_new (GCredentials *creds, + guchar byte) +{ + ReceiveCredentialsWithByteData *data; + + data = g_slice_new0 (ReceiveCredentialsWithByteData); + data->creds = g_object_ref (creds); + data->byte = byte; + + return data; +} + +static void +receive_credentials_with_byte_data_free (ReceiveCredentialsWithByteData *data) +{ + g_object_unref (data->creds); + g_slice_free (ReceiveCredentialsWithByteData, data); +} + +static void +receive_credentials_with_byte_async_thread (GSimpleAsyncResult *res, + GObject *object, + GCancellable *cancellable) +{ + guchar byte; + GCredentials *creds; + GError *error = NULL; + + creds = tp_unix_connection_receive_credentials_with_byte ( + (GSocketConnection *) object, &byte, cancellable, &error); + if (creds == NULL) + { + g_simple_async_result_take_error (res, error); + return; + } + + g_simple_async_result_set_op_res_gpointer (res, + receive_credentials_with_byte_data_new (creds, byte), + (GDestroyNotify) receive_credentials_with_byte_data_free); + + g_object_unref (creds); +} + +/** + * tp_unix_connection_receive_credentials_with_byte_async: + * @connection: A #GUnixConnection. + * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore. + * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied + * @user_data: (closure): the data to pass to callback function + * + * Asynchronously receive credentials. + * + * For more details, see tp_unix_connection_receive_credentials_with_byte() + * which is the synchronous version of this call. + * + * When the operation is finished, @callback will be called. You can then call + * tp_unix_connection_receive_credentials_with_byte_finish() to get the result + * of the operation. + * + * Since: 0.17.5 + **/ +void +tp_unix_connection_receive_credentials_with_byte_async ( + GSocketConnection *connection, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GSimpleAsyncResult *res; + + res = g_simple_async_result_new (G_OBJECT (connection), callback, user_data, + tp_unix_connection_receive_credentials_with_byte_async); + + g_simple_async_result_run_in_thread (res, + receive_credentials_with_byte_async_thread, G_PRIORITY_DEFAULT, + cancellable); + + g_object_unref (res); +} + +/** + * tp_unix_connection_receive_credentials_with_byte_finish: + * @connection: A #GUnixConnection. + * @result: a #GAsyncResult. + * @byte: (out): if not %NULL, used to return the byte + * @error: a #GError, or %NULL + * + * Finishes an asynchronous receive credentials operation started with + * tp_unix_connection_receive_credentials_with_byte_async(). + * + * Returns: (transfer full): a #GCredentials, or %NULL on error. + * Free the returned object with g_object_unref(). + * + * Since: 0.17.5 + **/ +GCredentials * +tp_unix_connection_receive_credentials_with_byte_finish ( + GSocketConnection *connection, + GAsyncResult *result, + guchar *byte, + GError **error) +{ + GSimpleAsyncResult *simple = (GSimpleAsyncResult *) result; + ReceiveCredentialsWithByteData *data; + + g_return_val_if_fail (g_simple_async_result_is_valid (result, + G_OBJECT (connection), + tp_unix_connection_receive_credentials_with_byte_async), + NULL); + + if (g_simple_async_result_propagate_error (simple, error)) + return NULL; + + data = g_simple_async_result_get_op_res_gpointer (simple); + + if (byte != NULL) + *byte = data->byte; + + return g_object_ref (data->creds); +} diff -Nru telepathy-glib-0.17.4/telepathy-glib/gnio-util.h telepathy-glib-0.17.5/telepathy-glib/gnio-util.h --- telepathy-glib-0.17.4/telepathy-glib/gnio-util.h 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/gnio-util.h 2012-02-20 16:55:59.000000000 +0000 @@ -41,12 +41,32 @@ guchar byte, GCancellable *cancellable, GError **error); +void tp_unix_connection_send_credentials_with_byte_async ( + GSocketConnection *connection, + guchar byte, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean tp_unix_connection_send_credentials_with_byte_finish ( + GSocketConnection *connection, + GAsyncResult *result, + GError **error); GCredentials * tp_unix_connection_receive_credentials_with_byte ( GSocketConnection *connection, guchar *byte, GCancellable *cancellable, GError **error); +void tp_unix_connection_receive_credentials_with_byte_async ( + GSocketConnection *connection, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GCredentials *tp_unix_connection_receive_credentials_with_byte_finish ( + GSocketConnection *connection, + GAsyncResult *result, + guchar *byte, + GError **error); G_END_DECLS diff -Nru telepathy-glib-0.17.4/telepathy-glib/group-mixin.c telepathy-glib-0.17.5/telepathy-glib/group-mixin.c --- telepathy-glib-0.17.4/telepathy-glib/group-mixin.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/group-mixin.c 2012-02-20 16:55:59.000000000 +0000 @@ -56,6 +56,8 @@ * tp_external_group_mixin_init_dbus_properties() (as appropriate). */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/gtypes.c telepathy-glib-0.17.5/telepathy-glib/gtypes.c --- telepathy-glib-0.17.4/telepathy-glib/gtypes.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/gtypes.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/handle.c telepathy-glib-0.17.5/telepathy-glib/handle.c --- telepathy-glib-0.17.4/telepathy-glib/handle.c 2009-04-02 15:11:51.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/handle.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include /** diff -Nru telepathy-glib-0.17.4/telepathy-glib/handle-channels-context.c telepathy-glib-0.17.5/telepathy-glib/handle-channels-context.c --- telepathy-glib-0.17.4/telepathy-glib/handle-channels-context.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/handle-channels-context.c 2012-02-20 16:55:59.000000000 +0000 @@ -46,6 +46,8 @@ * Since: 0.11.6 */ +#include "config.h" + #include "telepathy-glib/handle-channels-context.h" #include "telepathy-glib/handle-channels-context-internal.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/handle-repo.c telepathy-glib-0.17.5/telepathy-glib/handle-repo.c --- telepathy-glib-0.17.4/telepathy-glib/handle-repo.c 2011-03-03 12:54:10.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/handle-repo.c 2012-02-20 16:55:59.000000000 +0000 @@ -32,6 +32,8 @@ * and #TpStaticHandleRepo for concrete implementations. */ +#include "config.h" + #include #include @@ -50,8 +52,7 @@ param_spec = g_param_spec_uint ("handle-type", "Handle type", "The TpHandleType held in this handle repository.", 0, G_MAXUINT32, 0, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_interface_install_property (klass, param_spec); } } diff -Nru telepathy-glib-0.17.4/telepathy-glib/handle-repo-dynamic.c telepathy-glib-0.17.5/telepathy-glib/handle-repo-dynamic.c --- telepathy-glib-0.17.4/telepathy-glib/handle-repo-dynamic.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/handle-repo-dynamic.c 2012-02-20 16:55:59.000000000 +0000 @@ -43,7 +43,7 @@ * valid until the handle repository is destroyed. */ -#include +#include "config.h" #include @@ -297,8 +297,7 @@ param_spec = g_param_spec_pointer ("normalize-function", "Normalization function", "A TpDynamicHandleRepoNormalizeFunc used to normalize handle IDs.", - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_NORMALIZE_FUNCTION, param_spec); @@ -315,8 +314,7 @@ "The default context given to the normalize-function if NULL is passed " "as context to the ensure or lookup function, e.g. when RequestHandle" "is called via D-Bus. The default is NULL.", - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_DEFAULT_NORMALIZE_CONTEXT, param_spec); } diff -Nru telepathy-glib-0.17.4/telepathy-glib/handle-repo-static.c telepathy-glib-0.17.5/telepathy-glib/handle-repo-static.c --- telepathy-glib-0.17.4/telepathy-glib/handle-repo-static.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/handle-repo-static.c 2012-02-20 16:55:59.000000000 +0000 @@ -39,6 +39,8 @@ * %TP_HANDLE_TYPE_LIST. */ +#include "config.h" + #include #include @@ -181,8 +183,7 @@ param_spec = g_param_spec_boxed ("handle-names", "Handle names", "The static set of handle names supported by this repo.", G_TYPE_STRV, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_HANDLE_NAMES, param_spec); } diff -Nru telepathy-glib-0.17.4/telepathy-glib/handle-set.c telepathy-glib-0.17.5/telepathy-glib/handle-set.c --- telepathy-glib-0.17.4/telepathy-glib/handle-set.c 2011-08-29 11:26:14.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/handle-set.c 2012-02-20 16:55:59.000000000 +0000 @@ -21,6 +21,8 @@ * */ +#include "config.h" + /* there is no handle-set.h - handle set and handle repo have a circular * dependency, so they share a header */ #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/heap.c telepathy-glib-0.17.5/telepathy-glib/heap.c --- telepathy-glib-0.17.4/telepathy-glib/heap.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/heap.c 2012-02-20 16:55:59.000000000 +0000 @@ -27,6 +27,8 @@ * A heap queue of pointers. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/introspection.am telepathy-glib-0.17.5/telepathy-glib/introspection.am --- telepathy-glib-0.17.4/telepathy-glib/introspection.am 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/introspection.am 2012-02-20 16:56:41.000000000 +0000 @@ -64,6 +64,9 @@ $(srcdir)/stream-tube-connection.c $(srcdir)/stream-tube-connection.h \ $(srcdir)/text-channel.c $(srcdir)/text-channel.h \ $(srcdir)/file-transfer-channel.c $(srcdir)/file-transfer-channel.h \ + $(srcdir)/call-channel.c $(srcdir)/call-channel.h \ + $(srcdir)/call-content.c $(srcdir)/call-content.h \ + $(srcdir)/call-stream.c $(srcdir)/call-stream.h \ $(srcdir)/client-message.c $(srcdir)/client-message.h \ $(srcdir)/message.c $(srcdir)/message.h \ $(srcdir)/signalled-message.c $(srcdir)/signalled-message.h \ diff -Nru telepathy-glib-0.17.4/telepathy-glib/intset.c telepathy-glib-0.17.5/telepathy-glib/intset.c --- telepathy-glib-0.17.4/telepathy-glib/intset.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/intset.c 2012-02-20 16:55:59.000000000 +0000 @@ -31,6 +31,8 @@ * dynamically-allocated sparse bitfield. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/Makefile.am telepathy-glib-0.17.5/telepathy-glib/Makefile.am --- telepathy-glib-0.17.4/telepathy-glib/Makefile.am 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/Makefile.am 2012-02-20 16:56:41.000000000 +0000 @@ -29,14 +29,26 @@ automatic-client-factory.h \ automatic-proxy-factory.h \ add-dispatch-operation-context.h \ + base-call-channel.h \ + base-call-content.h \ + base-call-stream.h \ base-client.h \ base-channel.h \ base-connection.h \ base-connection-manager.h \ + base-media-call-channel.h \ + base-media-call-content.h \ + base-media-call-stream.h \ base-password-channel.h \ base-protocol.h \ base-room-config.h \ basic-proxy-factory.h \ + call-channel.h \ + call-content.h \ + call-content-media-description.h \ + call-misc.h \ + call-stream.h \ + call-stream-endpoint.h \ channel.h \ channel-iface.h \ channel-dispatcher.h \ @@ -102,6 +114,7 @@ stream-tube-connection.h \ svc-account.h \ svc-account-manager.h \ + svc-call.h \ svc-channel-dispatcher.h \ svc-channel-dispatch-operation.h \ svc-channel.h \ @@ -155,12 +168,19 @@ automatic-proxy-factory.c \ add-dispatch-operation-context-internal.h \ add-dispatch-operation-context.c \ + base-call-channel.c \ + base-call-content.c \ + base-call-stream.c \ + base-call-internal.h \ base-channel.c \ base-client.c \ base-client-internal.h \ base-connection.c \ base-connection-internal.h \ base-connection-manager.c \ + base-media-call-channel.c \ + base-media-call-content.c \ + base-media-call-stream.c \ base-password-channel.c \ base-protocol-internal.h \ base-protocol.c \ @@ -168,6 +188,13 @@ basic-proxy-factory.c \ capabilities.c \ capabilities-internal.h \ + call-channel.c \ + call-content.c \ + call-content-media-description.c \ + call-internal.h \ + call-misc.c \ + call-stream.c \ + call-stream-endpoint.c \ channel.c \ channel-contacts.c \ channel-group.c \ diff -Nru telepathy-glib-0.17.4/telepathy-glib/Makefile.in telepathy-glib-0.17.5/telepathy-glib/Makefile.in --- telepathy-glib-0.17.4/telepathy-glib/Makefile.in 2011-12-19 15:18:55.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/Makefile.in 2012-02-20 17:31:10.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -96,6 +96,12 @@ 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)$(girdir)" \ "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(typelibsdir)" \ "$(DESTDIR)$(genincludedir)" "$(DESTDIR)$(tpgincludedir)" @@ -105,11 +111,16 @@ am_libtelepathy_glib_internal_la_OBJECTS = account.lo \ account-channel-request.lo account-manager.lo \ automatic-client-factory.lo automatic-proxy-factory.lo \ - add-dispatch-operation-context.lo base-channel.lo \ + add-dispatch-operation-context.lo base-call-channel.lo \ + base-call-content.lo base-call-stream.lo base-channel.lo \ base-client.lo base-connection.lo base-connection-manager.lo \ - base-password-channel.lo base-protocol.lo base-room-config.lo \ - basic-proxy-factory.lo capabilities.lo channel.lo \ - channel-contacts.lo channel-group.lo channel-dispatcher.lo \ + base-media-call-channel.lo base-media-call-content.lo \ + base-media-call-stream.lo base-password-channel.lo \ + base-protocol.lo base-room-config.lo basic-proxy-factory.lo \ + capabilities.lo call-channel.lo call-content.lo \ + call-content-media-description.lo call-misc.lo call-stream.lo \ + call-stream-endpoint.lo channel.lo channel-contacts.lo \ + channel-group.lo channel-dispatcher.lo \ channel-dispatch-operation.lo channel-manager.lo \ channel-request.lo client.lo client-channel-factory.lo \ client-message.lo connection.lo connection-aliasing.lo \ @@ -135,7 +146,9 @@ text-channel.lo text-mixin.lo util.lo nodist_libtelepathy_glib_internal_la_OBJECTS = error-str.lo \ signals-marshal.lo genums.lo tp-svc-account.lo \ - tp-svc-account-manager.lo tp-svc-channel.lo \ + tp-svc-account-manager.lo tp-svc-call-content.lo \ + tp-svc-call-content-media-description.lo tp-svc-call-stream.lo \ + tp-svc-call-stream-endpoint.lo tp-svc-channel.lo \ tp-svc-channel-dispatcher.lo \ tp-svc-channel-dispatch-operation.lo tp-svc-channel-request.lo \ tp-svc-client.lo tp-svc-connection.lo \ @@ -145,8 +158,8 @@ libtelepathy_glib_internal_la_OBJECTS = \ $(am_libtelepathy_glib_internal_la_OBJECTS) \ $(nodist_libtelepathy_glib_internal_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__objects_1 = nodist_libtelepathy_glib_la_OBJECTS = $(am__objects_1) @@ -165,21 +178,21 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libtelepathy_glib_internal_la_SOURCES) \ $(nodist_libtelepathy_glib_internal_la_SOURCES) \ @@ -386,14 +399,26 @@ automatic-client-factory.h \ automatic-proxy-factory.h \ add-dispatch-operation-context.h \ + base-call-channel.h \ + base-call-content.h \ + base-call-stream.h \ base-client.h \ base-channel.h \ base-connection.h \ base-connection-manager.h \ + base-media-call-channel.h \ + base-media-call-content.h \ + base-media-call-stream.h \ base-password-channel.h \ base-protocol.h \ base-room-config.h \ basic-proxy-factory.h \ + call-channel.h \ + call-content.h \ + call-content-media-description.h \ + call-misc.h \ + call-stream.h \ + call-stream-endpoint.h \ channel.h \ channel-iface.h \ channel-dispatcher.h \ @@ -459,6 +484,7 @@ stream-tube-connection.h \ svc-account.h \ svc-account-manager.h \ + svc-call.h \ svc-channel-dispatcher.h \ svc-channel-dispatch-operation.h \ svc-channel.h \ @@ -500,12 +526,19 @@ automatic-proxy-factory.c \ add-dispatch-operation-context-internal.h \ add-dispatch-operation-context.c \ + base-call-channel.c \ + base-call-content.c \ + base-call-stream.c \ + base-call-internal.h \ base-channel.c \ base-client.c \ base-client-internal.h \ base-connection.c \ base-connection-internal.h \ base-connection-manager.c \ + base-media-call-channel.c \ + base-media-call-content.c \ + base-media-call-stream.c \ base-password-channel.c \ base-protocol-internal.h \ base-protocol.c \ @@ -513,6 +546,13 @@ basic-proxy-factory.c \ capabilities.c \ capabilities-internal.h \ + call-channel.c \ + call-content.c \ + call-content-media-description.c \ + call-internal.h \ + call-misc.c \ + call-stream.c \ + call-stream-endpoint.c \ channel.c \ channel-contacts.c \ channel-group.c \ @@ -705,15 +745,16 @@ versions/0.17.1.abi \ versions/0.17.2.abi \ versions/0.17.3.abi \ + versions/0.17.5.abi \ $(NULL) # The quoting here is unnecessary but harmless, and has the useful side-effect # that vim quickfix mode (:make) doesn't interpret the libtool --mode=link # command as an error message in a bizarrely named file -libtelepathy_glib_la_LDFLAGS = $(AM_LDFLAGS) -version-info \ - "$(LT_CURRENT)":"$(LT_REVISION)":"$(LT_AGE)" $(am__append_3) \ - $(am__append_4) +libtelepathy_glib_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined \ + -version-info "$(LT_CURRENT)":"$(LT_REVISION)":"$(LT_AGE)" \ + $(am__append_3) $(am__append_4) libtelepathy_glib_la_LIBADD = libtelepathy-glib-internal.la nodist_libtelepathy_glib_la_SOURCES = $(am__append_1) libtelepathy_glib_la_DEPENDENCIES = libtelepathy-glib-internal.la \ @@ -729,6 +770,10 @@ codegen_extra_dist = \ account.xml \ account-manager.xml \ + call-content.xml \ + call-content-media-description.xml \ + call-stream.xml \ + call-stream-endpoint.xml \ channel.xml \ channel-dispatcher.xml \ channel-dispatch-operation.xml \ @@ -766,6 +811,10 @@ _gen/gtypes.h \ _gen/tp-cli-account.h \ _gen/tp-cli-account-manager.h \ + _gen/tp-cli-call-content.h \ + _gen/tp-cli-call-content-media-description.h \ + _gen/tp-cli-call-stream.h \ + _gen/tp-cli-call-stream-endpoint.h \ _gen/tp-cli-channel.h \ _gen/tp-cli-channel-dispatcher.h \ _gen/tp-cli-channel-dispatch-operation.h \ @@ -780,6 +829,10 @@ _gen/tp-cli-protocol.h \ _gen/tp-svc-account.h \ _gen/tp-svc-account-manager.h \ + _gen/tp-svc-call-content.h \ + _gen/tp-svc-call-content-media-description.h \ + _gen/tp-svc-call-stream.h \ + _gen/tp-svc-call-stream-endpoint.h \ _gen/tp-svc-channel.h \ _gen/tp-svc-channel-dispatcher.h \ _gen/tp-svc-channel-dispatch-operation.h \ @@ -806,6 +859,10 @@ _gen/register-dbus-glib-marshallers-body.h \ _gen/tp-cli-account-body.h \ _gen/tp-cli-account-manager-body.h \ + _gen/tp-cli-call-content-body.h \ + _gen/tp-cli-call-content-media-description-body.h \ + _gen/tp-cli-call-stream-body.h \ + _gen/tp-cli-call-stream-endpoint-body.h \ _gen/tp-cli-channel-body.h \ _gen/tp-cli-channel-dispatcher-body.h \ _gen/tp-cli-channel-dispatch-operation-body.h \ @@ -820,6 +877,10 @@ _gen/tp-cli-protocol-body.h \ _gen/tp-svc-account.c \ _gen/tp-svc-account-manager.c \ + _gen/tp-svc-call-content.c \ + _gen/tp-svc-call-content-media-description.c \ + _gen/tp-svc-call-stream.c \ + _gen/tp-svc-call-stream-endpoint.c \ _gen/tp-svc-channel.c \ _gen/tp-svc-channel-dispatcher.c \ _gen/tp-svc-channel-dispatch-operation.c \ @@ -896,6 +957,9 @@ @HAVE_INTROSPECTION_TRUE@ $(srcdir)/stream-tube-connection.c $(srcdir)/stream-tube-connection.h \ @HAVE_INTROSPECTION_TRUE@ $(srcdir)/text-channel.c $(srcdir)/text-channel.h \ @HAVE_INTROSPECTION_TRUE@ $(srcdir)/file-transfer-channel.c $(srcdir)/file-transfer-channel.h \ +@HAVE_INTROSPECTION_TRUE@ $(srcdir)/call-channel.c $(srcdir)/call-channel.h \ +@HAVE_INTROSPECTION_TRUE@ $(srcdir)/call-content.c $(srcdir)/call-content.h \ +@HAVE_INTROSPECTION_TRUE@ $(srcdir)/call-stream.c $(srcdir)/call-stream.h \ @HAVE_INTROSPECTION_TRUE@ $(srcdir)/client-message.c $(srcdir)/client-message.h \ @HAVE_INTROSPECTION_TRUE@ $(srcdir)/message.c $(srcdir)/message.h \ @HAVE_INTROSPECTION_TRUE@ $(srcdir)/signalled-message.c $(srcdir)/signalled-message.h \ @@ -957,6 +1021,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/tools/flymake.mk $(top_srcdir)/tools/check-coding-style.mk $(srcdir)/abi.am $(srcdir)/codegen.am $(srcdir)/introspection.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -1010,9 +1075,9 @@ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libtelepathy-glib-internal.la: $(libtelepathy_glib_internal_la_OBJECTS) $(libtelepathy_glib_internal_la_DEPENDENCIES) +libtelepathy-glib-internal.la: $(libtelepathy_glib_internal_la_OBJECTS) $(libtelepathy_glib_internal_la_DEPENDENCIES) $(EXTRA_libtelepathy_glib_internal_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libtelepathy_glib_internal_la_OBJECTS) $(libtelepathy_glib_internal_la_LIBADD) $(LIBS) -libtelepathy-glib.la: $(libtelepathy_glib_la_OBJECTS) $(libtelepathy_glib_la_DEPENDENCIES) +libtelepathy-glib.la: $(libtelepathy_glib_la_OBJECTS) $(libtelepathy_glib_la_DEPENDENCIES) $(EXTRA_libtelepathy_glib_la_DEPENDENCIES) $(AM_V_CCLD)$(libtelepathy_glib_la_LINK) -rpath $(libdir) $(libtelepathy_glib_la_OBJECTS) $(libtelepathy_glib_la_LIBADD) $(LIBS) mostlyclean-compile: @@ -1027,15 +1092,27 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/add-dispatch-operation-context.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/automatic-client-factory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/automatic-proxy-factory.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-call-channel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-call-content.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-call-stream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-channel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-client.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-connection-manager.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-connection.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-contact-list.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-media-call-channel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-media-call-content.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-media-call-stream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-password-channel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-protocol.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-room-config.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic-proxy-factory.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-channel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-content-media-description.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-content.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-misc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-stream-endpoint.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-stream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/capabilities.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/channel-contacts.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/channel-dispatch-operation.Plo@am__quote@ @@ -1111,6 +1188,10 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text-mixin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tp-svc-account-manager.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tp-svc-account.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tp-svc-call-content-media-description.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tp-svc-call-content.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tp-svc-call-stream-endpoint.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tp-svc-call-stream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tp-svc-channel-dispatch-operation.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tp-svc-channel-dispatcher.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tp-svc-channel-request.Plo@am__quote@ @@ -1129,170 +1210,177 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< error-str.lo: _gen/error-str.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) $(AM_CFLAGS) $(CFLAGS) -MT error-str.lo -MD -MP -MF $(DEPDIR)/error-str.Tpo -c -o error-str.lo `test -f '_gen/error-str.c' || echo '$(srcdir)/'`_gen/error-str.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/error-str.Tpo $(DEPDIR)/error-str.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/error-str.c' object='error-str.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/error-str.c' object='error-str.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o error-str.lo `test -f '_gen/error-str.c' || echo '$(srcdir)/'`_gen/error-str.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o error-str.lo `test -f '_gen/error-str.c' || echo '$(srcdir)/'`_gen/error-str.c signals-marshal.lo: _gen/signals-marshal.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) $(AM_CFLAGS) $(CFLAGS) -MT signals-marshal.lo -MD -MP -MF $(DEPDIR)/signals-marshal.Tpo -c -o signals-marshal.lo `test -f '_gen/signals-marshal.c' || echo '$(srcdir)/'`_gen/signals-marshal.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/signals-marshal.Tpo $(DEPDIR)/signals-marshal.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/signals-marshal.c' object='signals-marshal.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/signals-marshal.c' object='signals-marshal.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o signals-marshal.lo `test -f '_gen/signals-marshal.c' || echo '$(srcdir)/'`_gen/signals-marshal.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o signals-marshal.lo `test -f '_gen/signals-marshal.c' || echo '$(srcdir)/'`_gen/signals-marshal.c genums.lo: _gen/genums.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) $(AM_CFLAGS) $(CFLAGS) -MT genums.lo -MD -MP -MF $(DEPDIR)/genums.Tpo -c -o genums.lo `test -f '_gen/genums.c' || echo '$(srcdir)/'`_gen/genums.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/genums.Tpo $(DEPDIR)/genums.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/genums.c' object='genums.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/genums.c' object='genums.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o genums.lo `test -f '_gen/genums.c' || echo '$(srcdir)/'`_gen/genums.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o genums.lo `test -f '_gen/genums.c' || echo '$(srcdir)/'`_gen/genums.c tp-svc-account.lo: _gen/tp-svc-account.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-account.lo -MD -MP -MF $(DEPDIR)/tp-svc-account.Tpo -c -o tp-svc-account.lo `test -f '_gen/tp-svc-account.c' || echo '$(srcdir)/'`_gen/tp-svc-account.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-account.Tpo $(DEPDIR)/tp-svc-account.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-account.c' object='tp-svc-account.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-account.c' object='tp-svc-account.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-account.lo `test -f '_gen/tp-svc-account.c' || echo '$(srcdir)/'`_gen/tp-svc-account.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-account.lo `test -f '_gen/tp-svc-account.c' || echo '$(srcdir)/'`_gen/tp-svc-account.c tp-svc-account-manager.lo: _gen/tp-svc-account-manager.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-account-manager.lo -MD -MP -MF $(DEPDIR)/tp-svc-account-manager.Tpo -c -o tp-svc-account-manager.lo `test -f '_gen/tp-svc-account-manager.c' || echo '$(srcdir)/'`_gen/tp-svc-account-manager.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-account-manager.Tpo $(DEPDIR)/tp-svc-account-manager.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-account-manager.c' object='tp-svc-account-manager.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-account-manager.c' object='tp-svc-account-manager.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-account-manager.lo `test -f '_gen/tp-svc-account-manager.c' || echo '$(srcdir)/'`_gen/tp-svc-account-manager.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-account-manager.lo `test -f '_gen/tp-svc-account-manager.c' || echo '$(srcdir)/'`_gen/tp-svc-account-manager.c + +tp-svc-call-content.lo: _gen/tp-svc-call-content.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-call-content.lo -MD -MP -MF $(DEPDIR)/tp-svc-call-content.Tpo -c -o tp-svc-call-content.lo `test -f '_gen/tp-svc-call-content.c' || echo '$(srcdir)/'`_gen/tp-svc-call-content.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-call-content.Tpo $(DEPDIR)/tp-svc-call-content.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-call-content.c' object='tp-svc-call-content.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-call-content.lo `test -f '_gen/tp-svc-call-content.c' || echo '$(srcdir)/'`_gen/tp-svc-call-content.c + +tp-svc-call-content-media-description.lo: _gen/tp-svc-call-content-media-description.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-call-content-media-description.lo -MD -MP -MF $(DEPDIR)/tp-svc-call-content-media-description.Tpo -c -o tp-svc-call-content-media-description.lo `test -f '_gen/tp-svc-call-content-media-description.c' || echo '$(srcdir)/'`_gen/tp-svc-call-content-media-description.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-call-content-media-description.Tpo $(DEPDIR)/tp-svc-call-content-media-description.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-call-content-media-description.c' object='tp-svc-call-content-media-description.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-call-content-media-description.lo `test -f '_gen/tp-svc-call-content-media-description.c' || echo '$(srcdir)/'`_gen/tp-svc-call-content-media-description.c + +tp-svc-call-stream.lo: _gen/tp-svc-call-stream.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-call-stream.lo -MD -MP -MF $(DEPDIR)/tp-svc-call-stream.Tpo -c -o tp-svc-call-stream.lo `test -f '_gen/tp-svc-call-stream.c' || echo '$(srcdir)/'`_gen/tp-svc-call-stream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-call-stream.Tpo $(DEPDIR)/tp-svc-call-stream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-call-stream.c' object='tp-svc-call-stream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-call-stream.lo `test -f '_gen/tp-svc-call-stream.c' || echo '$(srcdir)/'`_gen/tp-svc-call-stream.c + +tp-svc-call-stream-endpoint.lo: _gen/tp-svc-call-stream-endpoint.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-call-stream-endpoint.lo -MD -MP -MF $(DEPDIR)/tp-svc-call-stream-endpoint.Tpo -c -o tp-svc-call-stream-endpoint.lo `test -f '_gen/tp-svc-call-stream-endpoint.c' || echo '$(srcdir)/'`_gen/tp-svc-call-stream-endpoint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-call-stream-endpoint.Tpo $(DEPDIR)/tp-svc-call-stream-endpoint.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-call-stream-endpoint.c' object='tp-svc-call-stream-endpoint.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-call-stream-endpoint.lo `test -f '_gen/tp-svc-call-stream-endpoint.c' || echo '$(srcdir)/'`_gen/tp-svc-call-stream-endpoint.c tp-svc-channel.lo: _gen/tp-svc-channel.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-channel.lo -MD -MP -MF $(DEPDIR)/tp-svc-channel.Tpo -c -o tp-svc-channel.lo `test -f '_gen/tp-svc-channel.c' || echo '$(srcdir)/'`_gen/tp-svc-channel.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-channel.Tpo $(DEPDIR)/tp-svc-channel.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-channel.c' object='tp-svc-channel.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-channel.c' object='tp-svc-channel.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-channel.lo `test -f '_gen/tp-svc-channel.c' || echo '$(srcdir)/'`_gen/tp-svc-channel.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-channel.lo `test -f '_gen/tp-svc-channel.c' || echo '$(srcdir)/'`_gen/tp-svc-channel.c tp-svc-channel-dispatcher.lo: _gen/tp-svc-channel-dispatcher.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-channel-dispatcher.lo -MD -MP -MF $(DEPDIR)/tp-svc-channel-dispatcher.Tpo -c -o tp-svc-channel-dispatcher.lo `test -f '_gen/tp-svc-channel-dispatcher.c' || echo '$(srcdir)/'`_gen/tp-svc-channel-dispatcher.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-channel-dispatcher.Tpo $(DEPDIR)/tp-svc-channel-dispatcher.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-channel-dispatcher.c' object='tp-svc-channel-dispatcher.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-channel-dispatcher.c' object='tp-svc-channel-dispatcher.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-channel-dispatcher.lo `test -f '_gen/tp-svc-channel-dispatcher.c' || echo '$(srcdir)/'`_gen/tp-svc-channel-dispatcher.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-channel-dispatcher.lo `test -f '_gen/tp-svc-channel-dispatcher.c' || echo '$(srcdir)/'`_gen/tp-svc-channel-dispatcher.c tp-svc-channel-dispatch-operation.lo: _gen/tp-svc-channel-dispatch-operation.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-channel-dispatch-operation.lo -MD -MP -MF $(DEPDIR)/tp-svc-channel-dispatch-operation.Tpo -c -o tp-svc-channel-dispatch-operation.lo `test -f '_gen/tp-svc-channel-dispatch-operation.c' || echo '$(srcdir)/'`_gen/tp-svc-channel-dispatch-operation.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-channel-dispatch-operation.Tpo $(DEPDIR)/tp-svc-channel-dispatch-operation.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-channel-dispatch-operation.c' object='tp-svc-channel-dispatch-operation.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-channel-dispatch-operation.c' object='tp-svc-channel-dispatch-operation.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-channel-dispatch-operation.lo `test -f '_gen/tp-svc-channel-dispatch-operation.c' || echo '$(srcdir)/'`_gen/tp-svc-channel-dispatch-operation.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-channel-dispatch-operation.lo `test -f '_gen/tp-svc-channel-dispatch-operation.c' || echo '$(srcdir)/'`_gen/tp-svc-channel-dispatch-operation.c tp-svc-channel-request.lo: _gen/tp-svc-channel-request.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-channel-request.lo -MD -MP -MF $(DEPDIR)/tp-svc-channel-request.Tpo -c -o tp-svc-channel-request.lo `test -f '_gen/tp-svc-channel-request.c' || echo '$(srcdir)/'`_gen/tp-svc-channel-request.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-channel-request.Tpo $(DEPDIR)/tp-svc-channel-request.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-channel-request.c' object='tp-svc-channel-request.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-channel-request.c' object='tp-svc-channel-request.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-channel-request.lo `test -f '_gen/tp-svc-channel-request.c' || echo '$(srcdir)/'`_gen/tp-svc-channel-request.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-channel-request.lo `test -f '_gen/tp-svc-channel-request.c' || echo '$(srcdir)/'`_gen/tp-svc-channel-request.c tp-svc-client.lo: _gen/tp-svc-client.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-client.lo -MD -MP -MF $(DEPDIR)/tp-svc-client.Tpo -c -o tp-svc-client.lo `test -f '_gen/tp-svc-client.c' || echo '$(srcdir)/'`_gen/tp-svc-client.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-client.Tpo $(DEPDIR)/tp-svc-client.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-client.c' object='tp-svc-client.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-client.c' object='tp-svc-client.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-client.lo `test -f '_gen/tp-svc-client.c' || echo '$(srcdir)/'`_gen/tp-svc-client.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-client.lo `test -f '_gen/tp-svc-client.c' || echo '$(srcdir)/'`_gen/tp-svc-client.c tp-svc-connection.lo: _gen/tp-svc-connection.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-connection.lo -MD -MP -MF $(DEPDIR)/tp-svc-connection.Tpo -c -o tp-svc-connection.lo `test -f '_gen/tp-svc-connection.c' || echo '$(srcdir)/'`_gen/tp-svc-connection.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-connection.Tpo $(DEPDIR)/tp-svc-connection.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-connection.c' object='tp-svc-connection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-connection.c' object='tp-svc-connection.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-connection.lo `test -f '_gen/tp-svc-connection.c' || echo '$(srcdir)/'`_gen/tp-svc-connection.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-connection.lo `test -f '_gen/tp-svc-connection.c' || echo '$(srcdir)/'`_gen/tp-svc-connection.c tp-svc-connection-manager.lo: _gen/tp-svc-connection-manager.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-connection-manager.lo -MD -MP -MF $(DEPDIR)/tp-svc-connection-manager.Tpo -c -o tp-svc-connection-manager.lo `test -f '_gen/tp-svc-connection-manager.c' || echo '$(srcdir)/'`_gen/tp-svc-connection-manager.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-connection-manager.Tpo $(DEPDIR)/tp-svc-connection-manager.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-connection-manager.c' object='tp-svc-connection-manager.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-connection-manager.c' object='tp-svc-connection-manager.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-connection-manager.lo `test -f '_gen/tp-svc-connection-manager.c' || echo '$(srcdir)/'`_gen/tp-svc-connection-manager.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-connection-manager.lo `test -f '_gen/tp-svc-connection-manager.c' || echo '$(srcdir)/'`_gen/tp-svc-connection-manager.c tp-svc-debug.lo: _gen/tp-svc-debug.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-debug.lo -MD -MP -MF $(DEPDIR)/tp-svc-debug.Tpo -c -o tp-svc-debug.lo `test -f '_gen/tp-svc-debug.c' || echo '$(srcdir)/'`_gen/tp-svc-debug.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-debug.Tpo $(DEPDIR)/tp-svc-debug.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-debug.c' object='tp-svc-debug.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-debug.c' object='tp-svc-debug.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-debug.lo `test -f '_gen/tp-svc-debug.c' || echo '$(srcdir)/'`_gen/tp-svc-debug.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-debug.lo `test -f '_gen/tp-svc-debug.c' || echo '$(srcdir)/'`_gen/tp-svc-debug.c tp-svc-generic.lo: _gen/tp-svc-generic.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-generic.lo -MD -MP -MF $(DEPDIR)/tp-svc-generic.Tpo -c -o tp-svc-generic.lo `test -f '_gen/tp-svc-generic.c' || echo '$(srcdir)/'`_gen/tp-svc-generic.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-generic.Tpo $(DEPDIR)/tp-svc-generic.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-generic.c' object='tp-svc-generic.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-generic.c' object='tp-svc-generic.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-generic.lo `test -f '_gen/tp-svc-generic.c' || echo '$(srcdir)/'`_gen/tp-svc-generic.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-generic.lo `test -f '_gen/tp-svc-generic.c' || echo '$(srcdir)/'`_gen/tp-svc-generic.c tp-svc-media-session-handler.lo: _gen/tp-svc-media-session-handler.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-media-session-handler.lo -MD -MP -MF $(DEPDIR)/tp-svc-media-session-handler.Tpo -c -o tp-svc-media-session-handler.lo `test -f '_gen/tp-svc-media-session-handler.c' || echo '$(srcdir)/'`_gen/tp-svc-media-session-handler.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-media-session-handler.Tpo $(DEPDIR)/tp-svc-media-session-handler.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-media-session-handler.c' object='tp-svc-media-session-handler.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-media-session-handler.c' object='tp-svc-media-session-handler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-media-session-handler.lo `test -f '_gen/tp-svc-media-session-handler.c' || echo '$(srcdir)/'`_gen/tp-svc-media-session-handler.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-media-session-handler.lo `test -f '_gen/tp-svc-media-session-handler.c' || echo '$(srcdir)/'`_gen/tp-svc-media-session-handler.c tp-svc-media-stream-handler.lo: _gen/tp-svc-media-stream-handler.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-media-stream-handler.lo -MD -MP -MF $(DEPDIR)/tp-svc-media-stream-handler.Tpo -c -o tp-svc-media-stream-handler.lo `test -f '_gen/tp-svc-media-stream-handler.c' || echo '$(srcdir)/'`_gen/tp-svc-media-stream-handler.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-media-stream-handler.Tpo $(DEPDIR)/tp-svc-media-stream-handler.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-media-stream-handler.c' object='tp-svc-media-stream-handler.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-media-stream-handler.c' object='tp-svc-media-stream-handler.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-media-stream-handler.lo `test -f '_gen/tp-svc-media-stream-handler.c' || echo '$(srcdir)/'`_gen/tp-svc-media-stream-handler.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-media-stream-handler.lo `test -f '_gen/tp-svc-media-stream-handler.c' || echo '$(srcdir)/'`_gen/tp-svc-media-stream-handler.c tp-svc-protocol.lo: _gen/tp-svc-protocol.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-protocol.lo -MD -MP -MF $(DEPDIR)/tp-svc-protocol.Tpo -c -o tp-svc-protocol.lo `test -f '_gen/tp-svc-protocol.c' || echo '$(srcdir)/'`_gen/tp-svc-protocol.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-protocol.Tpo $(DEPDIR)/tp-svc-protocol.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-protocol.c' object='tp-svc-protocol.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-protocol.c' object='tp-svc-protocol.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-protocol.lo `test -f '_gen/tp-svc-protocol.c' || echo '$(srcdir)/'`_gen/tp-svc-protocol.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-protocol.lo `test -f '_gen/tp-svc-protocol.c' || echo '$(srcdir)/'`_gen/tp-svc-protocol.c tp-svc-tls-cert.lo: _gen/tp-svc-tls-cert.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) $(AM_CFLAGS) $(CFLAGS) -MT tp-svc-tls-cert.lo -MD -MP -MF $(DEPDIR)/tp-svc-tls-cert.Tpo -c -o tp-svc-tls-cert.lo `test -f '_gen/tp-svc-tls-cert.c' || echo '$(srcdir)/'`_gen/tp-svc-tls-cert.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/tp-svc-tls-cert.Tpo $(DEPDIR)/tp-svc-tls-cert.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/tp-svc-tls-cert.c' object='tp-svc-tls-cert.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/tp-svc-tls-cert.c' object='tp-svc-tls-cert.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-tls-cert.lo `test -f '_gen/tp-svc-tls-cert.c' || echo '$(srcdir)/'`_gen/tp-svc-tls-cert.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tp-svc-tls-cert.lo `test -f '_gen/tp-svc-tls-cert.c' || echo '$(srcdir)/'`_gen/tp-svc-tls-cert.c mostlyclean-libtool: -rm -f *.lo @@ -1316,9 +1404,7 @@ @$(NORMAL_UNINSTALL) @list='$(dist_gir_DATA)'; test -n "$(girdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(girdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(girdir)" && rm -f $$files + dir='$(DESTDIR)$(girdir)'; $(am__uninstall_files_from_dir) install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" @@ -1336,9 +1422,7 @@ @$(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-typelibsDATA: $(typelibs_DATA) @$(NORMAL_INSTALL) test -z "$(typelibsdir)" || $(MKDIR_P) "$(DESTDIR)$(typelibsdir)" @@ -1356,9 +1440,7 @@ @$(NORMAL_UNINSTALL) @list='$(typelibs_DATA)'; test -n "$(typelibsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(typelibsdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(typelibsdir)" && rm -f $$files + dir='$(DESTDIR)$(typelibsdir)'; $(am__uninstall_files_from_dir) install-nodist_genincludeHEADERS: $(nodist_geninclude_HEADERS) @$(NORMAL_INSTALL) test -z "$(genincludedir)" || $(MKDIR_P) "$(DESTDIR)$(genincludedir)" @@ -1376,9 +1458,7 @@ @$(NORMAL_UNINSTALL) @list='$(nodist_geninclude_HEADERS)'; test -n "$(genincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(genincludedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(genincludedir)" && rm -f $$files + dir='$(DESTDIR)$(genincludedir)'; $(am__uninstall_files_from_dir) install-tpgincludeHEADERS: $(tpginclude_HEADERS) @$(NORMAL_INSTALL) test -z "$(tpgincludedir)" || $(MKDIR_P) "$(DESTDIR)$(tpgincludedir)" @@ -1396,9 +1476,7 @@ @$(NORMAL_UNINSTALL) @list='$(tpginclude_HEADERS)'; test -n "$(tpgincludedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(tpgincludedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(tpgincludedir)" && rm -f $$files + dir='$(DESTDIR)$(tpgincludedir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -1502,10 +1580,15 @@ 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: @@ -1775,6 +1858,14 @@ subclass=--subclass=TpAccount; \ subclass_assert=--subclass-assert=TP_IS_ACCOUNT; \ ;; \ + call-content) \ + subclass=--subclass=TpCallContent; \ + subclass_assert=--subclass-assert=TP_IS_CALL_CONTENT; \ + ;; \ + call-stream) \ + subclass=--subclass=TpCallStream; \ + subclass_assert=--subclass-assert=TP_IS_CALL_STREAM; \ + ;; \ channel) \ subclass=--subclass=TpChannel; \ subclass_assert=--subclass-assert=TP_IS_CHANNEL; \ diff -Nru telepathy-glib-0.17.4/telepathy-glib/media-interfaces.c telepathy-glib-0.17.5/telepathy-glib/media-interfaces.c --- telepathy-glib-0.17.4/telepathy-glib/media-interfaces.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/media-interfaces.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/media-interfaces.h" #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/message.c telepathy-glib-0.17.5/telepathy-glib/message.c --- telepathy-glib-0.17.4/telepathy-glib/message.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/message.c 2012-02-20 16:55:59.000000000 +0000 @@ -30,6 +30,8 @@ * Since: 0.7.21 */ +#include "config.h" + #include "message.h" #include "message-internal.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/message-mixin.c telepathy-glib-0.17.5/telepathy-glib/message-mixin.c --- telepathy-glib-0.17.4/telepathy-glib/message-mixin.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/message-mixin.c 2012-02-20 16:55:59.000000000 +0000 @@ -52,6 +52,8 @@ * Since: 0.7.21 */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/observe-channels-context.c telepathy-glib-0.17.5/telepathy-glib/observe-channels-context.c --- telepathy-glib-0.17.4/telepathy-glib/observe-channels-context.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/observe-channels-context.c 2012-02-20 16:55:59.000000000 +0000 @@ -44,6 +44,8 @@ * Since: 0.11.5 */ +#include "config.h" + #include "telepathy-glib/observe-channels-context-internal.h" #include "telepathy-glib/observe-channels-context.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/presence-mixin.c telepathy-glib-0.17.5/telepathy-glib/presence-mixin.c --- telepathy-glib-0.17.4/telepathy-glib/presence-mixin.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/presence-mixin.c 2012-02-20 16:55:59.000000000 +0000 @@ -280,6 +280,8 @@ * There are no public fields. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/properties-mixin.c telepathy-glib-0.17.5/telepathy-glib/properties-mixin.c --- telepathy-glib-0.17.4/telepathy-glib/properties-mixin.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/properties-mixin.c 2012-02-20 16:55:59.000000000 +0000 @@ -44,6 +44,8 @@ * G_DEFINE_TYPE_WITH_CODE. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/protocol.c telepathy-glib-0.17.5/telepathy-glib/protocol.c --- telepathy-glib-0.17.4/telepathy-glib/protocol.c 2011-10-11 15:02:48.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/protocol.c 2012-02-20 16:57:08.000000000 +0000 @@ -1,6 +1,6 @@ /* TpProtocol * - * Copyright © 2010 Collabora Ltd. + * Copyright © 2010-2012 Collabora Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -32,6 +32,8 @@ * Since: 0.11.11 */ +#include "config.h" + #include #include @@ -1080,6 +1082,10 @@ g_value_init (value, G_TYPE_STRV); return TRUE; + case 'o': + g_value_init (value, TP_ARRAY_TYPE_OBJECT_PATH_LIST); + return TRUE; + case 'y': g_value_init (value, DBUS_TYPE_G_UCHAR_ARRAY); return TRUE; @@ -1259,6 +1265,43 @@ return TRUE; } + + case 'o': + { + gsize len = 0; + GStrv strv = g_key_file_get_string_list (file, group, key, &len, + &error); + gchar **iter; + GPtrArray *arr; + + if (error != NULL) + { + g_error_free (error); + return FALSE; + } + + for (iter = strv; iter != NULL && *iter != NULL; iter++) + { + if (!g_variant_is_object_path (*iter)) + { + g_strfreev (strv); + return FALSE; + } + } + + arr = g_ptr_array_sized_new (len); + + for (iter = strv; iter != NULL && *iter != NULL; iter++) + { + /* transfer ownership */ + g_ptr_array_add (arr, *iter); + } + + g_free (strv); + g_value_take_boxed (value, arr); + + return TRUE; + } } } diff -Nru telepathy-glib-0.17.4/telepathy-glib/proxy.c telepathy-glib-0.17.5/telepathy-glib/proxy.c --- telepathy-glib-0.17.4/telepathy-glib/proxy.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/proxy.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/proxy-subclass.h" #include "telepathy-glib/proxy-internal.h" @@ -1282,8 +1284,7 @@ param_spec = g_param_spec_object ("dbus-daemon", "D-Bus daemon", "The D-Bus daemon used by this object, or this object itself if it's " "a TpDBusDaemon", TP_TYPE_DBUS_DAEMON, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_DBUS_DAEMON, param_spec); @@ -1295,8 +1296,7 @@ */ param_spec = g_param_spec_boxed ("dbus-connection", "D-Bus connection", "The D-Bus connection used by this object", DBUS_TYPE_G_CONNECTION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_DBUS_CONNECTION, param_spec); @@ -1307,8 +1307,7 @@ */ param_spec = g_param_spec_string ("bus-name", "D-Bus bus name", "The D-Bus bus name for this object", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_BUS_NAME, param_spec); @@ -1320,8 +1319,7 @@ */ param_spec = g_param_spec_string ("object-path", "D-Bus object path", "The D-Bus object path for this object", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_OBJECT_PATH, param_spec); @@ -1332,8 +1330,7 @@ */ param_spec = g_param_spec_boxed ("interfaces", "D-Bus interfaces", "Known D-Bus interface names for this object", G_TYPE_STRV, - G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK - | G_PARAM_STATIC_BLURB); + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_INTERFACES, param_spec); @@ -1346,8 +1343,7 @@ param_spec = g_param_spec_object ("factory", "Simple Client Factory", "The TpSimpleClientFactory used to create this proxy", TP_TYPE_SIMPLE_CLIENT_FACTORY, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | - G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_FACTORY, param_spec); diff -Nru telepathy-glib-0.17.4/telepathy-glib/proxy-methods.c telepathy-glib-0.17.5/telepathy-glib/proxy-methods.c --- telepathy-glib-0.17.4/telepathy-glib/proxy-methods.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/proxy-methods.c 2012-02-20 16:55:59.000000000 +0000 @@ -17,6 +17,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/proxy-subclass.h" #include "telepathy-glib/proxy-internal.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/proxy-signals.c telepathy-glib-0.17.5/telepathy-glib/proxy-signals.c --- telepathy-glib-0.17.4/telepathy-glib/proxy-signals.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/proxy-signals.c 2012-02-20 16:55:59.000000000 +0000 @@ -17,6 +17,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "telepathy-glib/proxy-subclass.h" #define DEBUG_FLAG TP_DEBUG_PROXY diff -Nru telepathy-glib-0.17.4/telepathy-glib/signalled-message.c telepathy-glib-0.17.5/telepathy-glib/signalled-message.c --- telepathy-glib-0.17.4/telepathy-glib/signalled-message.c 2011-03-03 12:54:10.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/signalled-message.c 2012-02-20 16:55:59.000000000 +0000 @@ -32,6 +32,8 @@ * Since: 0.13.9 */ +#include "config.h" + #include "signalled-message.h" #include "signalled-message-internal.h" #include "message-internal.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/signals-marshal.list telepathy-glib-0.17.5/telepathy-glib/signals-marshal.list --- telepathy-glib-0.17.4/telepathy-glib/signals-marshal.list 2011-10-11 15:02:48.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/signals-marshal.list 2012-02-20 16:56:41.000000000 +0000 @@ -4,6 +4,7 @@ VOID:BOXED,UINT,INT,STRING VOID:INT,UINT,STRING VOID:OBJECT,BOOLEAN +VOID:OBJECT,BOXED VOID:OBJECT,INT,UINT,UINT VOID:OBJECT,INT64,OBJECT VOID:OBJECT,OBJECT @@ -15,8 +16,10 @@ VOID:POINTER,OBJECT VOID:POINTER,UINT,INT,STRING VOID:STRING,UINT,UINT,BOXED +VOID:UINT,BOXED VOID:UINT,INT,STRING VOID:UINT,OBJECT VOID:UINT,STRING,STRING +VOID:UINT,UINT,BOXED,BOXED VOID:UINT,UINT,UINT,STRING,BOXED VOID:VOID diff -Nru telepathy-glib-0.17.4/telepathy-glib/simple-approver.c telepathy-glib-0.17.5/telepathy-glib/simple-approver.c --- telepathy-glib-0.17.4/telepathy-glib/simple-approver.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/simple-approver.c 2012-02-20 16:55:59.000000000 +0000 @@ -99,6 +99,8 @@ * Since: 0.11.5 */ +#include "config.h" + #include "telepathy-glib/simple-approver.h" #define DEBUG_FLAG TP_DEBUG_CLIENT diff -Nru telepathy-glib-0.17.4/telepathy-glib/simple-client-factory.c telepathy-glib-0.17.5/telepathy-glib/simple-client-factory.c --- telepathy-glib-0.17.4/telepathy-glib/simple-client-factory.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/simple-client-factory.c 2012-02-20 16:55:59.000000000 +0000 @@ -123,6 +123,8 @@ * Since: 0.15.5 */ +#include "config.h" + #include "telepathy-glib/simple-client-factory.h" #include @@ -398,8 +400,7 @@ param_spec = g_param_spec_object ("dbus-daemon", "D-Bus daemon", "The D-Bus daemon used by this object", TP_TYPE_DBUS_DAEMON, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_NAME | - G_PARAM_STATIC_BLURB | G_PARAM_STATIC_NICK); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_DBUS_DAEMON, param_spec); } diff -Nru telepathy-glib-0.17.4/telepathy-glib/simple-handler.c telepathy-glib-0.17.5/telepathy-glib/simple-handler.c --- telepathy-glib-0.17.4/telepathy-glib/simple-handler.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/simple-handler.c 2012-02-20 16:55:59.000000000 +0000 @@ -107,6 +107,8 @@ * Since: 0.11.6 */ +#include "config.h" + #include "telepathy-glib/simple-handler.h" #define DEBUG_FLAG TP_DEBUG_CLIENT diff -Nru telepathy-glib-0.17.4/telepathy-glib/simple-observer.c telepathy-glib-0.17.5/telepathy-glib/simple-observer.c --- telepathy-glib-0.17.4/telepathy-glib/simple-observer.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/simple-observer.c 2012-02-20 16:55:59.000000000 +0000 @@ -102,6 +102,8 @@ * Since: 0.11.5 */ +#include "config.h" + #include "telepathy-glib/simple-observer.h" #define DEBUG_FLAG TP_DEBUG_CLIENT diff -Nru telepathy-glib-0.17.4/telepathy-glib/simple-password-manager.c telepathy-glib-0.17.5/telepathy-glib/simple-password-manager.c --- telepathy-glib-0.17.4/telepathy-glib/simple-password-manager.c 2011-12-19 15:11:23.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/simple-password-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -66,6 +66,8 @@ * Since: 0.13.8 */ +#include "config.h" + #include "telepathy-glib/simple-password-manager.h" #include @@ -306,6 +308,12 @@ } static void +free_gstring (gpointer p) +{ + g_string_free (p, TRUE); +} + +static void tp_simple_password_manager_channel_finished_cb ( TpBasePasswordChannel *channel, const GString *str, @@ -326,7 +334,7 @@ else { g_simple_async_result_set_op_res_gpointer ( - result, (gpointer) str, NULL); + result, g_boxed_copy (G_TYPE_GSTRING, str), free_gstring); } g_simple_async_result_complete (result); diff -Nru telepathy-glib-0.17.4/telepathy-glib/stable-interfaces.xml telepathy-glib-0.17.5/telepathy-glib/stable-interfaces.xml --- telepathy-glib-0.17.4/telepathy-glib/stable-interfaces.xml 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/stable-interfaces.xml 2012-02-20 16:56:41.000000000 +0000 @@ -26,6 +26,11 @@ + + + + + diff -Nru telepathy-glib-0.17.4/telepathy-glib/stream-tube-channel.c telepathy-glib-0.17.5/telepathy-glib/stream-tube-channel.c --- telepathy-glib-0.17.4/telepathy-glib/stream-tube-channel.c 2011-10-11 15:02:48.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/stream-tube-channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -45,7 +45,7 @@ * Since: 0.13.2 */ -#include +#include "config.h" #include "telepathy-glib/stream-tube-channel.h" @@ -616,6 +616,26 @@ g_array_unref (features); } +#ifdef HAVE_GIO_UNIX +static void +send_credentials_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + TpStreamTubeChannel *self = user_data; + GError *error = NULL; + + if (!tp_unix_connection_send_credentials_with_byte_finish ( + (GSocketConnection *) source, result, &error)) + { + DEBUG ("Failed to send credentials: %s", error->message); + + operation_failed (self, error); + g_clear_error (&error); + } +} +#endif + static void client_socket_connected (TpStreamTubeChannel *self) { @@ -631,20 +651,10 @@ if (self->priv->access_control == TP_SOCKET_ACCESS_CONTROL_CREDENTIALS) { guchar byte; - GError *error = NULL; byte = g_value_get_uchar (self->priv->access_control_param); - - /* FIXME: we should an async version of this API (bgo #629503) */ - if (!tp_unix_connection_send_credentials_with_byte ( - conn, byte, NULL, &error)) - { - DEBUG ("Failed to send credentials: %s", error->message); - - operation_failed (self, error); - g_clear_error (&error); - return; - } + tp_unix_connection_send_credentials_with_byte_async (conn, byte, NULL, + send_credentials_cb, self); } #endif @@ -1263,47 +1273,12 @@ } static void -service_incoming_cb (GSocketService *service, +credentials_received (TpStreamTubeChannel *self, GSocketConnection *conn, - GObject *source_object, - gpointer user_data) + guchar byte) { - TpStreamTubeChannel *self = user_data; SigWaitingConn *sig; ConnWaitingSig *c; - guchar byte = 0; - - DEBUG ("New incoming connection"); - -#ifdef HAVE_GIO_UNIX - /* Check the credentials if needed */ - if (self->priv->access_control == TP_SOCKET_ACCESS_CONTROL_CREDENTIALS) - { - GCredentials *creds; - uid_t uid; - GError *error = NULL; - - /* FIXME: we should an async version of this API (bgo #629503) */ - creds = tp_unix_connection_receive_credentials_with_byte ( - conn, &byte, NULL, &error); - if (creds == NULL) - { - DEBUG ("Failed to receive credentials: %s", error->message); - - g_error_free (error); - return; - } - - uid = g_credentials_get_unix_user (creds, &error); - g_object_unref (creds); - - if (uid != geteuid ()) - { - DEBUG ("Wrong credentials received (user: %u)", uid); - return; - } - } -#endif c = conn_waiting_sig_new (conn, byte); @@ -1332,6 +1307,65 @@ conn_waiting_sig_free (c); } +#ifdef HAVE_GIO_UNIX +static void +receive_credentials_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + TpStreamTubeChannel *self = user_data; + GSocketConnection *conn = (GSocketConnection *) source; + GCredentials *creds; + guchar byte; + uid_t uid; + GError *error = NULL; + + creds = tp_unix_connection_receive_credentials_with_byte_finish (conn, result, + &byte, &error); + + if (creds == NULL) + { + DEBUG ("Failed to receive credentials: %s", error->message); + g_error_free (error); + return; + } + + uid = g_credentials_get_unix_user (creds, &error); + if (uid != geteuid ()) + { + DEBUG ("Wrong credentials received (user: %u)", uid); + return; + } + + credentials_received (self, conn, byte); + + g_object_unref (creds); +} +#endif + +static void +service_incoming_cb (GSocketService *service, + GSocketConnection *conn, + GObject *source_object, + gpointer user_data) +{ + TpStreamTubeChannel *self = user_data; + + DEBUG ("New incoming connection"); + +#ifdef HAVE_GIO_UNIX + /* Check the credentials if needed */ + if (self->priv->access_control == TP_SOCKET_ACCESS_CONTROL_CREDENTIALS) + { + tp_unix_connection_receive_credentials_with_byte_async (conn, NULL, + receive_credentials_cb, self); + return; + } +#endif + + credentials_received (self, conn, 0); +} + /** * tp_stream_tube_channel_offer_async: * @self: an outgoing #TpStreamTubeChannel diff -Nru telepathy-glib-0.17.4/telepathy-glib/stream-tube-connection.c telepathy-glib-0.17.5/telepathy-glib/stream-tube-connection.c --- telepathy-glib-0.17.4/telepathy-glib/stream-tube-connection.c 2011-10-11 15:02:48.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/stream-tube-connection.c 2012-02-20 16:55:59.000000000 +0000 @@ -44,6 +44,8 @@ * Since: 0.13.2 */ +#include "config.h" + #include "telepathy-glib/stream-tube-connection-internal.h" #include "telepathy-glib/stream-tube-connection.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/svc-call.h telepathy-glib-0.17.5/telepathy-glib/svc-call.h --- telepathy-glib-0.17.4/telepathy-glib/svc-call.h 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/svc-call.h 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,9 @@ +#ifndef __TP_META_SVC_ACCOUNT_H__ +#define __TP_META_SVC_ACCOUNT_H__ + +#include +#include +#include +#include + +#endif diff -Nru telepathy-glib-0.17.4/telepathy-glib/TelepathyGLib-0.12.gir telepathy-glib-0.17.5/telepathy-glib/TelepathyGLib-0.12.gir --- telepathy-glib-0.17.4/telepathy-glib/TelepathyGLib-0.12.gir 2011-12-19 15:14:35.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/TelepathyGLib-0.12.gir 2012-02-20 17:31:23.000000000 +0000 @@ -350,6 +350,9 @@ throws="1"> Finishes an async get operation of @account's avatar. +Beware that the returned value is only valid until @result is freed. +Copy it with g_array_ref() if you need to keep it for longer. + containing the bytes of the account's avatar, or %NULL on failure a #GArray of #guchar @@ -682,6 +685,9 @@ Retrieve the value of the request begun with tp_account_get_storage_specific_information_async(). +Beware that the returned value is only valid until @result is freed. +Copy it with g_hash_table_ref() if you need to keep it for longer. + of strings to GValues representing the D-Bus type a{sv}. a #GHashTable @@ -697,6 +703,21 @@ + + Return the same thing as the #TpAccount:supersedes property, in a way +that may be more convenient for C code. + +The returned pointers are not guaranteed to remain valid after the +main loop has been re-entered. + + the same as the #TpAccount:supersedes property + + + + + @@ -1867,6 +1888,18 @@ the value is 0. + + The object paths of previously-active accounts superseded by this one. +For instance, this can be used in a logger to read old logs for an +account that has been migrated from one connection manager to another. + +This is not guaranteed to have been retrieved until the +%TP_ACCOUNT_FEATURE_CORE feature has been prepared; until then, +the value is NULL. + + + + Whether this account is valid. @@ -2862,7 +2895,7 @@ object, with the %TP_ACCOUNT_FEATURE_CORE feature ready on it. The caller must keep a ref to the returned object using g_object_ref() if -it is to be kept. +it is to be kept beyond the lifetime of @result. success, otherwise %NULL @@ -2925,6 +2958,10 @@ If no accounts are enabled or valid the output will be (%TP_CONNECTION_PRESENCE_TYPE_OFFLINE, "offline", ""). +Since 0.17.5, if the only connected accounts does not implement +%TP_IFACE_CONNECTION_INTERFACE_SIMPLE_PRESENCE, the output will be +(%TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, "available", ""). + The return value of this function is not guaranteed to have been retrieved until tp_proxy_prepare_async() has finished; until then, the value will be the same as if no accounts are enabled or valid. @@ -5582,166 +5619,1442 @@ c:type="TP_CONN_OBJECT_PATH_BASE"> - - An object representing capabilities a #TpConnection or #TpContact supports. - + + Data structure representing a #TpCallChannel. + + + + + + + For incoming calls with #TpCallChannel:state set to +%TP_CALL_STATE_INITIALISED, accept the incoming call. This changes +#TpCallChannel:state to %TP_CALL_STATE_ACCEPTED. + +For outgoing calls with #TpCallChannel:state set to +%TP_CALL_STATE_PENDING_INITIATOR, actually call the remote contact; this +changes #TpCallChannel:state to +%TP_CALL_STATE_INITIALISING. + + + + + + a callback to call when the operation finishes + + + + data to pass to @callback + + + + + + Finishes tp_call_channel_accept_async(). + + + + + + a #GAsyncResult + + + + + + Request that a new Content of type @type is added to @self. Callers should +check the value of the #TpCallChannel:mutable-contents property before trying +to add another content as it might not be allowed. + + + + + + the suggested name of the content to add + + + + the media stream type of the content to be added to the call, from #TpMediaStreamType + + + + The initial direction of the content + + + + a callback to call when the operation finishes + + + + data to pass to @callback + + + + + + Finishes tp_call_channel_add_content_async(). + +The returned #TpCallContent is NOT guaranteed to have +%TP_CALL_CONTENT_FEATURE_CORE prepared. + + reference to the new #TpCallContent. + + + + + a #GAsyncResult + + + + + <!-- --> -#TpCapabilities:channel-classes property +the value of #TpCallChannel:contents - the same #GPtrArray as the - + - - <!-- --> + + Get the members of this call. + +The #TpContact objects are guaranteed to have all of the features +previously passed to tp_simple_client_factory_add_contact_features() +prepared. + +#GHashTable mapping #TpContact to its new #TpCallMemberFlags - the same #gboolean as the #TpCapabilities:contact-specific property - + + + + - - Return whether this protocol or connection can perform contact -searches. Optionally, also return whether a limited number of -results can be specified, and whether alternative servers can be -searched. + + <!-- --> - %TRUE if #TpContactSearch can be used. - + the value of #TpCallChannel:state + - - if not %NULL, used to return %TRUE if the limit parameter to tp_contact_search_new_async() and tp_contact_search_reset_async() can be nonzero - + transfer-ownership="none" + allow-none="1"> + a place to set the value of #TpCallChannel:flags + - - if not %NULL, used to return %TRUE if the server parameter to tp_contact_search_new_async() and tp_contact_search_reset_async() can be non-%NULL - + transfer-ownership="none" + allow-none="1"> + a place to set the value of #TpCallChannel:state-details + + + + + + + a place to set the value of #TpCallChannel:state-reason + - - If the #TpCapabilities:contact-specific property is %TRUE, this function -checks if the contact associated with this #TpCapabilities supports -D-Bus tubes with @handle_type as TargetHandleType. -If @service_name is not %NULL, it also checks if it supports stream tubes -with @service as #TP_PROP_CHANNEL_TYPE_DBUS_TUBE_SERVICE_NAME. - -If the #TpCapabilities:contact-specific property is %FALSE, this function -checks if the connection supports requesting D-Bus tube channels with -@handle_type as ChannelType. The @service_name argument is unused in -this case. - -tubes. + + Request that the call is ended. All contents will be removed from @self so +that the #TpCallChannel:contents property will be the empty list. - %TRUE if the contact or connection supports this type of D-Bus - + - - the handle type of the tube (either #TP_HANDLE_TYPE_CONTACT or #TP_HANDLE_TYPE_ROOM) - + + a TpCallStateChangeReason + - - the service name of the tube, or %NULL + + a more specific reason for the call hangup, if one is available, or an empty or %NULL string otherwise + + + + a human-readable message to be sent to the remote contact(s) + + a callback to call when the operation finishes + + + + data to pass to @callback + + - - Discovers whether this protocol or connection supports listing rooms. -Specifically, if this function returns %TRUE, a room list channel can be -requested as follows: -|[ -GHashTable *request; -TpAccountChannelRequest *req; - -request = tp_asv_new ( -TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, -TP_IFACE_CHANNEL_TYPE_ROOM_LIST, -TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_NONE, -NULL); - -req = tp_account_channel_request_new (account, request, -TP_USER_ACTION_TIME_CURRENT_TIME); - -tp_account_channel_request_create_and_handle_channel_async (req, NULL, -create_channel_cb, NULL); - -g_object_unref (req); -g_hash_table_unref (request); -]| - -If @with_server is set to %TRUE, a list of rooms on a particular server can -be requested as follows: -|[ -/\* Same code as above but with request defined using: *\/ -request = tp_asv_new ( -TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, -TP_IFACE_CHANNEL_TYPE_ROOM_LIST, -TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_NONE, -TP_PROP_CHANNEL_TYPE_ROOM_LIST_SERVER, G_TYPE_STRING, -"characters.shakespeare.lit", -NULL); -]| - -HandleTypeNone as TargetHandleType can be expected to work, -%FALSE otherwise. + + Finishes tp_call_channel_hangup_async(). - %TRUE if a channel request containing RoomList as ChannelType, - - if not %NULL, used to return %TRUE if the #TP_PROP_CHANNEL_TYPE_ROOM_LIST_SERVER property can be defined when requesting a RoomList channel. - + + a #GAsyncResult + - - If the #TpCapabilities:contact-specific property is %TRUE, this function -checks if the contact associated with this #TpCapabilities supports -stream tubes with @handle_type as TargetHandleType. -If @service is not %NULL, it also checks if it supports stream tubes -with @service as #TP_PROP_CHANNEL_TYPE_STREAM_TUBE_SERVICE. - -If the #TpCapabilities:contact-specific property is %FALSE, this function -checks if the connection supports requesting stream tube channels with -@handle_type as ChannelType. The @service argument is unused in this case. - -tubes. + + Whether or not %self has the %TP_IFACE_CHANNEL_INTERFACE_DTMF +interfaces - %TRUE if the contact or connection supports this type of stream + whether or not @self supports DTMF + + + + + <!-- --> + + the value of #TpCallChannel:hardware-streaming + + + + + <!-- --> + + the value of #TpCallChannel:initial-audio + + + + + a place to set the value of #TpCallChannel:initial-audio-name + + + + + + <!-- --> + + the value of #TpCallChannel:initial-video + + + + + a place to set the value of #TpCallChannel:initial-video-name + + + + + + <!-- --> + + the value of #TpCallChannel:mutable-contents + + + + + Send @tones on every of @self's contents which have the +%TP_IFACE_CALL_CONTENT_INTERFACE_DTMF interface. + +For more details, see tp_call_content_send_tones_async(). + + + + + + a string representation of one or more DTMF events. + + + + optional #GCancellable object, %NULL to ignore + + + + a callback to call when the operation finishes + + + + data to pass to @callback + + + + + + Finishes tp_call_channel_send_tones_async(). + + %TRUE on success, %FALSE otherwise. + + + + + a #GAsyncResult + + + + + + Notifies the CM that the local user is already in a call, so this call has +been put in a call-waiting style queue. + + + + + + a callback to call when the operation finishes + + + + data to pass to @callback + + + + + + Finishes tp_call_channel_set_queued_async(). + + + + + + a #GAsyncResult + + + + + + Indicate that the local user has been alerted about the incoming call. + + + + + + a callback to call when the operation finishes + + + + data to pass to @callback + + + + + + Finishes tp_call_channel_set_ringing_async(). + + + + + + a #GAsyncResult + + + + + + #GPtrArray of #TpCallContent objects. The list of content objects that are +part of this call. + +It is NOT guaranteed that %TP_CALL_CONTENT_FEATURE_CORE is prepared on +those objects. + + + + + + A #TpCallFlags specifying the flags of the call state. + + + + Whether or not the streaming is done by dedicated hardware. + + + + Whether or not the Call was started with audio. + + + + If #TpCallChannel:initial-audio is set to %TRUE, then this property will +is the name of the intial audio content, %NULL otherwise. + + + + Whether or not the Call was started with video. + + + + If #TpCallChannel:initial-video is set to %TRUE, then this property will +is the name of the intial video content, %NULL otherwise. + + + + Whether or not call contents can be added or removed. + + + + A #TpChannelCallState specifying the state of the call. + + + + Detailed information about #TpCallChannel:state. + + + + + + + Reason why #TpCallChannel:state last changed. + + + + + + + + + + The ::content-added signal is emitted whenever a +#TpCallContent is added to @self. + +It is NOT guaranteed that %TP_CALL_CONTENT_FEATURE_CORE is prepared on +@content. + + + + + + the newly added #TpCallContent + + + + + + The ::content-removed signal is emitted whenever a +#TpCallContent is removed from @self. + +It is NOT guaranteed that %TP_CALL_CONTENT_FEATURE_CORE is prepared on +@content. + + + + + + the newly removed #TpCallContent + + + + a #TpCallStateReason + + + + + + The ::members-changed signal is emitted whenever the call's members +changes. + +The #TpContact objects are guaranteed to have all of the features +previously passed to tp_simple_client_factory_add_contact_features() +prepared. + + + + + + #GHashTable mapping #TpContact to its new #TpCallMemberFlags + + + + + + + #GPtrArray of #TpContact removed from the call members + + + + + + the #TpCallStateReason for the change + + + + + + The ::state-changed signal is emitted whenever the +call state changes. + + + + + + the new #TpCallState + + + + the new #TpCallFlags + + + + the #TpCallStateReason for the change + + + + additional details + + + + + + + + + + The class of a #TpCallChannel. + + + + + + + + + + + + + Data structure representing a #TpCallContent. + + + + + + + Ensure that the known interfaces for #TpCallContent have been set up. +This is done automatically when necessary, but for correct +overriding of library interfaces by local extensions, you should +call this function before calling +tp_proxy_or_subclass_hook_on_interface_add() with first argument +%TP_TYPE_CALL_CONTENT. + + + + + + <!-- --> + + the value of #TpCallContent:disposition + + + + + <!-- --> + + the value of #TpCallContent:name + + + + + <!-- --> + + the value of #TpCallContent:name + + + + + <!-- --> + +the value of #TpCallContent:streams + + + + + + + + Remove the content from the call. This will cause #TpCallContent::removed +to be emitted. + + + + + + a callback to call when the operation finishes + + + + data to pass to @callback + + + + + + Finishes tp_call_content_remove_async(). + + + + + + a #GAsyncResult + + + + + + Send @tones DTMF code on @self content. @self must have the +%TP_IFACE_CALL_CONTENT_INTERFACE_DTMF interface. + +If DTMF tones are already being played, this request is queued. + + + + + + a string representation of one or more DTMF events. + + + + optional #GCancellable object, %NULL to ignore + + + + a callback to call when the operation finishes + + + + data to pass to @callback + + + + + + Finishes tp_call_content_send_tones_async(). + + %TRUE on success, %FALSE otherwise. + + + + + a #GAsyncResult + + + + + + The #TpConnection of the call. + + + + The disposition of this content, from #TpCallContentDisposition. + + + + The media type of this content, from #TpMediaStreamType. + + + + The name of this content. + + + + #GPtrArray of #TpCallStream objects. The list of stream objects that are +part of this content. + +It is NOT guaranteed that %TP_CALL_STREAM_FEATURE_CORE is prepared on +those objects. + + + + + + + + + + + + The ::removed signal is emitted when @self is removed from +a #TpCallChannel. + + + + + + The ::streams-added signal is emitted whenever +#TpCallStream are added to @self. + +It is NOT guaranteed that %TP_CALL_STREAM_FEATURE_CORE is prepared on +stream objects. + + + + + + a #GPtrArray of newly added #TpCallStream + + + + + + + + The ::streams-removed signal is emitted whenever +#TpCallStreams are removed from @self. + +It is NOT guaranteed that %TP_CALL_STREAM_FEATURE_CORE is prepared on +stream objects. + + + + + + a #GPtrArray of newly removed #TpCallStream + + + + + + a #TpCallStateReason + + + + + + + The class of a #TpCallContent. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Data structure representing the reason for a call state change. + + + + + + + + + + + + + + + Data structure representing a #TpCallStream. + + + + + + + Ensure that the known interfaces for #TpCallStream have been set up. +This is done automatically when necessary, but for correct +overriding of library interfaces by local extensions, you should +call this function before calling +tp_proxy_or_subclass_hook_on_interface_add() with first argument +%TP_TYPE_CALL_STREAM. + + + + + + <!-- --> + + the value of #TpCallStream:can-request-receiving + + + + + <!-- --> + + the value of #TpCallStream:local-seding-state + + + + + Get the remote contacts to who this stream is connected, mapped to their +sending state. + +It is NOT guaranteed that #TpContact objects have any feature prepared. + +#GHashTable mapping #TpContact to its new #TpSendingState + + + + + + + + + Request that a remote contact stops or starts sending on this stream. + +The #TpCallStream:can-request-receiving property defines whether the protocol +allows the local user to request the other side start sending on this stream. + +If @receive is %TRUE, request that the given contact starts to send media. +If @receive is %FALSE, request that the given contact stops sending media. + + + + + + contact from which sending is requested + + + + the requested receiving state + + + + a callback to call when the operation finishes + + + + data to pass to @callback + + + + + + Finishes tp_call_stream_request_receiving_async(). + + + + + + a #GAsyncResult + + + + + + Set the stream to start or stop sending media from the local user to other +contacts. + +If @send is %TRUE, #TpCallStream:local-sending-state should change to +%TP_SENDING_STATE_SENDING, if it isn't already. +If @send is %FALSE, #TpCallStream:local-sending-state should change to +%TP_SENDING_STATE_NONE, if it isn't already. + + + + + + the requested sending state + + + + a callback to call when the operation finishes + + + + data to pass to @callback + + + + + + Finishes tp_call_stream_set_sending_async(). + + + + + + a #GAsyncResult + + + + + + If %TRUE, the user can request that a remote contact starts sending on this +stream. + + + + The #TpConnection of the call. + + + + The local user's sending state, from #TpSendingState. + + + + + + + + + + The ::local-sending-state-changed signal is emitted whenever the +stream sending state changes. + + + + + + + + + + + + + + + + + + + + + + + The ::remote-members-changed signal is emitted whenever the +stream's remote members changes. + +It is NOT guaranteed that #TpContact objects have any feature prepared. + + + + + + #GHashTable mapping #TpContact to its new #TpSendingState + + + + + + + #GPtrArray of #TpContact removed from remote contacts + + + + + + the #TpCallStateReason for the change + + + + + + + + + + + + + + + The class of a #TpCallStream. + + + + + + + + + + + + + An object representing capabilities a #TpConnection or #TpContact supports. + + <!-- --> + +#TpCapabilities:channel-classes property + + the same #GPtrArray as the + + + + + + + <!-- --> + + the same #gboolean as the #TpCapabilities:contact-specific property + + + + + Return whether this protocol or connection can perform contact +searches. Optionally, also return whether a limited number of +results can be specified, and whether alternative servers can be +searched. + + %TRUE if #TpContactSearch can be used. + + + + + if not %NULL, used to return %TRUE if the limit parameter to tp_contact_search_new_async() and tp_contact_search_reset_async() can be nonzero + + + + if not %NULL, used to return %TRUE if the server parameter to tp_contact_search_new_async() and tp_contact_search_reset_async() can be non-%NULL + + + + + + If the #TpCapabilities:contact-specific property is %TRUE, this function +checks if the contact associated with this #TpCapabilities supports +D-Bus tubes with @handle_type as TargetHandleType. +If @service_name is not %NULL, it also checks if it supports stream tubes +with @service as #TP_PROP_CHANNEL_TYPE_DBUS_TUBE_SERVICE_NAME. + +If the #TpCapabilities:contact-specific property is %FALSE, this function +checks if the connection supports requesting D-Bus tube channels with +@handle_type as ChannelType. The @service_name argument is unused in +this case. + +tubes. + + %TRUE if the contact or connection supports this type of D-Bus + + + + + the handle type of the tube (either #TP_HANDLE_TYPE_CONTACT or #TP_HANDLE_TYPE_ROOM) + + + + the service name of the tube, or %NULL + + + + + + Discovers whether this protocol or connection supports listing rooms. +Specifically, if this function returns %TRUE, a room list channel can be +requested as follows: +|[ +GHashTable *request; +TpAccountChannelRequest *req; + +request = tp_asv_new ( +TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, +TP_IFACE_CHANNEL_TYPE_ROOM_LIST, +TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_NONE, +NULL); + +req = tp_account_channel_request_new (account, request, +TP_USER_ACTION_TIME_CURRENT_TIME); + +tp_account_channel_request_create_and_handle_channel_async (req, NULL, +create_channel_cb, NULL); + +g_object_unref (req); +g_hash_table_unref (request); +]| + +If @with_server is set to %TRUE, a list of rooms on a particular server can +be requested as follows: +|[ +/\* Same code as above but with request defined using: *\/ +request = tp_asv_new ( +TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, +TP_IFACE_CHANNEL_TYPE_ROOM_LIST, +TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_NONE, +TP_PROP_CHANNEL_TYPE_ROOM_LIST_SERVER, G_TYPE_STRING, +"characters.shakespeare.lit", +NULL); +]| + +HandleTypeNone as TargetHandleType can be expected to work, +%FALSE otherwise. + + %TRUE if a channel request containing RoomList as ChannelType, + + + + + if not %NULL, used to return %TRUE if the #TP_PROP_CHANNEL_TYPE_ROOM_LIST_SERVER property can be defined when requesting a RoomList channel. + + + + + + If the #TpCapabilities:contact-specific property is %TRUE, this function +checks if the contact associated with this #TpCapabilities supports +stream tubes with @handle_type as TargetHandleType. +If @service is not %NULL, it also checks if it supports stream tubes +with @service as #TP_PROP_CHANNEL_TYPE_STREAM_TUBE_SERVICE. + +If the #TpCapabilities:contact-specific property is %FALSE, this function +checks if the connection supports requesting stream tube channels with +@handle_type as ChannelType. The @service argument is unused in this case. + +tubes. + + %TRUE if the contact or connection supports this type of stream @@ -5831,6 +7144,37 @@ c:type="TpCapabilitiesPrivate" disguised="1"> + + + + + + + + + + + + + + + - + + + + + + + Disconnect the connection. + +This method is intended for use by AccountManager implementations, +such as Mission Control. To disconnect a connection managed by an +AccountManager, either use tp_account_request_presence_async() +or tp_account_set_enabled_async(), depending whether the intention is +to put the account offline temporarily, or disable it longer-term. + + + + + + a callback to call when the request is satisfied + + + + data to pass to @callback + + + + + + Interpret the result of tp_connection_disconnect_async(). + %TRUE if the call was successful, otherwise %FALSE + + + a #GAsyncResult + + + + @@ -17127,6 +18518,66 @@ c:type="TP_IFACE_AUTHENTICATION_TLS_CERTIFICATE"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -17157,6 +18608,11 @@ c:type="TP_IFACE_CHANNEL_INTERFACE_CALL_STATE"> + + + @@ -17252,6 +18708,11 @@ c:type="TP_IFACE_CHANNEL_REQUEST"> + + + @@ -17337,6 +18798,11 @@ c:type="TP_IFACE_CONNECTION"> + + + @@ -18813,169 +20279,464 @@ c:type="TP_PROP_ACCOUNT_AUTOMATIC_PRESENCE"> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + @@ -19433,6 +21214,76 @@ c:type="TP_PROP_CHANNEL_TARGET_ID"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -19778,6 +21629,11 @@ c:type="TP_PROP_CONNECTION_INTERFACE_CONTACT_LIST_CONTACT_LIST_STATE"> + + + @@ -21288,6 +23144,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -27592,6 +29586,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -27627,6 +29693,12 @@ + + + + + @@ -27741,6 +29813,12 @@ + + + + + @@ -27842,6 +29920,12 @@ + + + + + diff -Nru telepathy-glib-0.17.4/telepathy-glib/telepathy-glib.h telepathy-glib-0.17.5/telepathy-glib/telepathy-glib.h --- telepathy-glib-0.17.4/telepathy-glib/telepathy-glib.h 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/telepathy-glib.h 2012-02-20 16:56:41.000000000 +0000 @@ -39,6 +39,10 @@ #include #include #include +#include +#include +#include +#include #include #include #include @@ -69,11 +73,19 @@ #include #include +#include +#include +#include #include +#include +#include +#include #include #include #include #include +#include +#include #undef __TP_IN_GLIB_H__ #endif /* __TP_GLIB_H__ */ diff -Nru telepathy-glib-0.17.4/telepathy-glib/text-channel.c telepathy-glib-0.17.5/telepathy-glib/text-channel.c --- telepathy-glib-0.17.4/telepathy-glib/text-channel.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/text-channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -43,7 +43,7 @@ * Since: 0.13.10 */ -#include +#include "config.h" #include "telepathy-glib/text-channel.h" diff -Nru telepathy-glib-0.17.4/telepathy-glib/text-mixin.c telepathy-glib-0.17.5/telepathy-glib/text-mixin.c --- telepathy-glib-0.17.4/telepathy-glib/text-mixin.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/text-mixin.c 2012-02-20 16:55:59.000000000 +0000 @@ -45,6 +45,8 @@ * of the Send method. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/telepathy-glib/util.c telepathy-glib-0.17.5/telepathy-glib/util.c --- telepathy-glib-0.17.4/telepathy-glib/util.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/util.c 2012-02-20 16:55:59.000000000 +0000 @@ -29,7 +29,7 @@ * GLib, but aren't. */ -#include +#include "config.h" #include @@ -1861,8 +1861,11 @@ } } break; +#else + case TP_SOCKET_ADDRESS_TYPE_UNIX: + case TP_SOCKET_ADDRESS_TYPE_ABSTRACT_UNIX: + break; #endif - case TP_SOCKET_ADDRESS_TYPE_IPV6: case TP_SOCKET_ADDRESS_TYPE_IPV4: { diff -Nru telepathy-glib-0.17.4/telepathy-glib/versions/0.17.5.abi telepathy-glib-0.17.5/telepathy-glib/versions/0.17.5.abi --- telepathy-glib-0.17.4/telepathy-glib/versions/0.17.5.abi 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/telepathy-glib/versions/0.17.5.abi 2012-02-20 17:31:02.000000000 +0000 @@ -0,0 +1,310 @@ +Version: TELEPATHY_GLIB_0.17.5 +Extends: TELEPATHY_GLIB_0.17.3 +Release: 0.17.5 + +tp_account_get_supersedes +tp_base_call_channel_add_content +tp_base_call_channel_get_call_members +tp_base_call_channel_get_contents +tp_base_call_channel_get_state +tp_base_call_channel_get_type +tp_base_call_channel_has_initial_audio +tp_base_call_channel_has_initial_video +tp_base_call_channel_has_mutable_contents +tp_base_call_channel_is_accepted +tp_base_call_channel_remote_accept +tp_base_call_channel_remove_content +tp_base_call_channel_remove_member +tp_base_call_channel_set_state +tp_base_call_channel_update_member_flags +tp_base_call_content_add_stream +tp_base_call_content_get_connection +tp_base_call_content_get_disposition +tp_base_call_content_get_media_type +tp_base_call_content_get_name +tp_base_call_content_get_object_path +tp_base_call_content_get_streams +tp_base_call_content_get_type +tp_base_call_content_remove_stream +tp_base_call_stream_get_connection +tp_base_call_stream_get_local_sending_state +tp_base_call_stream_get_object_path +tp_base_call_stream_get_remote_sending_state +tp_base_call_stream_get_type +tp_base_call_stream_remove_member +tp_base_call_stream_update_local_sending_state +tp_base_call_stream_update_remote_sending_state +tp_base_channel_get_self_handle +tp_base_media_call_channel_get_type +tp_base_media_call_content_get_local_media_description +tp_base_media_call_content_get_type +tp_base_media_call_content_offer_media_description_async +tp_base_media_call_content_offer_media_description_finish +tp_base_media_call_stream_add_endpoint +tp_base_media_call_stream_get_endpoints +tp_base_media_call_stream_get_local_candidates +tp_base_media_call_stream_get_password +tp_base_media_call_stream_get_receiving_state +tp_base_media_call_stream_get_sending_state +tp_base_media_call_stream_get_type +tp_base_media_call_stream_get_username +tp_base_media_call_stream_remove_endpoint +tp_base_media_call_stream_set_local_sending +tp_base_media_call_stream_set_relay_info +tp_base_media_call_stream_set_stun_servers +tp_base_media_call_stream_update_receiving_state +tp_base_media_call_stream_update_sending_state +tp_call_channel_accept_async +tp_call_channel_accept_finish +tp_call_channel_add_content_async +tp_call_channel_add_content_finish +tp_call_channel_get_contents +tp_call_channel_get_feature_quark_core +tp_call_channel_get_members +tp_call_channel_get_state +tp_call_channel_get_type +tp_call_channel_hangup_async +tp_call_channel_hangup_finish +tp_call_channel_has_dtmf +tp_call_channel_has_hardware_streaming +tp_call_channel_has_initial_audio +tp_call_channel_has_initial_video +tp_call_channel_has_mutable_contents +tp_call_channel_send_tones_async +tp_call_channel_send_tones_finish +tp_call_channel_set_queued_async +tp_call_channel_set_queued_finish +tp_call_channel_set_ringing_async +tp_call_channel_set_ringing_finish +tp_call_content_get_disposition +tp_call_content_get_feature_quark_core +tp_call_content_get_media_type +tp_call_content_get_name +tp_call_content_get_streams +tp_call_content_get_type +tp_call_content_init_known_interfaces +tp_call_content_media_description_add_ssrc +tp_call_content_media_description_append_codec +tp_call_content_media_description_get_object_path +tp_call_content_media_description_get_remote_contact +tp_call_content_media_description_get_type +tp_call_content_media_description_init_known_interfaces +tp_call_content_media_description_new +tp_call_content_remove_async +tp_call_content_remove_finish +tp_call_content_send_tones_async +tp_call_content_send_tones_finish +tp_call_state_reason_get_type +tp_call_stream_can_request_receiving +tp_call_stream_endpoint_add_new_candidate +tp_call_stream_endpoint_add_new_candidates +tp_call_stream_endpoint_get_object_path +tp_call_stream_endpoint_get_state +tp_call_stream_endpoint_get_type +tp_call_stream_endpoint_init_known_interfaces +tp_call_stream_endpoint_new +tp_call_stream_endpoint_set_remote_credentials +tp_call_stream_get_feature_quark_core +tp_call_stream_get_local_sending_state +tp_call_stream_get_remote_members +tp_call_stream_get_type +tp_call_stream_init_known_interfaces +tp_call_stream_request_receiving_async +tp_call_stream_request_receiving_finish +tp_call_stream_set_sending_async +tp_call_stream_set_sending_finish +tp_cli_call_content_call_remove +tp_cli_call_content_connect_to_streams_added +tp_cli_call_content_connect_to_streams_removed +tp_cli_call_content_interface_audio_control_call_report_input_volume +tp_cli_call_content_interface_audio_control_call_report_output_volume +tp_cli_call_content_interface_dtmf_call_multiple_tones +tp_cli_call_content_interface_dtmf_call_start_tone +tp_cli_call_content_interface_dtmf_call_stop_tone +tp_cli_call_content_interface_dtmf_connect_to_sending_tones +tp_cli_call_content_interface_dtmf_connect_to_stopped_tones +tp_cli_call_content_interface_dtmf_connect_to_tones_deferred +tp_cli_call_content_interface_media_call_acknowledge_dtmf_change +tp_cli_call_content_interface_media_call_fail +tp_cli_call_content_interface_media_call_update_local_media_description +tp_cli_call_content_interface_media_connect_to_dtmf_change_requested +tp_cli_call_content_interface_media_connect_to_local_media_description_changed +tp_cli_call_content_interface_media_connect_to_media_description_offer_done +tp_cli_call_content_interface_media_connect_to_media_descriptions_removed +tp_cli_call_content_interface_media_connect_to_new_media_description_offer +tp_cli_call_content_interface_media_connect_to_remote_media_descriptions_changed +tp_cli_call_content_interface_video_control_connect_to_bitrate_changed +tp_cli_call_content_interface_video_control_connect_to_framerate_changed +tp_cli_call_content_interface_video_control_connect_to_key_frame_requested +tp_cli_call_content_interface_video_control_connect_to_mtu_changed +tp_cli_call_content_interface_video_control_connect_to_video_resolution_changed +tp_cli_call_content_media_description_call_accept +tp_cli_call_content_media_description_call_reject +tp_cli_call_stream_call_request_receiving +tp_cli_call_stream_call_set_sending +tp_cli_call_stream_connect_to_local_sending_state_changed +tp_cli_call_stream_connect_to_remote_members_changed +tp_cli_call_stream_endpoint_call_accept_selected_candidate_pair +tp_cli_call_stream_endpoint_call_reject_selected_candidate_pair +tp_cli_call_stream_endpoint_call_set_controlling +tp_cli_call_stream_endpoint_call_set_endpoint_state +tp_cli_call_stream_endpoint_call_set_selected_candidate_pair +tp_cli_call_stream_endpoint_connect_to_candidate_pair_selected +tp_cli_call_stream_endpoint_connect_to_controlling_changed +tp_cli_call_stream_endpoint_connect_to_endpoint_state_changed +tp_cli_call_stream_endpoint_connect_to_remote_candidates_added +tp_cli_call_stream_endpoint_connect_to_remote_credentials_set +tp_cli_call_stream_interface_media_call_add_candidates +tp_cli_call_stream_interface_media_call_complete_receiving_state_change +tp_cli_call_stream_interface_media_call_complete_sending_state_change +tp_cli_call_stream_interface_media_call_fail +tp_cli_call_stream_interface_media_call_finish_initial_candidates +tp_cli_call_stream_interface_media_call_report_receiving_failure +tp_cli_call_stream_interface_media_call_report_sending_failure +tp_cli_call_stream_interface_media_call_set_credentials +tp_cli_call_stream_interface_media_connect_to_endpoints_changed +tp_cli_call_stream_interface_media_connect_to_ice_restart_requested +tp_cli_call_stream_interface_media_connect_to_local_candidates_added +tp_cli_call_stream_interface_media_connect_to_local_credentials_changed +tp_cli_call_stream_interface_media_connect_to_receiving_state_changed +tp_cli_call_stream_interface_media_connect_to_relay_info_changed +tp_cli_call_stream_interface_media_connect_to_sending_state_changed +tp_cli_call_stream_interface_media_connect_to_server_info_retrieved +tp_cli_call_stream_interface_media_connect_to_stun_servers_changed +tp_cli_channel_interface_captcha_authentication_call_answer_captchas +tp_cli_channel_interface_captcha_authentication_call_cancel_captcha +tp_cli_channel_interface_captcha_authentication_call_get_captcha_data +tp_cli_channel_interface_captcha_authentication_call_get_captchas +tp_cli_channel_type_call_call_accept +tp_cli_channel_type_call_call_add_content +tp_cli_channel_type_call_call_hangup +tp_cli_channel_type_call_call_set_queued +tp_cli_channel_type_call_call_set_ringing +tp_cli_channel_type_call_connect_to_call_members_changed +tp_cli_channel_type_call_connect_to_call_state_changed +tp_cli_channel_type_call_connect_to_content_added +tp_cli_channel_type_call_connect_to_content_removed +tp_cli_connection_interface_addressing_call_get_contacts_by_uri +tp_cli_connection_interface_addressing_call_get_contacts_by_vcard_field +tp_cli_connection_interface_contact_list_call_download +tp_connection_disconnect_async +tp_connection_disconnect_finish +tp_iface_quark_call_content +tp_iface_quark_call_content_interface_audio_control +tp_iface_quark_call_content_interface_dtmf +tp_iface_quark_call_content_interface_media +tp_iface_quark_call_content_interface_video_control +tp_iface_quark_call_content_media_description +tp_iface_quark_call_content_media_description_interface_rtcp_extended_reports +tp_iface_quark_call_content_media_description_interface_rtcp_feedback +tp_iface_quark_call_content_media_description_interface_rtp_header_extensions +tp_iface_quark_call_stream +tp_iface_quark_call_stream_endpoint +tp_iface_quark_call_stream_interface_media +tp_iface_quark_channel_interface_captcha_authentication +tp_iface_quark_channel_type_call +tp_iface_quark_connection_interface_addressing +tp_svc_call_content_emit_streams_added +tp_svc_call_content_emit_streams_removed +tp_svc_call_content_get_type +tp_svc_call_content_implement_remove +tp_svc_call_content_interface_audio_control_get_type +tp_svc_call_content_interface_audio_control_implement_report_input_volume +tp_svc_call_content_interface_audio_control_implement_report_output_volume +tp_svc_call_content_interface_dtmf_emit_sending_tones +tp_svc_call_content_interface_dtmf_emit_stopped_tones +tp_svc_call_content_interface_dtmf_emit_tones_deferred +tp_svc_call_content_interface_dtmf_get_type +tp_svc_call_content_interface_dtmf_implement_multiple_tones +tp_svc_call_content_interface_dtmf_implement_start_tone +tp_svc_call_content_interface_dtmf_implement_stop_tone +tp_svc_call_content_interface_media_emit_dtmf_change_requested +tp_svc_call_content_interface_media_emit_local_media_description_changed +tp_svc_call_content_interface_media_emit_media_description_offer_done +tp_svc_call_content_interface_media_emit_media_descriptions_removed +tp_svc_call_content_interface_media_emit_new_media_description_offer +tp_svc_call_content_interface_media_emit_remote_media_descriptions_changed +tp_svc_call_content_interface_media_get_type +tp_svc_call_content_interface_media_implement_acknowledge_dtmf_change +tp_svc_call_content_interface_media_implement_fail +tp_svc_call_content_interface_media_implement_update_local_media_description +tp_svc_call_content_interface_video_control_emit_bitrate_changed +tp_svc_call_content_interface_video_control_emit_framerate_changed +tp_svc_call_content_interface_video_control_emit_key_frame_requested +tp_svc_call_content_interface_video_control_emit_mtu_changed +tp_svc_call_content_interface_video_control_emit_video_resolution_changed +tp_svc_call_content_interface_video_control_get_type +tp_svc_call_content_media_description_get_type +tp_svc_call_content_media_description_implement_accept +tp_svc_call_content_media_description_implement_reject +tp_svc_call_content_media_description_interface_rtcp_extended_reports_get_type +tp_svc_call_content_media_description_interface_rtcp_feedback_get_type +tp_svc_call_content_media_description_interface_rtp_header_extensions_get_type +tp_svc_call_stream_emit_local_sending_state_changed +tp_svc_call_stream_emit_remote_members_changed +tp_svc_call_stream_endpoint_emit_candidate_pair_selected +tp_svc_call_stream_endpoint_emit_controlling_changed +tp_svc_call_stream_endpoint_emit_endpoint_state_changed +tp_svc_call_stream_endpoint_emit_remote_candidates_added +tp_svc_call_stream_endpoint_emit_remote_credentials_set +tp_svc_call_stream_endpoint_get_type +tp_svc_call_stream_endpoint_implement_accept_selected_candidate_pair +tp_svc_call_stream_endpoint_implement_reject_selected_candidate_pair +tp_svc_call_stream_endpoint_implement_set_controlling +tp_svc_call_stream_endpoint_implement_set_endpoint_state +tp_svc_call_stream_endpoint_implement_set_selected_candidate_pair +tp_svc_call_stream_get_type +tp_svc_call_stream_implement_request_receiving +tp_svc_call_stream_implement_set_sending +tp_svc_call_stream_interface_media_emit_endpoints_changed +tp_svc_call_stream_interface_media_emit_ice_restart_requested +tp_svc_call_stream_interface_media_emit_local_candidates_added +tp_svc_call_stream_interface_media_emit_local_credentials_changed +tp_svc_call_stream_interface_media_emit_receiving_state_changed +tp_svc_call_stream_interface_media_emit_relay_info_changed +tp_svc_call_stream_interface_media_emit_sending_state_changed +tp_svc_call_stream_interface_media_emit_server_info_retrieved +tp_svc_call_stream_interface_media_emit_stun_servers_changed +tp_svc_call_stream_interface_media_get_type +tp_svc_call_stream_interface_media_implement_add_candidates +tp_svc_call_stream_interface_media_implement_complete_receiving_state_change +tp_svc_call_stream_interface_media_implement_complete_sending_state_change +tp_svc_call_stream_interface_media_implement_fail +tp_svc_call_stream_interface_media_implement_finish_initial_candidates +tp_svc_call_stream_interface_media_implement_report_receiving_failure +tp_svc_call_stream_interface_media_implement_report_sending_failure +tp_svc_call_stream_interface_media_implement_set_credentials +tp_svc_channel_interface_captcha_authentication_get_type +tp_svc_channel_interface_captcha_authentication_implement_answer_captchas +tp_svc_channel_interface_captcha_authentication_implement_cancel_captcha +tp_svc_channel_interface_captcha_authentication_implement_get_captcha_data +tp_svc_channel_interface_captcha_authentication_implement_get_captchas +tp_svc_channel_type_call_emit_call_members_changed +tp_svc_channel_type_call_emit_call_state_changed +tp_svc_channel_type_call_emit_content_added +tp_svc_channel_type_call_emit_content_removed +tp_svc_channel_type_call_get_type +tp_svc_channel_type_call_implement_accept +tp_svc_channel_type_call_implement_add_content +tp_svc_channel_type_call_implement_hangup +tp_svc_channel_type_call_implement_set_queued +tp_svc_channel_type_call_implement_set_ringing +tp_svc_connection_interface_addressing_get_type +tp_svc_connection_interface_addressing_implement_get_contacts_by_uri +tp_svc_connection_interface_addressing_implement_get_contacts_by_vcard_field +tp_svc_connection_interface_contact_list_implement_download +tp_type_dbus_array__28usua_7bsv_7d_29_28usua_7bsv_7d_29 +tp_type_dbus_array_of_a_7buu_7d +tp_type_dbus_array_ussuas +tp_type_dbus_array_usua_7bsv_7d +tp_type_dbus_array_usuuba_7bss_7d +tp_type_dbus_hash_su +tp_type_dbus_hash_ua_28usuuba_7bss_7d_29 +tp_type_dbus_struct__28usua_7bsv_7d_29_28usua_7bsv_7d_29 +tp_type_dbus_struct_ussuas +tp_type_dbus_struct_usua_7bsv_7d +tp_type_dbus_struct_usuuba_7bss_7d +tp_unix_connection_receive_credentials_with_byte_async +tp_unix_connection_receive_credentials_with_byte_finish +tp_unix_connection_send_credentials_with_byte_async +tp_unix_connection_send_credentials_with_byte_finish diff -Nru telepathy-glib-0.17.4/tests/asv.c telepathy-glib-0.17.5/tests/asv.c --- telepathy-glib-0.17.4/tests/asv.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/asv.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/availability-cmp.c telepathy-glib-0.17.5/tests/availability-cmp.c --- telepathy-glib-0.17.4/tests/availability-cmp.c 2009-04-02 15:11:51.000000000 +0000 +++ telepathy-glib-0.17.5/tests/availability-cmp.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/capabilities.c telepathy-glib-0.17.5/tests/capabilities.c --- telepathy-glib-0.17.4/tests/capabilities.c 2011-04-26 09:30:09.000000000 +0000 +++ telepathy-glib-0.17.5/tests/capabilities.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/contact-search-result.c telepathy-glib-0.17.5/tests/contact-search-result.c --- telepathy-glib-0.17.4/tests/contact-search-result.c 2011-03-03 12:54:10.000000000 +0000 +++ telepathy-glib-0.17.5/tests/contact-search-result.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include "telepathy-glib/contact-search-internal.h" diff -Nru telepathy-glib-0.17.4/tests/dbus/account.c telepathy-glib-0.17.5/tests/dbus/account.c --- telepathy-glib-0.17.4/tests/dbus/account.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/account.c 2012-02-20 16:57:08.000000000 +0000 @@ -1,6 +1,6 @@ /* A very basic feature test for TpAccount * - * Copyright (C) 2009 Collabora Ltd. + * Copyright (C) 2009-2012 Collabora Ltd. * Copyright (C) 2009 Nokia Corporation * * Copying and distribution of this file, with or without modification, @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -22,6 +24,7 @@ #define CONN2_PATH TP_CONN_OBJECT_PATH_BASE "what/ev/s" #define CONN1_BUS_NAME TP_CONN_BUS_NAME_BASE "what.ev.er" #define CONN2_BUS_NAME TP_CONN_BUS_NAME_BASE "what.ev.s" +#define SUPERSEDED_PATH TP_ACCOUNT_OBJECT_PATH_BASE "super/seded/whatever" static void test_parse_failure (gconstpointer test_data) @@ -253,6 +256,43 @@ } static void +test_reconnect (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + GHashTable *set = tp_asv_new ( + "set", G_TYPE_STRING, "value", + NULL); + const gchar *unset[] = { "unset", NULL }; + GStrv reconnect_required; + + test->account = tp_account_new (test->dbus, ACCOUNT_PATH, NULL); + g_assert (test->account != NULL); + + tp_account_update_parameters_async (test->account, set, unset, + tp_tests_result_ready_cb, &test->result); + tp_tests_run_until_result (&test->result); + tp_account_update_parameters_finish (test->account, test->result, + &reconnect_required, &test->error); + g_assert_no_error (test->error); + /* check that reconnect_required survives longer than result */ + tp_clear_object (&test->result); + + g_assert (reconnect_required != NULL); + g_assert_cmpstr (reconnect_required[0], ==, "set"); + g_assert_cmpstr (reconnect_required[1], ==, "unset"); + g_assert_cmpstr (reconnect_required[2], ==, NULL); + g_strfreev (reconnect_required); + + tp_account_reconnect_async (test->account, tp_tests_result_ready_cb, + &test->result); + tp_tests_run_until_result (&test->result); + tp_account_reconnect_finish (test->account, test->result, &test->error); + g_assert_error (test->error, TP_ERROR, TP_ERROR_NOT_IMPLEMENTED); + g_clear_error (&test->error); + tp_clear_object (&test->result); +} + +static void account_prepare_cb (GObject *source, GAsyncResult *result, gpointer user_data) @@ -304,6 +344,8 @@ gchar *status = NULL; gchar *message = NULL; const GHashTable *details = GUINT_TO_POINTER (666); + GStrv strv; + const gchar * const *cstrv; test->account = tp_account_new (test->dbus, ACCOUNT_PATH, NULL); g_assert (test->account != NULL); @@ -414,28 +456,17 @@ "bob.mcbadgers@example.com"); assert_strprop (test->account, "normalized-name", "bob.mcbadgers@example.com"); -} - -static void -get_storage_specific_info_cb (GObject *account, - GAsyncResult *result, - gpointer user_data) -{ - Test *test = user_data; - GHashTable *info; - GError *error = NULL; - info = tp_account_get_storage_specific_information_finish ( - TP_ACCOUNT (account), result, &error); - g_assert_no_error (error); - - g_assert_cmpuint (g_hash_table_size (info), ==, 3); - - g_assert_cmpint (tp_asv_get_int32 (info, "one", NULL), ==, 1); - g_assert_cmpuint (tp_asv_get_uint32 (info, "two", NULL), ==, 2); - g_assert_cmpstr (tp_asv_get_string (info, "marco"), ==, "polo"); - - g_main_loop_quit (test->mainloop); + g_object_get (test->account, + "supersedes", &strv, + NULL); + g_assert_cmpstr (strv[0], ==, SUPERSEDED_PATH); + g_assert_cmpstr (strv[1], ==, NULL); + g_strfreev (strv); + + cstrv = tp_account_get_supersedes (test->account); + g_assert_cmpstr (cstrv[0], ==, SUPERSEDED_PATH); + g_assert_cmpstr (cstrv[1], ==, NULL); } static void @@ -444,6 +475,8 @@ { GQuark account_features[] = { TP_ACCOUNT_FEATURE_STORAGE, 0 }; GValue *gvalue; + GHashTable *info; + GError *error = NULL; test->account = tp_account_new (test->dbus, ACCOUNT_PATH, NULL); g_assert (test->account != NULL); @@ -494,8 +527,20 @@ /* request the StorageSpecificProperties hash */ tp_account_get_storage_specific_information_async (test->account, - get_storage_specific_info_cb, test); - g_main_loop_run (test->mainloop); + tp_tests_result_ready_cb, &test->result); + tp_tests_run_until_result (&test->result); + + info = tp_account_get_storage_specific_information_finish ( + test->account, test->result, &error); + g_assert_no_error (error); + + g_assert_cmpuint (g_hash_table_size (info), ==, 3); + + g_assert_cmpint (tp_asv_get_int32 (info, "one", NULL), ==, 1); + g_assert_cmpuint (tp_asv_get_uint32 (info, "two", NULL), ==, 2); + g_assert_cmpstr (tp_asv_get_string (info, "marco"), ==, "polo"); + + tp_clear_object (&test->result); } static void @@ -545,6 +590,33 @@ } static void +test_avatar (Test *test, + gconstpointer mode) +{ + const GArray *blob; + GError *error = NULL; + + test->account = tp_account_new (test->dbus, ACCOUNT_PATH, NULL); + g_assert (test->account != NULL); + + tp_proxy_prepare_async (test->account, NULL, account_prepare_cb, test); + g_main_loop_run (test->mainloop); + + tp_account_get_avatar_async (test->account, + tp_tests_result_ready_cb, &test->result); + tp_tests_run_until_result (&test->result); + + blob = tp_account_get_avatar_finish ( + test->account, test->result, &error); + g_assert_no_error (error); + + g_assert_cmpuint (blob->len, ==, 4); + g_assert_cmpstr (((char *) blob->data), ==, ":-)"); + + tp_clear_object (&test->result); +} + +static void test_connection (Test *test, gconstpointer data G_GNUC_UNUSED) { @@ -759,6 +831,9 @@ g_test_add ("/account/setters", Test, NULL, setup_service, test_setters, teardown_service); + g_test_add ("/account/reconnect", Test, NULL, setup_service, test_reconnect, + teardown_service); + g_test_add ("/account/prepare/success", Test, NULL, setup_service, test_prepare_success, teardown_service); @@ -770,6 +845,9 @@ g_test_add ("/account/storage", Test, "later", setup_service, test_storage, teardown_service); + g_test_add ("/account/avatar", Test, NULL, setup_service, test_avatar, + teardown_service); + g_test_add ("/account/addressing", Test, "first", setup_service, test_addressing, teardown_service); g_test_add ("/account/addressing", Test, "later", setup_service, diff -Nru telepathy-glib-0.17.4/tests/dbus/account-channel-request.c telepathy-glib-0.17.5/tests/dbus/account-channel-request.c --- telepathy-glib-0.17.4/tests/dbus/account-channel-request.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/account-channel-request.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include @@ -141,9 +143,7 @@ tp_clear_object (&test->channel); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); tp_clear_object (&test->connection); tp_clear_object (&test->base_connection); diff -Nru telepathy-glib-0.17.4/tests/dbus/account-manager.c telepathy-glib-0.17.5/tests/dbus/account-manager.c --- telepathy-glib-0.17.4/tests/dbus/account-manager.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/account-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,13 +8,19 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include +#include "tests/lib/simple-account.h" #include "tests/lib/simple-account-manager.h" #include "tests/lib/util.h" +#define ACCOUNT1_PATH TP_ACCOUNT_OBJECT_PATH_BASE "badger/musher/account1" +#define ACCOUNT2_PATH TP_ACCOUNT_OBJECT_PATH_BASE "badger/musher/account2" + typedef struct { GFunc action; gpointer user_data; @@ -31,6 +37,12 @@ guint timeout_id; GQueue *script /* A list of GAsyncReadyCallback */; + TpTestsSimpleAccount *account1_service; + TpTestsSimpleAccount *account2_service; + + TpAccount *account1; + TpAccount *account2; + GError *error /* initialized where needed */; } Test; @@ -147,6 +159,16 @@ TP_TESTS_TYPE_SIMPLE_ACCOUNT_MANAGER, NULL); tp_dbus_daemon_register_object (test->dbus, TP_ACCOUNT_MANAGER_OBJECT_PATH, test->service); + + test->account1_service = tp_tests_object_new_static_class ( + TP_TESTS_TYPE_SIMPLE_ACCOUNT, NULL); + tp_dbus_daemon_register_object (test->dbus, ACCOUNT1_PATH, + test->account1_service); + + test->account2_service = tp_tests_object_new_static_class ( + TP_TESTS_TYPE_SIMPLE_ACCOUNT, NULL); + tp_dbus_daemon_register_object (test->dbus, ACCOUNT2_PATH, + test->account2_service); } static void @@ -185,6 +207,15 @@ &test->error)); tp_dbus_daemon_unregister_object (test->dbus, test->service); g_object_unref (test->service); + + tp_dbus_daemon_unregister_object (test->dbus, test->account1_service); + g_object_unref (test->account1_service); + tp_dbus_daemon_unregister_object (test->dbus, test->account2_service); + g_object_unref (test->account2_service); + + g_clear_object (&test->account1); + g_clear_object (&test->account2); + test->service = NULL; teardown (test, data); } @@ -522,6 +553,237 @@ script_append_action (test, assert_failed_action, NULL); } +/* tp_account_manager_get_most_available_presence() tests */ +static void +create_tp_accounts (gpointer script_data, + gpointer user_data G_GNUC_UNUSED) +{ + Test *test = (Test *) script_data; + + test->account1 = tp_account_manager_ensure_account (test->am, ACCOUNT1_PATH); + g_object_ref (test->account1); + + test->account2 = tp_account_manager_ensure_account (test->am, ACCOUNT2_PATH); + g_object_ref (test->account2); + + script_continue (test); +} + +static void +test_prepare_most_available (Test *test, + gconstpointer data, + guint nb_accounts) +{ + GPtrArray *accounts; + + accounts = g_ptr_array_new_with_free_func (g_free); + + if (nb_accounts >= 1) + g_ptr_array_add (accounts, g_strdup (ACCOUNT1_PATH)); + + if (nb_accounts >= 2) + g_ptr_array_add (accounts, g_strdup (ACCOUNT2_PATH)); + + tp_tests_simple_account_manager_set_valid_accounts (test->service, accounts); + g_ptr_array_unref (accounts); + + test_prepare (test, data); + script_append_action (test, manager_new_action, NULL); + script_append_action (test, prepare_action, NULL); + script_append_action (test, create_tp_accounts, NULL); +} + +typedef struct +{ + TpConnectionPresenceType presence; + gchar *status; + gchar *message; +} Presence; + +static Presence * +presence_new (TpConnectionPresenceType presence, + const gchar *status, + const gchar *message) +{ + Presence *p = g_slice_new (Presence); + + p->presence = presence; + p->status = g_strdup (status); + p->message = g_strdup (message); + return p; +} + +static void +presence_free (Presence *p) +{ + g_free (p->status); + g_free (p->message); + g_slice_free (Presence, p); +} + +static void +check_presence_action (gpointer script_data, + gpointer user_data) +{ + Test *test = script_data; + Presence *p = user_data; + TpConnectionPresenceType presence; + gchar *status, *message; + + presence = tp_account_manager_get_most_available_presence (test->am, + &status, &message); + + g_assert_cmpuint (presence, ==, p->presence); + g_assert_cmpstr (status, ==, p->status); + g_assert_cmpstr (message, ==, p->message); + + presence_free (p); + g_free (status); + g_free (message); + + script_continue (script_data); +} + +static void +account_presence_changed (TpAccount *account, + TpConnectionPresenceType presence, + const gchar *status, + const gchar *message, + Test *test) +{ + g_signal_handlers_disconnect_by_func (account, + account_presence_changed, test); + + script_continue (test); +} + +static void +change_account_presence (Test *test, + TpTestsSimpleAccount *service, + TpAccount *account, + gpointer user_data) +{ + Presence *p = user_data; + + tp_tests_simple_account_set_presence (service, + p->presence, p->status, p->message); + + presence_free (p); + + /* Wait for the presence change notification */ + g_signal_connect (account, "presence-changed", + G_CALLBACK (account_presence_changed), test); +} + +static void +change_account1_presence (gpointer script_data, + gpointer user_data) +{ + Test *test = script_data; + + change_account_presence (test, test->account1_service, + test->account1, user_data); +} + +static void +change_account2_presence (gpointer script_data, + gpointer user_data) +{ + Test *test = script_data; + + change_account_presence (test, test->account2_service, + test->account2, user_data); +} + +static void +test_most_available_no_account (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + test_prepare_most_available (test, data, 0); + + script_append_action (test, check_presence_action, + presence_new (TP_CONNECTION_PRESENCE_TYPE_OFFLINE, "offline", "")); +} + +static void +test_most_available_one_account (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + test_prepare_most_available (test, data, 1); + + script_append_action (test, change_account1_presence, + presence_new (TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, "available", "")); + script_append_action (test, check_presence_action, + presence_new (TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, "available", "")); +} + +static void +test_most_available_two_account (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + test_prepare_most_available (test, data, 2); + + script_append_action (test, change_account1_presence, + presence_new (TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, "available", "")); + script_append_action (test, change_account2_presence, + presence_new (TP_CONNECTION_PRESENCE_TYPE_AWAY, "away", "")); + + script_append_action (test, check_presence_action, + presence_new (TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, "available", "")); + + /* account1 disconnects */ + script_append_action (test, change_account1_presence, + presence_new (TP_CONNECTION_PRESENCE_TYPE_OFFLINE, "offline", "")); + + script_append_action (test, check_presence_action, + presence_new (TP_CONNECTION_PRESENCE_TYPE_AWAY, "away", "")); +} + +static void +test_most_available_one_unset (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + test_prepare_most_available (test, data, 1); + + script_append_action (test, change_account1_presence, + presence_new (TP_CONNECTION_PRESENCE_TYPE_UNSET, "unset", "")); + + /* Pretend that we are available */ + script_append_action (test, check_presence_action, + presence_new (TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, "available", "")); +} + +static void +test_most_available_two_unset (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + test_prepare_most_available (test, data, 2); + + script_append_action (test, change_account1_presence, + presence_new (TP_CONNECTION_PRESENCE_TYPE_UNSET, "unset", "")); + script_append_action (test, change_account2_presence, + presence_new (TP_CONNECTION_PRESENCE_TYPE_AWAY, "away", "")); + + /* Use account2 away presence */ + script_append_action (test, check_presence_action, + presence_new (TP_CONNECTION_PRESENCE_TYPE_AWAY, "away", "")); + + /* account2 disconnects */ + script_append_action (test, change_account2_presence, + presence_new (TP_CONNECTION_PRESENCE_TYPE_OFFLINE, "offline", "")); + + /* Pretent that we are available */ + script_append_action (test, check_presence_action, + presence_new (TP_CONNECTION_PRESENCE_TYPE_AVAILABLE, "available", "")); + + /* account2 reconnects with busy */ + script_append_action (test, change_account2_presence, + presence_new (TP_CONNECTION_PRESENCE_TYPE_BUSY, "busy", "")); + + script_append_action (test, check_presence_action, + presence_new (TP_CONNECTION_PRESENCE_TYPE_BUSY, "busy", "")); +} + int main (int argc, char **argv) @@ -545,5 +807,16 @@ g_test_add ("/am/ensure", Test, NULL, setup_service, test_ensure, teardown_service); + + g_test_add ("/am/most-available/no-account", Test, NULL, setup_service, + test_most_available_no_account, teardown_service); + g_test_add ("/am/most-available/one-account", Test, NULL, setup_service, + test_most_available_one_account, teardown_service); + g_test_add ("/am/most-available/two-account", Test, NULL, setup_service, + test_most_available_two_account, teardown_service); + g_test_add ("/am/most-available/one-unset", Test, NULL, setup_service, + test_most_available_one_unset, teardown_service); + g_test_add ("/am/most-available/two-unset", Test, NULL, setup_service, + test_most_available_two_unset, teardown_service); return g_test_run (); } diff -Nru telepathy-glib-0.17.4/tests/dbus/base-client.c telepathy-glib-0.17.5/tests/dbus/base-client.c --- telepathy-glib-0.17.4/tests/dbus/base-client.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/base-client.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + /* We include -internal headers of context to be able to easily access to * their semi-private attributes (connection, account, channels, etc). */ #include @@ -261,9 +263,7 @@ tp_clear_object (&test->cdo_service); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); diff -Nru telepathy-glib-0.17.4/tests/dbus/callable-example.c telepathy-glib-0.17.5/tests/dbus/callable-example.c --- telepathy-glib-0.17.4/tests/dbus/callable-example.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/callable-example.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1568 +0,0 @@ -/* Feature test for example StreamedMedia CM code. - * - * Copyright © 2009 Collabora Ltd. - * Copyright © 2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include -#include -#include - -#include "examples/cm/callable/connection-manager.h" -#include "examples/cm/callable/conn.h" -#include "examples/cm/callable/media-channel.h" -#include "examples/cm/callable/media-stream.h" - -#include "tests/lib/util.h" - -static void -test_assert_uu_hash_contains (GHashTable *hash, - guint key, - guint expected) -{ - gpointer v; - - if (!g_hash_table_lookup_extended (hash, GUINT_TO_POINTER (key), NULL, &v)) - g_error ("Expected %u => %u in hash table, but key was absent", key, - expected); - - g_assert_cmpuint (GPOINTER_TO_UINT (v), ==, expected); -} - -typedef struct -{ - TpIntset *added; - TpIntset *removed; - TpIntset *local_pending; - TpIntset *remote_pending; - GHashTable *details; -} GroupEvent; - -static GroupEvent * -group_event_new (void) -{ - return g_slice_new0 (GroupEvent); -} - -static void -group_event_destroy (GroupEvent *ge) -{ - if (ge->added != NULL) - tp_intset_destroy (ge->added); - - if (ge->removed != NULL) - tp_intset_destroy (ge->removed); - - if (ge->local_pending != NULL) - tp_intset_destroy (ge->local_pending); - - if (ge->remote_pending != NULL) - tp_intset_destroy (ge->remote_pending); - - if (ge->details != NULL) - g_hash_table_unref (ge->details); - - g_slice_free (GroupEvent, ge); -} - -typedef enum -{ - STREAM_EVENT_ADDED, - STREAM_EVENT_DIRECTION_CHANGED, - STREAM_EVENT_ERROR, - STREAM_EVENT_REMOVED, - STREAM_EVENT_STATE_CHANGED -} StreamEventType; - -typedef struct -{ - StreamEventType type; - guint id; - TpHandle contact; - TpMediaStreamType media_type; - TpMediaStreamDirection direction; - TpMediaStreamPendingSend pending_send; - TpMediaStreamError error; - TpMediaStreamState state; -} StreamEvent; - -static StreamEvent * -stream_event_new (void) -{ - return g_slice_new0 (StreamEvent); -} - -static void -stream_event_destroy (StreamEvent *se) -{ - g_slice_free (StreamEvent, se); -} - -typedef struct -{ - GMainLoop *mainloop; - TpDBusDaemon *dbus; - GError *error /* statically initialized to NULL */ ; - - ExampleCallableConnectionManager *service_cm; - - TpConnectionManager *cm; - TpConnection *conn; - TpChannel *chan; - TpHandle self_handle; - - GArray *audio_request; - GArray *video_request; - GArray *invalid_request; - - GArray *stream_ids; - GArray *contacts; - GPtrArray *request_streams_return; - GPtrArray *list_streams_return; - - GSList *group_events; - gulong members_changed_detailed_id; - - GSList *stream_events; - - guint audio_stream_id; - guint video_stream_id; - GHashTable *stream_directions; - GHashTable *stream_pending_sends; - GHashTable *stream_states; -} Test; - -/* For debugging, if this test fails */ -static void test_dump_stream_events (Test *test) G_GNUC_UNUSED; - -static void test_dump_stream_events (Test *test) -{ - GSList *l; - - g_message ("Stream events (most recent first):"); - - for (l = test->stream_events; l != NULL; l = l->next) - { - StreamEvent *se = l->data; - - switch (se->type) - { - case STREAM_EVENT_ADDED: - g_message ("Stream %u added, contact#%u, media type %u", - se->id, se->contact, se->media_type); - break; - - case STREAM_EVENT_DIRECTION_CHANGED: - g_message ("Stream %u sending=%c, receiving=%c", - se->id, - (se->direction & TP_MEDIA_STREAM_DIRECTION_SEND ? 'y' - : (se->pending_send & TP_MEDIA_STREAM_PENDING_LOCAL_SEND ? - 'p' : 'n')), - (se->direction & TP_MEDIA_STREAM_DIRECTION_RECEIVE ? 'y' - : (se->pending_send & TP_MEDIA_STREAM_PENDING_REMOTE_SEND ? - 'p' : 'n')) - ); - break; - - case STREAM_EVENT_ERROR: - g_message ("Stream %u failed with error %u", se->id, se->error); - break; - - case STREAM_EVENT_REMOVED: - g_message ("Stream %u removed", se->id); - break; - - case STREAM_EVENT_STATE_CHANGED: - g_message ("Stream %u changed to state %u", se->id, se->state); - break; - } - } -} - -static void -setup (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - TpBaseConnectionManager *service_cm_as_base; - gboolean ok; - gchar *bus_name; - gchar *object_path; - GHashTable *parameters; - guint audio = TP_MEDIA_STREAM_TYPE_AUDIO; - guint video = TP_MEDIA_STREAM_TYPE_VIDEO; - guint not_a_media_type = 31337; - GQuark conn_features[] = { TP_CONNECTION_FEATURE_CONNECTED, 0 }; - - g_type_init (); - tp_debug_set_flags ("all"); - - test->audio_stream_id = G_MAXUINT; - test->video_stream_id = G_MAXUINT; - - test->stream_directions = g_hash_table_new (NULL, NULL); - test->stream_pending_sends = g_hash_table_new (NULL, NULL); - test->stream_states = g_hash_table_new (NULL, NULL); - - test->mainloop = g_main_loop_new (NULL, FALSE); - test->dbus = tp_tests_dbus_daemon_dup_or_die (); - - test->service_cm = EXAMPLE_CALLABLE_CONNECTION_MANAGER ( - tp_tests_object_new_static_class ( - EXAMPLE_TYPE_CALLABLE_CONNECTION_MANAGER, - NULL)); - g_assert (test->service_cm != NULL); - service_cm_as_base = TP_BASE_CONNECTION_MANAGER (test->service_cm); - g_assert (service_cm_as_base != NULL); - - ok = tp_base_connection_manager_register (service_cm_as_base); - g_assert (ok); - - test->cm = tp_connection_manager_new (test->dbus, "example_callable", - NULL, &test->error); - g_assert (test->cm != NULL); - tp_tests_proxy_run_until_prepared (test->cm, NULL); - - parameters = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, - (GDestroyNotify) tp_g_value_slice_free); - g_hash_table_insert (parameters, "account", - tp_g_value_slice_new_static_string ("me")); - g_hash_table_insert (parameters, "simulation-delay", - tp_g_value_slice_new_uint (0)); - - tp_cli_connection_manager_run_request_connection (test->cm, -1, - "example", parameters, &bus_name, &object_path, &test->error, NULL); - g_assert_no_error (test->error); - - test->conn = tp_connection_new (test->dbus, bus_name, object_path, - &test->error); - g_assert_no_error (test->error); - g_assert (test->conn != NULL); - tp_cli_connection_call_connect (test->conn, -1, NULL, NULL, NULL, NULL); - tp_tests_proxy_run_until_prepared (test->conn, conn_features); - - test->self_handle = tp_connection_get_self_handle (test->conn); - g_assert (test->self_handle != 0); - - test->audio_request = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); - g_array_append_val (test->audio_request, audio); - - test->video_request = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); - g_array_append_val (test->video_request, video); - - test->invalid_request = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); - g_array_append_val (test->invalid_request, not_a_media_type); - - test->stream_ids = g_array_sized_new (FALSE, FALSE, sizeof (guint), 2); - test->contacts = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); - - g_hash_table_unref (parameters); - g_free (bus_name); - g_free (object_path); -} - -static void -channel_created_cb (TpConnection *connection, - const gchar *object_path, - GHashTable *immutable_properties, - const GError *error, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - GError *new_error = NULL; - - g_assert_no_error ((GError *) error); - - test->chan = tp_channel_new_from_properties (connection, object_path, - immutable_properties, &new_error); - g_assert_no_error (new_error); - - g_main_loop_quit (test->mainloop); -} - -static void -channel_ready_cb (TpChannel *channel G_GNUC_UNUSED, - const GError *error, - gpointer user_data) -{ - Test *test = user_data; - - g_assert_no_error ((GError *) error); - g_main_loop_quit (test->mainloop); -} - -static void -requested_streams_cb (TpChannel *chan G_GNUC_UNUSED, - const GPtrArray *stream_info, - const GError *error, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - - tp_clear_boxed (TP_ARRAY_TYPE_MEDIA_STREAM_INFO_LIST, - &test->request_streams_return); - - if (error != NULL) - { - test->error = g_error_copy (error); - } - else - { - test->request_streams_return = g_boxed_copy ( - TP_ARRAY_TYPE_MEDIA_STREAM_INFO_LIST, stream_info); - } - - g_main_loop_quit (test->mainloop); -} - -static void -listed_streams_cb (TpChannel *chan G_GNUC_UNUSED, - const GPtrArray *stream_info, - const GError *error, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - - /* ListStreams shouldn't fail in any of these tests */ - g_assert_no_error ((GError *) error); - - tp_clear_boxed (TP_ARRAY_TYPE_MEDIA_STREAM_INFO_LIST, - &test->list_streams_return); - - test->list_streams_return = g_boxed_copy ( - TP_ARRAY_TYPE_MEDIA_STREAM_INFO_LIST, stream_info); - - g_main_loop_quit (test->mainloop); -} - -static void -void_cb (TpChannel *chan G_GNUC_UNUSED, - const GError *error, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - - if (error != NULL) - { - test->error = g_error_copy (error); - } - - g_main_loop_quit (test->mainloop); -} - -static void -members_changed_detailed_cb (TpChannel *chan G_GNUC_UNUSED, - const GArray *added, - const GArray *removed, - const GArray *local_pending, - const GArray *remote_pending, - GHashTable *details, - gpointer user_data) -{ - Test *test = user_data; - GroupEvent *ge = group_event_new (); - - /* just log the event */ - ge->added = tp_intset_from_array (added); - ge->removed = tp_intset_from_array (removed); - ge->local_pending = tp_intset_from_array (local_pending); - ge->remote_pending = tp_intset_from_array (remote_pending); - ge->details = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, - (GDestroyNotify) tp_g_value_slice_free); - tp_g_hash_table_update (ge->details, details, - (GBoxedCopyFunc) g_strdup, (GBoxedCopyFunc) tp_g_value_slice_dup); - - test->group_events = g_slist_prepend (test->group_events, ge); -} - -static void -stream_added_cb (TpChannel *chan G_GNUC_UNUSED, - guint id, - guint contact, - guint media_type, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - StreamEvent *se = stream_event_new (); - - se->type = STREAM_EVENT_ADDED; - se->id = id; - se->contact = contact; - se->media_type = media_type; - - test->stream_events = g_slist_prepend (test->stream_events, se); - - /* this initial state is mandated by telepathy-spec 0.17.22 */ - g_hash_table_insert (test->stream_directions, GUINT_TO_POINTER (id), - GUINT_TO_POINTER (TP_MEDIA_STREAM_DIRECTION_RECEIVE)); - g_hash_table_insert (test->stream_pending_sends, GUINT_TO_POINTER (id), - GUINT_TO_POINTER (TP_MEDIA_STREAM_PENDING_LOCAL_SEND)); - g_hash_table_insert (test->stream_states, GUINT_TO_POINTER (id), - GUINT_TO_POINTER (TP_MEDIA_STREAM_STATE_DISCONNECTED)); -} - -static void -stream_direction_changed_cb (TpChannel *chan G_GNUC_UNUSED, - guint id, - guint direction, - guint pending_flags, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - StreamEvent *se = stream_event_new (); - - se->type = STREAM_EVENT_DIRECTION_CHANGED; - se->id = id; - se->direction = direction; - se->pending_send = pending_flags; - - test->stream_events = g_slist_prepend (test->stream_events, se); - - g_hash_table_insert (test->stream_directions, GUINT_TO_POINTER (id), - GUINT_TO_POINTER (direction)); - g_hash_table_insert (test->stream_pending_sends, GUINT_TO_POINTER (id), - GUINT_TO_POINTER (pending_flags)); -} - -static void -stream_error_cb (TpChannel *chan G_GNUC_UNUSED, - guint id, - guint error, - const gchar *message, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - StreamEvent *se = stream_event_new (); - - se->type = STREAM_EVENT_ERROR; - se->id = id; - se->error = error; - - test->stream_events = g_slist_prepend (test->stream_events, se); -} - -static void -stream_removed_cb (TpChannel *chan G_GNUC_UNUSED, - guint id, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - StreamEvent *se = stream_event_new (); - - se->type = STREAM_EVENT_REMOVED; - se->id = id; - - test->stream_events = g_slist_prepend (test->stream_events, se); - - g_hash_table_remove (test->stream_directions, GUINT_TO_POINTER (id)); - g_hash_table_remove (test->stream_pending_sends, GUINT_TO_POINTER (id)); - g_hash_table_remove (test->stream_states, GUINT_TO_POINTER (id)); -} - -static void -stream_state_changed_cb (TpChannel *chan G_GNUC_UNUSED, - guint id, - guint state, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - StreamEvent *se = stream_event_new (); - - se->type = STREAM_EVENT_STATE_CHANGED; - se->id = id; - se->state = state; - - test->stream_events = g_slist_prepend (test->stream_events, se); - - g_hash_table_insert (test->stream_states, GUINT_TO_POINTER (id), - GUINT_TO_POINTER (state)); -} - -static void -test_connect_channel_signals (Test *test) -{ - test->members_changed_detailed_id = g_signal_connect (test->chan, - "group-members-changed-detailed", - G_CALLBACK (members_changed_detailed_cb), test); - - tp_cli_channel_type_streamed_media_connect_to_stream_added (test->chan, - stream_added_cb, test, NULL, NULL, NULL); - tp_cli_channel_type_streamed_media_connect_to_stream_removed (test->chan, - stream_removed_cb, test, NULL, NULL, NULL); - tp_cli_channel_type_streamed_media_connect_to_stream_error (test->chan, - stream_error_cb, test, NULL, NULL, NULL); - tp_cli_channel_type_streamed_media_connect_to_stream_direction_changed ( - test->chan, stream_direction_changed_cb, test, NULL, NULL, NULL); - tp_cli_channel_type_streamed_media_connect_to_stream_state_changed ( - test->chan, stream_state_changed_cb, test, NULL, NULL, NULL); -} - -static void -outgoing_call (Test *test, - const gchar *id) -{ - GHashTable *request = tp_asv_new ( - TP_PROP_CHANNEL_CHANNEL_TYPE, - G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, - TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, id, - NULL); - - tp_cli_connection_interface_requests_call_create_channel (test->conn, -1, - request, channel_created_cb, test, NULL, NULL); - g_hash_table_unref (request); - request = NULL; - g_main_loop_run (test->mainloop); - - tp_channel_call_when_ready (test->chan, channel_ready_cb, test); - g_main_loop_run (test->mainloop); - - test_connect_channel_signals (test); -} - -static void -maybe_pop_stream_direction (Test *test) -{ - while (test->stream_events != NULL) - { - StreamEvent *se = test->stream_events->data; - - if (se->type == STREAM_EVENT_DIRECTION_CHANGED) - { - stream_event_destroy (se); - test->stream_events = g_slist_delete_link (test->stream_events, - test->stream_events); - } - else - { - break; - } - } -} - -static void -test_basics (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - GValueArray *audio_info, *video_info; - guint not_a_stream_id = 31337; - GroupEvent *ge; - StreamEvent *se; - - outgoing_call (test, "basic-test"); - - /* At this point in the channel's lifetime, we should be the channel's - * only member */ - g_assert_cmpuint (tp_channel_group_get_self_handle (test->chan), ==, - test->self_handle); - g_assert_cmpuint (tp_channel_group_get_handle_owner (test->chan, - test->self_handle), ==, test->self_handle); - g_assert_cmpuint (tp_intset_size (tp_channel_group_get_members (test->chan)), - ==, 1); - g_assert_cmpuint (tp_intset_size ( - tp_channel_group_get_local_pending (test->chan)), ==, 0); - g_assert_cmpuint (tp_intset_size ( - tp_channel_group_get_remote_pending (test->chan)), ==, 0); - g_assert (tp_intset_is_member (tp_channel_group_get_members (test->chan), - test->self_handle)); - - /* ListStreams: we have no streams yet */ - - tp_cli_channel_type_streamed_media_call_list_streams (test->chan, -1, - listed_streams_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (test->list_streams_return->len, ==, 0); - - /* RequestStreams with bad handle must fail */ - - tp_cli_channel_type_streamed_media_call_request_streams (test->chan, -1, - test->self_handle, - test->audio_request, requested_streams_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert (test->error != NULL); - g_clear_error (&test->error); - - /* RequestStreams with bad request must fail */ - - tp_cli_channel_type_streamed_media_call_request_streams (test->chan, -1, - tp_channel_get_handle (test->chan, NULL), - test->invalid_request, requested_streams_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert (test->error != NULL); - g_clear_error (&test->error); - - /* RequestStreams */ - - tp_cli_channel_type_streamed_media_call_request_streams (test->chan, -1, - tp_channel_get_handle (test->chan, NULL), - test->audio_request, requested_streams_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (test->request_streams_return->len, ==, 1); - audio_info = g_ptr_array_index (test->request_streams_return, 0); - - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 0)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 1)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 2)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 3)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 4)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 5)); - - test->audio_stream_id = g_value_get_uint (audio_info->values + 0); - - g_assert_cmpuint (g_value_get_uint (audio_info->values + 1), ==, - tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 2), ==, - TP_MEDIA_STREAM_TYPE_AUDIO); - /* Initially, the stream is disconnected, we're willing to send to the peer, - * and we've asked the peer whether they will send to us too */ - g_assert_cmpuint (g_value_get_uint (audio_info->values + 3), ==, - TP_MEDIA_STREAM_STATE_DISCONNECTED); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 4), ==, - TP_MEDIA_STREAM_DIRECTION_SEND); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 5), ==, - TP_MEDIA_STREAM_PENDING_REMOTE_SEND); - - /* ListStreams again: now we have the audio stream */ - - tp_cli_channel_type_streamed_media_call_list_streams (test->chan, -1, - listed_streams_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (test->list_streams_return->len, ==, 1); - audio_info = g_ptr_array_index (test->list_streams_return, 0); - - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 0)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 1)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 2)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 3)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 4)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 5)); - - g_assert_cmpuint (g_value_get_uint (audio_info->values + 0), ==, - test->audio_stream_id); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 1), ==, - tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 2), ==, - TP_MEDIA_STREAM_TYPE_AUDIO); - /* Don't assert about the state or the direction here - it might already have - * changed to connected or bidirectional, respectively. */ - - /* The two oldest stream events should be the addition of the audio stream, - * and the change to the appropriate direction (StreamAdded does not signal - * stream directionality) */ - - g_assert_cmpuint (g_slist_length (test->stream_events), >=, 2); - - se = g_slist_nth_data (test->stream_events, - g_slist_length (test->stream_events) - 1); - g_assert_cmpuint (se->type, ==, STREAM_EVENT_ADDED); - g_assert_cmpuint (se->id, ==, test->audio_stream_id); - g_assert_cmpuint (se->contact, ==, tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (se->media_type, ==, TP_MEDIA_STREAM_TYPE_AUDIO); - - se = g_slist_nth_data (test->stream_events, - g_slist_length (test->stream_events) - 2); - g_assert_cmpuint (se->type, ==, STREAM_EVENT_DIRECTION_CHANGED); - g_assert_cmpuint (se->id, ==, test->audio_stream_id); - g_assert_cmpuint (se->direction, ==, TP_MEDIA_STREAM_DIRECTION_SEND); - g_assert_cmpuint (se->pending_send, ==, TP_MEDIA_STREAM_PENDING_REMOTE_SEND); - - /* Wait for the remote contact to answer, if they haven't already */ - - while (!tp_intset_is_member (tp_channel_group_get_members (test->chan), - tp_channel_get_handle (test->chan, NULL))) - g_main_context_iteration (NULL, TRUE); - - /* The self-handle and the peer are now the channel's members */ - g_assert_cmpuint (tp_channel_group_get_handle_owner (test->chan, - test->self_handle), ==, test->self_handle); - g_assert_cmpuint (tp_channel_group_get_handle_owner (test->chan, - tp_channel_get_handle (test->chan, NULL)), - ==, tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (tp_intset_size (tp_channel_group_get_members (test->chan)), - ==, 2); - g_assert_cmpuint (tp_intset_size ( - tp_channel_group_get_local_pending (test->chan)), ==, 0); - g_assert_cmpuint (tp_intset_size ( - tp_channel_group_get_remote_pending (test->chan)), ==, 0); - g_assert (tp_intset_is_member (tp_channel_group_get_members (test->chan), - test->self_handle)); - g_assert (tp_intset_is_member (tp_channel_group_get_members (test->chan), - tp_channel_get_handle (test->chan, NULL))); - - /* Look at the event log: what should have happened is that the remote - * peer was added first to remote-pending, then to members. (The event - * log is in reverse chronological order.) */ - - ge = g_slist_nth_data (test->group_events, 1); - - g_assert_cmpuint (tp_intset_size (ge->added), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->removed), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->local_pending), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->remote_pending), ==, 1); - g_assert (tp_intset_is_member (ge->remote_pending, - tp_channel_get_handle (test->chan, NULL))); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "actor", NULL), ==, - test->self_handle); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "change-reason", NULL), ==, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); - - ge = g_slist_nth_data (test->group_events, 0); - - g_assert_cmpuint (tp_intset_size (ge->added), ==, 1); - g_assert (tp_intset_is_member (ge->added, - tp_channel_get_handle (test->chan, NULL))); - g_assert_cmpuint (tp_intset_size (ge->removed), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->local_pending), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->remote_pending), ==, 0); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "actor", NULL), ==, - tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "change-reason", NULL), ==, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); - - /* Immediately the call is accepted, the remote peer accepts our proposed - * stream direction */ - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - - se = g_slist_nth_data (test->stream_events, 0); - g_assert_cmpuint (se->type, ==, STREAM_EVENT_DIRECTION_CHANGED); - g_assert_cmpuint (se->id, ==, test->audio_stream_id); - g_assert_cmpuint (se->direction, ==, - TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL); - g_assert_cmpuint (se->pending_send, ==, 0); - - test_assert_uu_hash_contains (test->stream_states, test->audio_stream_id, - TP_MEDIA_STREAM_STATE_DISCONNECTED); - test_assert_uu_hash_contains (test->stream_directions, test->audio_stream_id, - TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL); - test_assert_uu_hash_contains (test->stream_pending_sends, - test->audio_stream_id, 0); - - /* The stream should either already be connected, or become connected after - * a while */ - - while (GPOINTER_TO_UINT (g_hash_table_lookup (test->stream_states, - GUINT_TO_POINTER (test->audio_stream_id))) != - TP_MEDIA_STREAM_STATE_CONNECTED) - { - g_main_context_iteration (NULL, TRUE); - } - - /* RequestStreams again, to add a video stream */ - - tp_cli_channel_type_streamed_media_call_request_streams (test->chan, -1, - tp_channel_get_handle (test->chan, NULL), - test->video_request, requested_streams_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (test->request_streams_return->len, ==, 1); - - video_info = g_ptr_array_index (test->request_streams_return, 0); - - g_assert (G_VALUE_HOLDS_UINT (video_info->values + 0)); - g_assert (G_VALUE_HOLDS_UINT (video_info->values + 1)); - g_assert (G_VALUE_HOLDS_UINT (video_info->values + 2)); - g_assert (G_VALUE_HOLDS_UINT (video_info->values + 3)); - g_assert (G_VALUE_HOLDS_UINT (video_info->values + 4)); - g_assert (G_VALUE_HOLDS_UINT (video_info->values + 5)); - - test->video_stream_id = g_value_get_uint (video_info->values + 0); - - g_assert_cmpuint (g_value_get_uint (video_info->values + 1), ==, - tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (g_value_get_uint (video_info->values + 2), ==, - TP_MEDIA_STREAM_TYPE_VIDEO); - g_assert_cmpuint (g_value_get_uint (video_info->values + 3), ==, - TP_MEDIA_STREAM_STATE_DISCONNECTED); - g_assert_cmpuint (g_value_get_uint (video_info->values + 4), ==, - TP_MEDIA_STREAM_DIRECTION_SEND); - g_assert_cmpuint (g_value_get_uint (video_info->values + 5), ==, - TP_MEDIA_STREAM_PENDING_REMOTE_SEND); - - /* ListStreams again: now we have the video stream too */ - - tp_cli_channel_type_streamed_media_call_list_streams (test->chan, -1, - listed_streams_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (test->list_streams_return->len, ==, 2); - - /* this might be the video or the audio - we'll have to find out */ - audio_info = g_ptr_array_index (test->list_streams_return, 0); - - if (g_value_get_uint (audio_info->values + 0) == test->audio_stream_id) - { - /* our guess was right, so the other one must be the video */ - video_info = g_ptr_array_index (test->list_streams_return, 1); - } - else - { - /* we guessed wrong, compensate for that */ - video_info = audio_info; - audio_info = g_ptr_array_index (test->list_streams_return, 1); - } - - g_assert_cmpuint (g_value_get_uint (audio_info->values + 0), ==, - test->audio_stream_id); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 2), ==, - TP_MEDIA_STREAM_TYPE_AUDIO); - g_assert_cmpuint (g_value_get_uint (video_info->values + 0), ==, - test->video_stream_id); - g_assert_cmpuint (g_value_get_uint (video_info->values + 2), ==, - TP_MEDIA_STREAM_TYPE_VIDEO); - - /* After a moment, the video stream becomes connected, and the remote user - * accepts our proposed direction change. These might happen in either - * order, at least in this implementation. */ - - while (GPOINTER_TO_UINT (g_hash_table_lookup (test->stream_directions, - GUINT_TO_POINTER (test->video_stream_id))) != - TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL || - GPOINTER_TO_UINT (g_hash_table_lookup (test->stream_states, - GUINT_TO_POINTER (test->video_stream_id))) != - TP_MEDIA_STREAM_STATE_CONNECTED) - { - g_main_context_iteration (NULL, TRUE); - } - - se = g_slist_nth_data (test->stream_events, 3); - g_assert_cmpuint (se->type, ==, STREAM_EVENT_ADDED); - g_assert_cmpuint (se->id, ==, test->video_stream_id); - g_assert_cmpuint (se->contact, ==, tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (se->media_type, ==, TP_MEDIA_STREAM_TYPE_VIDEO); - - se = g_slist_nth_data (test->stream_events, 2); - g_assert_cmpuint (se->type, ==, STREAM_EVENT_DIRECTION_CHANGED); - g_assert_cmpuint (se->id, ==, test->video_stream_id); - g_assert_cmpuint (se->direction, ==, TP_MEDIA_STREAM_DIRECTION_SEND); - g_assert_cmpuint (se->pending_send, ==, TP_MEDIA_STREAM_PENDING_REMOTE_SEND); - - /* the most recent events, 0 and 1, are the direction change to bidirectional - * and the state change to connected, in arbitrary order - we already checked - * that they happened */ - - /* RemoveStreams with a bad stream ID must fail */ - - g_array_set_size (test->stream_ids, 0); - g_array_append_val (test->stream_ids, not_a_stream_id); - tp_cli_channel_type_streamed_media_call_remove_streams (test->chan, -1, - test->stream_ids, - void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert (test->error != NULL); - g_clear_error (&test->error); - - /* Drop the video stream with RemoveStreams */ - - g_array_set_size (test->stream_ids, 0); - g_array_append_val (test->stream_ids, test->video_stream_id); - tp_cli_channel_type_streamed_media_call_remove_streams (test->chan, -1, - test->stream_ids, - void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* List streams again: now there's only the audio */ - - tp_cli_channel_type_streamed_media_call_list_streams (test->chan, -1, - listed_streams_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (test->list_streams_return->len, ==, 1); - audio_info = g_ptr_array_index (test->list_streams_return, 0); - - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 0)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 1)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 2)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 3)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 4)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 5)); - - g_assert_cmpuint (g_value_get_uint (audio_info->values + 0), ==, - test->audio_stream_id); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 2), ==, - TP_MEDIA_STREAM_TYPE_AUDIO); - - /* The last event should be the removal of the video stream */ - - se = g_slist_nth_data (test->stream_events, 0); - - g_assert_cmpuint (se->type, ==, STREAM_EVENT_REMOVED); - g_assert_cmpuint (se->id, ==, test->video_stream_id); - - /* Hang up the call in the recommended way */ - - g_array_set_size (test->contacts, 0); - g_array_append_val (test->contacts, test->self_handle); - tp_cli_channel_interface_group_call_remove_members_with_reason (test->chan, - -1, test->contacts, "", TP_CHANNEL_GROUP_CHANGE_REASON_NONE, - void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* In response to hanging up, the channel closes */ - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - g_assert (tp_proxy_get_invalidated (test->chan) != NULL); - - /* The last event should be that the peer and the self-handle were both - * removed */ - ge = g_slist_nth_data (test->group_events, 0); - - g_assert_cmpuint (tp_intset_size (ge->added), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->removed), ==, 2); - g_assert (tp_intset_is_member (ge->removed, - test->self_handle)); - g_assert (tp_intset_is_member (ge->removed, - tp_channel_get_handle (test->chan, NULL))); - g_assert_cmpuint (tp_intset_size (ge->local_pending), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->remote_pending), ==, 0); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "actor", NULL), ==, - test->self_handle); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "change-reason", NULL), ==, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); - - /* The last stream event should be the removal of the audio stream */ - - se = g_slist_nth_data (test->stream_events, 0); - - g_assert_cmpuint (se->type, ==, STREAM_EVENT_REMOVED); - g_assert_cmpuint (se->id, ==, test->audio_stream_id); - - /* FIXME: untested things include: - * - * RequestStreamDirection - * StreamDirectionChanged being emitted correctly (part of RSD) - * RequestStreamDirection failing (invalid direction, stream ID) - */ -} - -static void -test_no_answer (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - GroupEvent *ge; - StreamEvent *se; - - /* This identifier contains the magic string (no answer), which means the - * example will never answer. */ - outgoing_call (test, "smcv (no answer)"); - - /* request an audio stream */ - tp_cli_channel_type_streamed_media_call_request_streams (test->chan, -1, - tp_channel_get_handle (test->chan, NULL), - test->audio_request, requested_streams_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - - maybe_pop_stream_direction (test); - g_assert_cmpuint (g_slist_length (test->stream_events), ==, 1); - se = g_slist_nth_data (test->stream_events, 0); - g_assert_cmpuint (se->type, ==, STREAM_EVENT_ADDED); - test->audio_stream_id = se->id; - - /* After the initial flurry of D-Bus messages, smcv still hasn't answered */ - g_assert_cmpuint (tp_channel_group_get_self_handle (test->chan), ==, - test->self_handle); - g_assert_cmpuint (tp_channel_group_get_handle_owner (test->chan, - test->self_handle), ==, test->self_handle); - g_assert_cmpuint (tp_intset_size (tp_channel_group_get_members (test->chan)), - ==, 1); - g_assert_cmpuint (tp_intset_size ( - tp_channel_group_get_local_pending (test->chan)), ==, 0); - g_assert_cmpuint (tp_intset_size ( - tp_channel_group_get_remote_pending (test->chan)), ==, 1); - g_assert (tp_intset_is_member (tp_channel_group_get_members (test->chan), - test->self_handle)); - g_assert (tp_intset_is_member (tp_channel_group_get_remote_pending ( - test->chan), - tp_channel_get_handle (test->chan, NULL))); - - /* assume we're never going to get an answer, and hang up */ - g_array_set_size (test->contacts, 0); - g_array_append_val (test->contacts, test->self_handle); - tp_cli_channel_interface_group_call_remove_members_with_reason (test->chan, - -1, test->contacts, "", TP_CHANNEL_GROUP_CHANGE_REASON_NONE, - void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* In response to hanging up, the channel closes */ - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - g_assert (tp_proxy_get_invalidated (test->chan) != NULL); - - /* The last event should be that the peer and the self-handle were both - * removed */ - ge = g_slist_nth_data (test->group_events, 0); - - g_assert_cmpuint (tp_intset_size (ge->added), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->removed), ==, 2); - g_assert (tp_intset_is_member (ge->removed, - test->self_handle)); - g_assert (tp_intset_is_member (ge->removed, - tp_channel_get_handle (test->chan, NULL))); - g_assert_cmpuint (tp_intset_size (ge->local_pending), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->remote_pending), ==, 0); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "actor", NULL), ==, - test->self_handle); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "change-reason", NULL), ==, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); -} - -static void -test_busy (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - GroupEvent *ge; - StreamEvent *se; - - /* This identifier contains the magic string (busy), which means the example - * will simulate rejection of the call as busy rather than accepting it. */ - outgoing_call (test, "Robot101 (busy)"); - - /* request an audio stream */ - tp_cli_channel_type_streamed_media_call_request_streams (test->chan, -1, - tp_channel_get_handle (test->chan, NULL), - test->audio_request, requested_streams_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* Wait for the remote contact to reject the call */ - while (tp_proxy_get_invalidated (test->chan) != NULL) - { - g_main_context_iteration (NULL, TRUE); - } - - /* The last stream event should be the removal of the stream */ - - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - - se = g_slist_nth_data (test->stream_events, 0); - g_assert_cmpuint (se->type, ==, STREAM_EVENT_REMOVED); - - /* The last event should be that the peer and the self-handle were both - * removed by the peer, for reason BUSY */ - ge = g_slist_nth_data (test->group_events, 0); - - g_assert_cmpuint (tp_intset_size (ge->added), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->removed), ==, 2); - g_assert (tp_intset_is_member (ge->removed, - test->self_handle)); - g_assert (tp_intset_is_member (ge->removed, - tp_channel_get_handle (test->chan, NULL))); - g_assert_cmpuint (tp_intset_size (ge->local_pending), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->remote_pending), ==, 0); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "actor", NULL), ==, - tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "change-reason", NULL), ==, - TP_CHANNEL_GROUP_CHANGE_REASON_BUSY); -} - -static void -test_terminated_by_peer (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - GroupEvent *ge; - StreamEvent *se; - - /* This contact contains the magic string "(terminate)", meaning the example - * simulates answering the call but then terminating it */ - outgoing_call (test, "The Governator (terminate)"); - - /* request an audio stream */ - tp_cli_channel_type_streamed_media_call_request_streams (test->chan, -1, - tp_channel_get_handle (test->chan, NULL), - test->audio_request, requested_streams_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* Wait for the remote contact to answer, if they haven't already */ - - while (!tp_intset_is_member (tp_channel_group_get_members (test->chan), - tp_channel_get_handle (test->chan, NULL))) - g_main_context_iteration (NULL, TRUE); - - /* After that, wait for the remote contact to end the call */ - while (tp_proxy_get_invalidated (test->chan) != NULL) - { - g_main_context_iteration (NULL, TRUE); - } - - /* The last stream event should be the removal of the stream */ - - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - - se = g_slist_nth_data (test->stream_events, 0); - g_assert_cmpuint (se->type, ==, STREAM_EVENT_REMOVED); - - /* The last event should be that the peer and the self-handle were both - * removed by the peer, for no particular reason */ - ge = g_slist_nth_data (test->group_events, 0); - - g_assert_cmpuint (tp_intset_size (ge->added), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->removed), ==, 2); - g_assert (tp_intset_is_member (ge->removed, - test->self_handle)); - g_assert (tp_intset_is_member (ge->removed, - tp_channel_get_handle (test->chan, NULL))); - g_assert_cmpuint (tp_intset_size (ge->local_pending), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->remote_pending), ==, 0); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "actor", NULL), ==, - tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "change-reason", NULL), ==, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); -} - -static void -test_terminate_via_close (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - GroupEvent *ge; - StreamEvent *se; - - outgoing_call (test, "basic-test"); - - /* request an audio stream */ - tp_cli_channel_type_streamed_media_call_request_streams (test->chan, -1, - tp_channel_get_handle (test->chan, NULL), - test->audio_request, requested_streams_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - - maybe_pop_stream_direction (test); - g_assert_cmpuint (g_slist_length (test->stream_events), ==, 1); - se = g_slist_nth_data (test->stream_events, 0); - g_assert_cmpuint (se->type, ==, STREAM_EVENT_ADDED); - test->audio_stream_id = se->id; - - /* Wait for the remote contact to answer, if they haven't already */ - - while (!tp_intset_is_member (tp_channel_group_get_members (test->chan), - tp_channel_get_handle (test->chan, NULL))) - g_main_context_iteration (NULL, TRUE); - - /* Hang up the call unceremoniously, by calling Close */ - - tp_cli_channel_call_close (test->chan, -1, void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* In response to hanging up, the channel closes */ - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - g_assert (tp_proxy_get_invalidated (test->chan) != NULL); - - /* The last event should be that the peer and the self-handle were both - * removed */ - ge = g_slist_nth_data (test->group_events, 0); - - g_assert_cmpuint (tp_intset_size (ge->added), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->removed), ==, 2); - g_assert (tp_intset_is_member (ge->removed, - test->self_handle)); - g_assert (tp_intset_is_member (ge->removed, - tp_channel_get_handle (test->chan, NULL))); - g_assert_cmpuint (tp_intset_size (ge->local_pending), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->remote_pending), ==, 0); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "actor", NULL), ==, - test->self_handle); - g_assert_cmpuint (tp_asv_get_uint32 (ge->details, "change-reason", NULL), ==, - TP_CHANNEL_GROUP_CHANGE_REASON_NONE); - - /* The last stream event should be the removal of the audio stream */ - - se = g_slist_nth_data (test->stream_events, 0); - - g_assert_cmpuint (se->type, ==, STREAM_EVENT_REMOVED); - g_assert_cmpuint (se->id, ==, test->audio_stream_id); -} - -static void -test_terminate_via_no_streams (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - GroupEvent *ge; - StreamEvent *se; - - outgoing_call (test, "basic-test"); - - /* request an audio stream */ - tp_cli_channel_type_streamed_media_call_request_streams (test->chan, -1, - tp_channel_get_handle (test->chan, NULL), - test->audio_request, requested_streams_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - - maybe_pop_stream_direction (test); - g_assert_cmpuint (g_slist_length (test->stream_events), ==, 1); - se = g_slist_nth_data (test->stream_events, 0); - g_assert_cmpuint (se->type, ==, STREAM_EVENT_ADDED); - test->audio_stream_id = se->id; - - /* Wait for the remote contact to answer, if they haven't already */ - - while (!tp_intset_is_member (tp_channel_group_get_members (test->chan), - tp_channel_get_handle (test->chan, NULL))) - g_main_context_iteration (NULL, TRUE); - - /* Close the audio stream */ - - g_array_set_size (test->stream_ids, 0); - g_array_append_val (test->stream_ids, test->audio_stream_id); - tp_cli_channel_type_streamed_media_call_remove_streams (test->chan, -1, - test->stream_ids, - void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* In response to hanging up, the channel closes */ - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - g_assert (tp_proxy_get_invalidated (test->chan) != NULL); - - /* The last event should be that the peer and the self-handle were both - * removed */ - ge = g_slist_nth_data (test->group_events, 0); - - g_assert_cmpuint (tp_intset_size (ge->added), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->removed), ==, 2); - g_assert (tp_intset_is_member (ge->removed, - test->self_handle)); - g_assert (tp_intset_is_member (ge->removed, - tp_channel_get_handle (test->chan, NULL))); - g_assert_cmpuint (tp_intset_size (ge->local_pending), ==, 0); - g_assert_cmpuint (tp_intset_size (ge->remote_pending), ==, 0); - - /* The last stream event should be the removal of the audio stream */ - - se = g_slist_nth_data (test->stream_events, 0); - - g_assert_cmpuint (se->type, ==, STREAM_EVENT_REMOVED); - g_assert_cmpuint (se->id, ==, test->audio_stream_id); -} - -/* FIXME: add a special contact who refuses to have video */ - -/* FIXME: add a special contact who asks us for video */ - -/* FIXME: add a special contact whose stream errors */ - -static void -expect_incoming_call_cb (TpConnection *conn, - const GPtrArray *channels, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - guint i; - - for (i = 0; i < channels->len; i++) - { - GValueArray *va = g_ptr_array_index (channels, i); - const gchar *object_path = g_value_get_boxed (va->values + 0); - GHashTable *properties = g_value_get_boxed (va->values + 1); - const gchar *channel_type; - - channel_type = tp_asv_get_string (properties, - TP_PROP_CHANNEL_CHANNEL_TYPE); - if (tp_strdiff (channel_type, TP_IFACE_CHANNEL_TYPE_STREAMED_MEDIA)) - { - /* don't care about this channel */ - continue; - } - - g_assert_cmpuint (tp_asv_get_uint32 (properties, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL), - ==, TP_HANDLE_TYPE_CONTACT); - g_assert_cmpint (tp_asv_get_boolean (properties, - TP_PROP_CHANNEL_REQUESTED, NULL), ==, FALSE); - - /* we only expect to receive one call */ - g_assert (test->chan == NULL); - - /* save the channel */ - test->chan = tp_channel_new_from_properties (conn, object_path, - properties, &test->error); - g_assert_no_error (test->error); - } -} - -/* In this example connection manager, every time the presence status changes - * to available or the message changes, an incoming call is simulated. */ -static void -trigger_incoming_call (Test *test, - const gchar *message, - const gchar *expected_caller) -{ - TpProxySignalConnection *new_channels_sig; - - tp_cli_connection_interface_simple_presence_run_set_presence (test->conn, -1, - "away", "preparing for a test", &test->error, NULL); - g_assert_no_error (test->error); - - new_channels_sig = - tp_cli_connection_interface_requests_connect_to_new_channels (test->conn, - expect_incoming_call_cb, test, NULL, NULL, &test->error); - g_assert_no_error (test->error); - - tp_cli_connection_interface_simple_presence_run_set_presence (test->conn, -1, - "available", message, &test->error, NULL); - g_assert_no_error (test->error); - - /* wait for the call to happen if it hasn't already */ - while (test->chan == NULL) - { - g_main_context_iteration (NULL, TRUE); - } - - tp_proxy_signal_connection_disconnect (new_channels_sig); - - tp_channel_call_when_ready (test->chan, channel_ready_cb, test); - g_main_loop_run (test->mainloop); - test_connect_channel_signals (test); -} - -static void -test_incoming (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - GValueArray *audio_info; - - trigger_incoming_call (test, "call me?", "caller"); - - /* At this point in the channel's lifetime, we should be in local-pending, - * with the caller in members */ - g_assert_cmpuint (tp_channel_group_get_self_handle (test->chan), ==, - test->self_handle); - g_assert_cmpuint (tp_channel_group_get_handle_owner (test->chan, - test->self_handle), ==, test->self_handle); - g_assert_cmpuint (tp_intset_size (tp_channel_group_get_members (test->chan)), - ==, 1); - g_assert_cmpuint (tp_intset_size ( - tp_channel_group_get_local_pending (test->chan)), ==, 1); - g_assert_cmpuint (tp_intset_size ( - tp_channel_group_get_remote_pending (test->chan)), ==, 0); - g_assert (tp_intset_is_member ( - tp_channel_group_get_local_pending (test->chan), test->self_handle)); - g_assert (tp_intset_is_member (tp_channel_group_get_members (test->chan), - tp_channel_get_handle (test->chan, NULL))); - - /* ListStreams: we have an audio stream */ - - tp_cli_channel_type_streamed_media_call_list_streams (test->chan, -1, - listed_streams_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (test->list_streams_return->len, ==, 1); - audio_info = g_ptr_array_index (test->list_streams_return, 0); - - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 0)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 1)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 2)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 3)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 4)); - g_assert (G_VALUE_HOLDS_UINT (audio_info->values + 5)); - - test->audio_stream_id = g_value_get_uint (audio_info->values + 0); - - g_assert_cmpuint (g_value_get_uint (audio_info->values + 1), ==, - tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 1), ==, - tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 2), ==, - TP_MEDIA_STREAM_TYPE_AUDIO); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 3), ==, - TP_MEDIA_STREAM_STATE_DISCONNECTED); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 4), ==, - TP_MEDIA_STREAM_DIRECTION_RECEIVE); - g_assert_cmpuint (g_value_get_uint (audio_info->values + 5), ==, - TP_MEDIA_STREAM_PENDING_LOCAL_SEND); - - /* We already had the stream when the channel was created, so we'll have - * missed the StreamAdded signal */ - g_hash_table_insert (test->stream_directions, - GUINT_TO_POINTER (test->audio_stream_id), - GUINT_TO_POINTER (TP_MEDIA_STREAM_DIRECTION_RECEIVE)); - g_hash_table_insert (test->stream_pending_sends, - GUINT_TO_POINTER (test->audio_stream_id), - GUINT_TO_POINTER (TP_MEDIA_STREAM_PENDING_LOCAL_SEND)); - g_hash_table_insert (test->stream_states, - GUINT_TO_POINTER (test->audio_stream_id), - GUINT_TO_POINTER (TP_MEDIA_STREAM_STATE_DISCONNECTED)); - - /* Accept the call */ - g_array_set_size (test->contacts, 0); - g_array_append_val (test->contacts, test->self_handle); - tp_cli_channel_interface_group_call_add_members (test->chan, - -1, test->contacts, "", void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* The self-handle and the peer are now the channel's members */ - g_assert_cmpuint (tp_channel_group_get_handle_owner (test->chan, - test->self_handle), ==, test->self_handle); - g_assert_cmpuint (tp_channel_group_get_handle_owner (test->chan, - tp_channel_get_handle (test->chan, NULL)), - ==, tp_channel_get_handle (test->chan, NULL)); - g_assert_cmpuint (tp_intset_size (tp_channel_group_get_members (test->chan)), - ==, 2); - g_assert_cmpuint (tp_intset_size ( - tp_channel_group_get_local_pending (test->chan)), ==, 0); - g_assert_cmpuint (tp_intset_size ( - tp_channel_group_get_remote_pending (test->chan)), ==, 0); - g_assert (tp_intset_is_member (tp_channel_group_get_members (test->chan), - test->self_handle)); - g_assert (tp_intset_is_member (tp_channel_group_get_members (test->chan), - tp_channel_get_handle (test->chan, NULL))); - - /* Immediately the call is accepted, we accept the remote peer's proposed - * stream direction */ - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - - test_assert_uu_hash_contains (test->stream_directions, test->audio_stream_id, - TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL); - test_assert_uu_hash_contains (test->stream_pending_sends, - test->audio_stream_id, 0); - - /* The stream should either already be connected, or become connected after - * a while */ - while (GPOINTER_TO_UINT (g_hash_table_lookup (test->stream_states, - GUINT_TO_POINTER (test->audio_stream_id))) == - TP_MEDIA_STREAM_STATE_DISCONNECTED) - { - g_main_context_iteration (NULL, TRUE); - } - - test_assert_uu_hash_contains (test->stream_states, test->audio_stream_id, - TP_MEDIA_STREAM_STATE_CONNECTED); - - /* Hang up the call */ - g_array_set_size (test->contacts, 0); - g_array_append_val (test->contacts, test->self_handle); - tp_cli_channel_interface_group_call_remove_members_with_reason (test->chan, - -1, test->contacts, "", TP_CHANNEL_GROUP_CHANGE_REASON_NONE, - void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* In response to hanging up, the channel closes */ - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - g_assert (tp_proxy_get_invalidated (test->chan) != NULL); -} - -static void -teardown (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - tp_cli_connection_run_disconnect (test->conn, -1, &test->error, NULL); - g_assert_no_error (test->error); - - if (test->members_changed_detailed_id != 0) - { - g_signal_handler_disconnect (test->chan, - test->members_changed_detailed_id); - } - - g_array_unref (test->audio_request); - g_array_unref (test->video_request); - g_array_unref (test->invalid_request); - g_array_unref (test->stream_ids); - g_array_unref (test->contacts); - - g_slist_foreach (test->group_events, (GFunc) group_event_destroy, NULL); - g_slist_free (test->group_events); - - g_slist_foreach (test->stream_events, (GFunc) stream_event_destroy, NULL); - g_slist_free (test->stream_events); - - tp_clear_boxed (TP_ARRAY_TYPE_MEDIA_STREAM_INFO_LIST, - &test->list_streams_return); - tp_clear_boxed (TP_ARRAY_TYPE_MEDIA_STREAM_INFO_LIST, - &test->request_streams_return); - - g_hash_table_unref (test->stream_directions); - g_hash_table_unref (test->stream_pending_sends); - g_hash_table_unref (test->stream_states); - - tp_clear_object (&test->chan); - tp_clear_object (&test->conn); - tp_clear_object (&test->cm); - - tp_clear_object (&test->service_cm); - - /* make sure any pending things have happened */ - tp_tests_proxy_run_until_dbus_queue_processed (test->dbus); - - tp_clear_object (&test->dbus); - g_main_loop_unref (test->mainloop); - test->mainloop = NULL; -} - -int -main (int argc, - char **argv) -{ - tp_tests_init (&argc, &argv); - g_test_bug_base ("http://bugs.freedesktop.org/show_bug.cgi?id="); - - g_test_add ("/callable/basics", Test, NULL, setup, test_basics, teardown); - g_test_add ("/callable/busy", Test, NULL, setup, test_busy, teardown); - g_test_add ("/callable/no-answer", Test, NULL, setup, test_no_answer, - teardown); - g_test_add ("/callable/terminated-by-peer", Test, NULL, setup, - test_terminated_by_peer, teardown); - g_test_add ("/callable/terminate-via-close", Test, NULL, setup, - test_terminate_via_close, teardown); - g_test_add ("/callable/terminate-via-no-streams", Test, NULL, setup, - test_terminate_via_no_streams, teardown); - g_test_add ("/callable/incoming", Test, NULL, setup, test_incoming, - teardown); - - return g_test_run (); -} diff -Nru telepathy-glib-0.17.4/tests/dbus/call-cancellation.c telepathy-glib-0.17.5/tests/dbus/call-cancellation.c --- telepathy-glib-0.17.4/tests/dbus/call-cancellation.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/call-cancellation.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/call-channel.c telepathy-glib-0.17.5/tests/dbus/call-channel.c --- telepathy-glib-0.17.4/tests/dbus/call-channel.c 1970-01-01 00:00:00.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/call-channel.c 2012-02-20 16:56:41.000000000 +0000 @@ -0,0 +1,1088 @@ +/* Tests for TpCallChannel, TpCallContent and TpCallStream + * + * Copyright © 2009-2011 Collabora Ltd. + * Copyright © 2009 Nokia Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include + +#include "examples/cm/call/cm.h" +#include "examples/cm/call/conn.h" +#include "examples/cm/call/call-channel.h" +#include "examples/cm/call/call-stream.h" + +#include "tests/lib/util.h" + +typedef struct +{ + GMainLoop *mainloop; + TpDBusDaemon *dbus; + GError *error /* statically initialized to NULL */ ; + guint wait_count; + + ExampleCallConnectionManager *service_cm; + + TpSimpleClientFactory *factory; + TpConnectionManager *cm; + TpConnection *conn; + TpChannel *chan; + TpCallChannel *call_chan; + TpHandle self_handle; + TpHandle peer_handle; + + GArray *audio_request; + GArray *video_request; + GArray *invalid_request; + + GArray *stream_ids; + GArray *contacts; + + TpCallContent *added_content; +} Test; + +static void +setup (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + TpBaseConnectionManager *service_cm_as_base; + gboolean ok; + gchar *bus_name; + gchar *object_path; + GHashTable *parameters; + guint audio = TP_MEDIA_STREAM_TYPE_AUDIO; + guint video = TP_MEDIA_STREAM_TYPE_VIDEO; + guint not_a_media_type = 31337; + GQuark conn_features[] = { TP_CONNECTION_FEATURE_CONNECTED, 0 }; + + g_type_init (); + tp_debug_set_flags ("all"); + + test->mainloop = g_main_loop_new (NULL, FALSE); + test->dbus = tp_tests_dbus_daemon_dup_or_die (); + + test->service_cm = EXAMPLE_CALL_CONNECTION_MANAGER ( + tp_tests_object_new_static_class ( + EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, + NULL)); + g_assert (test->service_cm != NULL); + service_cm_as_base = TP_BASE_CONNECTION_MANAGER (test->service_cm); + g_assert (service_cm_as_base != NULL); + + ok = tp_base_connection_manager_register (service_cm_as_base); + g_assert (ok); + + test->cm = tp_connection_manager_new (test->dbus, "example_call", + NULL, &test->error); + g_assert (test->cm != NULL); + tp_tests_proxy_run_until_prepared (test->cm, NULL); + + parameters = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, + (GDestroyNotify) tp_g_value_slice_free); + g_hash_table_insert (parameters, "account", + tp_g_value_slice_new_static_string ("me")); + g_hash_table_insert (parameters, "simulation-delay", + tp_g_value_slice_new_uint (0)); + + tp_cli_connection_manager_run_request_connection (test->cm, -1, + "example", parameters, &bus_name, &object_path, &test->error, NULL); + g_assert_no_error (test->error); + + test->factory = (TpSimpleClientFactory *) + tp_automatic_client_factory_new (test->dbus); + tp_simple_client_factory_add_channel_features_varargs (test->factory, + TP_CHANNEL_FEATURE_CONTACTS, + 0); + + test->conn = tp_simple_client_factory_ensure_connection (test->factory, + object_path, NULL, &test->error); + g_assert_no_error (test->error); + g_assert (test->conn != NULL); + tp_cli_connection_call_connect (test->conn, -1, NULL, NULL, NULL, NULL); + tp_tests_proxy_run_until_prepared (test->conn, conn_features); + + test->self_handle = tp_connection_get_self_handle (test->conn); + g_assert (test->self_handle != 0); + + test->audio_request = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); + g_array_append_val (test->audio_request, audio); + + test->video_request = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); + g_array_append_val (test->video_request, video); + + test->invalid_request = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); + g_array_append_val (test->invalid_request, not_a_media_type); + + test->stream_ids = g_array_sized_new (FALSE, FALSE, sizeof (guint), 2); + + g_hash_table_unref (parameters); + g_free (bus_name); + g_free (object_path); +} + +static void +channel_created_cb (TpConnection *connection, + const gchar *object_path, + GHashTable *immutable_properties, + const GError *error, + gpointer user_data, + GObject *weak_object G_GNUC_UNUSED) +{ + Test *test = user_data; + GError *new_error = NULL; + + g_assert_no_error ((GError *) error); + + test->chan = tp_simple_client_factory_ensure_channel (test->factory, + connection, object_path, immutable_properties, &new_error); + g_assert_no_error (new_error); + + g_assert (TP_IS_CALL_CHANNEL (test->chan)); + test->call_chan = (TpCallChannel *) test->chan; + + test->peer_handle = tp_channel_get_handle (test->chan, NULL); + + g_main_loop_quit (test->mainloop); +} + +static void +outgoing_call (Test *test, + const gchar *id, + gboolean initial_audio, + gboolean initial_video) +{ + GHashTable *request = tp_asv_new ( + TP_PROP_CHANNEL_CHANNEL_TYPE, + G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_CALL, + TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, + TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, id, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, + G_TYPE_BOOLEAN, initial_audio, + TP_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, + G_TYPE_BOOLEAN, initial_video, + NULL); + + tp_cli_connection_interface_requests_call_create_channel (test->conn, -1, + request, channel_created_cb, test, NULL, NULL); + g_hash_table_unref (request); + request = NULL; + g_main_loop_run (test->mainloop); + + tp_tests_proxy_run_until_prepared (test->chan, NULL); +} + +static void +assert_call_properties (TpCallChannel *channel, + TpCallState call_state, + TpHandle actor, + TpCallStateChangeReason reason, + const gchar *dbus_reason, + gboolean check_call_flags, TpCallFlags call_flags, + gboolean check_initials, gboolean initial_audio, gboolean initial_video) +{ + TpCallState state; + TpCallFlags flags; + GHashTable *details; + TpCallStateReason *r; + + state = tp_call_channel_get_state (channel, &flags, &details, &r); + + /* FIXME: details */ + g_assert_cmpuint (state, ==, call_state); + g_assert_cmpuint (r->actor, ==, actor); + g_assert_cmpuint (r->reason, ==, reason); + g_assert_cmpstr (r->dbus_reason, ==, dbus_reason); + if (check_call_flags) + g_assert_cmpuint (flags, ==, call_flags); + + /* Hard-coded properties */ + g_assert_cmpint (tp_call_channel_has_hardware_streaming (channel), ==, FALSE); + g_assert_cmpint (tp_call_channel_has_mutable_contents (channel), ==, TRUE); + + if (check_initials) + { + const gchar *initial_audio_name; + const gchar *initial_video_name; + + g_assert_cmpint (tp_call_channel_has_initial_audio (channel, + &initial_audio_name), ==, initial_audio); + g_assert_cmpint (tp_call_channel_has_initial_video (channel, + &initial_video_name), ==, initial_video); + g_assert_cmpstr (initial_audio_name, ==, initial_audio ? "audio" : NULL); + g_assert_cmpstr (initial_video_name, ==, initial_video ? "video" : NULL); + } +} + +static void +assert_content_properties (TpCallContent *content, + TpMediaStreamType type, + TpCallContentDisposition disposition) +{ + g_assert_cmpstr (tp_call_content_get_name (content), !=, NULL); + g_assert_cmpuint (tp_call_content_get_media_type (content), ==, type); + g_assert_cmpuint (tp_call_content_get_disposition (content), ==, disposition); +} + +static void +close_cb (GObject *object, + GAsyncResult *result, + gpointer user_data) +{ + Test *test = user_data; + + g_clear_error (&test->error); + + tp_channel_close_finish (test->chan, result, &test->error); + g_main_loop_quit (test->mainloop); +} + +static void +assert_ended_and_run_close (Test *test, + TpHandle expected_actor, + TpCallStateChangeReason expected_reason, + const gchar *expected_error) +{ + GPtrArray *contents; + + tp_tests_proxy_run_until_dbus_queue_processed (test->conn); + + /* In response to whatever we just did, the call ends... */ + assert_call_properties (test->call_chan, + TP_CALL_STATE_ENDED, + expected_actor, + expected_reason, + expected_error, + FALSE, 0, /* ignore call flags */ + FALSE, FALSE, FALSE); /* ignore initial audio/video */ + + /* ... which means there are no contents ... */ + contents = tp_call_channel_get_contents (test->call_chan); + g_assert_cmpuint (contents->len, ==, 0); + + /* ... but the channel doesn't close */ + g_assert (tp_proxy_get_invalidated (test->chan) == NULL); + + /* When we call Close it finally closes */ + tp_channel_close_async (test->chan, close_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + tp_tests_proxy_run_until_dbus_queue_processed (test->conn); + g_assert (tp_proxy_get_invalidated (test->chan) != NULL); +} + +static void +run_until_answered_cb (TpCallChannel *channel, + TpCallState state, + TpCallFlags flags, + TpCallStateReason *reason, + GHashTable *details, + Test *test) +{ + if (state != TP_CALL_STATE_INITIALISED) + g_main_loop_quit (test->mainloop); +} + +static void +run_until_answered (Test *test) +{ + TpCallState state; + guint id; + + state = tp_call_channel_get_state (test->call_chan, NULL, NULL, NULL); + if (state != TP_CALL_STATE_INITIALISED) + return; + + id = g_signal_connect (test->call_chan, "state-changed", + G_CALLBACK (run_until_answered_cb), test); + g_main_loop_run (test->mainloop); + g_signal_handler_disconnect (test->call_chan, id); +} + +static void +run_until_ended_cb (TpCallChannel *channel, + TpCallState state, + TpCallFlags flags, + TpCallStateReason *reason, + GHashTable *details, + Test *test) +{ + if (state == TP_CALL_STATE_ENDED) + g_main_loop_quit (test->mainloop); +} + +static void +run_until_ended (Test *test) +{ + TpCallState state; + guint id; + + state = tp_call_channel_get_state (test->call_chan, NULL, NULL, NULL); + if (state == TP_CALL_STATE_ENDED) + return; + + id = g_signal_connect (test->call_chan, "state-changed", + G_CALLBACK (run_until_ended_cb), test); + g_main_loop_run (test->mainloop); + g_signal_handler_disconnect (test->call_chan, id); +} + +static void +run_until_active_cb (TpCallChannel *channel, + TpCallState state, + TpCallFlags flags, + TpCallStateReason *reason, + GHashTable *details, + Test *test) +{ + if (state == TP_CALL_STATE_ACTIVE) + g_main_loop_quit (test->mainloop); +} + +static void +run_until_active_get_all_cb (TpProxy *proxy, + GHashTable *properties, + const GError *error, + gpointer user_data, + GObject *weak_object) +{ + GPtrArray *endpoints; + guint i; + + g_assert_no_error (error); + + tp_asv_dump (properties); + + endpoints = tp_asv_get_boxed (properties, "Endpoints", + TP_ARRAY_TYPE_OBJECT_PATH_LIST); + g_assert (endpoints != NULL); + g_assert (endpoints->len > 0); + + for (i = 0; i < endpoints->len; i++) + { + const gchar *object_path = g_ptr_array_index (endpoints, i); + TpProxy *endpoint; + + endpoint = g_object_new (TP_TYPE_PROXY, + "dbus-daemon", tp_proxy_get_dbus_daemon (proxy), + "bus-name", tp_proxy_get_bus_name (proxy), + "object-path", object_path, + NULL); + tp_proxy_add_interface_by_id (endpoint, + TP_IFACE_QUARK_CALL_STREAM_ENDPOINT); + + tp_cli_call_stream_endpoint_call_set_endpoint_state (endpoint, + -1, TP_STREAM_COMPONENT_DATA, + TP_STREAM_ENDPOINT_STATE_FULLY_CONNECTED, + NULL, NULL, NULL, NULL); + + g_object_unref (endpoint); + } +} + +static void +run_until_active_stream_prepared_cb (GObject *stream, + GAsyncResult *res, + gpointer test) +{ + GError *error = NULL; + + if (!tp_proxy_prepare_finish (stream, res, &error)) + { + g_error ("error %s", error->message); + } + + g_assert (tp_proxy_has_interface_by_id (stream, + TP_IFACE_QUARK_CALL_STREAM_INTERFACE_MEDIA)); + + tp_cli_dbus_properties_call_get_all (stream, -1, + TP_IFACE_CALL_STREAM_INTERFACE_MEDIA, + run_until_active_get_all_cb, test, NULL, + NULL); +} + + +static void +run_until_active (Test *test) +{ + GPtrArray *contents; + guint i, j; + guint id; + + if (tp_call_channel_get_state (test->call_chan, NULL, NULL, NULL) == + TP_CALL_STATE_ACTIVE) + return; + + g_assert (tp_call_channel_get_state (test->call_chan, NULL, NULL, NULL) == + TP_CALL_STATE_ACCEPTED); + + contents = tp_call_channel_get_contents (test->call_chan); + for (i = 0; i < contents->len; i++) + { + TpCallContent *content = g_ptr_array_index (contents, i); + GPtrArray *streams; + + streams = tp_call_content_get_streams (content); + for (j = 0; j < streams->len; j++) + { + TpCallStream *stream = g_ptr_array_index (streams, j); + + tp_proxy_prepare_async (stream, NULL, + run_until_active_stream_prepared_cb, test); + } + } + + + id = g_signal_connect (test->call_chan, "state-changed", + G_CALLBACK (run_until_active_cb), test); + g_main_loop_run (test->mainloop); + g_signal_handler_disconnect (test->call_chan, id); +} + +static void +accept_cb (GObject *object, + GAsyncResult *result, + gpointer user_data) +{ + Test *test = user_data; + + g_clear_error (&test->error); + + tp_call_channel_accept_finish (test->call_chan, result, &test->error); + g_main_loop_quit (test->mainloop); +} + +static void +run_until_accepted_cb (TpCallChannel *channel, + TpCallState state, + TpCallFlags flags, + TpCallStateReason *reason, + GHashTable *details, + Test *test) +{ + if (state == TP_CALL_STATE_ACCEPTED) + g_main_loop_quit (test->mainloop); +} + +static void +run_until_accepted (Test *test) +{ + guint id; + + tp_call_channel_accept_async (test->call_chan, NULL, NULL); + + id = g_signal_connect (test->call_chan, "state-changed", + G_CALLBACK (run_until_accepted_cb), test); + g_main_loop_run (test->mainloop); + g_signal_handler_disconnect (test->call_chan, id); +} + +static void +hangup_cb (GObject *object, + GAsyncResult *result, + gpointer user_data) +{ + Test *test = user_data; + + g_clear_error (&test->error); + + tp_call_channel_hangup_finish (test->call_chan, result, &test->error); + g_main_loop_quit (test->mainloop); +} + +static void +add_content_cb (GObject *object, + GAsyncResult *result, + gpointer user_data) +{ + Test *test = user_data; + + g_clear_error (&test->error); + tp_clear_object (&test->added_content); + + test->added_content = tp_call_channel_add_content_finish (test->call_chan, + result, &test->error); + g_main_loop_quit (test->mainloop); +} + +/* +static void +content_remove_cb (GObject *object, + GAsyncResult *result, + gpointer user_data) +{ + Test *test = user_data; + + g_clear_error (&test->error); + + tp_call_content_remove_finish ((TpCallContent *) object, + result, &test->error); + g_main_loop_quit (test->mainloop); +} +*/ + +static void +test_basics (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + GPtrArray *contents; + GPtrArray *streams; + TpCallContent *audio_content; + TpCallContent *video_content; + TpCallStream *audio_stream; + TpCallStream *video_stream; + GHashTable *remote_members; + gpointer v; + + outgoing_call (test, "basic-test", TRUE, FALSE); + assert_call_properties (test->call_chan, + TP_CALL_STATE_PENDING_INITIATOR, 0, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + TRUE, 0, /* call flags */ + TRUE, TRUE, FALSE); /* initial audio/video must be what we said */ + + /* We have one audio content but it's not active just yet */ + + contents = tp_call_channel_get_contents (test->call_chan); + g_assert_cmpuint (contents->len, ==, 1); + + audio_content = g_ptr_array_index (contents, 0); + tp_tests_proxy_run_until_prepared (audio_content, NULL); + assert_content_properties (audio_content, + TP_MEDIA_STREAM_TYPE_AUDIO, + TP_CALL_CONTENT_DISPOSITION_INITIAL); + + streams = tp_call_content_get_streams (audio_content); + g_assert_cmpuint (streams->len, ==, 1); + + audio_stream = g_ptr_array_index (streams, 0); + tp_tests_proxy_run_until_prepared (audio_stream, NULL); + remote_members = tp_call_stream_get_remote_members (audio_stream); + g_assert_cmpuint (g_hash_table_size (remote_members), ==, 1); + v = g_hash_table_lookup (remote_members, + tp_channel_get_target_contact (test->chan)); + g_assert_cmpuint (GPOINTER_TO_UINT (v), ==, + TP_SENDING_STATE_PENDING_SEND); + + g_assert_cmpuint (tp_call_stream_get_local_sending_state (audio_stream), + ==, TP_SENDING_STATE_SENDING); + + /* OK, that looks good. Actually make the call */ + tp_call_channel_accept_async (test->call_chan, accept_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + + /* Calling Accept again makes no sense, but mustn't crash */ + tp_call_channel_accept_async (test->call_chan, accept_cb, test); + g_main_loop_run (test->mainloop); + g_assert_error (test->error, TP_ERRORS, TP_ERROR_NOT_AVAILABLE); + g_clear_error (&test->error); + + /* Wait for the remote contact to answer, if they haven't already */ + run_until_answered (test); + + /* Calling Accept again makes no sense, but mustn't crash */ + tp_call_channel_accept_async (test->call_chan, accept_cb, test); + g_main_loop_run (test->mainloop); + g_assert_error (test->error, TP_ERRORS, TP_ERROR_NOT_AVAILABLE); + g_clear_error (&test->error); + + /* Check the call state. */ + assert_call_properties (test->call_chan, + TP_CALL_STATE_ACCEPTED, tp_channel_get_handle (test->chan, NULL), + TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", + TRUE, 0, /* call flags */ + FALSE, FALSE, FALSE); /* don't care about initial audio/video */ + + /* Connecting endpoints makes state become active */ + run_until_active (test); + assert_call_properties (test->call_chan, + TP_CALL_STATE_ACTIVE, test->self_handle, + TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", + TRUE, 0, /* call flags */ + FALSE, FALSE, FALSE); /* don't care about initial audio/video */ + + /* There's still one content */ + contents = tp_call_channel_get_contents (test->call_chan); + g_assert_cmpuint (contents->len, ==, 1); + g_assert (g_ptr_array_index (contents, 0) == audio_content); + + /* Other contact is sending now */ + remote_members = tp_call_stream_get_remote_members (audio_stream); + g_assert_cmpuint (g_hash_table_size (remote_members), == , 1); + v = g_hash_table_lookup (remote_members, + tp_channel_get_target_contact (test->chan)); + g_assert_cmpuint (GPOINTER_TO_UINT (v), ==, TP_SENDING_STATE_SENDING); + g_assert_cmpuint (tp_call_stream_get_local_sending_state (audio_stream), + ==, TP_SENDING_STATE_SENDING); + + /* AddContent with bad content-type must fail */ + + tp_call_channel_add_content_async (test->call_chan, + "", 31337, TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL, + add_content_cb, test); + g_main_loop_run (test->mainloop); + g_assert (test->error != NULL); + g_assert (test->added_content == NULL); + g_clear_error (&test->error); + + /* AddContent with bad initial-direction must fail */ + + tp_call_channel_add_content_async (test->call_chan, + "", TP_MEDIA_STREAM_TYPE_AUDIO, 31337, + add_content_cb, test); + g_main_loop_run (test->mainloop); + g_assert (test->error != NULL); + g_assert (test->added_content == NULL); + g_clear_error (&test->error); + + /* AddContent again, to add a video stream */ + + tp_call_channel_add_content_async (test->call_chan, + "", TP_MEDIA_STREAM_TYPE_VIDEO, TP_MEDIA_STREAM_DIRECTION_BIDIRECTIONAL, + add_content_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + + g_assert (test->added_content != NULL); + video_content = test->added_content; + tp_tests_proxy_run_until_prepared (video_content, NULL); + + /* There are two Contents, because now we have the video content too */ + contents = tp_call_channel_get_contents (test->call_chan); + g_assert_cmpuint (contents->len, ==, 2); + + /* they could be either way round */ + if (g_ptr_array_index (contents, 0) == audio_content) + { + g_assert (g_ptr_array_index (contents, 1) == video_content); + } + else + { + g_assert (g_ptr_array_index (contents, 0) == video_content); + g_assert (g_ptr_array_index (contents, 1) == audio_content); + } + + assert_content_properties (video_content, + TP_MEDIA_STREAM_TYPE_VIDEO, + TP_CALL_CONTENT_DISPOSITION_NONE); + + streams = tp_call_content_get_streams (video_content); + g_assert (streams != NULL); + g_assert_cmpuint (streams->len, ==, 1); + + video_stream = g_ptr_array_index (streams, 0); + tp_tests_proxy_run_until_prepared (video_stream, NULL); + + g_assert_cmpuint (tp_call_stream_get_local_sending_state (video_stream), + ==, TP_SENDING_STATE_SENDING); + + remote_members = tp_call_stream_get_remote_members (video_stream); + g_assert_cmpuint (g_hash_table_size (remote_members), ==, 1); + v = g_hash_table_lookup (remote_members, + tp_channel_get_target_contact (test->chan)); + + /* After a moment, the video stream becomes connected, and the remote user + * accepts our proposed direction change. These might happen in either + * order, at least in this implementation. */ + + if (GPOINTER_TO_UINT (v) != TP_SENDING_STATE_SENDING) + g_assert_cmpuint (GPOINTER_TO_UINT (v), ==, + TP_SENDING_STATE_PENDING_SEND); + +#if 0 + /* FIXME: Content.Remove() is not implemented in example CM */ + + /* Drop the video content */ + + tp_call_content_remove_async (video_content, + content_remove_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + + /* Get contents again: now there's only the audio */ + + contents = tp_call_channel_get_contents (test->call_chan); + g_assert_cmpuint (contents->len, ==, 1); + g_assert (g_ptr_array_index (contents, 0) == audio_content); +#endif + + /* Hang up the call in the recommended way */ + + tp_call_channel_hangup_async (test->call_chan, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", "", + hangup_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + assert_ended_and_run_close (test, test->self_handle, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, + ""); +} + +static void +test_no_answer (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + /* This identifier contains the magic string (no answer), which means the + * example will never answer. */ + outgoing_call (test, "smcv (no answer)", TRUE, FALSE); + + tp_call_channel_accept_async (test->call_chan, accept_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + + /* After the initial flurry of D-Bus messages, smcv still hasn't answered */ + tp_tests_proxy_run_until_dbus_queue_processed (test->conn); + + assert_call_properties (test->call_chan, + TP_CALL_STATE_INITIALISED, test->self_handle, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + TRUE, 0, /* call flags */ + TRUE, TRUE, FALSE); /* initial audio/video must be TRUE, FALSE */ + + /* assume we're never going to get an answer, and hang up */ + tp_call_channel_hangup_async (test->call_chan, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", "", + hangup_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + + assert_ended_and_run_close (test, test->self_handle, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, + ""); +} + +static void +test_busy (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + /* This identifier contains the magic string (busy), which means the example + * will simulate rejection of the call as busy rather than accepting it. */ + outgoing_call (test, "Robot101 (busy)", TRUE, FALSE); + + tp_call_channel_accept_async (test->call_chan, accept_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + + /* Wait for the remote contact to end the call as busy */ + run_until_ended (test); + assert_ended_and_run_close (test, tp_channel_get_handle (test->chan, NULL), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, + TP_ERROR_STR_BUSY); +} + +static void +test_terminated_by_peer (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + /* This contact contains the magic string "(terminate)", meaning the example + * simulates answering the call but then terminating it */ + outgoing_call (test, "The Governator (terminate)", TRUE, TRUE); + + tp_call_channel_accept_async (test->call_chan, accept_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + + /* Wait for the remote contact to answer, if they haven't already */ + + run_until_answered (test); + + /* After that, the remote contact immediately ends the call */ + run_until_ended (test); + assert_ended_and_run_close (test, tp_channel_get_handle (test->chan, NULL), + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, + ""); +} + +static void +test_terminate_via_close (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + outgoing_call (test, "basic-test", FALSE, TRUE); + + tp_call_channel_accept_async (test->call_chan, accept_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + + /* Wait for the remote contact to answer, if they haven't already */ + + run_until_answered (test); + + assert_call_properties (test->call_chan, + TP_CALL_STATE_ACCEPTED, test->peer_handle, + TP_CALL_STATE_CHANGE_REASON_PROGRESS_MADE, "", + TRUE, 0, /* call flags */ + TRUE, FALSE, TRUE); /* initial audio/video must be FALSE, TRUE */ + + /* Terminate the call unceremoniously, by calling Close. This is not a + * graceful hangup; rather, it's what the ChannelDispatcher would do to + * signal a client crash, undispatchability, or whatever */ + + tp_channel_close_async (test->chan, close_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + + /* In response to termination, the channel does genuinely close */ + tp_tests_proxy_run_until_dbus_queue_processed (test->conn); + g_assert (tp_proxy_get_invalidated (test->chan) != NULL); + + /* FIXME: when we hook up signals, check for expected call state + * transition before invalidation */ +} + +/* FIXME: try removing the last stream, it should fail */ + +/* FIXME: add a special contact who refuses to have video */ + +/* FIXME: add a special contact who asks us for video */ + +/* FIXME: add a special contact whose stream errors */ + +static void +expect_incoming_call_cb (TpConnection *conn, + const GPtrArray *channels, + gpointer user_data, + GObject *weak_object G_GNUC_UNUSED) +{ + Test *test = user_data; + guint i; + + for (i = 0; i < channels->len; i++) + { + GValueArray *va = g_ptr_array_index (channels, i); + const gchar *object_path = g_value_get_boxed (va->values + 0); + GHashTable *properties = g_value_get_boxed (va->values + 1); + GError *error = NULL; + + /* we only expect to receive one call */ + g_assert (test->chan == NULL); + + test->chan = tp_simple_client_factory_ensure_channel (test->factory, + conn, object_path, properties, &error); + g_assert_no_error (error); + + g_assert (TP_IS_CALL_CHANNEL (test->chan)); + test->call_chan = (TpCallChannel *) test->chan; + + g_assert_cmpint (tp_channel_get_requested (test->chan), ==, FALSE); + } +} + +/* In this example connection manager, every time the presence status changes + * to available or the message changes, an incoming call is simulated. */ +static void +trigger_incoming_call (Test *test, + const gchar *message, + const gchar *expected_caller) +{ + TpProxySignalConnection *new_channels_sig; + + tp_cli_connection_interface_simple_presence_run_set_presence (test->conn, -1, + "away", "preparing for a test", &test->error, NULL); + g_assert_no_error (test->error); + + new_channels_sig = + tp_cli_connection_interface_requests_connect_to_new_channels (test->conn, + expect_incoming_call_cb, test, NULL, NULL, &test->error); + g_assert_no_error (test->error); + + tp_cli_connection_interface_simple_presence_run_set_presence (test->conn, -1, + "available", message, &test->error, NULL); + g_assert_no_error (test->error); + + /* wait for the call to happen if it hasn't already */ + while (test->chan == NULL) + { + g_main_context_iteration (NULL, TRUE); + } + + g_assert_cmpstr (tp_channel_get_identifier (test->chan), ==, + expected_caller); + test->peer_handle = tp_channel_get_handle (test->chan, NULL); + + tp_proxy_signal_connection_disconnect (new_channels_sig); + + tp_tests_proxy_run_until_prepared (test->chan, NULL); +} + +static void +test_incoming (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + GPtrArray *contents; + TpCallContent *audio_content; + + trigger_incoming_call (test, "call me?", "caller"); + + /* ring, ring! */ + assert_call_properties (test->call_chan, + TP_CALL_STATE_INITIALISED, test->peer_handle, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + TRUE, 0, /* call flags */ + TRUE, TRUE, FALSE); /* initial audio/video must be TRUE, FALSE */ + + /* Get Contents: we have an audio content */ + + contents = tp_call_channel_get_contents (test->call_chan); + g_assert_cmpuint (contents->len, ==, 1); + audio_content = g_ptr_array_index (contents, 0); + tp_tests_proxy_run_until_prepared (audio_content, NULL); + g_assert_cmpuint (tp_call_content_get_media_type (audio_content), ==, + TP_MEDIA_STREAM_TYPE_AUDIO); + + /* FIXME: assert about the properties of the content and the stream */ + + /* Accept the call */ + tp_call_channel_accept_async (test->call_chan, accept_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + + assert_call_properties (test->call_chan, + TP_CALL_STATE_ACCEPTED, test->self_handle, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", + TRUE, 0, /* call flags */ + TRUE, TRUE, FALSE); /* initial audio/video are still TRUE, FALSE */ + + /* FIXME: check for stream directionality changes */ + + /* Hang up the call */ + tp_call_channel_hangup_async (test->call_chan, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", "", + hangup_cb, test); + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); + + assert_ended_and_run_close (test, test->self_handle, + TP_CALL_STATE_CHANGE_REASON_USER_REQUESTED, ""); +} + +static void +send_tones_cb (GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + Test *test = user_data; + GError *error = NULL; + + tp_call_channel_send_tones_finish (test->call_chan, result, &error); + g_assert_no_error (error); + + test->wait_count--; + if (test->wait_count <= 0) + g_main_loop_quit (test->mainloop); +} + +static void +dtmf_change_requested_cb (TpCallContent *content, + guchar event, + TpSendingState state, + gpointer user_data, + GObject *weak_object) +{ + /* Only PENDING states can be requested */ + g_assert (state == TP_SENDING_STATE_PENDING_SEND || + state == TP_SENDING_STATE_PENDING_STOP_SENDING); + + if (state == TP_SENDING_STATE_PENDING_SEND) + { + tp_cli_call_content_interface_media_call_acknowledge_dtmf_change (content, + -1, event, TP_SENDING_STATE_SENDING, NULL, NULL, NULL, NULL); + } + else if (state == TP_SENDING_STATE_PENDING_STOP_SENDING) + { + tp_cli_call_content_interface_media_call_acknowledge_dtmf_change (content, + -1, event, TP_SENDING_STATE_NONE, NULL, NULL, NULL, NULL); + } +} + +static void +test_dtmf (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + GPtrArray *contents; + TpCallContent *content; + + outgoing_call (test, "dtmf-badger", TRUE, FALSE); + run_until_accepted (test); + run_until_active (test); + + contents = tp_call_channel_get_contents (test->call_chan); + g_assert (contents->len == 1); + content = g_ptr_array_index (contents, 0); + + tp_cli_call_content_interface_media_connect_to_dtmf_change_requested (content, + dtmf_change_requested_cb, test, NULL, NULL, NULL); + + tp_call_channel_send_tones_async (test->call_chan, "123456789", NULL, + send_tones_cb, test); + tp_call_channel_send_tones_async (test->call_chan, "ABCD", NULL, + send_tones_cb, test); + + test->wait_count = 2; + g_main_loop_run (test->mainloop); + g_assert_no_error (test->error); +} + +static void +teardown (Test *test, + gconstpointer data G_GNUC_UNUSED) +{ + tp_cli_connection_run_disconnect (test->conn, -1, &test->error, NULL); + g_assert_no_error (test->error); + + g_array_unref (test->audio_request); + g_array_unref (test->video_request); + g_array_unref (test->invalid_request); + g_array_unref (test->stream_ids); + + tp_clear_object (&test->added_content); + tp_clear_object (&test->chan); + tp_clear_object (&test->conn); + tp_clear_object (&test->cm); + + tp_clear_object (&test->service_cm); + + /* make sure any pending things have happened */ + tp_tests_proxy_run_until_dbus_queue_processed (test->dbus); + + tp_clear_object (&test->dbus); + g_main_loop_unref (test->mainloop); + test->mainloop = NULL; +} + +int +main (int argc, + char **argv) +{ + tp_tests_init (&argc, &argv); + g_test_bug_base ("http://bugs.freedesktop.org/show_bug.cgi?id="); + g_set_prgname ("call-channel"); + + g_test_add ("/call/basics", Test, NULL, setup, test_basics, teardown); + g_test_add ("/call/busy", Test, NULL, setup, test_busy, teardown); + g_test_add ("/call/no-answer", Test, NULL, setup, test_no_answer, + teardown); + g_test_add ("/call/terminated-by-peer", Test, NULL, setup, + test_terminated_by_peer, teardown); + g_test_add ("/call/terminate-via-close", Test, NULL, setup, + test_terminate_via_close, teardown); + g_test_add ("/call/incoming", Test, NULL, setup, test_incoming, + teardown); + g_test_add ("/call/dtmf", Test, NULL, setup, test_dtmf, + teardown); + + return g_test_run (); +} diff -Nru telepathy-glib-0.17.4/tests/dbus/call-example.c telepathy-glib-0.17.5/tests/dbus/call-example.c --- telepathy-glib-0.17.4/tests/dbus/call-example.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/call-example.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,1106 +0,0 @@ -/* Feature test for example StreamedMedia CM code. - * - * Copyright © 2009 Collabora Ltd. - * Copyright © 2009 Nokia Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#include "examples/future/call-cm/cm.h" -#include "examples/future/call-cm/conn.h" -#include "examples/future/call-cm/call-channel.h" -#include "examples/future/call-cm/call-stream.h" -#include "extensions/extensions.h" - -#include "tests/lib/util.h" - -typedef struct -{ - GMainLoop *mainloop; - TpDBusDaemon *dbus; - GError *error /* statically initialized to NULL */ ; - - ExampleCallConnectionManager *service_cm; - - TpConnectionManager *cm; - TpConnection *conn; - TpChannel *chan; - TpHandle self_handle; - TpHandle peer_handle; - - GHashTable *get_all_return; - - GArray *audio_request; - GArray *video_request; - GArray *invalid_request; - - GArray *stream_ids; - GArray *contacts; - GPtrArray *get_contents_return; - GHashTable *get_members_return; - guint uint_return; - - gulong members_changed_detailed_id; - - FutureCallContent *added_content; - FutureCallContent *audio_content; - FutureCallContent *video_content; - FutureCallStream *audio_stream; - FutureCallStream *video_stream; -} Test; - -static void -setup (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - TpBaseConnectionManager *service_cm_as_base; - gboolean ok; - gchar *bus_name; - gchar *object_path; - GHashTable *parameters; - guint audio = TP_MEDIA_STREAM_TYPE_AUDIO; - guint video = TP_MEDIA_STREAM_TYPE_VIDEO; - guint not_a_media_type = 31337; - GQuark conn_features[] = { TP_CONNECTION_FEATURE_CONNECTED, 0 }; - - g_type_init (); - tp_debug_set_flags ("all"); - - test->mainloop = g_main_loop_new (NULL, FALSE); - test->dbus = tp_tests_dbus_daemon_dup_or_die (); - - test->service_cm = EXAMPLE_CALL_CONNECTION_MANAGER ( - tp_tests_object_new_static_class ( - EXAMPLE_TYPE_CALL_CONNECTION_MANAGER, - NULL)); - g_assert (test->service_cm != NULL); - service_cm_as_base = TP_BASE_CONNECTION_MANAGER (test->service_cm); - g_assert (service_cm_as_base != NULL); - - ok = tp_base_connection_manager_register (service_cm_as_base); - g_assert (ok); - - test->cm = tp_connection_manager_new (test->dbus, "example_call", - NULL, &test->error); - g_assert (test->cm != NULL); - tp_tests_proxy_run_until_prepared (test->cm, NULL); - - parameters = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, - (GDestroyNotify) tp_g_value_slice_free); - g_hash_table_insert (parameters, "account", - tp_g_value_slice_new_static_string ("me")); - g_hash_table_insert (parameters, "simulation-delay", - tp_g_value_slice_new_uint (0)); - - tp_cli_connection_manager_run_request_connection (test->cm, -1, - "example", parameters, &bus_name, &object_path, &test->error, NULL); - g_assert_no_error (test->error); - - test->conn = tp_connection_new (test->dbus, bus_name, object_path, - &test->error); - g_assert_no_error (test->error); - g_assert (test->conn != NULL); - tp_cli_connection_call_connect (test->conn, -1, NULL, NULL, NULL, NULL); - tp_tests_proxy_run_until_prepared (test->conn, conn_features); - - test->self_handle = tp_connection_get_self_handle (test->conn); - g_assert (test->self_handle != 0); - - test->audio_request = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); - g_array_append_val (test->audio_request, audio); - - test->video_request = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); - g_array_append_val (test->video_request, video); - - test->invalid_request = g_array_sized_new (FALSE, FALSE, sizeof (guint), 1); - g_array_append_val (test->invalid_request, not_a_media_type); - - test->stream_ids = g_array_sized_new (FALSE, FALSE, sizeof (guint), 2); - - g_hash_table_unref (parameters); - g_free (bus_name); - g_free (object_path); -} - -static void -channel_created_cb (TpConnection *connection, - const gchar *object_path, - GHashTable *immutable_properties, - const GError *error, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - GError *new_error = NULL; - - g_assert_no_error ((GError *) error); - - test->chan = tp_channel_new_from_properties (connection, object_path, - immutable_properties, &new_error); - g_assert_no_error (new_error); - - test->peer_handle = tp_channel_get_handle (test->chan, NULL); - - g_main_loop_quit (test->mainloop); -} - -static void -channel_ready_cb (TpChannel *channel G_GNUC_UNUSED, - const GError *error, - gpointer user_data) -{ - Test *test = user_data; - - g_assert_no_error ((GError *) error); - g_main_loop_quit (test->mainloop); -} - -static void -added_content_cb (TpChannel *chan G_GNUC_UNUSED, - const gchar *object_path, - const GError *error, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - - tp_clear_object (&test->added_content); - - if (error != NULL) - { - test->error = g_error_copy (error); - } - else - { - test->added_content = future_call_content_new (test->chan, object_path, - NULL); - g_assert (test->added_content != NULL); - } - - g_main_loop_quit (test->mainloop); -} - -static void -got_all_cb (TpProxy *proxy, - GHashTable *properties, - const GError *error, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - - g_assert_no_error ((GError *) error); - - tp_clear_pointer (&test->get_all_return, g_hash_table_unref); - test->get_all_return = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, (GDestroyNotify) tp_g_value_slice_free); - tp_g_hash_table_update (test->get_all_return, properties, - (GBoxedCopyFunc) g_strdup, (GBoxedCopyFunc) tp_g_value_slice_dup); - - g_main_loop_quit (test->mainloop); -} - -static void -got_contents_cb (TpProxy *proxy, - const GValue *value, - const GError *error, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - - g_assert_no_error ((GError *) error); - - tp_clear_boxed (TP_ARRAY_TYPE_OBJECT_PATH_LIST, &test->get_contents_return); - g_assert (G_VALUE_HOLDS (value, TP_ARRAY_TYPE_OBJECT_PATH_LIST)); - test->get_contents_return = g_value_dup_boxed (value); - - g_main_loop_quit (test->mainloop); -} - -static void -got_members_cb (TpProxy *proxy, - const GValue *value, - const GError *error, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - - tp_clear_pointer (&test->get_members_return, g_hash_table_unref); - - if (test->error != NULL) - g_clear_error (&test->error); - - g_assert_no_error ((GError *) error); - - g_assert (G_VALUE_HOLDS (value, FUTURE_HASH_TYPE_CONTACT_SENDING_STATE_MAP)); - test->get_members_return = g_value_dup_boxed (value); - - g_main_loop_quit (test->mainloop); -} - -static void -got_uint_cb (TpProxy *proxy, - const GValue *value, - const GError *error, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - - if (test->error != NULL) - g_clear_error (&test->error); - - g_assert_no_error ((GError *) error); - - g_assert (G_VALUE_HOLDS (value, G_TYPE_UINT)); - test->uint_return = g_value_get_uint (value); - - g_main_loop_quit (test->mainloop); -} - -static void -void_cb (TpChannel *chan G_GNUC_UNUSED, - const GError *error, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - - if (error != NULL) - { - test->error = g_error_copy (error); - } - - g_main_loop_quit (test->mainloop); -} - -static void -test_connect_channel_signals (Test *test) -{ -} - -static void -outgoing_call (Test *test, - const gchar *id, - gboolean initial_audio, - gboolean initial_video) -{ - GHashTable *request = tp_asv_new ( - TP_PROP_CHANNEL_CHANNEL_TYPE, - G_TYPE_STRING, FUTURE_IFACE_CHANNEL_TYPE_CALL, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, - TP_PROP_CHANNEL_TARGET_ID, G_TYPE_STRING, id, - FUTURE_PROP_CHANNEL_TYPE_CALL_INITIAL_AUDIO, - G_TYPE_BOOLEAN, initial_audio, - FUTURE_PROP_CHANNEL_TYPE_CALL_INITIAL_VIDEO, - G_TYPE_BOOLEAN, initial_video, - NULL); - - tp_cli_connection_interface_requests_call_create_channel (test->conn, -1, - request, channel_created_cb, test, NULL, NULL); - g_hash_table_unref (request); - request = NULL; - g_main_loop_run (test->mainloop); - - /* Do this before waiting for it to become ready - we knew its channel type - * and interfaces anyway */ - test_connect_channel_signals (test); - - tp_channel_call_when_ready (test->chan, channel_ready_cb, test); - g_main_loop_run (test->mainloop); -} - -static void -assert_call_properties (GHashTable *get_all_return, - FutureCallState call_state, - TpHandle actor, - FutureCallStateChangeReason reason, - const gchar *dbus_reason, - gboolean check_call_flags, FutureCallFlags call_flags, - gboolean check_initials, gboolean initial_audio, gboolean initial_video) -{ - gboolean valid; - GValueArray *state_reason; - - g_assert_cmpuint (tp_asv_get_uint32 (get_all_return, "CallState", - &valid), ==, call_state); - g_assert (valid); - state_reason = tp_asv_get_boxed (get_all_return, "CallStateReason", - FUTURE_STRUCT_TYPE_CALL_STATE_REASON); - g_assert (state_reason != NULL); - g_assert_cmpuint (g_value_get_uint (state_reason->values + 0), ==, - actor); - g_assert_cmpuint (g_value_get_uint (state_reason->values + 1), ==, - reason); - g_assert_cmpstr (g_value_get_string (state_reason->values + 2), ==, - dbus_reason); - - /* Hard-coded properties */ - g_assert_cmpint (tp_asv_get_boolean (get_all_return, - "HardwareStreaming", &valid), ==, TRUE); - g_assert (valid); - g_assert_cmpint (tp_asv_get_boolean (get_all_return, - "MutableContents", &valid), ==, TRUE); - g_assert (valid); - g_assert_cmpuint (tp_asv_get_uint32 (get_all_return, - "InitialTransport", &valid), ==, FUTURE_STREAM_TRANSPORT_TYPE_UNKNOWN); - g_assert (valid); - - if (check_call_flags) - { - g_assert_cmpuint (tp_asv_get_uint32 (get_all_return, - "CallFlags", &valid), ==, 0); - g_assert (valid); - } - - if (check_initials) - { - g_assert_cmpint (tp_asv_get_boolean (get_all_return, - "InitialAudio", &valid), ==, initial_audio); - g_assert (valid); - - g_assert_cmpint (tp_asv_get_boolean (get_all_return, - "InitialVideo", &valid), ==, initial_video); - g_assert (valid); - } - - /* FIXME: CallStateDetails */ -} - -static void -assert_content_properties (GHashTable *get_all_return, - TpMediaStreamType type, - FutureCallContentDisposition disposition) -{ - gboolean valid; - - g_assert_cmpstr (tp_asv_get_string (get_all_return, "Name"), !=, NULL); - g_assert_cmpuint (tp_asv_get_uint32 (get_all_return, "Type", &valid), - ==, type); - g_assert_cmpint (valid, ==, TRUE); - g_assert_cmpint (valid, ==, TRUE); - g_assert_cmpuint (tp_asv_get_uint32 (get_all_return, "Disposition", - &valid), ==, disposition); - g_assert_cmpint (valid, ==, TRUE); -} - -static void -loop_until_ended (Test *test) -{ - while (1) - { - tp_cli_dbus_properties_call_get_all (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, got_all_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - if (tp_asv_get_uint32 (test->get_all_return, "CallState", - NULL) == FUTURE_CALL_STATE_ENDED) - return; - } -} - -static void -loop_until_answered (Test *test) -{ - while (1) - { - tp_cli_dbus_properties_call_get_all (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, got_all_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - if (tp_asv_get_uint32 (test->get_all_return, "CallState", - NULL) != FUTURE_CALL_STATE_RINGING) - return; - } -} - -static void -assert_ended_and_run_close (Test *test, - TpHandle expected_actor, - FutureCallStateChangeReason expected_reason, - const gchar *expected_error) -{ - /* In response to whatever we just did, the call ends... */ - tp_cli_dbus_properties_call_get_all (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, got_all_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - assert_call_properties (test->get_all_return, - FUTURE_CALL_STATE_ENDED, - expected_actor, - expected_reason, - expected_error, - FALSE, 0, /* ignore call flags */ - FALSE, FALSE, FALSE); /* ignore initial audio/video */ - - /* ... which means there are no contents ... */ - tp_cli_dbus_properties_call_get (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, "Contents", - got_contents_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - g_assert_cmpuint (test->get_contents_return->len, ==, 0); - - /* ... but the channel doesn't close */ - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - g_assert (tp_proxy_get_invalidated (test->chan) == NULL); - - /* When we call Close it finally closes */ - tp_cli_channel_call_close (test->chan, -1, void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - g_assert (tp_proxy_get_invalidated (test->chan) != NULL); -} - -static void -test_basics (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - const GPtrArray *stream_paths; - gpointer v; - - outgoing_call (test, "basic-test", TRUE, FALSE); - - /* Get initial state */ - tp_cli_dbus_properties_call_get_all (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, got_all_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - assert_call_properties (test->get_all_return, - FUTURE_CALL_STATE_PENDING_INITIATOR, 0, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", - TRUE, 0, /* call flags */ - TRUE, TRUE, FALSE); /* initial audio/video must be what we said */ - - /* We have one audio content but it's not active just yet */ - - tp_cli_dbus_properties_call_get (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, "Contents", - got_contents_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (test->get_contents_return->len, ==, 1); - - g_assert (test->audio_content == NULL); - test->audio_content = future_call_content_new (test->chan, - g_ptr_array_index (test->get_contents_return, 0), NULL); - g_assert (test->audio_content != NULL); - - tp_cli_dbus_properties_call_get_all (test->audio_content, -1, - FUTURE_IFACE_CALL_CONTENT, got_all_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - assert_content_properties (test->get_all_return, - TP_MEDIA_STREAM_TYPE_AUDIO, - FUTURE_CALL_CONTENT_DISPOSITION_INITIAL); - - stream_paths = tp_asv_get_boxed (test->get_all_return, "Streams", - TP_ARRAY_TYPE_OBJECT_PATH_LIST); - g_assert (stream_paths != NULL); - g_assert_cmpuint (stream_paths->len, ==, 1); - - g_assert (test->audio_stream == NULL); - test->audio_stream = future_call_stream_new (test->chan, - g_ptr_array_index (stream_paths, 0), NULL); - g_assert (test->audio_stream != NULL); - - tp_cli_dbus_properties_call_get (test->audio_stream, -1, - FUTURE_IFACE_CALL_STREAM, "RemoteMembers", - got_members_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (g_hash_table_size (test->get_members_return), ==, 1); - g_assert (!g_hash_table_lookup_extended (test->get_members_return, - GUINT_TO_POINTER (0), NULL, NULL)); - g_assert (!g_hash_table_lookup_extended (test->get_members_return, - GUINT_TO_POINTER (test->self_handle), NULL, NULL)); - g_assert (g_hash_table_lookup_extended (test->get_members_return, - GUINT_TO_POINTER (tp_channel_get_handle (test->chan, NULL)), - NULL, &v)); - g_assert_cmpuint (GPOINTER_TO_UINT (v), ==, - FUTURE_SENDING_STATE_PENDING_SEND); - - tp_cli_dbus_properties_call_get (test->audio_stream, -1, - FUTURE_IFACE_CALL_STREAM, "LocalSendingState", - got_uint_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - g_assert_cmpuint (test->uint_return, ==, FUTURE_SENDING_STATE_SENDING); - - /* OK, that looks good. Actually make the call */ - future_cli_channel_type_call_call_accept (test->chan, -1, void_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* Calling Accept again makes no sense, but mustn't crash */ - future_cli_channel_type_call_call_accept (test->chan, -1, void_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_error (test->error, TP_ERRORS, TP_ERROR_NOT_AVAILABLE); - g_clear_error (&test->error); - - /* Wait for the remote contact to answer, if they haven't already */ - - loop_until_answered (test); - - /* Calling Accept again makes no sense, but mustn't crash */ - future_cli_channel_type_call_call_accept (test->chan, -1, void_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_error (test->error, TP_ERRORS, TP_ERROR_NOT_AVAILABLE); - g_clear_error (&test->error); - - /* Check the call state */ - - tp_cli_dbus_properties_call_get_all (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, got_all_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - assert_call_properties (test->get_all_return, - FUTURE_CALL_STATE_ACCEPTED, tp_channel_get_handle (test->chan, NULL), - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", - TRUE, 0, /* call flags */ - FALSE, FALSE, FALSE); /* don't care about initial audio/video */ - - /* There's still one content */ - tp_clear_boxed (TP_ARRAY_TYPE_OBJECT_PATH_LIST, &test->get_contents_return); - test->get_contents_return = g_boxed_copy (TP_ARRAY_TYPE_OBJECT_PATH_LIST, - tp_asv_get_boxed (test->get_all_return, - "Contents", TP_ARRAY_TYPE_OBJECT_PATH_LIST)); - g_assert_cmpuint (test->get_contents_return->len, ==, 1); - g_assert_cmpstr (g_ptr_array_index (test->get_contents_return, 0), - ==, tp_proxy_get_object_path (test->audio_content)); - - /* Other contact is sending now */ - tp_clear_pointer (&test->get_members_return, g_hash_table_unref); - tp_cli_dbus_properties_call_get (test->audio_stream, -1, - FUTURE_IFACE_CALL_STREAM, "RemoteMembers", got_members_cb, test, - NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (g_hash_table_size (test->get_members_return), ==, 1); - g_assert (!g_hash_table_lookup_extended (test->get_members_return, - GUINT_TO_POINTER (0), NULL, NULL)); - g_assert (!g_hash_table_lookup_extended (test->get_members_return, - GUINT_TO_POINTER (test->self_handle), NULL, NULL)); - g_assert (g_hash_table_lookup_extended (test->get_members_return, - GUINT_TO_POINTER (tp_channel_get_handle (test->chan, NULL)), - NULL, &v)); - g_assert_cmpuint (GPOINTER_TO_UINT (v), ==, FUTURE_SENDING_STATE_SENDING); - - tp_cli_dbus_properties_call_get (test->audio_stream, -1, - FUTURE_IFACE_CALL_STREAM, "LocalSendingState", - got_uint_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - g_assert_cmpuint (test->uint_return, ==, FUTURE_SENDING_STATE_SENDING); - - /* AddContent with bad content-type must fail */ - - future_cli_channel_type_call_call_add_content (test->chan, -1, - "", 31337, added_content_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert (test->error != NULL); - g_clear_error (&test->error); - - /* AddContent again, to add a video stream */ - - future_cli_channel_type_call_call_add_content (test->chan, -1, - "", TP_MEDIA_STREAM_TYPE_VIDEO, added_content_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert (test->added_content != NULL); - tp_clear_object (&test->video_content); - test->video_content = g_object_ref (test->added_content); - - /* There are two Contents, because now we have the video content too */ - - tp_cli_dbus_properties_call_get (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, "Contents", - got_contents_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (test->get_contents_return->len, ==, 2); - - /* they could be either way round */ - if (!tp_strdiff (g_ptr_array_index (test->get_contents_return, 0), - tp_proxy_get_object_path (test->audio_content))) - { - g_assert_cmpstr (g_ptr_array_index (test->get_contents_return, 1), - ==, tp_proxy_get_object_path (test->video_content)); - } - else - { - g_assert_cmpstr (g_ptr_array_index (test->get_contents_return, 0), - ==, tp_proxy_get_object_path (test->video_content)); - g_assert_cmpstr (g_ptr_array_index (test->get_contents_return, 1), - ==, tp_proxy_get_object_path (test->audio_content)); - } - - tp_cli_dbus_properties_call_get_all (test->video_content, -1, - FUTURE_IFACE_CALL_CONTENT, got_all_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - assert_content_properties (test->get_all_return, - TP_MEDIA_STREAM_TYPE_VIDEO, - FUTURE_CALL_CONTENT_DISPOSITION_NONE); - - stream_paths = tp_asv_get_boxed (test->get_all_return, "Streams", - TP_ARRAY_TYPE_OBJECT_PATH_LIST); - g_assert (stream_paths != NULL); - g_assert_cmpuint (stream_paths->len, ==, 1); - - g_assert (test->video_stream == NULL); - test->video_stream = future_call_stream_new (test->chan, - g_ptr_array_index (stream_paths, 0), NULL); - g_assert (test->video_stream != NULL); - - tp_cli_dbus_properties_call_get (test->audio_stream, -1, - FUTURE_IFACE_CALL_STREAM, "LocalSendingState", - got_uint_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - g_assert_cmpuint (test->uint_return, ==, FUTURE_SENDING_STATE_SENDING); - - tp_cli_dbus_properties_call_get (test->video_stream, -1, - FUTURE_IFACE_CALL_STREAM, "RemoteMembers", got_members_cb, test, - NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (g_hash_table_size (test->get_members_return), ==, 1); - g_assert (!g_hash_table_lookup_extended (test->get_members_return, - GUINT_TO_POINTER (0), NULL, NULL)); - g_assert (!g_hash_table_lookup_extended (test->get_members_return, - GUINT_TO_POINTER (test->self_handle), NULL, NULL)); - g_assert (g_hash_table_lookup_extended (test->get_members_return, - GUINT_TO_POINTER (tp_channel_get_handle (test->chan, NULL)), - NULL, &v)); - - /* After a moment, the video stream becomes connected, and the remote user - * accepts our proposed direction change. These might happen in either - * order, at least in this implementation. */ - - if (GPOINTER_TO_UINT (v) != FUTURE_SENDING_STATE_SENDING) - g_assert_cmpuint (GPOINTER_TO_UINT (v), ==, - FUTURE_SENDING_STATE_PENDING_SEND); - -#if 0 - /* FIXME: Call has no equivalent of RemoveStreams yet, afaics... */ - - /* RemoveStreams with a bad stream ID must fail */ - - g_array_set_size (test->stream_ids, 0); - g_array_append_val (test->stream_ids, not_a_stream_id); - tp_cli_channel_type_streamed_media_call_remove_streams (test->chan, -1, - test->stream_ids, - void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert (test->error != NULL); - g_clear_error (&test->error); - - /* Drop the video stream with RemoveStreams */ - - g_array_set_size (test->stream_ids, 0); - g_array_append_val (test->stream_ids, video_stream_id); - tp_cli_channel_type_streamed_media_call_remove_streams (test->chan, -1, - test->stream_ids, - void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* Get contents again: now there's only the audio */ - - tp_cli_dbus_properties_call_get (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, "Contents", - got_contents_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (test->get_contents_return->len, ==, 1); - g_assert_cmpstr (g_ptr_array_index (test->get_contents_return, 0), ==, - tp_proxy_get_object_path (test->audio_content)); -#endif - - /* Hang up the call in the recommended way */ - - future_cli_channel_type_call_call_hangup (test->chan, - -1, FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", "", - void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - assert_ended_and_run_close (test, test->self_handle, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, - ""); - - /* FIXME: untested things include: - * - * RequestStreamDirection - * StreamDirectionChanged being emitted correctly (part of RSD) - * RequestStreamDirection failing (invalid direction, stream ID) - */ -} - -static void -test_no_answer (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - /* This identifier contains the magic string (no answer), which means the - * example will never answer. */ - outgoing_call (test, "smcv (no answer)", TRUE, FALSE); - - future_cli_channel_type_call_call_accept (test->chan, -1, void_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* After the initial flurry of D-Bus messages, smcv still hasn't answered */ - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - - tp_cli_dbus_properties_call_get_all (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, got_all_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - assert_call_properties (test->get_all_return, - FUTURE_CALL_STATE_RINGING, test->self_handle, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", - TRUE, 0, /* call flags */ - TRUE, TRUE, FALSE); /* initial audio/video must be TRUE, FALSE */ - - /* assume we're never going to get an answer, and hang up */ - future_cli_channel_type_call_call_hangup (test->chan, - -1, FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", "", - void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - assert_ended_and_run_close (test, test->self_handle, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, - ""); -} - -static void -test_busy (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - /* This identifier contains the magic string (busy), which means the example - * will simulate rejection of the call as busy rather than accepting it. */ - outgoing_call (test, "Robot101 (busy)", TRUE, FALSE); - - future_cli_channel_type_call_call_accept (test->chan, -1, void_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* Wait for the remote contact to end the call as busy */ - loop_until_ended (test); - assert_ended_and_run_close (test, tp_channel_get_handle (test->chan, NULL), - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, - TP_ERROR_STR_BUSY); -} - -static void -test_terminated_by_peer (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - /* This contact contains the magic string "(terminate)", meaning the example - * simulates answering the call but then terminating it */ - outgoing_call (test, "The Governator (terminate)", TRUE, TRUE); - - future_cli_channel_type_call_call_accept (test->chan, -1, void_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* Wait for the remote contact to answer, if they haven't already */ - - loop_until_answered (test); - - /* After that, the remote contact immediately ends the call */ - loop_until_ended (test); - assert_ended_and_run_close (test, tp_channel_get_handle (test->chan, NULL), - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, - ""); -} - -static void -test_terminate_via_close (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - outgoing_call (test, "basic-test", FALSE, TRUE); - - future_cli_channel_type_call_call_accept (test->chan, -1, void_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* Wait for the remote contact to answer, if they haven't already */ - - loop_until_answered (test); - - tp_cli_dbus_properties_call_get_all (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, got_all_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - assert_call_properties (test->get_all_return, - FUTURE_CALL_STATE_ACCEPTED, test->peer_handle, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", - TRUE, 0, /* call flags */ - TRUE, FALSE, TRUE); /* initial audio/video must be FALSE, TRUE */ - - /* Terminate the call unceremoniously, by calling Close. This is not a - * graceful hangup; rather, it's what the ChannelDispatcher would do to - * signal a client crash, undispatchability, or whatever */ - - tp_cli_channel_call_close (test->chan, -1, void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - /* In response to termination, the channel does genuinely close */ - tp_tests_proxy_run_until_dbus_queue_processed (test->conn); - g_assert (tp_proxy_get_invalidated (test->chan) != NULL); - - /* FIXME: when we hook up signals, check for expected call state - * transition before invalidation */ -} - -/* FIXME: try removing the last stream. In StreamedMedia that terminated the - * call, but in Call it's meant to just fail */ - -/* FIXME: add a special contact who refuses to have video */ - -/* FIXME: add a special contact who asks us for video */ - -/* FIXME: add a special contact whose stream errors */ - -static void -expect_incoming_call_cb (TpConnection *conn, - const GPtrArray *channels, - gpointer user_data, - GObject *weak_object G_GNUC_UNUSED) -{ - Test *test = user_data; - guint i; - - for (i = 0; i < channels->len; i++) - { - GValueArray *va = g_ptr_array_index (channels, i); - const gchar *object_path = g_value_get_boxed (va->values + 0); - GHashTable *properties = g_value_get_boxed (va->values + 1); - const gchar *channel_type; - - channel_type = tp_asv_get_string (properties, - TP_PROP_CHANNEL_CHANNEL_TYPE); - if (tp_strdiff (channel_type, FUTURE_IFACE_CHANNEL_TYPE_CALL)) - { - /* don't care about this channel */ - continue; - } - - g_assert_cmpuint (tp_asv_get_uint32 (properties, - TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, NULL), - ==, TP_HANDLE_TYPE_CONTACT); - g_assert_cmpint (tp_asv_get_boolean (properties, - TP_PROP_CHANNEL_REQUESTED, NULL), ==, FALSE); - - /* we only expect to receive one call */ - g_assert (test->chan == NULL); - - /* save the channel */ - test->chan = tp_channel_new_from_properties (conn, object_path, - properties, &test->error); - g_assert_no_error (test->error); - } -} - -/* In this example connection manager, every time the presence status changes - * to available or the message changes, an incoming call is simulated. */ -static void -trigger_incoming_call (Test *test, - const gchar *message, - const gchar *expected_caller) -{ - TpProxySignalConnection *new_channels_sig; - - tp_cli_connection_interface_simple_presence_run_set_presence (test->conn, -1, - "away", "preparing for a test", &test->error, NULL); - g_assert_no_error (test->error); - - new_channels_sig = - tp_cli_connection_interface_requests_connect_to_new_channels (test->conn, - expect_incoming_call_cb, test, NULL, NULL, &test->error); - g_assert_no_error (test->error); - - tp_cli_connection_interface_simple_presence_run_set_presence (test->conn, -1, - "available", message, &test->error, NULL); - g_assert_no_error (test->error); - - /* wait for the call to happen if it hasn't already */ - while (test->chan == NULL) - { - g_main_context_iteration (NULL, TRUE); - } - - g_assert_cmpstr (tp_channel_get_identifier (test->chan), ==, - expected_caller); - test->peer_handle = tp_channel_get_handle (test->chan, NULL); - - tp_proxy_signal_connection_disconnect (new_channels_sig); - - tp_channel_call_when_ready (test->chan, channel_ready_cb, test); - g_main_loop_run (test->mainloop); - test_connect_channel_signals (test); -} - -static void -test_incoming (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - trigger_incoming_call (test, "call me?", "caller"); - - /* ring, ring! */ - tp_cli_dbus_properties_call_get_all (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, got_all_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - assert_call_properties (test->get_all_return, - FUTURE_CALL_STATE_RINGING, test->peer_handle, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", - TRUE, 0, /* call flags */ - TRUE, TRUE, FALSE); /* initial audio/video must be TRUE, FALSE */ - - /* Get Contents: we have an audio content (FIXME: assert that) */ - - tp_cli_dbus_properties_call_get (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, "Contents", - got_contents_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - g_assert_cmpuint (test->get_contents_return->len, ==, 1); - - /* FIXME: assert about the properties of the content and the stream */ - - /* Accept the call */ - future_cli_channel_type_call_call_accept (test->chan, -1, void_cb, - test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - tp_cli_dbus_properties_call_get_all (test->chan, -1, - FUTURE_IFACE_CHANNEL_TYPE_CALL, got_all_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - assert_call_properties (test->get_all_return, - FUTURE_CALL_STATE_ACCEPTED, test->self_handle, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", - TRUE, 0, /* call flags */ - TRUE, TRUE, FALSE); /* initial audio/video are still TRUE, FALSE */ - - /* FIXME: check for stream directionality changes */ - - /* Hang up the call */ - future_cli_channel_type_call_call_hangup (test->chan, - -1, FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, "", "", - void_cb, test, NULL, NULL); - g_main_loop_run (test->mainloop); - g_assert_no_error (test->error); - - assert_ended_and_run_close (test, test->self_handle, - FUTURE_CALL_STATE_CHANGE_REASON_USER_REQUESTED, ""); -} - -static void -teardown (Test *test, - gconstpointer data G_GNUC_UNUSED) -{ - tp_cli_connection_run_disconnect (test->conn, -1, &test->error, NULL); - g_assert_no_error (test->error); - - if (test->members_changed_detailed_id != 0) - { - g_signal_handler_disconnect (test->chan, - test->members_changed_detailed_id); - } - - g_array_unref (test->audio_request); - g_array_unref (test->video_request); - g_array_unref (test->invalid_request); - g_array_unref (test->stream_ids); - tp_clear_pointer (&test->get_all_return, g_hash_table_unref); - - tp_clear_boxed (TP_ARRAY_TYPE_OBJECT_PATH_LIST, &test->get_contents_return); - tp_clear_pointer (&test->get_members_return, g_hash_table_unref); - - tp_clear_object (&test->audio_stream); - tp_clear_object (&test->video_stream); - tp_clear_object (&test->added_content); - tp_clear_object (&test->audio_content); - tp_clear_object (&test->video_content); - tp_clear_object (&test->chan); - tp_clear_object (&test->conn); - tp_clear_object (&test->cm); - - tp_clear_object (&test->service_cm); - - /* make sure any pending things have happened */ - tp_tests_proxy_run_until_dbus_queue_processed (test->dbus); - - tp_clear_object (&test->dbus); - g_main_loop_unref (test->mainloop); - test->mainloop = NULL; -} - -int -main (int argc, - char **argv) -{ - tp_tests_init (&argc, &argv); - g_test_bug_base ("http://bugs.freedesktop.org/show_bug.cgi?id="); - g_set_prgname ("call-example"); - - future_cli_init (); - - g_test_add ("/call/basics", Test, NULL, setup, test_basics, teardown); - g_test_add ("/call/busy", Test, NULL, setup, test_busy, teardown); - g_test_add ("/call/no-answer", Test, NULL, setup, test_no_answer, - teardown); - g_test_add ("/call/terminated-by-peer", Test, NULL, setup, - test_terminated_by_peer, teardown); - g_test_add ("/call/terminate-via-close", Test, NULL, setup, - test_terminate_via_close, teardown); - g_test_add ("/call/incoming", Test, NULL, setup, test_incoming, - teardown); - - return g_test_run (); -} diff -Nru telepathy-glib-0.17.4/tests/dbus/channel.c telepathy-glib-0.17.5/tests/dbus/channel.c --- telepathy-glib-0.17.4/tests/dbus/channel.c 2011-11-16 11:22:00.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include @@ -147,9 +149,7 @@ tp_clear_object (&test->chan_contact_service); tp_clear_object (&test->chan_room_service); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); diff -Nru telepathy-glib-0.17.4/tests/dbus/channel-dispatcher.c telepathy-glib-0.17.5/tests/dbus/channel-dispatcher.c --- telepathy-glib-0.17.4/tests/dbus/channel-dispatcher.c 2011-07-12 14:13:58.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/channel-dispatcher.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/channel-dispatch-operation.c telepathy-glib-0.17.5/tests/dbus/channel-dispatch-operation.c --- telepathy-glib-0.17.4/tests/dbus/channel-dispatch-operation.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/channel-dispatch-operation.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -217,8 +219,7 @@ if (test->text_chan_service_2 != NULL) g_object_unref (test->text_chan_service_2); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); diff -Nru telepathy-glib-0.17.4/tests/dbus/channel-introspect.c telepathy-glib-0.17.5/tests/dbus/channel-introspect.c --- telepathy-glib-0.17.4/tests/dbus/channel-introspect.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/channel-introspect.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -758,8 +760,7 @@ g_assert_cmpint (tp_proxy_is_prepared (chan, TP_CHANNEL_FEATURE_CHAT_STATES), ==, FALSE); - MYASSERT (tp_cli_connection_run_disconnect (conn, -1, &error, NULL), ""); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); was_ready = FALSE; diff -Nru telepathy-glib-0.17.4/tests/dbus/channel-manager-request-properties.c telepathy-glib-0.17.5/tests/dbus/channel-manager-request-properties.c --- telepathy-glib-0.17.4/tests/dbus/channel-manager-request-properties.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/channel-manager-request-properties.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -86,8 +88,7 @@ teardown (Test *test, gconstpointer data) { - g_assert (tp_cli_connection_run_disconnect (test->conn, -1, &test->error, NULL)); - g_assert_no_error (test->error); + tp_tests_connection_assert_disconnect_succeeds (test->conn); g_object_unref (test->service_conn); test->service_conn = NULL; diff -Nru telepathy-glib-0.17.4/tests/dbus/channel-request.c telepathy-glib-0.17.5/tests/dbus/channel-request.c --- telepathy-glib-0.17.4/tests/dbus/channel-request.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/channel-request.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -107,9 +109,7 @@ teardown (Test *test, gconstpointer data) { - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); @@ -250,6 +250,9 @@ g_signal_connect (test->cr, "succeeded-with-channel", G_CALLBACK (succeeded_with_channel_cb), test); + /* sync up both sockets to ensure that the match rules are in place */ + tp_tests_proxy_run_until_dbus_queue_processed (test->cr); + props = g_hash_table_new (NULL, NULL); tp_svc_channel_request_emit_succeeded_with_channel (test->cr_service, @@ -288,6 +291,9 @@ g_signal_connect_swapped (test->cr, "succeeded", G_CALLBACK (succeeded_cb), test); + /* sync up both sockets to ensure that the match rules are in place */ + tp_tests_proxy_run_until_dbus_queue_processed (test->cr); + tp_svc_channel_request_emit_failed (test->cr_service, TP_ERROR_STR_NOT_YOURS, "lalala"); diff -Nru telepathy-glib-0.17.4/tests/dbus/client.c telepathy-glib-0.17.5/tests/dbus/client.c --- telepathy-glib-0.17.4/tests/dbus/client.c 2011-07-12 14:13:59.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/client.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/client-channel-factory.c telepathy-glib-0.17.5/tests/dbus/client-channel-factory.c --- telepathy-glib-0.17.4/tests/dbus/client-channel-factory.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/client-channel-factory.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include @@ -100,9 +102,7 @@ tp_clear_object (&test->tube_chan_service); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); diff -Nru telepathy-glib-0.17.4/tests/dbus/cli-group.c telepathy-glib-0.17.5/tests/dbus/cli-group.c --- telepathy-glib-0.17.4/tests/dbus/cli-group.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/cli-group.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include @@ -536,8 +538,7 @@ check_removed_unknown_error_in_invalidated (); check_removed_known_error_in_invalidated (); - MYASSERT (tp_cli_connection_run_disconnect (conn, -1, &error, NULL), ""); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); /* clean up */ diff -Nru telepathy-glib-0.17.4/tests/dbus/cm.c telepathy-glib-0.17.5/tests/dbus/cm.c --- telepathy-glib-0.17.4/tests/dbus/cm.c 2011-07-12 14:13:59.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/cm.c 2012-02-20 16:57:08.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include "tests/lib/echo-cm.h" @@ -348,6 +350,7 @@ const TpConnectionManagerParam *param; const TpConnectionManagerProtocol *protocol; gchar **strv; + GPtrArray *arr; test->cm = tp_connection_manager_new (test->dbus, "test_manager_file", NULL, &error); @@ -668,6 +671,17 @@ g_assert_cmpint (g_value_get_uchar (¶m->default_value), ==, 42); param = &protocol->params[22]; + g_assert_cmpstr (param->name, ==, "ao"); + g_assert_cmpuint (param->flags, ==, TP_CONN_MGR_PARAM_FLAG_HAS_DEFAULT); + g_assert_cmpstr (param->dbus_signature, ==, "ao"); + g_assert (G_VALUE_HOLDS (¶m->default_value, + TP_ARRAY_TYPE_OBJECT_PATH_LIST)); + arr = g_value_get_boxed (¶m->default_value); + g_assert_cmpuint (arr->len, ==, 2); + g_assert_cmpstr ((gchar *) g_ptr_array_index (arr, 0), ==, "/misc"); + g_assert_cmpstr ((gchar *) g_ptr_array_index (arr, 1), ==, "/other"); + + param = &protocol->params[23]; g_assert (param->name == NULL); } diff -Nru telepathy-glib-0.17.4/tests/dbus/cm-message.c telepathy-glib-0.17.5/tests/dbus/cm-message.c --- telepathy-glib-0.17.4/tests/dbus/cm-message.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/cm-message.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include @@ -35,9 +37,7 @@ teardown (Test *test, gconstpointer data) { - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); } diff -Nru telepathy-glib-0.17.4/tests/dbus/connection-aliasing.c telepathy-glib-0.17.5/tests/dbus/connection-aliasing.c --- telepathy-glib-0.17.4/tests/dbus/connection-aliasing.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/connection-aliasing.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -99,7 +101,6 @@ gconstpointer data G_GNUC_UNUSED) { TpConnection *conn; - gboolean ok; GError *error = NULL; g_clear_error (&test->error); @@ -112,9 +113,7 @@ g_assert (conn != NULL); g_assert_no_error (error); - ok = tp_cli_connection_run_disconnect (conn, -1, &error, NULL); - g_assert (ok); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); g_assert (!tp_connection_run_until_ready (conn, FALSE, &error, NULL)); g_assert_error (error, TP_ERRORS, TP_ERROR_CANCELLED); diff -Nru telepathy-glib-0.17.4/tests/dbus/connection-balance.c telepathy-glib-0.17.5/tests/dbus/connection-balance.c --- telepathy-glib-0.17.4/tests/dbus/connection-balance.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/connection-balance.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -245,7 +247,6 @@ gconstpointer data G_GNUC_UNUSED) { TpConnection *conn; - gboolean ok; GError *error = NULL; g_clear_error (&test->error); @@ -258,9 +259,7 @@ g_assert (conn != NULL); g_assert_no_error (error); - ok = tp_cli_connection_run_disconnect (conn, -1, &error, NULL); - g_assert (ok); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); g_assert (!tp_connection_run_until_ready (conn, FALSE, &error, NULL)); g_assert_error (error, TP_ERRORS, TP_ERROR_CANCELLED); diff -Nru telepathy-glib-0.17.4/tests/dbus/connection-bug-18845.c telepathy-glib-0.17.5/tests/dbus/connection-bug-18845.c --- telepathy-glib-0.17.4/tests/dbus/connection-bug-18845.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/connection-bug-18845.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -108,9 +110,7 @@ MYASSERT (tp_connection_run_until_ready (conn, TRUE, &error, NULL), ""); g_assert_no_error (error); - MYASSERT (tp_cli_connection_run_disconnect (conn, -1, &error, NULL), ""); - g_assert_no_error (error); - + tp_tests_connection_assert_disconnect_succeeds (conn); g_object_unref (conn); service_conn_as_base = NULL; diff -Nru telepathy-glib-0.17.4/tests/dbus/connection.c telepathy-glib-0.17.5/tests/dbus/connection.c --- telepathy-glib-0.17.4/tests/dbus/connection.c 2011-07-12 14:13:59.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/connection.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -82,7 +84,6 @@ gconstpointer data) { TpConnection *conn; - gboolean ok; GError *error = NULL; if (test->conn != NULL) @@ -97,9 +98,7 @@ g_assert (conn != NULL); g_assert_no_error (error); - ok = tp_cli_connection_run_disconnect (conn, -1, &error, NULL); - g_assert (ok); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); g_assert (!tp_connection_run_until_ready (conn, FALSE, &error, NULL)); g_assert_error (error, TP_ERRORS, TP_ERROR_CANCELLED); diff -Nru telepathy-glib-0.17.4/tests/dbus/connection-error.c telepathy-glib-0.17.5/tests/dbus/connection-error.c --- telepathy-glib-0.17.4/tests/dbus/connection-error.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/connection-error.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -159,7 +161,13 @@ teardown (Test *test, gconstpointer nil G_GNUC_UNUSED) { - tp_cli_connection_run_disconnect (test->conn, -1, NULL, NULL); + GAsyncResult *result = NULL; + + tp_connection_disconnect_async (test->conn, tp_tests_result_ready_cb, + &result); + tp_tests_run_until_result (&result); + /* Ignore success/failure: it might already have gone */ + g_object_unref (result); test->service_conn_as_base = NULL; g_object_unref (test->service_conn); diff -Nru telepathy-glib-0.17.4/tests/dbus/connection-getinterfaces-failure.c telepathy-glib-0.17.5/tests/dbus/connection-getinterfaces-failure.c --- telepathy-glib-0.17.4/tests/dbus/connection-getinterfaces-failure.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/connection-getinterfaces-failure.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/connection-handles.c telepathy-glib-0.17.5/tests/dbus/connection-handles.c --- telepathy-glib-0.17.4/tests/dbus/connection-handles.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/connection-handles.c 2012-02-20 16:55:59.000000000 +0000 @@ -14,6 +14,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -328,9 +330,7 @@ /* Teardown */ - MYASSERT (tp_cli_connection_run_disconnect (client_conn, -1, &error, NULL), - ""); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (client_conn); service_conn_as_base = NULL; g_object_unref (service_conn); diff -Nru telepathy-glib-0.17.4/tests/dbus/connection-inject-bug16307.c telepathy-glib-0.17.5/tests/dbus/connection-inject-bug16307.c --- telepathy-glib-0.17.4/tests/dbus/connection-inject-bug16307.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/connection-inject-bug16307.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,9 @@ * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ + +#include "config.h" + #include #include #include @@ -69,8 +72,7 @@ ""); g_assert_no_error (error); - MYASSERT (tp_cli_connection_run_disconnect (conn, -1, &error, NULL), ""); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); service_conn_as_base = NULL; g_object_unref (service_conn); diff -Nru telepathy-glib-0.17.4/tests/dbus/connection-interests.c telepathy-glib-0.17.5/tests/dbus/connection-interests.c --- telepathy-glib-0.17.4/tests/dbus/connection-interests.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/connection-interests.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -219,7 +221,6 @@ gconstpointer data) { TpConnection *conn; - gboolean ok; GError *error = NULL; if (test->conn != NULL) @@ -234,9 +235,7 @@ g_assert (conn != NULL); g_assert_no_error (error); - ok = tp_cli_connection_run_disconnect (conn, -1, &error, NULL); - g_assert (ok); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); g_assert (!tp_connection_run_until_ready (conn, FALSE, &error, NULL)); g_assert_error (error, TP_ERRORS, TP_ERROR_CANCELLED); diff -Nru telepathy-glib-0.17.4/tests/dbus/contact-list-client.c telepathy-glib-0.17.5/tests/dbus/contact-list-client.c --- telepathy-glib-0.17.4/tests/dbus/contact-list-client.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/contact-list-client.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include @@ -87,9 +89,7 @@ g_main_loop_unref (test->mainloop); test->mainloop = NULL; - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); diff -Nru telepathy-glib-0.17.4/tests/dbus/contact-lists.c telepathy-glib-0.17.5/tests/dbus/contact-lists.c --- telepathy-glib-0.17.4/tests/dbus/contact-lists.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/contact-lists.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include "examples/cm/contactlist/conn.h" @@ -448,7 +450,6 @@ gconstpointer data) { TpConnection *conn; - gboolean ok; GError *error = NULL; g_array_unref (test->arr); @@ -474,9 +475,7 @@ &error); g_assert (conn != NULL); g_assert_no_error (error); - ok = tp_cli_connection_run_disconnect (conn, -1, &error, NULL); - g_assert (ok); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); g_assert (!tp_connection_run_until_ready (conn, FALSE, &error, NULL)); g_assert_error (error, TP_ERRORS, TP_ERROR_CANCELLED); g_clear_error (&error); @@ -2565,8 +2564,6 @@ test_request_blocked_contacts_pre_connect (Test *test, gconstpointer nil G_GNUC_UNUSED) { - gboolean ok; - /* This verifies that calling RequestBlockedContacts() * before Connect(), when Connect() ultimately succeeds, returns correctly. */ @@ -2576,8 +2573,7 @@ tp_cli_connection_call_connect (test->conn, -1, NULL, NULL, NULL, NULL); g_main_loop_run (test->main_loop); - ok = tp_cli_connection_run_disconnect (test->conn, -1, NULL, NULL); - g_assert (ok); + tp_tests_connection_assert_disconnect_succeeds (test->conn); } static void diff -Nru telepathy-glib-0.17.4/tests/dbus/contacts-bug-19101.c telepathy-glib-0.17.5/tests/dbus/contacts-bug-19101.c --- telepathy-glib-0.17.4/tests/dbus/contacts-bug-19101.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/contacts-bug-19101.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,5 +1,7 @@ /* Regression test for fd.o bug #19101. */ +#include "config.h" + #include #include #include @@ -177,9 +179,7 @@ /* Teardown */ - MYASSERT (tp_cli_connection_run_disconnect (client_conn, -1, &error, NULL), - ""); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (client_conn); g_object_unref (client_conn); service_conn_as_base = NULL; diff -Nru telepathy-glib-0.17.4/tests/dbus/contacts.c telepathy-glib-0.17.5/tests/dbus/contacts.c --- telepathy-glib-0.17.4/tests/dbus/contacts.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/contacts.c 2012-02-20 16:55:59.000000000 +0000 @@ -15,6 +15,9 @@ * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ + +#include "config.h" + #include #include #include @@ -2882,15 +2885,8 @@ teardown (Fixture *f, gconstpointer unused G_GNUC_UNUSED) { - gboolean ok; - GError *error = NULL; - if (f->client_conn != NULL) - { - ok = tp_cli_connection_run_disconnect (f->client_conn, -1, &error, NULL); - g_assert_no_error (error); - g_assert (ok); - } + tp_tests_connection_assert_disconnect_succeeds (f->client_conn); tp_clear_object (&f->client_conn); f->service_repo = NULL; @@ -2898,22 +2894,15 @@ tp_clear_object (&f->base_connection); if (f->legacy_client_conn != NULL) - { - ok = tp_cli_connection_run_disconnect (f->legacy_client_conn, -1, &error, - NULL); - g_assert_no_error (error); - g_assert (ok); - } + tp_tests_connection_assert_disconnect_succeeds (f->legacy_client_conn); tp_clear_object (&f->legacy_client_conn); tp_clear_object (&f->legacy_base_connection); if (f->no_requests_client_conn != NULL) { - ok = tp_cli_connection_run_disconnect (f->no_requests_client_conn, -1, - &error, NULL); - g_assert_no_error (error); - g_assert (ok); + tp_tests_connection_assert_disconnect_succeeds ( + f->no_requests_client_conn); } tp_clear_object (&f->no_requests_client_conn); diff -Nru telepathy-glib-0.17.4/tests/dbus/contacts-mixin.c telepathy-glib-0.17.5/tests/dbus/contacts-mixin.c --- telepathy-glib-0.17.4/tests/dbus/contacts-mixin.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/contacts-mixin.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -206,9 +208,7 @@ /* Teardown */ - MYASSERT (tp_cli_connection_run_disconnect (client_conn, -1, &error, NULL), - ""); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (client_conn); service_conn_as_base = NULL; g_object_unref (service_conn); diff -Nru telepathy-glib-0.17.4/tests/dbus/contacts-slow-path.c telepathy-glib-0.17.5/tests/dbus/contacts-slow-path.c --- telepathy-glib-0.17.4/tests/dbus/contacts-slow-path.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/contacts-slow-path.c 2012-02-20 16:55:59.000000000 +0000 @@ -10,6 +10,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -1217,16 +1219,8 @@ teardown (Fixture *f, gconstpointer unused G_GNUC_UNUSED) { - GError *error = NULL; - gboolean ok; - if (f->legacy_client_conn != NULL) - { - ok = tp_cli_connection_run_disconnect (f->legacy_client_conn, -1, - &error, NULL); - g_assert_no_error (error); - g_assert (ok); - } + tp_tests_connection_assert_disconnect_succeeds (f->legacy_client_conn); f->service_repo = NULL; tp_clear_object (&f->legacy_client_conn); diff -Nru telepathy-glib-0.17.4/tests/dbus/dbus.c telepathy-glib-0.17.5/tests/dbus/dbus.c --- telepathy-glib-0.17.4/tests/dbus/dbus.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/dbus.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/dbus-tube.c telepathy-glib-0.17.5/tests/dbus/dbus-tube.c --- telepathy-glib-0.17.4/tests/dbus/dbus-tube.c 2011-09-29 13:14:10.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/dbus-tube.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include @@ -63,9 +65,7 @@ tp_clear_object (&test->tube_chan_service); tp_clear_object (&test->tube); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); } diff -Nru telepathy-glib-0.17.4/tests/dbus/disconnection.c telepathy-glib-0.17.5/tests/dbus/disconnection.c --- telepathy-glib-0.17.4/tests/dbus/disconnection.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/disconnection.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/error-enum.c telepathy-glib-0.17.5/tests/dbus/error-enum.c --- telepathy-glib-0.17.4/tests/dbus/error-enum.c 2009-04-02 15:11:51.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/error-enum.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include static void diff -Nru telepathy-glib-0.17.4/tests/dbus/example-no-protocols.c telepathy-glib-0.17.5/tests/dbus/example-no-protocols.c --- telepathy-glib-0.17.4/tests/dbus/example-no-protocols.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/example-no-protocols.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/file-transfer-channel.c telepathy-glib-0.17.5/tests/dbus/file-transfer-channel.c --- telepathy-glib-0.17.4/tests/dbus/file-transfer-channel.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/file-transfer-channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include @@ -256,9 +258,7 @@ tp_clear_object (&test->chan_service); tp_clear_object (&test->cm_stream); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); diff -Nru telepathy-glib-0.17.4/tests/dbus/finalized-in-invalidated-handler.c telepathy-glib-0.17.5/tests/dbus/finalized-in-invalidated-handler.c --- telepathy-glib-0.17.4/tests/dbus/finalized-in-invalidated-handler.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/finalized-in-invalidated-handler.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/get-interface-after-invalidate.c telepathy-glib-0.17.5/tests/dbus/get-interface-after-invalidate.c --- telepathy-glib-0.17.4/tests/dbus/get-interface-after-invalidate.c 2011-07-12 14:13:59.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/get-interface-after-invalidate.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/group-mixin.c telepathy-glib-0.17.5/tests/dbus/group-mixin.c --- telepathy-glib-0.17.4/tests/dbus/group-mixin.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/group-mixin.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -578,8 +580,7 @@ test_group_mixin (); - MYASSERT (tp_cli_connection_run_disconnect (conn, -1, &error, NULL), ""); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); /* clean up */ diff -Nru telepathy-glib-0.17.4/tests/dbus/handle-set.c telepathy-glib-0.17.5/tests/dbus/handle-set.c --- telepathy-glib-0.17.4/tests/dbus/handle-set.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/handle-set.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/invalidated-while-invoking-signals.c telepathy-glib-0.17.5/tests/dbus/invalidated-while-invoking-signals.c --- telepathy-glib-0.17.4/tests/dbus/invalidated-while-invoking-signals.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/invalidated-while-invoking-signals.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/long-connection-name.c telepathy-glib-0.17.5/tests/dbus/long-connection-name.c --- telepathy-glib-0.17.4/tests/dbus/long-connection-name.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/long-connection-name.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/Makefile.am telepathy-glib-0.17.5/tests/dbus/Makefile.am --- telepathy-glib-0.17.4/tests/dbus/Makefile.am 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/Makefile.am 2012-02-20 16:56:41.000000000 +0000 @@ -4,8 +4,7 @@ test-account-manager \ test-base-client \ test-call-cancellation \ - test-call-example \ - test-callable-example \ + test-call-channel \ test-channel \ test-channel-dispatcher \ test-channel-dispatch-operation \ @@ -114,15 +113,10 @@ test_channel_request_SOURCES = channel-request.c -test_call_example_SOURCES = call-example.c -test_call_example_LDADD = \ +test_call_channel_SOURCES = call-channel.c +test_call_channel_LDADD = \ $(LDADD) \ - $(top_builddir)/examples/future/call-cm/libexample-cm-call.la - -test_callable_example_SOURCES = callable-example.c -test_callable_example_LDADD = \ - $(LDADD) \ - $(top_builddir)/examples/cm/callable/libexample-cm-callable.la + $(top_builddir)/examples/cm/call/libexample-cm-call.la test_client_SOURCES = client.c diff -Nru telepathy-glib-0.17.4/tests/dbus/Makefile.in telepathy-glib-0.17.5/tests/dbus/Makefile.in --- telepathy-glib-0.17.4/tests/dbus/Makefile.in 2011-12-19 15:18:55.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/Makefile.in 2012-02-20 17:31:10.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -61,9 +61,8 @@ am__EXEEXT_1 = test-account$(EXEEXT) \ test-account-channel-request$(EXEEXT) \ test-account-manager$(EXEEXT) test-base-client$(EXEEXT) \ - test-call-cancellation$(EXEEXT) test-call-example$(EXEEXT) \ - test-callable-example$(EXEEXT) test-channel$(EXEEXT) \ - test-channel-dispatcher$(EXEEXT) \ + test-call-cancellation$(EXEEXT) test-call-channel$(EXEEXT) \ + test-channel$(EXEEXT) test-channel-dispatcher$(EXEEXT) \ test-channel-dispatch-operation$(EXEEXT) \ test-channel-introspect$(EXEEXT) test-channel-request$(EXEEXT) \ test-channel-manager-request-properties$(EXEEXT) \ @@ -110,8 +109,8 @@ $(top_builddir)/tests/lib/libtp-glib-tests.la \ $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am_test_account_channel_request_OBJECTS = \ account-channel-request.$(OBJEXT) @@ -142,17 +141,13 @@ $(top_builddir)/tests/lib/libtp-glib-tests.la \ $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am_test_call_example_OBJECTS = call-example.$(OBJEXT) -test_call_example_OBJECTS = $(am_test_call_example_OBJECTS) +am_test_call_channel_OBJECTS = call-channel.$(OBJEXT) +test_call_channel_OBJECTS = $(am_test_call_channel_OBJECTS) am__DEPENDENCIES_2 = $(top_builddir)/tests/lib/libtp-glib-tests.la \ $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -test_call_example_DEPENDENCIES = $(am__DEPENDENCIES_2) \ - $(top_builddir)/examples/future/call-cm/libexample-cm-call.la -am_test_callable_example_OBJECTS = callable-example.$(OBJEXT) -test_callable_example_OBJECTS = $(am_test_callable_example_OBJECTS) -test_callable_example_DEPENDENCIES = $(am__DEPENDENCIES_2) \ - $(top_builddir)/examples/cm/callable/libexample-cm-callable.la +test_call_channel_DEPENDENCIES = $(am__DEPENDENCIES_2) \ + $(top_builddir)/examples/cm/call/libexample-cm-call.la am_test_channel_OBJECTS = channel.$(OBJEXT) test_channel_OBJECTS = $(am_test_channel_OBJECTS) test_channel_LDADD = $(LDADD) @@ -568,6 +563,12 @@ 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; }; \ + } SCRIPTS = $(tests_SCRIPTS) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp @@ -579,27 +580,27 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(test_account_SOURCES) \ $(test_account_channel_request_SOURCES) \ $(test_account_manager_SOURCES) $(test_base_client_SOURCES) \ - $(test_call_cancellation_SOURCES) $(test_call_example_SOURCES) \ - $(test_callable_example_SOURCES) $(test_channel_SOURCES) \ + $(test_call_cancellation_SOURCES) $(test_call_channel_SOURCES) \ + $(test_channel_SOURCES) \ $(test_channel_dispatch_operation_SOURCES) \ $(test_channel_dispatcher_SOURCES) \ $(test_channel_introspect_SOURCES) \ @@ -642,8 +643,8 @@ DIST_SOURCES = $(test_account_SOURCES) \ $(test_account_channel_request_SOURCES) \ $(test_account_manager_SOURCES) $(test_base_client_SOURCES) \ - $(test_call_cancellation_SOURCES) $(test_call_example_SOURCES) \ - $(test_callable_example_SOURCES) $(test_channel_SOURCES) \ + $(test_call_cancellation_SOURCES) $(test_call_channel_SOURCES) \ + $(test_channel_SOURCES) \ $(test_channel_dispatch_operation_SOURCES) \ $(test_channel_dispatcher_SOURCES) \ $(test_channel_introspect_SOURCES) \ @@ -863,8 +864,7 @@ test-account-manager \ test-base-client \ test-call-cancellation \ - test-call-example \ - test-callable-example \ + test-call-channel \ test-channel \ test-channel-dispatcher \ test-channel-dispatch-operation \ @@ -954,15 +954,10 @@ test_channel_dispatch_operation_SOURCES = channel-dispatch-operation.c test_channel_introspect_SOURCES = channel-introspect.c test_channel_request_SOURCES = channel-request.c -test_call_example_SOURCES = call-example.c -test_call_example_LDADD = \ +test_call_channel_SOURCES = call-channel.c +test_call_channel_LDADD = \ $(LDADD) \ - $(top_builddir)/examples/future/call-cm/libexample-cm-call.la - -test_callable_example_SOURCES = callable-example.c -test_callable_example_LDADD = \ - $(LDADD) \ - $(top_builddir)/examples/cm/callable/libexample-cm-callable.la + $(top_builddir)/examples/cm/call/libexample-cm-call.la test_client_SOURCES = client.c test_cli_group_SOURCES = cli-group.c @@ -1160,6 +1155,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/tools/check-coding-style.mk $(top_srcdir)/tools/valgrind.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -1221,187 +1217,184 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -test-account$(EXEEXT): $(test_account_OBJECTS) $(test_account_DEPENDENCIES) +test-account$(EXEEXT): $(test_account_OBJECTS) $(test_account_DEPENDENCIES) $(EXTRA_test_account_DEPENDENCIES) @rm -f test-account$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_account_OBJECTS) $(test_account_LDADD) $(LIBS) -test-account-channel-request$(EXEEXT): $(test_account_channel_request_OBJECTS) $(test_account_channel_request_DEPENDENCIES) +test-account-channel-request$(EXEEXT): $(test_account_channel_request_OBJECTS) $(test_account_channel_request_DEPENDENCIES) $(EXTRA_test_account_channel_request_DEPENDENCIES) @rm -f test-account-channel-request$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_account_channel_request_OBJECTS) $(test_account_channel_request_LDADD) $(LIBS) -test-account-manager$(EXEEXT): $(test_account_manager_OBJECTS) $(test_account_manager_DEPENDENCIES) +test-account-manager$(EXEEXT): $(test_account_manager_OBJECTS) $(test_account_manager_DEPENDENCIES) $(EXTRA_test_account_manager_DEPENDENCIES) @rm -f test-account-manager$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_account_manager_OBJECTS) $(test_account_manager_LDADD) $(LIBS) -test-base-client$(EXEEXT): $(test_base_client_OBJECTS) $(test_base_client_DEPENDENCIES) +test-base-client$(EXEEXT): $(test_base_client_OBJECTS) $(test_base_client_DEPENDENCIES) $(EXTRA_test_base_client_DEPENDENCIES) @rm -f test-base-client$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_base_client_OBJECTS) $(test_base_client_LDADD) $(LIBS) -test-call-cancellation$(EXEEXT): $(test_call_cancellation_OBJECTS) $(test_call_cancellation_DEPENDENCIES) +test-call-cancellation$(EXEEXT): $(test_call_cancellation_OBJECTS) $(test_call_cancellation_DEPENDENCIES) $(EXTRA_test_call_cancellation_DEPENDENCIES) @rm -f test-call-cancellation$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_call_cancellation_OBJECTS) $(test_call_cancellation_LDADD) $(LIBS) -test-call-example$(EXEEXT): $(test_call_example_OBJECTS) $(test_call_example_DEPENDENCIES) - @rm -f test-call-example$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_call_example_OBJECTS) $(test_call_example_LDADD) $(LIBS) -test-callable-example$(EXEEXT): $(test_callable_example_OBJECTS) $(test_callable_example_DEPENDENCIES) - @rm -f test-callable-example$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(test_callable_example_OBJECTS) $(test_callable_example_LDADD) $(LIBS) -test-channel$(EXEEXT): $(test_channel_OBJECTS) $(test_channel_DEPENDENCIES) +test-call-channel$(EXEEXT): $(test_call_channel_OBJECTS) $(test_call_channel_DEPENDENCIES) $(EXTRA_test_call_channel_DEPENDENCIES) + @rm -f test-call-channel$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_call_channel_OBJECTS) $(test_call_channel_LDADD) $(LIBS) +test-channel$(EXEEXT): $(test_channel_OBJECTS) $(test_channel_DEPENDENCIES) $(EXTRA_test_channel_DEPENDENCIES) @rm -f test-channel$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_channel_OBJECTS) $(test_channel_LDADD) $(LIBS) -test-channel-dispatch-operation$(EXEEXT): $(test_channel_dispatch_operation_OBJECTS) $(test_channel_dispatch_operation_DEPENDENCIES) +test-channel-dispatch-operation$(EXEEXT): $(test_channel_dispatch_operation_OBJECTS) $(test_channel_dispatch_operation_DEPENDENCIES) $(EXTRA_test_channel_dispatch_operation_DEPENDENCIES) @rm -f test-channel-dispatch-operation$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_channel_dispatch_operation_OBJECTS) $(test_channel_dispatch_operation_LDADD) $(LIBS) -test-channel-dispatcher$(EXEEXT): $(test_channel_dispatcher_OBJECTS) $(test_channel_dispatcher_DEPENDENCIES) +test-channel-dispatcher$(EXEEXT): $(test_channel_dispatcher_OBJECTS) $(test_channel_dispatcher_DEPENDENCIES) $(EXTRA_test_channel_dispatcher_DEPENDENCIES) @rm -f test-channel-dispatcher$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_channel_dispatcher_OBJECTS) $(test_channel_dispatcher_LDADD) $(LIBS) -test-channel-introspect$(EXEEXT): $(test_channel_introspect_OBJECTS) $(test_channel_introspect_DEPENDENCIES) +test-channel-introspect$(EXEEXT): $(test_channel_introspect_OBJECTS) $(test_channel_introspect_DEPENDENCIES) $(EXTRA_test_channel_introspect_DEPENDENCIES) @rm -f test-channel-introspect$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_channel_introspect_OBJECTS) $(test_channel_introspect_LDADD) $(LIBS) -test-channel-manager-request-properties$(EXEEXT): $(test_channel_manager_request_properties_OBJECTS) $(test_channel_manager_request_properties_DEPENDENCIES) +test-channel-manager-request-properties$(EXEEXT): $(test_channel_manager_request_properties_OBJECTS) $(test_channel_manager_request_properties_DEPENDENCIES) $(EXTRA_test_channel_manager_request_properties_DEPENDENCIES) @rm -f test-channel-manager-request-properties$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_channel_manager_request_properties_OBJECTS) $(test_channel_manager_request_properties_LDADD) $(LIBS) -test-channel-request$(EXEEXT): $(test_channel_request_OBJECTS) $(test_channel_request_DEPENDENCIES) +test-channel-request$(EXEEXT): $(test_channel_request_OBJECTS) $(test_channel_request_DEPENDENCIES) $(EXTRA_test_channel_request_DEPENDENCIES) @rm -f test-channel-request$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_channel_request_OBJECTS) $(test_channel_request_LDADD) $(LIBS) -test-cli-group$(EXEEXT): $(test_cli_group_OBJECTS) $(test_cli_group_DEPENDENCIES) +test-cli-group$(EXEEXT): $(test_cli_group_OBJECTS) $(test_cli_group_DEPENDENCIES) $(EXTRA_test_cli_group_DEPENDENCIES) @rm -f test-cli-group$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_cli_group_OBJECTS) $(test_cli_group_LDADD) $(LIBS) -test-client$(EXEEXT): $(test_client_OBJECTS) $(test_client_DEPENDENCIES) +test-client$(EXEEXT): $(test_client_OBJECTS) $(test_client_DEPENDENCIES) $(EXTRA_test_client_DEPENDENCIES) @rm -f test-client$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_client_OBJECTS) $(test_client_LDADD) $(LIBS) -test-client-channel-factory$(EXEEXT): $(test_client_channel_factory_OBJECTS) $(test_client_channel_factory_DEPENDENCIES) +test-client-channel-factory$(EXEEXT): $(test_client_channel_factory_OBJECTS) $(test_client_channel_factory_DEPENDENCIES) $(EXTRA_test_client_channel_factory_DEPENDENCIES) @rm -f test-client-channel-factory$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_client_channel_factory_OBJECTS) $(test_client_channel_factory_LDADD) $(LIBS) -test-cm$(EXEEXT): $(test_cm_OBJECTS) $(test_cm_DEPENDENCIES) +test-cm$(EXEEXT): $(test_cm_OBJECTS) $(test_cm_DEPENDENCIES) $(EXTRA_test_cm_DEPENDENCIES) @rm -f test-cm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_cm_OBJECTS) $(test_cm_LDADD) $(LIBS) -test-cm-message$(EXEEXT): $(test_cm_message_OBJECTS) $(test_cm_message_DEPENDENCIES) +test-cm-message$(EXEEXT): $(test_cm_message_OBJECTS) $(test_cm_message_DEPENDENCIES) $(EXTRA_test_cm_message_DEPENDENCIES) @rm -f test-cm-message$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_cm_message_OBJECTS) $(test_cm_message_LDADD) $(LIBS) -test-connection$(EXEEXT): $(test_connection_OBJECTS) $(test_connection_DEPENDENCIES) +test-connection$(EXEEXT): $(test_connection_OBJECTS) $(test_connection_DEPENDENCIES) $(EXTRA_test_connection_DEPENDENCIES) @rm -f test-connection$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_connection_OBJECTS) $(test_connection_LDADD) $(LIBS) -test-connection-aliasing$(EXEEXT): $(test_connection_aliasing_OBJECTS) $(test_connection_aliasing_DEPENDENCIES) +test-connection-aliasing$(EXEEXT): $(test_connection_aliasing_OBJECTS) $(test_connection_aliasing_DEPENDENCIES) $(EXTRA_test_connection_aliasing_DEPENDENCIES) @rm -f test-connection-aliasing$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_connection_aliasing_OBJECTS) $(test_connection_aliasing_LDADD) $(LIBS) -test-connection-balance$(EXEEXT): $(test_connection_balance_OBJECTS) $(test_connection_balance_DEPENDENCIES) +test-connection-balance$(EXEEXT): $(test_connection_balance_OBJECTS) $(test_connection_balance_DEPENDENCIES) $(EXTRA_test_connection_balance_DEPENDENCIES) @rm -f test-connection-balance$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_connection_balance_OBJECTS) $(test_connection_balance_LDADD) $(LIBS) -test-connection-bug-18845$(EXEEXT): $(test_connection_bug_18845_OBJECTS) $(test_connection_bug_18845_DEPENDENCIES) +test-connection-bug-18845$(EXEEXT): $(test_connection_bug_18845_OBJECTS) $(test_connection_bug_18845_DEPENDENCIES) $(EXTRA_test_connection_bug_18845_DEPENDENCIES) @rm -f test-connection-bug-18845$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_connection_bug_18845_OBJECTS) $(test_connection_bug_18845_LDADD) $(LIBS) -test-connection-error$(EXEEXT): $(test_connection_error_OBJECTS) $(test_connection_error_DEPENDENCIES) +test-connection-error$(EXEEXT): $(test_connection_error_OBJECTS) $(test_connection_error_DEPENDENCIES) $(EXTRA_test_connection_error_DEPENDENCIES) @rm -f test-connection-error$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_connection_error_OBJECTS) $(test_connection_error_LDADD) $(LIBS) -test-connection-getinterfaces-failure$(EXEEXT): $(test_connection_getinterfaces_failure_OBJECTS) $(test_connection_getinterfaces_failure_DEPENDENCIES) +test-connection-getinterfaces-failure$(EXEEXT): $(test_connection_getinterfaces_failure_OBJECTS) $(test_connection_getinterfaces_failure_DEPENDENCIES) $(EXTRA_test_connection_getinterfaces_failure_DEPENDENCIES) @rm -f test-connection-getinterfaces-failure$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_connection_getinterfaces_failure_OBJECTS) $(test_connection_getinterfaces_failure_LDADD) $(LIBS) -test-connection-handles$(EXEEXT): $(test_connection_handles_OBJECTS) $(test_connection_handles_DEPENDENCIES) +test-connection-handles$(EXEEXT): $(test_connection_handles_OBJECTS) $(test_connection_handles_DEPENDENCIES) $(EXTRA_test_connection_handles_DEPENDENCIES) @rm -f test-connection-handles$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_connection_handles_OBJECTS) $(test_connection_handles_LDADD) $(LIBS) -test-connection-inject-bug16307$(EXEEXT): $(test_connection_inject_bug16307_OBJECTS) $(test_connection_inject_bug16307_DEPENDENCIES) +test-connection-inject-bug16307$(EXEEXT): $(test_connection_inject_bug16307_OBJECTS) $(test_connection_inject_bug16307_DEPENDENCIES) $(EXTRA_test_connection_inject_bug16307_DEPENDENCIES) @rm -f test-connection-inject-bug16307$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_connection_inject_bug16307_OBJECTS) $(test_connection_inject_bug16307_LDADD) $(LIBS) -test-connection-interests$(EXEEXT): $(test_connection_interests_OBJECTS) $(test_connection_interests_DEPENDENCIES) +test-connection-interests$(EXEEXT): $(test_connection_interests_OBJECTS) $(test_connection_interests_DEPENDENCIES) $(EXTRA_test_connection_interests_DEPENDENCIES) @rm -f test-connection-interests$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_connection_interests_OBJECTS) $(test_connection_interests_LDADD) $(LIBS) -test-contact-list-client$(EXEEXT): $(test_contact_list_client_OBJECTS) $(test_contact_list_client_DEPENDENCIES) +test-contact-list-client$(EXEEXT): $(test_contact_list_client_OBJECTS) $(test_contact_list_client_DEPENDENCIES) $(EXTRA_test_contact_list_client_DEPENDENCIES) @rm -f test-contact-list-client$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_contact_list_client_OBJECTS) $(test_contact_list_client_LDADD) $(LIBS) -test-contact-lists$(EXEEXT): $(test_contact_lists_OBJECTS) $(test_contact_lists_DEPENDENCIES) +test-contact-lists$(EXEEXT): $(test_contact_lists_OBJECTS) $(test_contact_lists_DEPENDENCIES) $(EXTRA_test_contact_lists_DEPENDENCIES) @rm -f test-contact-lists$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_contact_lists_OBJECTS) $(test_contact_lists_LDADD) $(LIBS) -test-contacts$(EXEEXT): $(test_contacts_OBJECTS) $(test_contacts_DEPENDENCIES) +test-contacts$(EXEEXT): $(test_contacts_OBJECTS) $(test_contacts_DEPENDENCIES) $(EXTRA_test_contacts_DEPENDENCIES) @rm -f test-contacts$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_contacts_OBJECTS) $(test_contacts_LDADD) $(LIBS) -test-contacts-bug-19101$(EXEEXT): $(test_contacts_bug_19101_OBJECTS) $(test_contacts_bug_19101_DEPENDENCIES) +test-contacts-bug-19101$(EXEEXT): $(test_contacts_bug_19101_OBJECTS) $(test_contacts_bug_19101_DEPENDENCIES) $(EXTRA_test_contacts_bug_19101_DEPENDENCIES) @rm -f test-contacts-bug-19101$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_contacts_bug_19101_OBJECTS) $(test_contacts_bug_19101_LDADD) $(LIBS) -test-contacts-mixin$(EXEEXT): $(test_contacts_mixin_OBJECTS) $(test_contacts_mixin_DEPENDENCIES) +test-contacts-mixin$(EXEEXT): $(test_contacts_mixin_OBJECTS) $(test_contacts_mixin_DEPENDENCIES) $(EXTRA_test_contacts_mixin_DEPENDENCIES) @rm -f test-contacts-mixin$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_contacts_mixin_OBJECTS) $(test_contacts_mixin_LDADD) $(LIBS) -test-contacts-slow-path$(EXEEXT): $(test_contacts_slow_path_OBJECTS) $(test_contacts_slow_path_DEPENDENCIES) +test-contacts-slow-path$(EXEEXT): $(test_contacts_slow_path_OBJECTS) $(test_contacts_slow_path_DEPENDENCIES) $(EXTRA_test_contacts_slow_path_DEPENDENCIES) @rm -f test-contacts-slow-path$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_contacts_slow_path_OBJECTS) $(test_contacts_slow_path_LDADD) $(LIBS) -test-dbus$(EXEEXT): $(test_dbus_OBJECTS) $(test_dbus_DEPENDENCIES) +test-dbus$(EXEEXT): $(test_dbus_OBJECTS) $(test_dbus_DEPENDENCIES) $(EXTRA_test_dbus_DEPENDENCIES) @rm -f test-dbus$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_dbus_OBJECTS) $(test_dbus_LDADD) $(LIBS) -test-dbus-tube$(EXEEXT): $(test_dbus_tube_OBJECTS) $(test_dbus_tube_DEPENDENCIES) +test-dbus-tube$(EXEEXT): $(test_dbus_tube_OBJECTS) $(test_dbus_tube_DEPENDENCIES) $(EXTRA_test_dbus_tube_DEPENDENCIES) @rm -f test-dbus-tube$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_dbus_tube_OBJECTS) $(test_dbus_tube_LDADD) $(LIBS) -test-disconnection$(EXEEXT): $(test_disconnection_OBJECTS) $(test_disconnection_DEPENDENCIES) +test-disconnection$(EXEEXT): $(test_disconnection_OBJECTS) $(test_disconnection_DEPENDENCIES) $(EXTRA_test_disconnection_DEPENDENCIES) @rm -f test-disconnection$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_disconnection_OBJECTS) $(test_disconnection_LDADD) $(LIBS) -test-error-enum$(EXEEXT): $(test_error_enum_OBJECTS) $(test_error_enum_DEPENDENCIES) +test-error-enum$(EXEEXT): $(test_error_enum_OBJECTS) $(test_error_enum_DEPENDENCIES) $(EXTRA_test_error_enum_DEPENDENCIES) @rm -f test-error-enum$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_error_enum_OBJECTS) $(test_error_enum_LDADD) $(LIBS) -test-example-no-protocols$(EXEEXT): $(test_example_no_protocols_OBJECTS) $(test_example_no_protocols_DEPENDENCIES) +test-example-no-protocols$(EXEEXT): $(test_example_no_protocols_OBJECTS) $(test_example_no_protocols_DEPENDENCIES) $(EXTRA_test_example_no_protocols_DEPENDENCIES) @rm -f test-example-no-protocols$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_example_no_protocols_OBJECTS) $(test_example_no_protocols_LDADD) $(LIBS) -test-file-transfer-channel$(EXEEXT): $(test_file_transfer_channel_OBJECTS) $(test_file_transfer_channel_DEPENDENCIES) +test-file-transfer-channel$(EXEEXT): $(test_file_transfer_channel_OBJECTS) $(test_file_transfer_channel_DEPENDENCIES) $(EXTRA_test_file_transfer_channel_DEPENDENCIES) @rm -f test-file-transfer-channel$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_file_transfer_channel_OBJECTS) $(test_file_transfer_channel_LDADD) $(LIBS) -test-finalized-in-invalidated-handler$(EXEEXT): $(test_finalized_in_invalidated_handler_OBJECTS) $(test_finalized_in_invalidated_handler_DEPENDENCIES) +test-finalized-in-invalidated-handler$(EXEEXT): $(test_finalized_in_invalidated_handler_OBJECTS) $(test_finalized_in_invalidated_handler_DEPENDENCIES) $(EXTRA_test_finalized_in_invalidated_handler_DEPENDENCIES) @rm -f test-finalized-in-invalidated-handler$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_finalized_in_invalidated_handler_OBJECTS) $(test_finalized_in_invalidated_handler_LDADD) $(LIBS) -test-get-interface-after-invalidate$(EXEEXT): $(test_get_interface_after_invalidate_OBJECTS) $(test_get_interface_after_invalidate_DEPENDENCIES) +test-get-interface-after-invalidate$(EXEEXT): $(test_get_interface_after_invalidate_OBJECTS) $(test_get_interface_after_invalidate_DEPENDENCIES) $(EXTRA_test_get_interface_after_invalidate_DEPENDENCIES) @rm -f test-get-interface-after-invalidate$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_get_interface_after_invalidate_OBJECTS) $(test_get_interface_after_invalidate_LDADD) $(LIBS) -test-group-mixin$(EXEEXT): $(test_group_mixin_OBJECTS) $(test_group_mixin_DEPENDENCIES) +test-group-mixin$(EXEEXT): $(test_group_mixin_OBJECTS) $(test_group_mixin_DEPENDENCIES) $(EXTRA_test_group_mixin_DEPENDENCIES) @rm -f test-group-mixin$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_group_mixin_OBJECTS) $(test_group_mixin_LDADD) $(LIBS) -test-handle-repo$(EXEEXT): $(test_handle_repo_OBJECTS) $(test_handle_repo_DEPENDENCIES) +test-handle-repo$(EXEEXT): $(test_handle_repo_OBJECTS) $(test_handle_repo_DEPENDENCIES) $(EXTRA_test_handle_repo_DEPENDENCIES) @rm -f test-handle-repo$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_handle_repo_OBJECTS) $(test_handle_repo_LDADD) $(LIBS) -test-handle-set$(EXEEXT): $(test_handle_set_OBJECTS) $(test_handle_set_DEPENDENCIES) +test-handle-set$(EXEEXT): $(test_handle_set_OBJECTS) $(test_handle_set_DEPENDENCIES) $(EXTRA_test_handle_set_DEPENDENCIES) @rm -f test-handle-set$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_handle_set_OBJECTS) $(test_handle_set_LDADD) $(LIBS) -test-invalidated-while-invoking-signals$(EXEEXT): $(test_invalidated_while_invoking_signals_OBJECTS) $(test_invalidated_while_invoking_signals_DEPENDENCIES) +test-invalidated-while-invoking-signals$(EXEEXT): $(test_invalidated_while_invoking_signals_OBJECTS) $(test_invalidated_while_invoking_signals_DEPENDENCIES) $(EXTRA_test_invalidated_while_invoking_signals_DEPENDENCIES) @rm -f test-invalidated-while-invoking-signals$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_invalidated_while_invoking_signals_OBJECTS) $(test_invalidated_while_invoking_signals_LDADD) $(LIBS) -test-long-connection-name$(EXEEXT): $(test_long_connection_name_OBJECTS) $(test_long_connection_name_DEPENDENCIES) +test-long-connection-name$(EXEEXT): $(test_long_connection_name_OBJECTS) $(test_long_connection_name_DEPENDENCIES) $(EXTRA_test_long_connection_name_DEPENDENCIES) @rm -f test-long-connection-name$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_long_connection_name_OBJECTS) $(test_long_connection_name_LDADD) $(LIBS) -test-message-mixin$(EXEEXT): $(test_message_mixin_OBJECTS) $(test_message_mixin_DEPENDENCIES) +test-message-mixin$(EXEEXT): $(test_message_mixin_OBJECTS) $(test_message_mixin_DEPENDENCIES) $(EXTRA_test_message_mixin_DEPENDENCIES) @rm -f test-message-mixin$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_message_mixin_OBJECTS) $(test_message_mixin_LDADD) $(LIBS) -test-params-cm$(EXEEXT): $(test_params_cm_OBJECTS) $(test_params_cm_DEPENDENCIES) +test-params-cm$(EXEEXT): $(test_params_cm_OBJECTS) $(test_params_cm_DEPENDENCIES) $(EXTRA_test_params_cm_DEPENDENCIES) @rm -f test-params-cm$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_params_cm_OBJECTS) $(test_params_cm_LDADD) $(LIBS) -test-properties$(EXEEXT): $(test_properties_OBJECTS) $(test_properties_DEPENDENCIES) +test-properties$(EXEEXT): $(test_properties_OBJECTS) $(test_properties_DEPENDENCIES) $(EXTRA_test_properties_DEPENDENCIES) @rm -f test-properties$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_properties_OBJECTS) $(test_properties_LDADD) $(LIBS) -test-protocol-objects$(EXEEXT): $(test_protocol_objects_OBJECTS) $(test_protocol_objects_DEPENDENCIES) +test-protocol-objects$(EXEEXT): $(test_protocol_objects_OBJECTS) $(test_protocol_objects_DEPENDENCIES) $(EXTRA_test_protocol_objects_DEPENDENCIES) @rm -f test-protocol-objects$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_protocol_objects_OBJECTS) $(test_protocol_objects_LDADD) $(LIBS) -test-proxy-preparation$(EXEEXT): $(test_proxy_preparation_OBJECTS) $(test_proxy_preparation_DEPENDENCIES) +test-proxy-preparation$(EXEEXT): $(test_proxy_preparation_OBJECTS) $(test_proxy_preparation_DEPENDENCIES) $(EXTRA_test_proxy_preparation_DEPENDENCIES) @rm -f test-proxy-preparation$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_proxy_preparation_OBJECTS) $(test_proxy_preparation_LDADD) $(LIBS) -test-self-handle$(EXEEXT): $(test_self_handle_OBJECTS) $(test_self_handle_DEPENDENCIES) +test-self-handle$(EXEEXT): $(test_self_handle_OBJECTS) $(test_self_handle_DEPENDENCIES) $(EXTRA_test_self_handle_DEPENDENCIES) @rm -f test-self-handle$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_self_handle_OBJECTS) $(test_self_handle_LDADD) $(LIBS) -test-self-presence$(EXEEXT): $(test_self_presence_OBJECTS) $(test_self_presence_DEPENDENCIES) +test-self-presence$(EXEEXT): $(test_self_presence_OBJECTS) $(test_self_presence_DEPENDENCIES) $(EXTRA_test_self_presence_DEPENDENCIES) @rm -f test-self-presence$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_self_presence_OBJECTS) $(test_self_presence_LDADD) $(LIBS) -test-simple-approver$(EXEEXT): $(test_simple_approver_OBJECTS) $(test_simple_approver_DEPENDENCIES) +test-simple-approver$(EXEEXT): $(test_simple_approver_OBJECTS) $(test_simple_approver_DEPENDENCIES) $(EXTRA_test_simple_approver_DEPENDENCIES) @rm -f test-simple-approver$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_simple_approver_OBJECTS) $(test_simple_approver_LDADD) $(LIBS) -test-simple-handler$(EXEEXT): $(test_simple_handler_OBJECTS) $(test_simple_handler_DEPENDENCIES) +test-simple-handler$(EXEEXT): $(test_simple_handler_OBJECTS) $(test_simple_handler_DEPENDENCIES) $(EXTRA_test_simple_handler_DEPENDENCIES) @rm -f test-simple-handler$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_simple_handler_OBJECTS) $(test_simple_handler_LDADD) $(LIBS) -test-simple-observer$(EXEEXT): $(test_simple_observer_OBJECTS) $(test_simple_observer_DEPENDENCIES) +test-simple-observer$(EXEEXT): $(test_simple_observer_OBJECTS) $(test_simple_observer_DEPENDENCIES) $(EXTRA_test_simple_observer_DEPENDENCIES) @rm -f test-simple-observer$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_simple_observer_OBJECTS) $(test_simple_observer_LDADD) $(LIBS) -test-stream-tube$(EXEEXT): $(test_stream_tube_OBJECTS) $(test_stream_tube_DEPENDENCIES) +test-stream-tube$(EXEEXT): $(test_stream_tube_OBJECTS) $(test_stream_tube_DEPENDENCIES) $(EXTRA_test_stream_tube_DEPENDENCIES) @rm -f test-stream-tube$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_stream_tube_OBJECTS) $(test_stream_tube_LDADD) $(LIBS) -test-text-channel$(EXEEXT): $(test_text_channel_OBJECTS) $(test_text_channel_DEPENDENCIES) +test-text-channel$(EXEEXT): $(test_text_channel_OBJECTS) $(test_text_channel_DEPENDENCIES) $(EXTRA_test_text_channel_DEPENDENCIES) @rm -f test-text-channel$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_text_channel_OBJECTS) $(test_text_channel_LDADD) $(LIBS) -test-text-mixin$(EXEEXT): $(test_text_mixin_OBJECTS) $(test_text_mixin_DEPENDENCIES) +test-text-mixin$(EXEEXT): $(test_text_mixin_OBJECTS) $(test_text_mixin_DEPENDENCIES) $(EXTRA_test_text_mixin_DEPENDENCIES) @rm -f test-text-mixin$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_text_mixin_OBJECTS) $(test_text_mixin_LDADD) $(LIBS) -test-text-respawn$(EXEEXT): $(test_text_respawn_OBJECTS) $(test_text_respawn_DEPENDENCIES) +test-text-respawn$(EXEEXT): $(test_text_respawn_OBJECTS) $(test_text_respawn_DEPENDENCIES) $(EXTRA_test_text_respawn_DEPENDENCIES) @rm -f test-text-respawn$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_text_respawn_OBJECTS) $(test_text_respawn_LDADD) $(LIBS) -test-unsupported-interface$(EXEEXT): $(test_unsupported_interface_OBJECTS) $(test_unsupported_interface_DEPENDENCIES) +test-unsupported-interface$(EXEEXT): $(test_unsupported_interface_OBJECTS) $(test_unsupported_interface_DEPENDENCIES) $(EXTRA_test_unsupported_interface_DEPENDENCIES) @rm -f test-unsupported-interface$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_unsupported_interface_OBJECTS) $(test_unsupported_interface_LDADD) $(LIBS) install-testsSCRIPTS: $(tests_SCRIPTS) @@ -1435,9 +1428,7 @@ @list='$(tests_SCRIPTS)'; test -n "$(testsdir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(testsdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(testsdir)" && rm -f $$files + dir='$(DESTDIR)$(testsdir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -1450,8 +1441,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/account.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base-client.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-cancellation.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-example.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callable-example.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/call-channel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/channel-dispatch-operation.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/channel-dispatcher.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/channel-introspect.Po@am__quote@ @@ -1511,42 +1501,37 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< svc.o: _gen/svc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT svc.o -MD -MP -MF $(DEPDIR)/svc.Tpo -c -o svc.o `test -f '_gen/svc.c' || echo '$(srcdir)/'`_gen/svc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/svc.Tpo $(DEPDIR)/svc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/svc.c' object='svc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/svc.c' object='svc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o svc.o `test -f '_gen/svc.c' || echo '$(srcdir)/'`_gen/svc.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o svc.o `test -f '_gen/svc.c' || echo '$(srcdir)/'`_gen/svc.c svc.obj: _gen/svc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT svc.obj -MD -MP -MF $(DEPDIR)/svc.Tpo -c -o svc.obj `if test -f '_gen/svc.c'; then $(CYGPATH_W) '_gen/svc.c'; else $(CYGPATH_W) '$(srcdir)/_gen/svc.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/svc.Tpo $(DEPDIR)/svc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='_gen/svc.c' object='svc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='_gen/svc.c' object='svc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o svc.obj `if test -f '_gen/svc.c'; then $(CYGPATH_W) '_gen/svc.c'; else $(CYGPATH_W) '$(srcdir)/_gen/svc.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o svc.obj `if test -f '_gen/svc.c'; then $(CYGPATH_W) '_gen/svc.c'; else $(CYGPATH_W) '$(srcdir)/_gen/svc.c'; fi` mostlyclean-libtool: -rm -f *.lo @@ -1570,9 +1555,7 @@ @$(NORMAL_UNINSTALL) @list='$(dbusconfig_DATA)'; test -n "$(dbusconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(dbusconfigdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(dbusconfigdir)" && rm -f $$files + dir='$(DESTDIR)$(dbusconfigdir)'; $(am__uninstall_files_from_dir) install-dbusserviceDATA: $(dbusservice_DATA) @$(NORMAL_INSTALL) test -z "$(dbusservicedir)" || $(MKDIR_P) "$(DESTDIR)$(dbusservicedir)" @@ -1590,9 +1573,7 @@ @$(NORMAL_UNINSTALL) @list='$(dbusservice_DATA)'; test -n "$(dbusservicedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(dbusservicedir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(dbusservicedir)" && rm -f $$files + dir='$(DESTDIR)$(dbusservicedir)'; $(am__uninstall_files_from_dir) install-managersDATA: $(managers_DATA) @$(NORMAL_INSTALL) test -z "$(managersdir)" || $(MKDIR_P) "$(DESTDIR)$(managersdir)" @@ -1610,9 +1591,7 @@ @$(NORMAL_UNINSTALL) @list='$(managers_DATA)'; test -n "$(managersdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(managersdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(managersdir)" && rm -f $$files + dir='$(DESTDIR)$(managersdir)'; $(am__uninstall_files_from_dir) install-testsDATA: $(tests_DATA) @$(NORMAL_INSTALL) test -z "$(testsdir)" || $(MKDIR_P) "$(DESTDIR)$(testsdir)" @@ -1630,9 +1609,7 @@ @$(NORMAL_UNINSTALL) @list='$(tests_DATA)'; test -n "$(testsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(testsdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(testsdir)" && rm -f $$files + dir='$(DESTDIR)$(testsdir)'; $(am__uninstall_files_from_dir) ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ @@ -1767,14 +1744,15 @@ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ if test "$$failed" -eq 0; then \ - echo "$$grn$$dashes"; \ + col="$$grn"; \ else \ - echo "$$red$$dashes"; \ + col="$$red"; \ fi; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes$$std"; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ test "$$failed" -eq 0; \ else :; fi @@ -1828,10 +1806,15 @@ 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 -Nru telepathy-glib-0.17.4/tests/dbus/message-mixin.c telepathy-glib-0.17.5/tests/dbus/message-mixin.c --- telepathy-glib-0.17.4/tests/dbus/message-mixin.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/message-mixin.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -1093,8 +1095,7 @@ g_print ("\n\n==== End of tests ====\n"); - MYASSERT (tp_cli_connection_run_disconnect (conn, -1, &error, NULL), ""); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); g_object_unref (chan); g_object_unref (conn); diff -Nru telepathy-glib-0.17.4/tests/dbus/params-cm.c telepathy-glib-0.17.5/tests/dbus/params-cm.c --- telepathy-glib-0.17.4/tests/dbus/params-cm.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/params-cm.c 2012-02-20 16:55:59.000000000 +0000 @@ -18,6 +18,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/properties.c telepathy-glib-0.17.5/tests/dbus/properties.c --- telepathy-glib-0.17.4/tests/dbus/properties.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/properties.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/protocol-objects.c telepathy-glib-0.17.5/tests/dbus/protocol-objects.c --- telepathy-glib-0.17.4/tests/dbus/protocol-objects.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/protocol-objects.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/dbus/proxy-preparation.c telepathy-glib-0.17.5/tests/dbus/proxy-preparation.c --- telepathy-glib-0.17.4/tests/dbus/proxy-preparation.c 2011-11-24 09:22:14.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/proxy-preparation.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include "tests/lib/util.h" @@ -52,9 +54,8 @@ static void disconnect_and_destroy_conn (Test *test) { - tp_cli_connection_run_disconnect (TP_CONNECTION (test->my_conn), -1, - &test->error, NULL); - g_assert_no_error (test->error); + tp_tests_connection_assert_disconnect_succeeds ( + TP_CONNECTION (test->my_conn)); tp_clear_object (&test->connection); tp_clear_object (&test->base_connection); diff -Nru telepathy-glib-0.17.4/tests/dbus/self-handle.c telepathy-glib-0.17.5/tests/dbus/self-handle.c --- telepathy-glib-0.17.4/tests/dbus/self-handle.c 2011-07-12 14:13:59.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/self-handle.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -325,17 +327,10 @@ teardown (Fixture *f, gconstpointer unused G_GNUC_UNUSED) { - gboolean ok; - g_clear_error (&f->error); if (f->client_conn != NULL) - { - ok = tp_cli_connection_run_disconnect (f->client_conn, -1, &f->error, - NULL); - g_assert_no_error (f->error); - g_assert (ok); - } + tp_tests_connection_assert_disconnect_succeeds (f->client_conn); tp_clear_object (&f->result); tp_clear_object (&f->client_conn); diff -Nru telepathy-glib-0.17.4/tests/dbus/self-presence.c telepathy-glib-0.17.5/tests/dbus/self-presence.c --- telepathy-glib-0.17.4/tests/dbus/self-presence.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/self-presence.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -288,9 +290,7 @@ /* Teardown */ - MYASSERT (tp_cli_connection_run_disconnect (client_conn, -1, &error, NULL), - ""); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (client_conn); g_object_unref (client_conn); service_conn_as_base = NULL; diff -Nru telepathy-glib-0.17.4/tests/dbus/simple-approver.c telepathy-glib-0.17.5/tests/dbus/simple-approver.c --- telepathy-glib-0.17.4/tests/dbus/simple-approver.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/simple-approver.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -159,9 +161,7 @@ g_object_unref (test->cdo_service); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); } diff -Nru telepathy-glib-0.17.4/tests/dbus/simple-handler.c telepathy-glib-0.17.5/tests/dbus/simple-handler.c --- telepathy-glib-0.17.4/tests/dbus/simple-handler.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/simple-handler.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -151,9 +153,7 @@ g_object_unref (test->text_chan_service); g_object_unref (test->text_chan); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); } diff -Nru telepathy-glib-0.17.4/tests/dbus/simple-observer.c telepathy-glib-0.17.5/tests/dbus/simple-observer.c --- telepathy-glib-0.17.4/tests/dbus/simple-observer.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/simple-observer.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -127,9 +129,7 @@ g_object_unref (test->text_chan_service); g_object_unref (test->text_chan); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); } diff -Nru telepathy-glib-0.17.4/tests/dbus/stream-tube.c telepathy-glib-0.17.5/tests/dbus/stream-tube.c --- telepathy-glib-0.17.4/tests/dbus/stream-tube.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/stream-tube.c 2012-02-20 16:55:59.000000000 +0000 @@ -107,9 +107,7 @@ tp_clear_object (&test->tube_conn); tp_clear_object (&test->cm_stream); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); } @@ -728,6 +726,39 @@ } static void +wait_tube_conn (Test *test, + GIOStream **alice_stream, + GIOStream **bob_stream) +{ + GSocketConnection *conn; + TpContact *contact; + + test->wait = 1; + g_main_loop_run (test->mainloop); + g_assert (test->tube_conn != NULL); + + conn = tp_stream_tube_connection_get_socket_connection (test->tube_conn); + contact = tp_stream_tube_connection_get_contact (test->tube_conn); + + if (!tp_strdiff (tp_contact_get_identifier (contact), "bob")) + { + g_assert (*bob_stream == NULL); + + *bob_stream = g_object_ref (conn); + } + else if (!tp_strdiff (tp_contact_get_identifier (contact), "alice")) + { + g_assert (*alice_stream == NULL); + + *alice_stream = g_object_ref (conn); + } + else + { + g_assert_not_reached (); + } +} + +static void test_offer_race (Test *test, gconstpointer data G_GNUC_UNUSED) { @@ -738,9 +769,7 @@ GSocketClient *client; TpHandle alice_handle, bob_handle; GIOStream *alice_cm_stream, *bob_cm_stream; - GIOStream *alice_stream, *bob_stream; - GSocketConnection *conn; - TpContact *contact; + GIOStream *alice_stream = NULL, *bob_stream = NULL; if (contexts[i].address_type == TP_SOCKET_ADDRESS_TYPE_UNIX && contexts[i].access_control == TP_SOCKET_ACCESS_CONTROL_CREDENTIALS && @@ -821,27 +850,12 @@ tp_tests_stream_tube_channel_peer_connected (test->tube_chan_service, alice_cm_stream, alice_handle); - /* Bob connection is identified */ - test->wait = 1; - g_main_loop_run (test->mainloop); - g_assert (test->tube_conn != NULL); - - conn = tp_stream_tube_connection_get_socket_connection (test->tube_conn); - bob_stream = g_object_ref (conn); - contact = tp_stream_tube_connection_get_contact (test->tube_conn); - - g_assert_cmpstr (tp_contact_get_identifier (contact), ==, "bob"); - - /* Alice connection is identified */ - test->wait = 1; - g_main_loop_run (test->mainloop); - g_assert (test->tube_conn != NULL); - - conn = tp_stream_tube_connection_get_socket_connection (test->tube_conn); - alice_stream = g_object_ref (conn); - contact = tp_stream_tube_connection_get_contact (test->tube_conn); + /* Both connections are received and identified */ + wait_tube_conn (test, &alice_stream, &bob_stream); + wait_tube_conn (test, &alice_stream, &bob_stream); - g_assert_cmpstr (tp_contact_get_identifier (contact), ==, "alice"); + g_assert (alice_stream != NULL); + g_assert (bob_stream != NULL); /* Check that the streams have been mapped to the right contact */ use_tube_with_streams (test, alice_stream, alice_cm_stream); diff -Nru telepathy-glib-0.17.4/tests/dbus/telepathy/managers/test_manager_file.manager telepathy-glib-0.17.5/tests/dbus/telepathy/managers/test_manager_file.manager --- telepathy-glib-0.17.4/tests/dbus/telepathy/managers/test_manager_file.manager 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/telepathy/managers/test_manager_file.manager 2012-02-20 16:57:08.000000000 +0000 @@ -113,3 +113,6 @@ default-false = false param-y = y default-y = 42 + +param-ao = ao +default-ao = /misc;/other; diff -Nru telepathy-glib-0.17.4/tests/dbus/text-channel.c telepathy-glib-0.17.5/tests/dbus/text-channel.c --- telepathy-glib-0.17.4/tests/dbus/text-channel.c 2011-10-31 15:53:02.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/text-channel.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include @@ -136,9 +138,7 @@ tp_clear_object (&test->chan_service); tp_clear_object (&test->sms_chan_service); - tp_cli_connection_run_disconnect (test->connection, -1, &test->error, NULL); - g_assert_no_error (test->error); - + tp_tests_connection_assert_disconnect_succeeds (test->connection); g_object_unref (test->connection); g_object_unref (test->base_connection); diff -Nru telepathy-glib-0.17.4/tests/dbus/text-mixin.c telepathy-glib-0.17.5/tests/dbus/text-mixin.c --- telepathy-glib-0.17.4/tests/dbus/text-mixin.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/text-mixin.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -302,8 +304,7 @@ g_print ("\n\n==== End of tests ====\n"); - MYASSERT (tp_cli_connection_run_disconnect (conn, -1, &error, NULL), ""); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); tp_handle_unref (contact_repo, handle); g_object_unref (chan); diff -Nru telepathy-glib-0.17.4/tests/dbus/text-respawn.c telepathy-glib-0.17.5/tests/dbus/text-respawn.c --- telepathy-glib-0.17.4/tests/dbus/text-respawn.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/text-respawn.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include #include @@ -249,8 +251,7 @@ g_print ("\n\n==== End of tests ====\n"); - MYASSERT (tp_cli_connection_run_disconnect (conn, -1, &error, NULL), ""); - g_assert_no_error (error); + tp_tests_connection_assert_disconnect_succeeds (conn); tp_handle_unref (contact_repo, handle); g_object_unref (chan); diff -Nru telepathy-glib-0.17.4/tests/dbus/unsupported-interface.c telepathy-glib-0.17.5/tests/dbus/unsupported-interface.c --- telepathy-glib-0.17.4/tests/dbus/unsupported-interface.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dbus/unsupported-interface.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/debug-domain.c telepathy-glib-0.17.5/tests/debug-domain.c --- telepathy-glib-0.17.4/tests/debug-domain.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/tests/debug-domain.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/dtmf-player.c telepathy-glib-0.17.5/tests/dtmf-player.c --- telepathy-glib-0.17.4/tests/dtmf-player.c 2011-07-12 14:13:59.000000000 +0000 +++ telepathy-glib-0.17.5/tests/dtmf-player.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,4 +1,5 @@ #include "config.h" + #include "telepathy-glib/dtmf.h" #include diff -Nru telepathy-glib-0.17.4/tests/enums.c telepathy-glib-0.17.5/tests/enums.c --- telepathy-glib-0.17.4/tests/enums.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/enums.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/gnio-util.c telepathy-glib-0.17.5/tests/gnio-util.c --- telepathy-glib-0.17.4/tests/gnio-util.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/gnio-util.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,6 +1,6 @@ /* tests of the GNIO utility functions */ -#include +#include "config.h" #include diff -Nru telepathy-glib-0.17.4/tests/heap.c telepathy-glib-0.17.5/tests/heap.c --- telepathy-glib-0.17.4/tests/heap.c 2009-04-02 15:11:51.000000000 +0000 +++ telepathy-glib-0.17.5/tests/heap.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/internal-debug.c telepathy-glib-0.17.5/tests/internal-debug.c --- telepathy-glib-0.17.4/tests/internal-debug.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/tests/internal-debug.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/intset.c telepathy-glib-0.17.5/tests/intset.c --- telepathy-glib-0.17.4/tests/intset.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/intset.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include #include diff -Nru telepathy-glib-0.17.4/tests/lib/broken-client-types-conn.c telepathy-glib-0.17.5/tests/lib/broken-client-types-conn.c --- telepathy-glib-0.17.4/tests/lib/broken-client-types-conn.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/broken-client-types-conn.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,9 @@ * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ + +#include "config.h" + #include "broken-client-types-conn.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/bug16307-conn.c telepathy-glib-0.17.5/tests/lib/bug16307-conn.c --- telepathy-glib-0.17.4/tests/lib/bug16307-conn.c 2011-04-26 09:30:09.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/bug16307-conn.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,9 @@ * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ + +#include "config.h" + #include "bug16307-conn.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/bug-19101-conn.c telepathy-glib-0.17.5/tests/lib/bug-19101-conn.c --- telepathy-glib-0.17.4/tests/lib/bug-19101-conn.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/bug-19101-conn.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "bug-19101-conn.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/contact-list-manager.c telepathy-glib-0.17.5/tests/lib/contact-list-manager.c --- telepathy-glib-0.17.4/tests/lib/contact-list-manager.c 2011-09-19 11:03:37.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/contact-list-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "contact-list-manager.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/contacts-conn.c telepathy-glib-0.17.5/tests/lib/contacts-conn.c --- telepathy-glib-0.17.4/tests/lib/contacts-conn.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/contacts-conn.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,9 @@ * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ + +#include "config.h" + #include "contacts-conn.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/dbus-tube-chan.c telepathy-glib-0.17.5/tests/lib/dbus-tube-chan.c --- telepathy-glib-0.17.4/tests/lib/dbus-tube-chan.c 2011-09-29 13:14:10.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/dbus-tube-chan.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,16 +8,14 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "dbus-tube-chan.h" #include #include #include #include - -#include -#include - #include enum diff -Nru telepathy-glib-0.17.4/tests/lib/echo-chan.c telepathy-glib-0.17.5/tests/lib/echo-chan.c --- telepathy-glib-0.17.4/tests/lib/echo-chan.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/echo-chan.c 2012-02-20 16:55:59.000000000 +0000 @@ -11,6 +11,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "echo-chan.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/echo-channel-manager-conn.c telepathy-glib-0.17.5/tests/lib/echo-channel-manager-conn.c --- telepathy-glib-0.17.4/tests/lib/echo-channel-manager-conn.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/echo-channel-manager-conn.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "echo-channel-manager-conn.h" #include "simple-channel-manager.h" @@ -98,7 +100,6 @@ param_spec = g_param_spec_object ("channel-manager", "Channel manager", "The channel manager", TP_TESTS_TYPE_SIMPLE_CHANNEL_MANAGER, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CHANNEL_MANAGER, param_spec); } diff -Nru telepathy-glib-0.17.4/tests/lib/echo-cm.c telepathy-glib-0.17.5/tests/lib/echo-cm.c --- telepathy-glib-0.17.4/tests/lib/echo-cm.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/echo-cm.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "echo-cm.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/echo-conn.c telepathy-glib-0.17.5/tests/lib/echo-conn.c --- telepathy-glib-0.17.4/tests/lib/echo-conn.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/echo-conn.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "echo-conn.h" #include @@ -196,7 +198,6 @@ param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); } diff -Nru telepathy-glib-0.17.4/tests/lib/echo-im-manager.c telepathy-glib-0.17.5/tests/lib/echo-im-manager.c --- telepathy-glib-0.17.4/tests/lib/echo-im-manager.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/echo-im-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -11,6 +11,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "echo-im-manager.h" #include @@ -146,8 +148,7 @@ param_spec = g_param_spec_object ("connection", "Connection object", "The connection that owns this channel manager", TP_TYPE_BASE_CONNECTION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); g_type_class_add_private (klass, sizeof (TpTestsEchoImManagerPrivate)); diff -Nru telepathy-glib-0.17.4/tests/lib/file-transfer-chan.c telepathy-glib-0.17.5/tests/lib/file-transfer-chan.c --- telepathy-glib-0.17.4/tests/lib/file-transfer-chan.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/file-transfer-chan.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "file-transfer-chan.h" #include "util.h" #include "debug.h" @@ -18,9 +20,6 @@ #include #include -#include -#include - #include static void file_transfer_iface_init (gpointer iface, gpointer data); diff -Nru telepathy-glib-0.17.4/tests/lib/Makefile.in telepathy-glib-0.17.5/tests/lib/Makefile.in --- telepathy-glib-0.17.4/tests/lib/Makefile.in 2011-12-19 15:18:56.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/Makefile.in 2012-02-20 17:31:10.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -71,8 +71,8 @@ am_libtp_glib_tests_internal_la_OBJECTS = $(am__objects_1) libtp_glib_tests_internal_la_OBJECTS = \ $(am_libtp_glib_tests_internal_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent libtp_glib_tests_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) \ @@ -99,21 +99,21 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(libtp_glib_tests_internal_la_SOURCES) \ $(libtp_glib_tests_la_SOURCES) @@ -413,6 +413,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/tools/check-coding-style.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -431,9 +432,9 @@ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libtp-glib-tests-internal.la: $(libtp_glib_tests_internal_la_OBJECTS) $(libtp_glib_tests_internal_la_DEPENDENCIES) +libtp-glib-tests-internal.la: $(libtp_glib_tests_internal_la_OBJECTS) $(libtp_glib_tests_internal_la_DEPENDENCIES) $(EXTRA_libtp_glib_tests_internal_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libtp_glib_tests_internal_la_OBJECTS) $(libtp_glib_tests_internal_la_LIBADD) $(LIBS) -libtp-glib-tests.la: $(libtp_glib_tests_la_OBJECTS) $(libtp_glib_tests_la_DEPENDENCIES) +libtp-glib-tests.la: $(libtp_glib_tests_la_OBJECTS) $(libtp_glib_tests_la_DEPENDENCIES) $(EXTRA_libtp_glib_tests_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) $(libtp_glib_tests_la_OBJECTS) $(libtp_glib_tests_la_LIBADD) $(LIBS) mostlyclean-compile: @@ -474,26 +475,23 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -598,10 +596,15 @@ 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 -Nru telepathy-glib-0.17.4/tests/lib/my-conn-proxy.c telepathy-glib-0.17.5/tests/lib/my-conn-proxy.c --- telepathy-glib-0.17.4/tests/lib/my-conn-proxy.c 2011-11-24 09:22:14.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/my-conn-proxy.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,7 @@ * notice and this notice are preserved. */ +#include "config.h" #include "my-conn-proxy.h" diff -Nru telepathy-glib-0.17.4/tests/lib/params-cm.c telepathy-glib-0.17.5/tests/lib/params-cm.c --- telepathy-glib-0.17.4/tests/lib/params-cm.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/params-cm.c 2012-02-20 16:55:59.000000000 +0000 @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "config.h" + #include "params-cm.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/simple-account.c telepathy-glib-0.17.5/tests/lib/simple-account.c --- telepathy-glib-0.17.4/tests/lib/simple-account.c 2011-03-03 12:54:10.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/simple-account.c 2012-02-20 16:57:08.000000000 +0000 @@ -1,13 +1,15 @@ /* * simple-account.c - a simple account service. * - * Copyright (C) 2010 Collabora Ltd. + * Copyright (C) 2010-2012 Collabora Ltd. * * Copying and distribution of this file, with or without modification, * are permitted in any medium without royalty provided the copyright * notice and this notice are preserved. */ +#include "config.h" + #include "simple-account.h" #include @@ -26,6 +28,8 @@ G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_ACCOUNT, account_iface_init); + G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_ACCOUNT_INTERFACE_AVATAR, + NULL); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_ACCOUNT_INTERFACE_ADDRESSING, NULL); G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_ACCOUNT_INTERFACE_STORAGE, @@ -63,21 +67,56 @@ PROP_STORAGE_PROVIDER, PROP_STORAGE_IDENTIFIER, PROP_STORAGE_SPECIFIC_INFORMATION, - PROP_STORAGE_RESTRICTIONS + PROP_STORAGE_RESTRICTIONS, + PROP_AVATAR, + PROP_SUPERSEDES, + N_PROPS }; struct _TpTestsSimpleAccountPrivate { - gpointer unused; + TpConnectionPresenceType presence; + gchar *presence_status; + gchar *presence_msg; }; static void +tp_tests_simple_account_update_parameters (TpSvcAccount *svc, + GHashTable *parameters, + const gchar **unset_parameters, + DBusGMethodInvocation *context) +{ + GPtrArray *reconnect_required = g_ptr_array_new (); + GHashTableIter iter; + gpointer k; + guint i; + + /* We don't actually store any parameters, but for the purposes + * of this method we pretend that every parameter provided is + * valid and requires reconnection. */ + + g_hash_table_iter_init (&iter, parameters); + + while (g_hash_table_iter_next (&iter, &k, NULL)) + g_ptr_array_add (reconnect_required, k); + + for (i = 0; unset_parameters != NULL && unset_parameters[i] != NULL; i++) + g_ptr_array_add (reconnect_required, (gchar *) unset_parameters[i]); + + g_ptr_array_add (reconnect_required, NULL); + + tp_svc_account_return_from_update_parameters (context, + (const gchar **) reconnect_required->pdata); + g_ptr_array_unref (reconnect_required); +} + +static void account_iface_init (gpointer klass, gpointer unused G_GNUC_UNUSED) { #define IMPLEMENT(x) tp_svc_account_implement_##x (\ klass, tp_tests_simple_account_##x) - /* TODO */ + IMPLEMENT (update_parameters); #undef IMPLEMENT } @@ -87,6 +126,10 @@ { self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_SIMPLE_ACCOUNT, TpTestsSimpleAccountPrivate); + + self->priv->presence = TP_CONNECTION_PRESENCE_TYPE_AWAY; + self->priv->presence_status = g_strdup ("currently-away"); + self->priv->presence_msg = g_strdup ("this is my CurrentPresence"); } /* you may have noticed this is not entirely realistic */ @@ -98,6 +141,7 @@ GValue *value, GParamSpec *spec) { + TpTestsSimpleAccount *self = TP_TESTS_SIMPLE_ACCOUNT (object); GValue identifier = { 0, }; g_value_init (&identifier, G_TYPE_STRING); @@ -146,9 +190,9 @@ break; case PROP_CURRENT_PRESENCE: g_value_take_boxed (value, tp_value_array_build (3, - G_TYPE_UINT, TP_CONNECTION_PRESENCE_TYPE_AWAY, - G_TYPE_STRING, "currently-away", - G_TYPE_STRING, "this is my CurrentPresence", + G_TYPE_UINT, self->priv->presence, + G_TYPE_STRING, self->priv->presence_status, + G_TYPE_STRING, self->priv->presence_msg, G_TYPE_INVALID)); break; case PROP_REQUESTED_PRESENCE: @@ -185,6 +229,30 @@ case PROP_URI_SCHEMES: g_value_set_boxed (value, uri_schemes); break; + case PROP_AVATAR: + { + GArray *arr = g_array_new (FALSE, FALSE, sizeof (char)); + + /* includes NUL for simplicity */ + g_array_append_vals (arr, ":-)", 4); + + g_value_take_boxed (value, + tp_value_array_build (2, + TP_TYPE_UCHAR_ARRAY, arr, + G_TYPE_STRING, "text/plain", + G_TYPE_INVALID)); + g_array_unref (arr); + } + break; + case PROP_SUPERSEDES: + { + GPtrArray *arr = g_ptr_array_new (); + + g_ptr_array_add (arr, + g_strdup (TP_ACCOUNT_OBJECT_PATH_BASE "super/seded/whatever")); + g_value_take_boxed (value, arr); + } + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, spec); break; @@ -193,6 +261,17 @@ g_value_unset (&identifier); } +static void +tp_tests_simple_account_finalize (GObject *object) +{ + TpTestsSimpleAccount *self = TP_TESTS_SIMPLE_ACCOUNT (object); + + g_free (self->priv->presence_status); + g_free (self->priv->presence_msg); + + G_OBJECT_CLASS (tp_tests_simple_account_parent_class)->finalize (object); +} + /** * This class currently only provides the minimum for * tp_account_prepare to succeed. This turns out to be only a working @@ -221,6 +300,7 @@ { "RequestedPresence", "requested-presence", NULL }, { "NormalizedName", "normalized-name", NULL }, { "HasBeenOnline", "has-been-online", NULL }, + { "Supersedes", "supersedes", NULL }, { NULL } }; @@ -237,6 +317,11 @@ { NULL }, }; + static TpDBusPropertiesMixinPropImpl avatar_props[] = { + { "Avatar", "avatar", NULL }, + { NULL }, + }; + static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { { TP_IFACE_ACCOUNT, tp_dbus_properties_mixin_getter_gobject_properties, @@ -255,11 +340,17 @@ NULL, aia_props }, + { TP_IFACE_ACCOUNT_INTERFACE_AVATAR, + tp_dbus_properties_mixin_getter_gobject_properties, + NULL, + avatar_props + }, { NULL }, }; g_type_class_add_private (klass, sizeof (TpTestsSimpleAccountPrivate)); object_class->get_property = tp_tests_simple_account_get_property; + object_class->finalize = tp_tests_simple_account_finalize; param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "In this case we only implement Account, so none.", @@ -399,7 +490,48 @@ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_URI_SCHEMES, param_spec); + param_spec = g_param_spec_boxed ("avatar", + "Avatar", "Avatar", + TP_STRUCT_TYPE_AVATAR, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, + PROP_AVATAR, param_spec); + + param_spec = g_param_spec_boxed ("supersedes", + "Supersedes", "List of superseded accounts", + TP_ARRAY_TYPE_OBJECT_PATH_LIST, + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, + PROP_SUPERSEDES, param_spec); + klass->dbus_props_class.interfaces = prop_interfaces; tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsSimpleAccountClass, dbus_props_class)); } + +void +tp_tests_simple_account_set_presence (TpTestsSimpleAccount *self, + TpConnectionPresenceType presence, + const gchar *status, + const gchar *message) +{ + GHashTable *props; + GValueArray *v; + + g_free (self->priv->presence_status); + g_free (self->priv->presence_msg); + + self->priv->presence = presence; + self->priv->presence_status = g_strdup (status); + self->priv->presence_msg = g_strdup (message); + + g_object_get (self, "current-presence", &v, NULL); + + props = tp_asv_new ( + "CurrentPresence", TP_STRUCT_TYPE_SIMPLE_PRESENCE, v, + NULL); + + tp_svc_account_emit_account_property_changed (self, props); + + g_boxed_free (TP_STRUCT_TYPE_SIMPLE_PRESENCE, v); +} diff -Nru telepathy-glib-0.17.4/tests/lib/simple-account.h telepathy-glib-0.17.5/tests/lib/simple-account.h --- telepathy-glib-0.17.4/tests/lib/simple-account.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/simple-account.h 2012-02-20 16:55:59.000000000 +0000 @@ -12,8 +12,9 @@ #define __TP_TESTS_SIMPLE_ACCOUNT_H__ #include -#include +#include +#include G_BEGIN_DECLS @@ -51,6 +52,11 @@ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_SIMPLE_ACCOUNT, \ TpTestsSimpleAccountClass)) +void tp_tests_simple_account_set_presence (TpTestsSimpleAccount *self, + TpConnectionPresenceType presence, + const gchar *status, + const gchar *message); + G_END_DECLS #endif /* #ifndef __TP_TESTS_SIMPLE_ACCOUNT_H__ */ diff -Nru telepathy-glib-0.17.4/tests/lib/simple-account-manager.c telepathy-glib-0.17.5/tests/lib/simple-account-manager.c --- telepathy-glib-0.17.4/tests/lib/simple-account-manager.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/simple-account-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,12 +9,15 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "simple-account-manager.h" #include #include #include #include +#include static void account_manager_iface_init (gpointer, gpointer); @@ -49,7 +52,7 @@ struct _TpTestsSimpleAccountManagerPrivate { - int dummy; + GPtrArray *valid_accounts; }; static void @@ -80,8 +83,15 @@ static void tp_tests_simple_account_manager_init (TpTestsSimpleAccountManager *self) { + guint i; + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, TP_TESTS_TYPE_SIMPLE_ACCOUNT_MANAGER, TpTestsSimpleAccountManagerPrivate); + + self->priv->valid_accounts = g_ptr_array_new_with_free_func (g_free); + + for (i = 0; VALID_ACCOUNTS[i] != NULL; i++) + g_ptr_array_add (self->priv->valid_accounts, g_strdup (VALID_ACCOUNTS[i])); } static void @@ -90,6 +100,7 @@ GValue *value, GParamSpec *spec) { + TpTestsSimpleAccountManager *self = SIMPLE_ACCOUNT_MANAGER (object); GPtrArray *accounts; guint i = 0; @@ -99,12 +110,7 @@ break; case PROP_VALID_ACCOUNTS: - accounts = g_ptr_array_new (); - - for (i=0; VALID_ACCOUNTS[i] != NULL; i++) - g_ptr_array_add (accounts, g_strdup (VALID_ACCOUNTS[i])); - - g_value_take_boxed (value, accounts); + g_value_set_boxed (value, self->priv->valid_accounts); break; case PROP_INVALID_ACCOUNTS: @@ -122,6 +128,17 @@ } } +static void +tp_tests_simple_account_manager_dispose (GObject *object) +{ + TpTestsSimpleAccountManager *self = SIMPLE_ACCOUNT_MANAGER (object); + + tp_clear_pointer (&self->priv->valid_accounts, g_ptr_array_unref); + + G_OBJECT_CLASS (tp_tests_simple_account_manager_parent_class)->dispose ( + object); +} + /** * This class currently only provides the minimum for * tp_account_manager_prepare to succeed. This turns out to be only a working @@ -157,6 +174,7 @@ g_type_class_add_private (klass, sizeof (TpTestsSimpleAccountManagerPrivate)); object_class->get_property = tp_tests_simple_account_manager_get_property; + object_class->dispose = tp_tests_simple_account_manager_dispose; param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", "In this case we only implement AccountManager, so none.", @@ -178,3 +196,13 @@ tp_dbus_properties_mixin_class_init (object_class, G_STRUCT_OFFSET (TpTestsSimpleAccountManagerClass, dbus_props_class)); } + +void +tp_tests_simple_account_manager_set_valid_accounts ( + TpTestsSimpleAccountManager *self, + GPtrArray *accounts) +{ + tp_clear_pointer (&self->priv->valid_accounts, g_ptr_array_unref); + + self->priv->valid_accounts = g_ptr_array_ref (accounts); +} diff -Nru telepathy-glib-0.17.4/tests/lib/simple-account-manager.h telepathy-glib-0.17.5/tests/lib/simple-account-manager.h --- telepathy-glib-0.17.4/tests/lib/simple-account-manager.h 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/simple-account-manager.h 2012-02-20 16:55:59.000000000 +0000 @@ -52,6 +52,9 @@ (G_TYPE_INSTANCE_GET_CLASS ((obj), TP_TESTS_TYPE_SIMPLE_ACCOUNT_MANAGER, \ TpTestsSimpleAccountManagerClass)) +void tp_tests_simple_account_manager_set_valid_accounts ( + TpTestsSimpleAccountManager *self, + GPtrArray *accounts); G_END_DECLS diff -Nru telepathy-glib-0.17.4/tests/lib/simple-channel-dispatcher.c telepathy-glib-0.17.5/tests/lib/simple-channel-dispatcher.c --- telepathy-glib-0.17.4/tests/lib/simple-channel-dispatcher.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/simple-channel-dispatcher.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "simple-channel-dispatcher.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/simple-channel-dispatch-operation.c telepathy-glib-0.17.5/tests/lib/simple-channel-dispatch-operation.c --- telepathy-glib-0.17.4/tests/lib/simple-channel-dispatch-operation.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/simple-channel-dispatch-operation.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "simple-channel-dispatch-operation.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/simple-channel-manager.c telepathy-glib-0.17.5/tests/lib/simple-channel-manager.c --- telepathy-glib-0.17.4/tests/lib/simple-channel-manager.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/simple-channel-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include "simple-channel-manager.h" diff -Nru telepathy-glib-0.17.4/tests/lib/simple-channel-request.c telepathy-glib-0.17.5/tests/lib/simple-channel-request.c --- telepathy-glib-0.17.4/tests/lib/simple-channel-request.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/simple-channel-request.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "simple-channel-request.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/simple-client.c telepathy-glib-0.17.5/tests/lib/simple-client.c --- telepathy-glib-0.17.4/tests/lib/simple-client.c 2011-06-23 11:09:35.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/simple-client.c 2012-02-20 16:55:59.000000000 +0000 @@ -8,6 +8,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "simple-client.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/simple-conn.c telepathy-glib-0.17.5/tests/lib/simple-conn.c --- telepathy-glib-0.17.4/tests/lib/simple-conn.c 2011-04-26 09:30:09.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/simple-conn.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "simple-conn.h" #include @@ -306,15 +308,13 @@ param_spec = g_param_spec_string ("account", "Account name", "The username of this user", NULL, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec); param_spec = g_param_spec_boolean ("break-0192-properties", "Break 0.19.2 properties", "Break Connection D-Bus properties introduced in spec 0.19.2", FALSE, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_BREAK_PROPS, param_spec); param_spec = g_param_spec_uint ("dbus-status", diff -Nru telepathy-glib-0.17.4/tests/lib/simple-manager.c telepathy-glib-0.17.5/tests/lib/simple-manager.c --- telepathy-glib-0.17.4/tests/lib/simple-manager.c 2011-02-09 12:25:33.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/simple-manager.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "simple-manager.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/stream-tube-chan.c telepathy-glib-0.17.5/tests/lib/stream-tube-chan.c --- telepathy-glib-0.17.4/tests/lib/stream-tube-chan.c 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/stream-tube-chan.c 2012-02-20 16:55:59.000000000 +0000 @@ -10,6 +10,8 @@ #include "config.h" +#include "config.h" + #include "stream-tube-chan.h" #include "util.h" diff -Nru telepathy-glib-0.17.4/tests/lib/stub-object.c telepathy-glib-0.17.5/tests/lib/stub-object.c --- telepathy-glib-0.17.4/tests/lib/stub-object.c 2010-10-01 08:07:35.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/stub-object.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include "stub-object.h" G_DEFINE_TYPE (TpTestsStubObject, tp_tests_stub_object, G_TYPE_OBJECT) diff -Nru telepathy-glib-0.17.4/tests/lib/textchan-group.c telepathy-glib-0.17.5/tests/lib/textchan-group.c --- telepathy-glib-0.17.4/tests/lib/textchan-group.c 2011-10-31 14:56:06.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/textchan-group.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "textchan-group.h" #include diff -Nru telepathy-glib-0.17.4/tests/lib/textchan-null.c telepathy-glib-0.17.5/tests/lib/textchan-null.c --- telepathy-glib-0.17.4/tests/lib/textchan-null.c 2011-05-20 08:10:56.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/textchan-null.c 2012-02-20 16:55:59.000000000 +0000 @@ -9,6 +9,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include "textchan-null.h" #include @@ -271,8 +273,7 @@ param_spec = g_param_spec_object ("connection", "TpBaseConnection object", "Connection object that owns this channel", TP_TYPE_BASE_CONNECTION, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | - G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_CONNECTION, param_spec); param_spec = g_param_spec_boxed ("interfaces", "Extra D-Bus interfaces", diff -Nru telepathy-glib-0.17.4/tests/lib/util.c telepathy-glib-0.17.5/tests/lib/util.c --- telepathy-glib-0.17.4/tests/lib/util.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/util.c 2012-02-20 16:55:59.000000000 +0000 @@ -12,6 +12,8 @@ #include "tests/lib/util.h" +#include + #include #include @@ -453,3 +455,19 @@ g_object_unref (effective_address); return address_gvalue; } + +void +tp_tests_connection_assert_disconnect_succeeds (TpConnection *connection) +{ + GAsyncResult *result = NULL; + GError *error = NULL; + gboolean ok; + + tp_connection_disconnect_async (connection, tp_tests_result_ready_cb, + &result); + tp_tests_run_until_result (&result); + ok = tp_connection_disconnect_finish (connection, result, &error); + g_assert_no_error (error); + g_assert (ok); + g_object_unref (result); +} diff -Nru telepathy-glib-0.17.4/tests/lib/util.h telepathy-glib-0.17.5/tests/lib/util.h --- telepathy-glib-0.17.4/tests/lib/util.h 2011-09-12 08:21:53.000000000 +0000 +++ telepathy-glib-0.17.5/tests/lib/util.h 2012-02-20 16:55:59.000000000 +0000 @@ -71,4 +71,6 @@ void _tp_destroy_socket_control_list (gpointer data); +void tp_tests_connection_assert_disconnect_succeeds (TpConnection *connection); + #endif /* #ifndef __TP_TESTS_LIB_UTIL_H__ */ diff -Nru telepathy-glib-0.17.4/tests/Makefile.in telepathy-glib-0.17.5/tests/Makefile.in --- telepathy-glib-0.17.4/tests/Makefile.in 2011-12-19 15:18:55.000000000 +0000 +++ telepathy-glib-0.17.5/tests/Makefile.in 2012-02-20 17:31:10.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -77,8 +77,8 @@ test_asv_DEPENDENCIES = \ $(top_builddir)/telepathy-glib/libtelepathy-glib.la \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am_test_availability_cmp_OBJECTS = availability-cmp.$(OBJEXT) test_availability_cmp_OBJECTS = $(am_test_availability_cmp_OBJECTS) @@ -170,18 +170,18 @@ $(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_@AM_V@) +am__v_CC_ = $(am__v_CC_@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_@AM_V@) +am__v_at_ = $(am__v_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_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) @@ -189,18 +189,18 @@ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_$(V)) -am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CXXLD = $(am__v_CXXLD_$(V)) -am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; SOURCES = $(test_asv_SOURCES) $(test_availability_cmp_SOURCES) \ $(test_capabilities_SOURCES) \ @@ -246,6 +246,12 @@ 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; }; \ + } DATA = $(tests_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive @@ -607,6 +613,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; +$(top_srcdir)/tools/valgrind.mk $(top_srcdir)/tools/check-coding-style.mk: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh @@ -668,46 +675,46 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list -test-asv$(EXEEXT): $(test_asv_OBJECTS) $(test_asv_DEPENDENCIES) +test-asv$(EXEEXT): $(test_asv_OBJECTS) $(test_asv_DEPENDENCIES) $(EXTRA_test_asv_DEPENDENCIES) @rm -f test-asv$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_asv_OBJECTS) $(test_asv_LDADD) $(LIBS) -test-availability-cmp$(EXEEXT): $(test_availability_cmp_OBJECTS) $(test_availability_cmp_DEPENDENCIES) +test-availability-cmp$(EXEEXT): $(test_availability_cmp_OBJECTS) $(test_availability_cmp_DEPENDENCIES) $(EXTRA_test_availability_cmp_DEPENDENCIES) @rm -f test-availability-cmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_availability_cmp_OBJECTS) $(test_availability_cmp_LDADD) $(LIBS) -test-capabilities$(EXEEXT): $(test_capabilities_OBJECTS) $(test_capabilities_DEPENDENCIES) +test-capabilities$(EXEEXT): $(test_capabilities_OBJECTS) $(test_capabilities_DEPENDENCIES) $(EXTRA_test_capabilities_DEPENDENCIES) @rm -f test-capabilities$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_capabilities_OBJECTS) $(test_capabilities_LDADD) $(LIBS) -test-contact-search-result$(EXEEXT): $(test_contact_search_result_OBJECTS) $(test_contact_search_result_DEPENDENCIES) +test-contact-search-result$(EXEEXT): $(test_contact_search_result_OBJECTS) $(test_contact_search_result_DEPENDENCIES) $(EXTRA_test_contact_search_result_DEPENDENCIES) @rm -f test-contact-search-result$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_contact_search_result_OBJECTS) $(test_contact_search_result_LDADD) $(LIBS) -test-debug-domain$(EXEEXT): $(test_debug_domain_OBJECTS) $(test_debug_domain_DEPENDENCIES) +test-debug-domain$(EXEEXT): $(test_debug_domain_OBJECTS) $(test_debug_domain_DEPENDENCIES) $(EXTRA_test_debug_domain_DEPENDENCIES) @rm -f test-debug-domain$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_debug_domain_OBJECTS) $(test_debug_domain_LDADD) $(LIBS) -test-dtmf-player$(EXEEXT): $(test_dtmf_player_OBJECTS) $(test_dtmf_player_DEPENDENCIES) +test-dtmf-player$(EXEEXT): $(test_dtmf_player_OBJECTS) $(test_dtmf_player_DEPENDENCIES) $(EXTRA_test_dtmf_player_DEPENDENCIES) @rm -f test-dtmf-player$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_dtmf_player_OBJECTS) $(test_dtmf_player_LDADD) $(LIBS) -test-enums$(EXEEXT): $(test_enums_OBJECTS) $(test_enums_DEPENDENCIES) +test-enums$(EXEEXT): $(test_enums_OBJECTS) $(test_enums_DEPENDENCIES) $(EXTRA_test_enums_DEPENDENCIES) @rm -f test-enums$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_enums_OBJECTS) $(test_enums_LDADD) $(LIBS) -test-gnio-util$(EXEEXT): $(test_gnio_util_OBJECTS) $(test_gnio_util_DEPENDENCIES) +test-gnio-util$(EXEEXT): $(test_gnio_util_OBJECTS) $(test_gnio_util_DEPENDENCIES) $(EXTRA_test_gnio_util_DEPENDENCIES) @rm -f test-gnio-util$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_gnio_util_OBJECTS) $(test_gnio_util_LDADD) $(LIBS) -test-heap$(EXEEXT): $(test_heap_OBJECTS) $(test_heap_DEPENDENCIES) +test-heap$(EXEEXT): $(test_heap_OBJECTS) $(test_heap_DEPENDENCIES) $(EXTRA_test_heap_DEPENDENCIES) @rm -f test-heap$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_heap_OBJECTS) $(test_heap_LDADD) $(LIBS) -test-internal-debug$(EXEEXT): $(test_internal_debug_OBJECTS) $(test_internal_debug_DEPENDENCIES) +test-internal-debug$(EXEEXT): $(test_internal_debug_OBJECTS) $(test_internal_debug_DEPENDENCIES) $(EXTRA_test_internal_debug_DEPENDENCIES) @rm -f test-internal-debug$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_internal_debug_OBJECTS) $(test_internal_debug_LDADD) $(LIBS) -test-intset$(EXEEXT): $(test_intset_OBJECTS) $(test_intset_DEPENDENCIES) +test-intset$(EXEEXT): $(test_intset_OBJECTS) $(test_intset_DEPENDENCIES) $(EXTRA_test_intset_DEPENDENCIES) @rm -f test-intset$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_intset_OBJECTS) $(test_intset_LDADD) $(LIBS) -test-signal-connect-object$(EXEEXT): $(test_signal_connect_object_OBJECTS) $(test_signal_connect_object_DEPENDENCIES) +test-signal-connect-object$(EXEEXT): $(test_signal_connect_object_OBJECTS) $(test_signal_connect_object_DEPENDENCIES) $(EXTRA_test_signal_connect_object_DEPENDENCIES) @rm -f test-signal-connect-object$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_signal_connect_object_OBJECTS) $(test_signal_connect_object_LDADD) $(LIBS) -test-util$(EXEEXT): $(test_util_OBJECTS) $(test_util_DEPENDENCIES) +test-util$(EXEEXT): $(test_util_OBJECTS) $(test_util_DEPENDENCIES) $(EXTRA_test_util_DEPENDENCIES) @rm -f test-util$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_util_OBJECTS) $(test_util_LDADD) $(LIBS) -test-util-cxx$(EXEEXT): $(test_util_cxx_OBJECTS) $(test_util_cxx_DEPENDENCIES) +test-util-cxx$(EXEEXT): $(test_util_cxx_OBJECTS) $(test_util_cxx_DEPENDENCIES) $(EXTRA_test_util_cxx_DEPENDENCIES) @rm -f test-util-cxx$(EXEEXT) $(AM_V_CXXLD)$(CXXLINK) $(test_util_cxx_OBJECTS) $(test_util_cxx_LDADD) $(LIBS) @@ -735,50 +742,44 @@ .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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@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 -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo @@ -802,9 +803,7 @@ @$(NORMAL_UNINSTALL) @list='$(tests_DATA)'; test -n "$(testsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(testsdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(testsdir)" && rm -f $$files + dir='$(DESTDIR)$(testsdir)'; $(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. @@ -1022,14 +1021,15 @@ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ if test "$$failed" -eq 0; then \ - echo "$$grn$$dashes"; \ + col="$$grn"; \ else \ - echo "$$red$$dashes"; \ + col="$$red"; \ fi; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes$$std"; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ test "$$failed" -eq 0; \ else :; fi @@ -1110,10 +1110,15 @@ 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: diff -Nru telepathy-glib-0.17.4/tests/signal-connect-object.c telepathy-glib-0.17.5/tests/signal-connect-object.c --- telepathy-glib-0.17.4/tests/signal-connect-object.c 2011-05-09 13:16:04.000000000 +0000 +++ telepathy-glib-0.17.5/tests/signal-connect-object.c 2012-02-20 16:55:59.000000000 +0000 @@ -7,6 +7,8 @@ * notice and this notice are preserved. */ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tests/tools/Makefile.in telepathy-glib-0.17.5/tests/tools/Makefile.in --- telepathy-glib-0.17.4/tests/tools/Makefile.in 2011-12-19 15:18:56.000000000 +0000 +++ telepathy-glib-0.17.5/tests/tools/Makefile.in 2012-02-20 17:31:10.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -53,11 +53,11 @@ CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SCRIPTS = $(dist_noinst_SCRIPTS) -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -383,14 +383,15 @@ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ if test "$$failed" -eq 0; then \ - echo "$$grn$$dashes"; \ + col="$$grn"; \ else \ - echo "$$red$$dashes"; \ + col="$$red"; \ fi; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes$$std"; \ + echo "$${col}$$dashes$${std}"; \ + echo "$${col}$$banner$${std}"; \ + test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ + test -z "$$report" || echo "$${col}$$report$${std}"; \ + echo "$${col}$$dashes$${std}"; \ test "$$failed" -eq 0; \ else :; fi @@ -439,10 +440,15 @@ 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 -Nru telepathy-glib-0.17.4/tests/util.c telepathy-glib-0.17.5/tests/util.c --- telepathy-glib-0.17.4/tests/util.c 2011-12-19 15:11:12.000000000 +0000 +++ telepathy-glib-0.17.5/tests/util.c 2012-02-20 16:55:59.000000000 +0000 @@ -1,3 +1,5 @@ +#include "config.h" + #include #include diff -Nru telepathy-glib-0.17.4/tools/Makefile.in telepathy-glib-0.17.5/tools/Makefile.in --- telepathy-glib-0.17.4/tools/Makefile.in 2011-12-19 15:18:56.000000000 +0000 +++ telepathy-glib-0.17.5/tools/Makefile.in 2012-02-20 17:31:11.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -72,13 +72,19 @@ 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)$(toolsdir)" SCRIPTS = $(noinst_SCRIPTS) $(tools_SCRIPTS) -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -358,9 +364,7 @@ @list='$(tools_SCRIPTS)'; test -n "$(toolsdir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(toolsdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(toolsdir)" && rm -f $$files + dir='$(DESTDIR)$(toolsdir)'; $(am__uninstall_files_from_dir) mostlyclean-libtool: -rm -f *.lo @@ -421,10 +425,15 @@ 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 -Nru telepathy-glib-0.17.4/tools/telepathy.am telepathy-glib-0.17.5/tools/telepathy.am --- telepathy-glib-0.17.4/tools/telepathy.am 2011-03-03 12:54:10.000000000 +0000 +++ telepathy-glib-0.17.5/tools/telepathy.am 2012-02-20 17:31:02.000000000 +0000 @@ -3,7 +3,7 @@ dist-hook: chmod u+w ${distdir}/ChangeLog if test -d ${top_srcdir}/.git; then \ - git log --date=iso $(CHANGELOG_RANGE) > ${distdir}/ChangeLog; \ + ( cd ${top_srcdir} && git log --date=iso $(CHANGELOG_RANGE) ) > ${distdir}/ChangeLog; \ fi distcheck-hook: @@ -26,11 +26,13 @@ exit 2; \ ;; \ esac - @if ! git diff --no-ext-diff --quiet --exit-code; then \ + @cd ${top_srcdir} && \ + if ! git diff --no-ext-diff --quiet --exit-code; then \ echo "Hey! Your tree is dirty! No release for you." >&2; \ exit 2; \ fi - @if ! git diff --cached --no-ext-diff --quiet --exit-code; then \ + @cd ${top_srcdir} && \ + if ! git diff --cached --no-ext-diff --quiet --exit-code; then \ echo "Hey! You have changes staged! No release for you." >&2; \ exit 2; \ fi diff -Nru telepathy-glib-0.17.4/vala/Makefile.in telepathy-glib-0.17.5/vala/Makefile.in --- telepathy-glib-0.17.4/vala/Makefile.in 2011-12-19 15:18:56.000000000 +0000 +++ telepathy-glib-0.17.5/vala/Makefile.in 2012-02-20 17:31:11.000000000 +0000 @@ -1,9 +1,9 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.11.3 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. @@ -52,11 +52,11 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = 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_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@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_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ SOURCES = DIST_SOURCES = @@ -81,6 +81,12 @@ 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)$(vapidir)" "$(DESTDIR)$(vapidir)" DATA = $(dist_vapi_DATA) $(vapi_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @@ -332,9 +338,7 @@ @$(NORMAL_UNINSTALL) @list='$(dist_vapi_DATA)'; test -n "$(vapidir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(vapidir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(vapidir)" && rm -f $$files + dir='$(DESTDIR)$(vapidir)'; $(am__uninstall_files_from_dir) install-vapiDATA: $(vapi_DATA) @$(NORMAL_INSTALL) test -z "$(vapidir)" || $(MKDIR_P) "$(DESTDIR)$(vapidir)" @@ -352,9 +356,7 @@ @$(NORMAL_UNINSTALL) @list='$(vapi_DATA)'; test -n "$(vapidir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(vapidir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(vapidir)" && rm -f $$files + dir='$(DESTDIR)$(vapidir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: @@ -411,10 +413,15 @@ 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: