summaryrefslogtreecommitdiff
path: root/net-im
diff options
context:
space:
mode:
authorOlivier Crête <tester@gentoo.org>2012-03-31 21:01:56 +0000
committerOlivier Crête <tester@gentoo.org>2012-03-31 21:01:56 +0000
commite09f968eaf9c7e3de75733300d5e79111ade9b74 (patch)
tree0b0ede03ef696dbe38cde1e3bef5a8fdddb6855f /net-im
parentRemove old. (diff)
downloadhistorical-e09f968eaf9c7e3de75733300d5e79111ade9b74.tar.gz
historical-e09f968eaf9c7e3de75733300d5e79111ade9b74.tar.bz2
historical-e09f968eaf9c7e3de75733300d5e79111ade9b74.zip
Add package.masked version that uses farstream instead of farsight2
Package-Manager: portage-2.1.10.49/cvs/Linux x86_64
Diffstat (limited to 'net-im')
-rw-r--r--net-im/pidgin/ChangeLog8
-rw-r--r--net-im/pidgin/Manifest24
-rw-r--r--net-im/pidgin/files/port-to-farstream-v5.patch499
-rw-r--r--net-im/pidgin/pidgin-2.10.3-r100.ebuild230
4 files changed, 739 insertions, 22 deletions
diff --git a/net-im/pidgin/ChangeLog b/net-im/pidgin/ChangeLog
index c5d51d159b9d..f543c6b6d0e8 100644
--- a/net-im/pidgin/ChangeLog
+++ b/net-im/pidgin/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for net-im/pidgin
# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-im/pidgin/ChangeLog,v 1.268 2012/03/30 17:11:29 polynomial-c Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-im/pidgin/ChangeLog,v 1.269 2012/03/31 21:01:55 tester Exp $
+
+*pidgin-2.10.3-r100 (31 Mar 2012)
+
+ 31 Mar 2012; Olivier Crête <tester@gentoo.org>
+ +files/port-to-farstream-v5.patch, +pidgin-2.10.3-r100.ebuild:
+ Add package.masked version that uses farstream instead of farsight2
*pidgin-2.10.3 (30 Mar 2012)
diff --git a/net-im/pidgin/Manifest b/net-im/pidgin/Manifest
index 8f0f60e356c5..b4ad6b6a7847 100644
--- a/net-im/pidgin/Manifest
+++ b/net-im/pidgin/Manifest
@@ -1,29 +1,11 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA512
-
AUX pidgin-2.10.0-gold.patch 1003 RMD160 947502ee3c055b80ba35b0fe0d4e5fa26f44b6ae SHA1 2f01a80b9391e15083e009c492ece3771094d46a SHA256 26657c717f4e624b0b3af8746b61b0861ba4da65e55e49a753cfefaba72c60cb
AUX pidgin-2.10.0-networkmanager-0.9.patch 1994 RMD160 76311be8823e809128e5862a2d4019682040b89d SHA1 7582f01f672117a094666c08d03fc114d1184eb6 SHA256 d91ce4a7236ea9b0bc730ec07a994bf5dc2c834e2df04e4615d9ada4a03af7ab
AUX pidgin-2.10.0-utf8-validation.patch 908 RMD160 0f98c6dd6cd9c63b3d61c85a9f18a07a38616115 SHA1 9876a7d8902d85e759c1dff1d8ea55cedaccd293 SHA256 288acd1f638fa1e21e216d48f308ef5f0397ddea2c1309e767391411ab02fbf4
+AUX port-to-farstream-v5.patch 15456 RMD160 a93f3f061c8a3c4eafe8f614f4e656e5a056fea4 SHA1 3a9f0fd48473bee25054e0cb146c8451053739d2 SHA256 f3dda020ce823b12cbea08d09c74c1aab547e53b9c3a44ac97dc076fc0e0008a
DIST pidgin-2.10.1.tar.bz2 9961580 RMD160 f73c5540fd01f62ae2a0ae236436f06770a896ef SHA1 045ed0fd7dfedada6e082e7a4564648b55950064 SHA256 2f28bddc5edcd714d607d74126c8958ae7c258602b3929e3e6e783d3cb1beac8
DIST pidgin-2.10.3.tar.bz2 9970676 RMD160 10af4caee9f22a251f867e3befebcc659e2b42f3 SHA1 7dfeabdb1ade4311c91ac9c9f988276f67ead6ee SHA256 0f67d96231fea3945c2735e6a3b4bd92590ef489fa1511fa69aa6a543cb4168b
EBUILD pidgin-2.10.1.ebuild 6978 RMD160 6264b2cea9f9452550d6b3cb6fada1095aee80e2 SHA1 dc5d7af92f5ef56afb0741c45f96bfc2ea28f265 SHA256 6f43b67beda379c52662842fec80cbc24f3cbdf95c1536d3f82085d0ec23ae8b
+EBUILD pidgin-2.10.3-r100.ebuild 6994 RMD160 67c9400cdc0632ae68b07d06952cc35c57661022 SHA1 4152ad9e109dc643ff7f863c7d2c4633b861cf66 SHA256 775dc5d408c7aa502f55cd4485018ef6c6a5c45ad4f515c54804ccd0f7297d42
EBUILD pidgin-2.10.3.ebuild 6931 RMD160 a9a9841220834569365a02211d8368521966d023 SHA1 928d4fb97b2dc81b815c4f54e29726b6a61e5468 SHA256 5e20efa34a21a4882e36c3f1f48e5c78dfc3abb76f51807bc0b4093fcb0a9d73
-MISC ChangeLog 38015 RMD160 4a49ae5424c96e23fc9c9e7a5b0cef8e2a28f3ba SHA1 dc5709ae438ca65b2d6a81b84d0c0697a798c8c5 SHA256 d3216b157ddbfb915427dd1a8de530b7391a6df2acc3d44efb4911310b44ae91
+MISC ChangeLog 38230 RMD160 4c953bbfa89490f41963fe8ebddd5116d3c7941c SHA1 b7fb7edf18cc86be54007732c579ba87cc9bf6b0 SHA256 ec2ce2fe6c0832ceec060e2b392b506f40a037a30542886fb1d0a1610c038761
MISC metadata.xml 1311 RMD160 b0374914c2205f8e96bbcaf82aa7669c0568a3c1 SHA1 4dfd73f2ce52af88aa122d170d97d1e41803f7c7 SHA256 a0253264c64bdd1a4623db7f223cae50450dc8577d74748c25974ca909b80875
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v2.0.19 (GNU/Linux)
-
-iQIcBAEBCgAGBQJPdelHAAoJEPiazRVxLXTFaIoP/iSahDxykx4Z69bFBS0BdUjm
-8wKfP7dvRg7fR09ozvJxN6JbCMmu4pFC159F2HTmRs/mvtIimpiwuwoXNmsBRI4i
-ml19g01rSgUYBgaIvFF74WYz5/jtfaDSOWe913QwrI94c86IvlR4SrMM1RSIwD5B
-Ylwx8tPyPxnV0H/r429vgyiIidj2YZKQMzNqzysWJA94P1YagEurA6OqMYMtBKQD
-0F64P80dvLrdnP/02D2nRuK4ud6LJ7+ZZb5o+gOeMGh78DsIw/pQYWJhnh0xTMQE
-5A/vWovZqWC1fhKmPZYD8HKrP0R4tVfiSC2zk0mwlzI2smxJfefs2M4nwiQ2dgnT
-gH86SHb/QyfLxuhLjqjybQLFrrVPo1eFb/inabYsHaoB0oKItzMcLN/OLxq/TQXb
-RHA7sHRsSuywOnzA6wXAmnS8gzymcrRNfJqzfzTHBfntuGChvdSs/yVJ83BfhI9b
-4nUg9l5ImqJqxPwzxSK0bmAiASr9y70e6DK98FFogmlsFVMAeXCJKa8NRMRJMdNi
-b7RuGsIHc2wn8K1ZssQ7M/d0QiMjyW4EX+GYbyngjbJ+GQ4HDqSBcn9plu9RimuQ
-pnf87h9BDGRFtDSQFKbYO1gBA5i2JytDg6amRUZlLinU+MKg+jer5xh3pR7td2/f
-HYxS4PDLhumbAKKpVhHv
-=0dFW
------END PGP SIGNATURE-----
diff --git a/net-im/pidgin/files/port-to-farstream-v5.patch b/net-im/pidgin/files/port-to-farstream-v5.patch
new file mode 100644
index 000000000000..10b4a6d334e7
--- /dev/null
+++ b/net-im/pidgin/files/port-to-farstream-v5.patch
@@ -0,0 +1,499 @@
+diff -aur pidgin-2.10.3-orig//configure.ac pidgin-2.10.3/configure.ac
+--- pidgin-2.10.3-orig//configure.ac 2012-03-25 23:49:14.000000000 -0400
++++ pidgin-2.10.3/configure.ac 2012-03-31 16:23:09.772818869 -0400
+@@ -786,18 +786,18 @@
+ fi
+
+ dnl #######################################################################
+-dnl # Check for Farsight
++dnl # Check for Farstream
+ dnl #######################################################################
+-AC_ARG_ENABLE(farsight,
+- [AC_HELP_STRING([--disable-farsight], [compile without farsight support])],
+- enable_farsight="$enableval", enable_farsight="yes")
+-if test "x$enable_farsight" != "xno"; then
+- PKG_CHECK_MODULES(FARSIGHT, [farsight2-0.10 >= 0.0.9], [
+- AC_DEFINE(USE_FARSIGHT, 1, [Use Farsight for voice and video])
+- AC_SUBST(FARSIGHT_CFLAGS)
+- AC_SUBST(FARSIGHT_LIBS)
++AC_ARG_ENABLE(farstream,
++ [AC_HELP_STRING([--disable-farstream], [compile without farstream support])],
++ enable_farstream="$enableval", enable_farstream="yes")
++if test "x$enable_farstream" != "xno"; then
++ PKG_CHECK_MODULES(FARSTREAM, [farstream-0.1], [
++ AC_DEFINE(USE_FARSTREAM, 1, [Use Farstream for voice and video])
++ AC_SUBST(FARSTREAM_CFLAGS)
++ AC_SUBST(FARSTREAM_LIBS)
+ ], [
+- enable_farsight="no"
++ enable_farstream="no"
+ ])
+ fi
+
+@@ -808,20 +808,20 @@
+ [AC_HELP_STRING([--disable-vv], [compile without voice and video support])],
+ enable_vv="$enableval", enable_vv="yes")
+ if test "x$enable_vv" != "xno"; then
+- if test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farsight" != "xno"; then
++ if test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farstream" != "xno"; then
+ AC_DEFINE(USE_VV, 1, [Use voice and video])
+ else
+ enable_vv="no"
+ if test "x$force_deps" = "xyes"; then
+ AC_MSG_ERROR([
+ Dependencies for voice/video were not met.
+-Install the necessary gstreamer and farsight packages first.
++Install the necessary gstreamer and farstream packages first.
+ Or use --disable-vv if you do not need voice/video support.
+ ])
+ fi
+ fi
+ fi
+-AM_CONDITIONAL(USE_VV, test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farsight" != "xno")
++AM_CONDITIONAL(USE_VV, test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farstream" != "xno")
+
+ dnl #######################################################################
+ dnl # Check for Internationalized Domain Name support
+Only in pidgin-2.10.3: configure.ac.orig
+diff -aur pidgin-2.10.3-orig//libpurple/Makefile.am pidgin-2.10.3/libpurple/Makefile.am
+--- pidgin-2.10.3-orig//libpurple/Makefile.am 2012-03-25 23:49:15.000000000 -0400
++++ pidgin-2.10.3/libpurple/Makefile.am 2012-03-31 16:23:09.776152155 -0400
+@@ -306,7 +306,7 @@
+ $(LIBXML_LIBS) \
+ $(NETWORKMANAGER_LIBS) \
+ $(INTLLIBS) \
+- $(FARSIGHT_LIBS) \
++ $(FARSTREAM_LIBS) \
+ $(GSTREAMER_LIBS) \
+ $(GSTINTERFACES_LIBS) \
+ $(IDN_LIBS) \
+@@ -322,7 +322,7 @@
+ $(DEBUG_CFLAGS) \
+ $(DBUS_CFLAGS) \
+ $(LIBXML_CFLAGS) \
+- $(FARSIGHT_CFLAGS) \
++ $(FARSTREAM_CFLAGS) \
+ $(GSTREAMER_CFLAGS) \
+ $(GSTINTERFACES_CFLAGS) \
+ $(IDN_CFLAGS) \
+diff -aur pidgin-2.10.3-orig//libpurple/media/backend-fs2.c pidgin-2.10.3/libpurple/media/backend-fs2.c
+--- pidgin-2.10.3-orig//libpurple/media/backend-fs2.c 2012-03-25 23:49:16.000000000 -0400
++++ pidgin-2.10.3/libpurple/media/backend-fs2.c 2012-03-31 16:41:52.840615660 -0400
+@@ -1,5 +1,5 @@
+ /**
+- * @file backend-fs2.c Farsight 2 backend for media API
++ * @file backend-fs2.c Farstream backend for media API
+ * @ingroup core
+ */
+
+@@ -34,8 +34,9 @@
+ #include "network.h"
+ #include "media-gst.h"
+
+-#include <gst/farsight/fs-conference-iface.h>
+-#include <gst/farsight/fs-element-added-notifier.h>
++#include <farstream/fs-conference.h>
++#include <farstream/fs-element-added-notifier.h>
++#include <farstream/fs-utils.h>
+
+ /** @copydoc _PurpleMediaBackendFs2Class */
+ typedef struct _PurpleMediaBackendFs2Class PurpleMediaBackendFs2Class;
+@@ -112,6 +113,8 @@
+ gchar *participant;
+ FsStream *stream;
+
++ gboolean supports_add;
++
+ GstElement *src;
+ GstElement *tee;
+ GstElement *volume;
+@@ -147,6 +150,8 @@
+ FsConference *conference;
+ gchar *conference_type;
+
++ FsElementAddedNotifier *notifier;
++
+ GHashTable *sessions;
+ GHashTable *participants;
+
+@@ -212,6 +217,11 @@
+
+ purple_debug_info("backend-fs2", "purple_media_backend_fs2_dispose\n");
+
++ if (priv->notifier) {
++ g_object_unref(priv->notifier);
++ priv->notifier = NULL;
++ }
++
+ if (priv->confbin) {
+ GstElement *pipeline;
+
+@@ -846,7 +856,7 @@
+ priv->conference != FS_CONFERENCE(src))
+ return;
+
+- if (gst_structure_has_name(msg->structure, "farsight-error")) {
++ if (gst_structure_has_name(msg->structure, "farstream-error")) {
+ FsError error_no;
+ gst_structure_get_enum(msg->structure, "error-no",
+ FS_TYPE_ERROR, (gint*)&error_no);
+@@ -859,24 +869,9 @@
+ " packages."));
+ purple_media_end(priv->media, NULL, NULL);
+ break;
+- case FS_ERROR_NO_CODECS_LEFT:
+- purple_media_error(priv->media, _("No codecs"
+- " left. Your codec"
+- " preferences in"
+- " fs-codecs.conf are too"
+- " strict."));
+- purple_media_end(priv->media, NULL, NULL);
+- break;
+- case FS_ERROR_UNKNOWN_CNAME:
+- /*
+- * Unknown CName is only a problem for the
+- * multicast transmitter which isn't used.
+- * It is also deprecated.
+- */
+- break;
+ default:
+ purple_debug_error("backend-fs2",
+- "farsight-error: %i: %s\n",
++ "farstream-error: %i: %s\n",
+ error_no,
+ gst_structure_get_string(
+ msg->structure, "error-msg"));
+@@ -885,11 +880,11 @@
+
+ if (FS_ERROR_IS_FATAL(error_no)) {
+ purple_media_error(priv->media, _("A non-recoverable "
+- "Farsight2 error has occurred."));
++ "Farstream error has occurred."));
+ purple_media_end(priv->media, NULL, NULL);
+ }
+ } else if (gst_structure_has_name(msg->structure,
+- "farsight-new-local-candidate")) {
++ "farstream-new-local-candidate")) {
+ const GValue *value;
+ FsStream *stream;
+ FsCandidate *local_candidate;
+@@ -924,7 +919,7 @@
+ session->id, name, candidate);
+ g_object_unref(candidate);
+ } else if (gst_structure_has_name(msg->structure,
+- "farsight-local-candidates-prepared")) {
++ "farstream-local-candidates-prepared")) {
+ const GValue *value;
+ FsStream *stream;
+ FsParticipant *participant;
+@@ -942,7 +937,7 @@
+ g_signal_emit_by_name(self, "candidates-prepared",
+ session->id, name);
+ } else if (gst_structure_has_name(msg->structure,
+- "farsight-new-active-candidate-pair")) {
++ "farstream-new-active-candidate-pair")) {
+ const GValue *value;
+ FsStream *stream;
+ FsCandidate *local_candidate;
+@@ -976,7 +971,7 @@
+ g_object_unref(lcandidate);
+ g_object_unref(rcandidate);
+ } else if (gst_structure_has_name(msg->structure,
+- "farsight-recv-codecs-changed")) {
++ "farstream-recv-codecs-changed")) {
+ const GValue *value;
+ GList *codecs;
+ FsCodec *codec;
+@@ -986,10 +981,10 @@
+ codec = codecs->data;
+
+ purple_debug_info("backend-fs2",
+- "farsight-recv-codecs-changed: %s\n",
++ "farstream-recv-codecs-changed: %s\n",
+ codec->encoding_name);
+ } else if (gst_structure_has_name(msg->structure,
+- "farsight-component-state-changed")) {
++ "farstream-component-state-changed")) {
+ const GValue *value;
+ FsStreamState fsstate;
+ guint component;
+@@ -1025,11 +1020,11 @@
+ }
+
+ purple_debug_info("backend-fs2",
+- "farsight-component-state-changed: "
++ "farstream-component-state-changed: "
+ "component: %u state: %s\n",
+ component, state);
+ } else if (gst_structure_has_name(msg->structure,
+- "farsight-send-codec-changed")) {
++ "farstream-send-codec-changed")) {
+ const GValue *value;
+ FsCodec *codec;
+ gchar *codec_str;
+@@ -1039,12 +1034,12 @@
+ codec_str = fs_codec_to_string(codec);
+
+ purple_debug_info("backend-fs2",
+- "farsight-send-codec-changed: codec: %s\n",
++ "farstream-send-codec-changed: codec: %s\n",
+ codec_str);
+
+ g_free(codec_str);
+ } else if (gst_structure_has_name(msg->structure,
+- "farsight-codecs-changed")) {
++ "farstream-codecs-changed")) {
+ const GValue *value;
+ FsSession *fssession;
+ GList *sessions;
+@@ -1220,8 +1215,12 @@
+ purple_media_is_initiator(media, sid, name))
+ return;
+
+- fs_stream_set_remote_candidates(stream->stream,
+- stream->remote_candidates, &err);
++ if (stream->supports_add)
++ fs_stream_add_remote_candidates(stream->stream,
++ stream->remote_candidates, &err);
++ else
++ fs_stream_force_remote_candidates(stream->stream,
++ stream->remote_candidates, &err);
+
+ if (err == NULL)
+ return;
+@@ -1301,6 +1300,7 @@
+ GstElement *pipeline;
+ GstBus *bus;
+ gchar *name;
++ GKeyFile *default_props;
+
+ priv->conference = FS_CONFERENCE(
+ gst_element_factory_make(priv->conference_type, NULL));
+@@ -1343,6 +1343,14 @@
+ return FALSE;
+ }
+
++ default_props = fs_utils_get_default_element_properties(GST_ELEMENT(priv->conference));
++ if (default_props != NULL) {
++ priv->notifier = fs_element_added_notifier_new();
++ fs_element_added_notifier_add(priv->notifier,
++ GST_BIN(priv->confbin));
++ fs_element_added_notifier_set_properties_from_keyfile(priv->notifier, default_props);
++ }
++
+ g_signal_connect(G_OBJECT(bus), "message",
+ G_CALLBACK(gst_bus_cb), self);
+ gst_object_unref(bus);
+@@ -1559,7 +1567,7 @@
+ * receiving the src-pad-added signal.
+ * Only works for non-multicast FsRtpSessions.
+ */
+- if (is_nice || !strcmp(transmitter, "rawudp"))
++ if (!!strcmp(transmitter, "multicast"))
+ g_object_set(G_OBJECT(session->session),
+ "no-rtcp-timeout", 0, NULL);
+
+@@ -1612,7 +1620,7 @@
+ GError *err = NULL;
+
+ participant = fs_conference_new_participant(
+- priv->conference, name, &err);
++ priv->conference, &err);
+
+ if (err) {
+ purple_debug_error("backend-fs2",
+@@ -1622,6 +1630,12 @@
+ return FALSE;
+ }
+
++ if (g_object_class_find_property(G_OBJECT_GET_CLASS(participant),
++ "cname")) {
++ g_object_set(participant, "cname", name, NULL);
++ }
++
++
+ if (!priv->participants) {
+ purple_debug_info("backend-fs2",
+ "Creating hash table for participants\n");
+@@ -1786,6 +1800,40 @@
+ }
+ }
+
++
++ session = get_session(self, sess_id);
++
++ if (session == NULL) {
++ purple_debug_error("backend-fs2",
++ "Couldn't find session to create stream.\n");
++ return FALSE;
++ }
++
++ participant = get_participant(self, who);
++
++ if (participant == NULL) {
++ purple_debug_error("backend-fs2", "Couldn't find "
++ "participant to create stream.\n");
++ return FALSE;
++ }
++
++ fsstream = fs_session_new_stream(session->session, participant,
++ initiator == TRUE ? type_direction :
++ (type_direction & FS_DIRECTION_RECV), &err);
++
++ if (fsstream == NULL) {
++ if (err) {
++ purple_debug_error("backend-fs2",
++ "Error creating stream: %s\n",
++ err && err->message ?
++ err->message : "NULL");
++ g_error_free(err);
++ } else
++ purple_debug_error("backend-fs2",
++ "Error creating stream\n");
++ return FALSE;
++ }
++
+ memcpy(_params, params, sizeof(GParameter) * num_params);
+
+ /* set the controlling mode parameter */
+@@ -1840,45 +1888,22 @@
+ _num_params++;
+ }
+
+- session = get_session(self, sess_id);
+
+- if (session == NULL) {
+- purple_debug_error("backend-fs2",
+- "Couldn't find session to create stream.\n");
+- return FALSE;
+- }
+-
+- participant = get_participant(self, who);
+-
+- if (participant == NULL) {
+- purple_debug_error("backend-fs2", "Couldn't find "
+- "participant to create stream.\n");
+- return FALSE;
++ if(!fs_stream_set_transmitter(fsstream, transmitter,
++ _params, _num_params, &err)) {
++ purple_debug_error("backend-fs2", "Could not set transmitter %s: %s.\n", transmitter, err->message);
++ g_clear_error(&err);
++ g_free(_params);
++ return FALSE;
+ }
+-
+- fsstream = fs_session_new_stream(session->session, participant,
+- initiator == TRUE ? type_direction :
+- (type_direction & FS_DIRECTION_RECV), transmitter,
+- _num_params, _params, &err);
+ g_free(_params);
+
+- if (fsstream == NULL) {
+- if (err) {
+- purple_debug_error("backend-fs2",
+- "Error creating stream: %s\n",
+- err && err->message ?
+- err->message : "NULL");
+- g_error_free(err);
+- } else
+- purple_debug_error("backend-fs2",
+- "Error creating stream\n");
+- return FALSE;
+- }
+
+ stream = g_new0(PurpleMediaBackendFs2Stream, 1);
+ stream->participant = g_strdup(who);
+ stream->session = session;
+ stream->stream = fsstream;
++ stream->supports_add = !strcmp(transmitter, "nice");
+
+ priv->streams = g_list_append(priv->streams, stream);
+
+@@ -1991,7 +2016,11 @@
+ if (purple_media_is_initiator(priv->media, sess_id, participant) ||
+ purple_media_accepted(
+ priv->media, sess_id, participant)) {
+- fs_stream_set_remote_candidates(stream->stream,
++ if (stream->supports_add)
++ fs_stream_add_remote_candidates(stream->stream,
++ stream->remote_candidates, &err);
++ else
++ fs_stream_force_remote_candidates(stream->stream,
+ stream->remote_candidates, &err);
+
+ if (err) {
+@@ -2016,6 +2045,7 @@
+ if (sess_id != NULL) {
+ PurpleMediaBackendFs2Session *session = get_session(
+ PURPLE_MEDIA_BACKEND_FS2(self), sess_id);
++ GList *codecs = NULL;
+
+ if (session == NULL)
+ return FALSE;
+@@ -2023,21 +2053,31 @@
+ if (session->type & (PURPLE_MEDIA_SEND_AUDIO |
+ PURPLE_MEDIA_SEND_VIDEO))
+ g_object_get(session->session,
+- "codecs-ready", &ret, NULL);
++ "codecs", &codecs, NULL);
+ else
+ ret = TRUE;
++ if (codecs) {
++ fs_codec_list_destroy (codecs);
++ ret = TRUE;
++ }
+ } else {
+ GList *values = g_hash_table_get_values(priv->sessions);
+
+ for (; values; values = g_list_delete_link(values, values)) {
+ PurpleMediaBackendFs2Session *session = values->data;
++ GList *codecs = NULL;
++
+ if (session->type & (PURPLE_MEDIA_SEND_AUDIO |
+ PURPLE_MEDIA_SEND_VIDEO))
+ g_object_get(session->session,
+- "codecs-ready", &ret, NULL);
++ "codecs", &codecs, NULL);
+ else
+ ret = TRUE;
+
++ if (codecs) {
++ fs_codec_list_destroy (codecs);
++ ret = TRUE;
++ }
+ if (ret == FALSE)
+ break;
+ }
+Only in pidgin-2.10.3/libpurple/media: backend-fs2.c~
+diff -aur pidgin-2.10.3-orig//libpurple/media.c pidgin-2.10.3/libpurple/media.c
+--- pidgin-2.10.3-orig//libpurple/media.c 2012-03-25 23:49:16.000000000 -0400
++++ pidgin-2.10.3/libpurple/media.c 2012-03-31 16:23:09.789485312 -0400
+@@ -1067,7 +1067,6 @@
+ {
+ #ifdef USE_VV
+ PurpleMediaSession *session;
+- PurpleMediaStream *stream = NULL;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE);
+
+@@ -1103,7 +1102,7 @@
+ }
+
+ if (purple_media_get_stream(media, sess_id, who) == NULL) {
+- stream = purple_media_insert_stream(session, who, initiator);
++ purple_media_insert_stream(session, who, initiator);
+
+ g_signal_emit(media, purple_media_signals[STATE_CHANGED],
+ 0, PURPLE_MEDIA_STATE_NEW,
+diff -aur pidgin-2.10.3-orig//libpurple/mediamanager.c pidgin-2.10.3/libpurple/mediamanager.c
+--- pidgin-2.10.3-orig//libpurple/mediamanager.c 2012-03-25 23:49:16.000000000 -0400
++++ pidgin-2.10.3/libpurple/mediamanager.c 2012-03-31 16:23:09.789485312 -0400
+@@ -39,7 +39,7 @@
+ #ifdef USE_VV
+ #include <media/backend-fs2.h>
+
+-#include <gst/farsight/fs-element-added-notifier.h>
++#include <farstream/fs-element-added-notifier.h>
+ #include <gst/interfaces/xoverlay.h>
+
+ /** @copydoc _PurpleMediaManagerPrivate */
diff --git a/net-im/pidgin/pidgin-2.10.3-r100.ebuild b/net-im/pidgin/pidgin-2.10.3-r100.ebuild
new file mode 100644
index 000000000000..be34cbdb6002
--- /dev/null
+++ b/net-im/pidgin/pidgin-2.10.3-r100.ebuild
@@ -0,0 +1,230 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-im/pidgin/pidgin-2.10.3-r100.ebuild,v 1.1 2012/03/31 21:01:56 tester Exp $
+
+EAPI=4
+
+GENTOO_DEPEND_ON_PERL=no
+inherit flag-o-matic eutils toolchain-funcs multilib perl-app gnome2 python autotools
+
+DESCRIPTION="GTK Instant Messenger client"
+HOMEPAGE="http://pidgin.im/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="dbus debug doc eds gadu gnutls +gstreamer +gtk idn meanwhile"
+IUSE+=" networkmanager nls perl silc tcl tk spell sasl ncurses"
+IUSE+=" groupwise prediction python +xscreensaver zephyr zeroconf" # mono"
+
+# dbus requires python to generate C code for dbus bindings (thus DEPEND only).
+# finch uses libgnt that links with libpython - {R,}DEPEND. But still there is
+# no way to build dbus and avoid libgnt linkage with python. If you want this
+# send patch upstream.
+# purple-url-handler and purple-remote require dbus-python thus in reality we
+# rdepend on python if dbus enabled. But it is possible to separate this dep.
+RDEPEND="
+ >=dev-libs/glib-2.16
+ >=dev-libs/libxml2-2.6.18
+ ncurses? ( sys-libs/ncurses[unicode]
+ dbus? ( <dev-lang/python-3 )
+ python? ( <dev-lang/python-3 ) )
+ gtk? (
+ >=x11-libs/gtk+-2.10:2
+ x11-libs/libSM
+ xscreensaver? ( x11-libs/libXScrnSaver )
+ spell? ( >=app-text/gtkspell-2.0.2:2 )
+ eds? ( gnome-extra/evolution-data-server )
+ prediction? ( >=dev-db/sqlite-3.3:3 ) )
+ gstreamer? ( =media-libs/gstreamer-0.10*
+ =media-libs/gst-plugins-good-0.10*
+ net-libs/farstream
+ media-plugins/gst-plugins-meta
+ media-plugins/gst-plugins-gconf )
+ zeroconf? ( net-dns/avahi[dbus] )
+ dbus? ( >=dev-libs/dbus-glib-0.71
+ >=sys-apps/dbus-0.90
+ dev-python/dbus-python )
+ perl? ( >=dev-lang/perl-5.8.2-r1[-build] )
+ gadu? ( || ( >=net-libs/libgadu-1.11.0[ssl,gnutls]
+ >=net-libs/libgadu-1.11.0[-ssl] ) )
+ gnutls? ( net-libs/gnutls )
+ !gnutls? ( >=dev-libs/nss-3.11 )
+ meanwhile? ( net-libs/meanwhile )
+ silc? ( >=net-im/silc-toolkit-1.0.1 )
+ tcl? ( dev-lang/tcl )
+ tk? ( dev-lang/tk )
+ sasl? ( dev-libs/cyrus-sasl:2 )
+ networkmanager? ( net-misc/networkmanager )
+ idn? ( net-dns/libidn )
+ !<x11-plugins/pidgin-facebookchat-1.69-r1"
+ # Mono support crashes pidgin
+ #mono? ( dev-lang/mono )"
+
+# We want nls in case gtk is enabled, bug #
+NLS_DEPEND=">=dev-util/intltool-0.41.1 sys-devel/gettext"
+
+DEPEND="$RDEPEND
+ dev-lang/perl
+ dev-perl/XML-Parser
+ dev-util/pkgconfig
+ gtk? ( x11-proto/scrnsaverproto
+ ${NLS_DEPEND} )
+ dbus? ( <dev-lang/python-3 )
+ doc? ( app-doc/doxygen )
+ !gtk? ( nls? ( ${NLS_DEPEND} ) )"
+
+DOCS="AUTHORS HACKING NEWS README ChangeLog"
+
+# Enable Default protocols
+DYNAMIC_PRPLS="irc,jabber,oscar,yahoo,simple,msn,myspace"
+
+# List of plugins
+# app-accessibility/pidgin-festival
+# net-im/librvp
+# x11-plugins/guifications
+# x11-plugins/msn-pecan
+# x11-plugins/pidgin-encryption
+# x11-plugins/pidgin-extprefs
+# x11-plugins/pidgin-hotkeys
+# x11-plugins/pidgin-latex
+# x11-plugins/pidgintex
+# x11-plugins/pidgin-libnotify
+# x11-plugins/pidgin-mbpurple
+# x11-plugins/pidgin-bot-sentry
+# x11-plugins/pidgin-otr
+# x11-plugins/pidgin-rhythmbox
+# x11-plugins/purple-plugin_pack
+# x11-themes/pidgin-smileys
+# x11-plugins/pidgin-knotify
+# Plugins in Sunrise:
+# x11-plugins/pidgin-audacious-remote
+# x11-plugins/pidgin-autoanswer
+# x11-plugins/pidgin-birthday-reminder
+# x11-plugins/pidgin-blinklight
+# x11-plugins/pidgin-convreverse
+# x11-plugins/pidgin-embeddedvideo
+# x11-plugins/pidgin-extended-blist-sort
+# x11-plugins/pidgin-gfire
+# x11-plugins/pidgin-lastfm
+# x11-plugins/pidgin-sendscreenshot
+# x11-plugins/pidgimpd
+
+pkg_setup() {
+ if ! use gtk && ! use ncurses ; then
+ elog "You did not pick the ncurses or gtk use flags, only libpurple"
+ elog "will be built."
+ fi
+ if use dbus || { use ncurses && use python; }; then
+ python_set_active_version 2
+ python_pkg_setup
+ fi
+
+ # dbus is enabled, no way to disable linkage with python => python is enabled
+ #REQUIRED_USE="gtk? ( nls ) dbus? ( python )"
+ if use gtk && ! use nls; then
+ ewarn "gtk build => nls is enabled!"
+ fi
+ if use dbus && ! use python; then
+ elog "dbus is enabled, no way to disable linkage with python => python is enabled"
+ fi
+}
+
+src_prepare() {
+ epatch "${FILESDIR}/${PN}-2.10.0-gold.patch"
+ epatch "${FILESDIR}/port-to-farstream-v5.patch"
+ eautoreconf
+}
+
+src_configure() {
+ # Stabilize things, for your own good
+ strip-flags
+ replace-flags -O? -O2
+
+ local myconf
+
+ if use gadu; then
+ DYNAMIC_PRPLS="${DYNAMIC_PRPLS},gg"
+ myconf="${myconf} --with-gadu-includes=."
+ myconf="${myconf} --with-gadu-libs=."
+ fi
+
+ use silc && DYNAMIC_PRPLS+=",silc"
+ use meanwhile && DYNAMIC_PRPLS+=",sametime"
+ use zeroconf && DYNAMIC_PRPLS+=",bonjour"
+ use groupwise && DYNAMIC_PRPLS+=",novell"
+ use zephyr && DYNAMIC_PRPLS+=",zephyr"
+
+ if use gnutls; then
+ einfo "Disabling NSS, using GnuTLS"
+ myconf+=" --enable-nss=no --enable-gnutls=yes"
+ myconf+=" --with-gnutls-includes=/usr/include/gnutls"
+ myconf+=" --with-gnutls-libs=/usr/$(get_libdir)"
+ else
+ einfo "Disabling GnuTLS, using NSS"
+ myconf+=" --enable-gnutls=no --enable-nss=yes"
+ fi
+
+ if use dbus || { use ncurses && use python; }; then
+ myconf+=" --with-python=$(PYTHON)"
+ else
+ myconf+=" --without-python"
+ fi
+
+ econf \
+ --disable-silent-rules \
+ $(use_enable ncurses consoleui) \
+ $(use_enable gtk gtkui) \
+ $(use_enable gtk sm) \
+ $(use gtk || use_enable nls) \
+ $(use gtk && echo "--enable-nls") \
+ $(use gtk && use_enable xscreensaver screensaver) \
+ $(use gtk && use_enable prediction cap) \
+ $(use gtk && use_enable eds gevolution) \
+ $(use gtk && use_enable spell gtkspell) \
+ $(use_enable perl) \
+ $(use_enable tk) \
+ $(use_enable tcl) \
+ $(use_enable debug) \
+ $(use_enable dbus) \
+ $(use_enable meanwhile) \
+ $(use_enable gstreamer) \
+ $(use_enable gstreamer farstream) \
+ $(use_enable gstreamer vv) \
+ $(use_enable sasl cyrus-sasl ) \
+ $(use_enable doc doxygen) \
+ $(use_enable networkmanager nm) \
+ $(use_enable zeroconf avahi) \
+ $(use_enable idn) \
+ --with-system-ssl-certs="/etc/ssl/certs/" \
+ --with-dynamic-prpls="${DYNAMIC_PRPLS}" \
+ --disable-mono \
+ --x-includes=/usr/include/X11 \
+ ${myconf}
+ #$(use_enable mono) \
+}
+
+src_install() {
+ gnome2_src_install
+ if use gtk; then
+ # Fix tray pathes for kde-3.5, e16 (x11-wm/enlightenment) and other
+ # implementations that are not complient with new hicolor theme yet, #323355
+ local pixmapdir
+ for d in 16 22 32 48; do
+ pixmapdir=${D}/usr/share/pixmaps/pidgin/tray/hicolor/${d}x${d}/actions
+ mkdir "${pixmapdir}" || die
+ pushd "${pixmapdir}" >/dev/null || die
+ for f in ../status/*; do
+ ln -s ${f} || die
+ done
+ popd >/dev/null
+ done
+ fi
+ use perl && fixlocalpod
+
+ dodoc finch/plugins/pietray.py
+ docompress -x /usr/share/doc/${PF}/pietray.py
+
+ find "${ED}" -type f -name '*.la' -exec rm -rf '{}' '+' || die "la removal failed"
+}