/pidgin/main: 723b8ecf31cd: Add media_send_dtmf() to prpl
David Woodhouse <[email protected]>
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: 723b8ecf31cd46068fd1a8ba98a973340fc61a09 Author: David Woodhouse <[email protected]> Date: 2015-03-06 22:09 +0000 Branch: default URL: https://hg.pidgin.im/pidgin/main/rev/723b8ecf31cd Description: Add media_send_dtmf() to prpl This allows for prpls to have their own protocol-specific method for sending DTMF. Refs #12617 diffstat: libpurple/media.c | 6 +++++- libpurple/protocols/bonjour/bonjour.c | 3 ++- libpurple/protocols/gg/gg.c | 3 ++- libpurple/protocols/irc/irc.c | 3 ++- libpurple/protocols/jabber/libfacebook.c | 3 ++- libpurple/protocols/jabber/libgtalk.c | 3 ++- libpurple/protocols/jabber/libxmpp.c | 3 ++- libpurple/protocols/msn/msn.c | 3 ++- libpurple/protocols/mxit/mxit.c | 3 ++- libpurple/protocols/novell/novell.c | 3 ++- libpurple/protocols/null/nullprpl.c | 3 ++- libpurple/protocols/oscar/libaim.c | 3 ++- libpurple/protocols/oscar/libicq.c | 3 ++- libpurple/protocols/sametime/sametime.c | 1 + libpurple/protocols/silc/silc.c | 3 ++- libpurple/protocols/simple/simple.c | 3 ++- libpurple/protocols/yahoo/libyahoo.c | 3 ++- libpurple/protocols/yahoo/libyahoojp.c | 3 ++- libpurple/protocols/zephyr/zephyr.c | 3 ++- libpurple/prpl.h | 10 ++++++++++ 20 files changed, 50 insertions(+), 18 deletions(-) diffs (268 lines): diff --git a/libpurple/media.c b/libpurple/media.c --- a/libpurple/media.c +++ b/libpurple/media.c @@ -1454,7 +1454,11 @@ purple_media_send_dtmf(PurpleMedia *medi g_return_val_if_fail(strchr("0123456789ABCD#*", dtmf), FALSE); - if (backend_iface && backend_iface->send_dtmf + if (prpl_info && PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, media_send_dtmf) + && prpl_info->media_send_dtmf(media, dtmf, volume, duration)) + { + return TRUE; + } else if (backend_iface && backend_iface->send_dtmf && backend_iface->send_dtmf(media->priv->backend, session_id, dtmf, volume, duration)) { diff --git a/libpurple/protocols/bonjour/bonjour.c b/libpurple/protocols/bonjour/bonjour.c --- a/libpurple/protocols/bonjour/bonjour.c +++ b/libpurple/protocols/bonjour/bonjour.c @@ -562,7 +562,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - bonjour_get_max_message_size /* get_max_message_size */ + bonjour_get_max_message_size, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static PurplePluginInfo info = diff --git a/libpurple/protocols/gg/gg.c b/libpurple/protocols/gg/gg.c --- a/libpurple/protocols/gg/gg.c +++ b/libpurple/protocols/gg/gg.c @@ -1015,7 +1015,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - ggp_get_max_message_size /* get_max_message_size */ + ggp_get_max_message_size, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static gboolean ggp_load(PurplePlugin *plugin); diff --git a/libpurple/protocols/irc/irc.c b/libpurple/protocols/irc/irc.c --- a/libpurple/protocols/irc/irc.c +++ b/libpurple/protocols/irc/irc.c @@ -1005,7 +1005,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - irc_get_max_message_size /* get_max_message_size */ + irc_get_max_message_size, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static gboolean load_plugin (PurplePlugin *plugin) { diff --git a/libpurple/protocols/jabber/libfacebook.c b/libpurple/protocols/jabber/libfacebook.c --- a/libpurple/protocols/jabber/libfacebook.c +++ b/libpurple/protocols/jabber/libfacebook.c @@ -150,7 +150,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - NULL /* get_max_message_size */ + NULL, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static gboolean load_plugin(PurplePlugin *plugin) diff --git a/libpurple/protocols/jabber/libgtalk.c b/libpurple/protocols/jabber/libgtalk.c --- a/libpurple/protocols/jabber/libgtalk.c +++ b/libpurple/protocols/jabber/libgtalk.c @@ -133,7 +133,8 @@ static PurplePluginProtocolInfo prpl_inf jabber_get_moods, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - NULL /* get_max_message_size */ + NULL, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static gboolean load_plugin(PurplePlugin *plugin) diff --git a/libpurple/protocols/jabber/libxmpp.c b/libpurple/protocols/jabber/libxmpp.c --- a/libpurple/protocols/jabber/libxmpp.c +++ b/libpurple/protocols/jabber/libxmpp.c @@ -127,7 +127,8 @@ static PurplePluginProtocolInfo prpl_inf jabber_get_moods, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - NULL /* get_max_message_size */ + NULL, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static gboolean load_plugin(PurplePlugin *plugin) diff --git a/libpurple/protocols/msn/msn.c b/libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c +++ b/libpurple/protocols/msn/msn.c @@ -2951,7 +2951,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ msn_set_public_alias, /* set_public_alias */ msn_get_public_alias, /* get_public_alias */ - msn_get_max_message_size /* get_max_message_size */ + msn_get_max_message_size, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static PurplePluginInfo info = diff --git a/libpurple/protocols/mxit/mxit.c b/libpurple/protocols/mxit/mxit.c --- a/libpurple/protocols/mxit/mxit.c +++ b/libpurple/protocols/mxit/mxit.c @@ -799,7 +799,8 @@ static PurplePluginProtocolInfo proto_in mxit_get_moods, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - NULL /* get_max_message_size */ + NULL, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; diff --git a/libpurple/protocols/novell/novell.c b/libpurple/protocols/novell/novell.c --- a/libpurple/protocols/novell/novell.c +++ b/libpurple/protocols/novell/novell.c @@ -3576,7 +3576,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - novell_get_max_message_size /* get_max_message_size */ + novell_get_max_message_size, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static PurplePluginInfo info = { diff --git a/libpurple/protocols/null/nullprpl.c b/libpurple/protocols/null/nullprpl.c --- a/libpurple/protocols/null/nullprpl.c +++ b/libpurple/protocols/null/nullprpl.c @@ -1083,7 +1083,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - NULL /* get_max_message_size */ + NULL, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static void nullprpl_init(PurplePlugin *plugin) diff --git a/libpurple/protocols/oscar/libaim.c b/libpurple/protocols/oscar/libaim.c --- a/libpurple/protocols/oscar/libaim.c +++ b/libpurple/protocols/oscar/libaim.c @@ -99,7 +99,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - oscar_get_max_message_size /* get_max_message_size */ + oscar_get_max_message_size, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static PurplePluginInfo info = diff --git a/libpurple/protocols/oscar/libicq.c b/libpurple/protocols/oscar/libicq.c --- a/libpurple/protocols/oscar/libicq.c +++ b/libpurple/protocols/oscar/libicq.c @@ -115,7 +115,8 @@ static PurplePluginProtocolInfo prpl_inf oscar_get_purple_moods, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - icq_get_max_message_size /* get_max_message_size */ + icq_get_max_message_size, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static PurplePluginInfo info = diff --git a/libpurple/protocols/sametime/sametime.c b/libpurple/protocols/sametime/sametime.c --- a/libpurple/protocols/sametime/sametime.c +++ b/libpurple/protocols/sametime/sametime.c @@ -5127,6 +5127,7 @@ static PurplePluginProtocolInfo mw_prpl_ NULL, NULL, NULL, + NULL, NULL }; diff --git a/libpurple/protocols/silc/silc.c b/libpurple/protocols/silc/silc.c --- a/libpurple/protocols/silc/silc.c +++ b/libpurple/protocols/silc/silc.c @@ -2138,7 +2138,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - NULL /* get_max_message_size */ + NULL, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static PurplePluginInfo info = diff --git a/libpurple/protocols/simple/simple.c b/libpurple/protocols/simple/simple.c --- a/libpurple/protocols/simple/simple.c +++ b/libpurple/protocols/simple/simple.c @@ -2119,7 +2119,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - NULL /* get_max_message_size */ + NULL, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; diff --git a/libpurple/protocols/yahoo/libyahoo.c b/libpurple/protocols/yahoo/libyahoo.c --- a/libpurple/protocols/yahoo/libyahoo.c +++ b/libpurple/protocols/yahoo/libyahoo.c @@ -264,7 +264,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - yahoo_get_max_message_size + yahoo_get_max_message_size, + NULL /* media_send_dtmf */ }; static PurplePluginInfo info = diff --git a/libpurple/protocols/yahoo/libyahoojp.c b/libpurple/protocols/yahoo/libyahoojp.c --- a/libpurple/protocols/yahoo/libyahoojp.c +++ b/libpurple/protocols/yahoo/libyahoojp.c @@ -162,7 +162,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - yahoo_get_max_message_size + yahoo_get_max_message_size, + NULL /* media_send_dtmf */ }; static PurplePluginInfo info = diff --git a/libpurple/protocols/zephyr/zephyr.c b/libpurple/protocols/zephyr/zephyr.c --- a/libpurple/protocols/zephyr/zephyr.c +++ b/libpurple/protocols/zephyr/zephyr.c @@ -2959,7 +2959,8 @@ static PurplePluginProtocolInfo prpl_inf NULL, /* get_moods */ NULL, /* set_public_alias */ NULL, /* get_public_alias */ - NULL /* get_max_message_size */ + NULL, /* get_max_message_size */ + NULL /* media_send_dtmf */ }; static PurplePluginInfo info = { diff --git a/libpurple/prpl.h b/libpurple/prpl.h --- a/libpurple/prpl.h +++ b/libpurple/prpl.h @@ -633,6 +633,16 @@ struct _PurplePluginProtocolInfo * Returns: Maximum message size, 0 if unspecified, -1 for infinite. */ gssize (*get_max_message_size)(PurpleConversation *conv); + + /* + * Sends DTMF codes out-of-band in a protocol-specific way if the + * protocol supports it, or failing that in-band if the media backend + * can do so. + * + * See purple_media_send_dtmf() + */ + gboolean (*media_send_dtmf)(PurpleMedia *media, gchar dtmf, + guint8 volume, guint8 duration); }; #define PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl, member) \