# HG changeset patch # User Andreas Monitzer # Date 1182170249 0 # Node ID 759cd72bd2ffeee8923d10a1c5f0cc6c61f9a9e4 # Parent f2686bec13c0bde7507e8f1422a7d26253a630df Replaced a clean and simple API with a very weird hack due to vivid request on #pidgin by multiple devs. This avoids the change in PurplePluginProtocolInfo, but requires complicated change tracking in every prpl. The others prpl should add this change tracking, too (since otherwise the status gets changed even though nothing they care about changed), but that's not up to me. diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/account.c --- a/libpurple/account.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/account.c Mon Jun 18 12:37:29 2007 +0000 @@ -2153,18 +2153,6 @@ } void -purple_account_set_tune(PurpleAccount *account, const PurpleTuneInfo *info) { - PurplePluginProtocolInfo *prpl_info = NULL; - PurpleConnection *gc = purple_account_get_connection(account); - - if (gc != NULL && gc->prpl != NULL) - prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); - - if (prpl_info && prpl_info->publish_tune) - prpl_info->publish_tune(gc, info); -} - -void purple_accounts_add(PurpleAccount *account) { g_return_if_fail(account != NULL); diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/account.h --- a/libpurple/account.h Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/account.h Mon Jun 18 12:37:29 2007 +0000 @@ -841,14 +841,6 @@ */ gboolean purple_account_supports_offline_message(PurpleAccount *account, PurpleBuddy *buddy); -/** - * Sets the current tune playing on the machine (if the prpl support setting this information) - * - * @param account The account - * @param info The tune information - */ -void purple_account_set_tune(PurpleAccount *account, const PurpleTuneInfo *info); - /*@}*/ /**************************************************************************/ diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/gg/gg.c --- a/libpurple/protocols/gg/gg.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/gg/gg.c Mon Jun 18 12:37:29 2007 +0000 @@ -2123,11 +2123,11 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ - NULL, /* publish_tune */ /* padding */ NULL, NULL, + NULL, NULL }; /* }}} */ diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/irc/irc.c --- a/libpurple/protocols/irc/irc.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/irc/irc.c Mon Jun 18 12:37:29 2007 +0000 @@ -876,11 +876,11 @@ NULL, /* whiteboard_prpl_ops */ irc_send_raw, /* send_raw */ NULL, /* roomlist_room_serialize */ - NULL, /* publish_tune */ /* padding */ NULL, NULL, + NULL, NULL }; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/jabber/buddy.h --- a/libpurple/protocols/jabber/buddy.h Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/jabber/buddy.h Mon Jun 18 12:37:29 2007 +0000 @@ -22,11 +22,6 @@ #ifndef _PURPLE_JABBER_BUDDY_H_ #define _PURPLE_JABBER_BUDDY_H_ -#include "jabber.h" - -#define AVATARNAMESPACEDATA "http://www.xmpp.org/extensions/xep-0084.html#ns-data" -#define AVATARNAMESPACEMETA "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata" - typedef enum { JABBER_BUDDY_STATE_UNKNOWN = -2, JABBER_BUDDY_STATE_ERROR = -1, @@ -38,6 +33,11 @@ JABBER_BUDDY_STATE_DND } JabberBuddyState; +#include "jabber.h" + +#define AVATARNAMESPACEDATA "http://www.xmpp.org/extensions/xep-0084.html#ns-data" +#define AVATARNAMESPACEMETA "http://www.xmpp.org/extensions/xep-0084.html#ns-metadata" + typedef struct _JabberBuddy { GList *resources; char *error_msg; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/jabber/jabber.c --- a/libpurple/protocols/jabber/jabber.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/jabber/jabber.c Mon Jun 18 12:37:29 2007 +0000 @@ -562,6 +562,7 @@ js->user = jabber_id_new(purple_account_get_username(account)); js->next_id = g_random_int(); js->write_buffer = purple_circ_buffer_new(512); + js->old_length = -1; if(!js->user) { purple_connection_error(gc, _("Invalid XMPP ID")); @@ -912,6 +913,7 @@ g_free, g_free); js->user = jabber_id_new(purple_account_get_username(account)); js->next_id = g_random_int(); + js->old_length = -1; if(!js->user) { purple_connection_error(gc, _("Invalid XMPP ID")); @@ -1030,6 +1032,21 @@ g_free(js->server_name); g_free(js->gmail_last_time); g_free(js->gmail_last_tid); + if(js->old_msg) + g_free(js->old_msg); + if(js->old_avatarhash) + g_free(js->old_avatarhash); + if(js->old_artist) + g_free(js->old_artist); + if(js->old_title) + g_free(js->old_title); + if(js->old_source) + g_free(js->old_source); + if(js->old_uri) + g_free(js->old_uri); + if(js->old_track) + g_free(js->old_track); + g_free(js); gc->proto_data = NULL; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/jabber/jabber.h --- a/libpurple/protocols/jabber/jabber.h Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/jabber/jabber.h Mon Jun 18 12:37:29 2007 +0000 @@ -22,23 +22,6 @@ #ifndef _PURPLE_JABBER_H_ #define _PURPLE_JABBER_H_ -#include -#include -#include "circbuffer.h" -#include "connection.h" -#include "dnssrv.h" -#include "roomlist.h" -#include "sslconn.h" - -#include "jutil.h" -#include "xmlnode.h" - -#ifdef HAVE_CYRUS_SASL -#include -#endif - -#define CAPS0115_NODE "http://pidgin.im/caps" - typedef enum { JABBER_CAP_NONE = 0, JABBER_CAP_XHTML = 1 << 0, @@ -50,18 +33,38 @@ JABBER_CAP_CHAT_STATES = 1 << 6, JABBER_CAP_IQ_SEARCH = 1 << 7, JABBER_CAP_IQ_REGISTER = 1 << 8, - + /* Google Talk extensions: - * http://code.google.com/apis/talk/jep_extensions/extensions.html - */ + * http://code.google.com/apis/talk/jep_extensions/extensions.html + */ JABBER_CAP_GMAIL_NOTIFY = 1 << 9, JABBER_CAP_GOOGLE_ROSTER = 1 << 10, - + JABBER_CAP_PING = 1 << 11, - + JABBER_CAP_RETRIEVED = 1 << 31 } JabberCapabilities; +typedef struct _JabberStream JabberStream; + +#include +#include +#include "circbuffer.h" +#include "connection.h" +#include "dnssrv.h" +#include "roomlist.h" +#include "sslconn.h" + +#include "jutil.h" +#include "xmlnode.h" +#include "buddy.h" + +#ifdef HAVE_CYRUS_SASL +#include +#endif + +#define CAPS0115_NODE "http://pidgin.im/caps" + typedef enum { JABBER_STREAM_OFFLINE, JABBER_STREAM_CONNECTING, @@ -71,7 +74,7 @@ JABBER_STREAM_CONNECTED } JabberStreamState; -typedef struct _JabberStream +struct _JabberStream { int fd; @@ -152,7 +155,21 @@ /* does the local server support PEP? */ gboolean pep; -} JabberStream; + + /* last presence update to check for differences */ + JabberBuddyState old_state; + char *old_msg; + int old_priority; + char *old_avatarhash; + + /* same for user tune */ + char *old_artist; + char *old_title; + char *old_source; + char *old_uri; + int old_length; + char *old_track; +}; typedef gboolean (JabberFeatureEnabled)(JabberStream *js, const gchar *shortname, const gchar *namespace); diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/jabber/libxmpp.c --- a/libpurple/protocols/jabber/libxmpp.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/jabber/libxmpp.c Mon Jun 18 12:37:29 2007 +0000 @@ -110,11 +110,11 @@ NULL, /* whiteboard_prpl_ops */ jabber_prpl_send_raw, /* send_raw */ jabber_roomlist_room_serialize, /* roomlist_room_serialize */ - jabber_tune_set, /* publish_tune */ /* padding */ NULL, NULL, + NULL, NULL }; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/jabber/presence.c --- a/libpurple/protocols/jabber/presence.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/jabber/presence.c Mon Jun 18 12:37:29 2007 +0000 @@ -37,6 +37,8 @@ #include "iq.h" #include "jutil.h" +#include "usertune.h" + static void chats_send_presence_foreach(gpointer key, gpointer val, gpointer user_data) @@ -101,6 +103,8 @@ char *stripped = NULL; JabberBuddyState state; int priority; + const char *artist, *title, *source, *uri, *track; + int length; if(!purple_status_is_active(status)) return; @@ -116,23 +120,80 @@ js = gc->proto_data; purple_status_to_jabber(status, &state, &stripped, &priority); - + +#define CHANGED(a,b) ((!a && b) || (a && a[0] == '\0' && b && b[0] != '\0') || \ + (a && !b) || (a && a[0] != '\0' && b && b[0] == '\0') || (a && b && strcmp(a,b))) + /* check if there are any differences to the and send them in that case */ + if (js->old_state != state || CHANGED(js->old_msg, stripped) || + js->old_priority != priority || CHANGED(js->old_avatarhash, js->avatar_hash)) { + presence = jabber_presence_create_js(js, state, stripped, priority); + g_free(stripped); - presence = jabber_presence_create_js(js, state, stripped, priority); - g_free(stripped); + if(js->avatar_hash) { + x = xmlnode_new_child(presence, "x"); + xmlnode_set_namespace(x, "vcard-temp:x:update"); + photo = xmlnode_new_child(x, "photo"); + xmlnode_insert_data(photo, js->avatar_hash, -1); + } + + jabber_send(js, presence); - if(js->avatar_hash) { - x = xmlnode_new_child(presence, "x"); - xmlnode_set_namespace(x, "vcard-temp:x:update"); - photo = xmlnode_new_child(x, "photo"); - xmlnode_insert_data(photo, js->avatar_hash, -1); + g_hash_table_foreach(js->chats, chats_send_presence_foreach, presence); + xmlnode_free(presence); + + /* update old values */ + + if(js->old_msg) + g_free(js->old_msg); + if(js->old_avatarhash) + g_free(js->old_avatarhash); + js->old_msg = g_strdup(stripped); + js->old_avatarhash = g_strdup(js->avatar_hash); + js->old_state = state; + js->old_priority = priority; } - - jabber_send(js, presence); - - g_hash_table_foreach(js->chats, chats_send_presence_foreach, presence); - xmlnode_free(presence); - + + /* next, check if there are any changes to the tune values */ + artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST); + title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE); + source = purple_status_get_attr_string(status, PURPLE_TUNE_ALBUM); + uri = purple_status_get_attr_string(status, PURPLE_TUNE_URL); + track = purple_status_get_attr_string(status, PURPLE_TUNE_TRACK); + length = (!purple_status_get_attr_value(status, PURPLE_TUNE_TIME))?-1:purple_status_get_attr_int(status, PURPLE_TUNE_TIME); + + if(CHANGED(artist, js->old_artist) || CHANGED(title, js->old_title) || CHANGED(source, js->old_source) || + CHANGED(uri, js->old_uri) || CHANGED(track, js->old_track) || (length != js->old_length)) { + PurpleJabberTuneInfo tuneinfo = { + (char*)artist, + (char*)title, + (char*)source, + (char*)track, + length, + (char*)uri + }; + jabber_tune_set(js->gc, &tuneinfo); + + /* update old values */ + if(js->old_artist) + g_free(js->old_artist); + if(js->old_title) + g_free(js->old_title); + if(js->old_source) + g_free(js->old_source); + if(js->old_uri) + g_free(js->old_uri); + if(js->old_track) + g_free(js->old_track); + js->old_artist = g_strdup(artist); + js->old_title = g_strdup(title); + js->old_source = g_strdup(source); + js->old_uri = g_strdup(uri); + js->old_length = length; + js->old_track = g_strdup(track); + } + +#undef CHANGED(a,b) + jabber_presence_fake_to_self(js, status); } diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/jabber/usertune.c --- a/libpurple/protocols/jabber/usertune.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/jabber/usertune.c Mon Jun 18 12:37:29 2007 +0000 @@ -25,13 +25,14 @@ #include #include "internal.h" #include "request.h" +#include "status.h" static void jabber_tune_cb(JabberStream *js, const char *from, xmlnode *items) { /* it doesn't make sense to have more than one item here, so let's just pick the first one */ xmlnode *item = xmlnode_get_child(items, "item"); JabberBuddy *buddy = jabber_buddy_find(js, from, FALSE); xmlnode *tuneinfo, *tune; - PurpleTuneInfo tuneinfodata; + PurpleJabberTuneInfo tuneinfodata; /* ignore the tune of people not on our buddy list */ if (!buddy || !item) @@ -40,11 +41,8 @@ tuneinfodata.artist = ""; tuneinfodata.title = ""; tuneinfodata.album = ""; - tuneinfodata.genre = ""; - tuneinfodata.comment = ""; tuneinfodata.track = ""; tuneinfodata.time = -1; - tuneinfodata.year = -1; tuneinfodata.url = ""; tune = xmlnode_get_child_with_namespace(item, "tune", "http://jabber.org/protocol/tune"); @@ -79,7 +77,7 @@ JabberBuddyResource *resource = jabber_buddy_find_resource(buddy, NULL); const char *status_id = jabber_buddy_state_get_status_id(resource->state); - purple_prpl_got_user_status(js->gc->account, from, status_id, "tune_artist", tuneinfodata.artist, "tune_title", tuneinfodata.title, "tune_album", tuneinfodata.album, "tune_genre", tuneinfodata.genre, "tune_comment", tuneinfodata.comment, "tune_track", tuneinfodata.track, "tune_time", tuneinfodata.time, "tune_year", tuneinfodata.year, "tune_url", tuneinfodata.url, NULL); + purple_prpl_got_user_status(js->gc->account, from, status_id, PURPLE_TUNE_ARTIST, tuneinfodata.artist, PURPLE_TUNE_TITLE, tuneinfodata.title, PURPLE_TUNE_ALBUM, tuneinfodata.album, PURPLE_TUNE_TRACK, tuneinfodata.track, PURPLE_TUNE_TIME, tuneinfodata.time, PURPLE_TUNE_URL, tuneinfodata.url, NULL); } void jabber_tune_init(void) { @@ -87,7 +85,7 @@ jabber_pep_register_handler("tunen", "http://jabber.org/protocol/tune", jabber_tune_cb); } -void jabber_tune_set(PurpleConnection *gc, const PurpleTuneInfo *tuneinfo) { +void jabber_tune_set(PurpleConnection *gc, const PurpleJabberTuneInfo *tuneinfo) { xmlnode *publish, *tunenode; JabberStream *js = gc->proto_data; @@ -97,20 +95,20 @@ xmlnode_set_namespace(tunenode, "http://jabber.org/protocol/tune"); if(tuneinfo) { - if(tuneinfo->artist) + if(tuneinfo->artist && tuneinfo->artist[0] != '\0') xmlnode_insert_data(xmlnode_new_child(tunenode, "artist"),tuneinfo->artist,-1); - if(tuneinfo->title) + if(tuneinfo->title && tuneinfo->title[0] != '\0') xmlnode_insert_data(xmlnode_new_child(tunenode, "title"),tuneinfo->title,-1); - if(tuneinfo->album) + if(tuneinfo->album && tuneinfo->album[0] != '\0') xmlnode_insert_data(xmlnode_new_child(tunenode, "source"),tuneinfo->album,-1); - if(tuneinfo->url) + if(tuneinfo->url && tuneinfo->url[0] != '\0') xmlnode_insert_data(xmlnode_new_child(tunenode, "uri"),tuneinfo->url,-1); if(tuneinfo->time >= 0) { char *length = g_strdup_printf("%d", tuneinfo->time); xmlnode_insert_data(xmlnode_new_child(tunenode, "length"),length,-1); g_free(length); } - if(tuneinfo->track) + if(tuneinfo->track && tuneinfo->track[0] != '\0') xmlnode_insert_data(xmlnode_new_child(tunenode, "track"),tuneinfo->track,-1); } diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/jabber/usertune.h --- a/libpurple/protocols/jabber/usertune.h Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/jabber/usertune.h Mon Jun 18 12:37:29 2007 +0000 @@ -26,8 +26,18 @@ /* Implementation of XEP-0118 */ +typedef struct _PurpleJabberTuneInfo PurpleJabberTuneInfo; +struct _PurpleJabberTuneInfo { + char *artist; + char *title; + char *album; + char *track; /* either the index of the track in the album or the URL for a stream */ + int time; /* in seconds, -1 for unknown */ + char *url; +}; + void jabber_tune_init(void); -void jabber_tune_set(PurpleConnection *gc, const PurpleTuneInfo *tuneinfo); +void jabber_tune_set(PurpleConnection *gc, const PurpleJabberTuneInfo *tuneinfo); #endif /* _PURPLE_JABBER_USERTUNE_H_ */ diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/msn/msn.c --- a/libpurple/protocols/msn/msn.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/msn/msn.c Mon Jun 18 12:37:29 2007 +0000 @@ -2082,11 +2082,11 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ - NULL, /* publish_tune */ /* padding */ NULL, NULL, + NULL, NULL }; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/novell/novell.c --- a/libpurple/protocols/novell/novell.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/novell/novell.c Mon Jun 18 12:37:29 2007 +0000 @@ -3494,11 +3494,11 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ - NULL, /* publish_tune */ /* padding */ NULL, NULL, + NULL, NULL }; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/oscar/libaim.c --- a/libpurple/protocols/oscar/libaim.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/oscar/libaim.c Mon Jun 18 12:37:29 2007 +0000 @@ -92,11 +92,11 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ - NULL, /* publish_tune */ /* padding */ NULL, NULL, + NULL, NULL }; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/oscar/libicq.c --- a/libpurple/protocols/oscar/libicq.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/oscar/libicq.c Mon Jun 18 12:37:29 2007 +0000 @@ -92,11 +92,11 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ - NULL, /* publish_tune */ /* padding */ NULL, NULL, + NULL, NULL }; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/qq/qq.c --- a/libpurple/protocols/qq/qq.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/qq/qq.c Mon Jun 18 12:37:29 2007 +0000 @@ -698,11 +698,11 @@ NULL, /* PurpleWhiteboardPrplOps */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ - NULL, /* publish_tune */ /* padding */ NULL, NULL, + NULL, NULL }; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/sametime/sametime.c --- a/libpurple/protocols/sametime/sametime.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/sametime/sametime.c Mon Jun 18 12:37:29 2007 +0000 @@ -5132,8 +5132,7 @@ .new_xfer = mw_prpl_new_xfer, .offline_message = NULL, .whiteboard_prpl_ops = NULL, - .send_raw = NULL, - .publish_tune = NULL + .send_raw = NULL }; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/simple/simple.c --- a/libpurple/protocols/simple/simple.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/simple/simple.c Mon Jun 18 12:37:29 2007 +0000 @@ -1798,11 +1798,11 @@ NULL, /* whiteboard_prpl_ops */ simple_send_raw, /* send_raw */ NULL, /* roomlist_room_serialize */ - NULL, /* publish_tune */ /* padding */ NULL, NULL, + NULL, NULL }; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/yahoo/yahoo.c --- a/libpurple/protocols/yahoo/yahoo.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/yahoo/yahoo.c Mon Jun 18 12:37:29 2007 +0000 @@ -4019,11 +4019,11 @@ &yahoo_whiteboard_prpl_ops, NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ - NULL, /* publish_tune */ /* padding */ NULL, NULL, + NULL, NULL }; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/protocols/zephyr/zephyr.c --- a/libpurple/protocols/zephyr/zephyr.c Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/protocols/zephyr/zephyr.c Mon Jun 18 12:37:29 2007 +0000 @@ -2921,11 +2921,11 @@ NULL, /* whiteboard_prpl_ops */ NULL, /* send_raw */ NULL, /* roomlist_room_serialize */ - NULL, /* publish_tune */ /* padding */ NULL, NULL, + NULL, NULL }; diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/prpl.h --- a/libpurple/prpl.h Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/prpl.h Mon Jun 18 12:37:29 2007 +0000 @@ -47,7 +47,6 @@ * Dimensions less than 1 should be ignored and the image not scaled. */ typedef struct _PurpleBuddyIconSpec PurpleBuddyIconSpec; -typedef struct _PurpleTuneInfo PurpleTuneInfo; /** * This \#define exists just to make it easier to fill out the buddy icon @@ -92,18 +91,6 @@ gboolean secret; }; -struct _PurpleTuneInfo { - char *artist; - char *title; - char *album; - char *genre; - char *comment; - char *track; /* either the index of the track in the album or the URL for a stream */ - int time; /* in seconds, -1 for unknown */ - int year; /* -1 for unknown (not compatible with very old music I guess) */ - char *url; -}; - /** * Protocol options * @@ -331,12 +318,10 @@ /* room list serialize */ char *(*roomlist_room_serialize)(PurpleRoomlistRoom *room); - void (*publish_tune)(PurpleConnection *gc, const PurpleTuneInfo *tuneinfo); - void (*_purple_reserved1)(void); void (*_purple_reserved2)(void); void (*_purple_reserved3)(void); -/* void (*_purple_reserved4)(void);*/ + void (*_purple_reserved4)(void); }; #define PURPLE_IS_PROTOCOL_PLUGIN(plugin) \ diff -r f2686bec13c0 -r 759cd72bd2ff libpurple/status.h --- a/libpurple/status.h Mon Jun 18 03:25:22 2007 +0000 +++ b/libpurple/status.h Mon Jun 18 12:37:29 2007 +0000 @@ -113,6 +113,16 @@ #include "conversation.h" #include "value.h" +#define PURPLE_TUNE_ARTIST "tune_artist" +#define PURPLE_TUNE_TITLE "tune_title" +#define PURPLE_TUNE_ALBUM "tune_album" +#define PURPLE_TUNE_GENRE "tune_genre" +#define PURPLE_TUNE_COMMENT "tune_comment" +#define PURPLE_TUNE_TRACK "tune_track" +#define PURPLE_TUNE_TIME "tune_time" +#define PURPLE_TUNE_YEAR "tune_year" +#define PURPLE_TUNE_URL "tune_url" + #ifdef __cplusplus extern "C" { #endif