diff options
Diffstat (limited to 'nonprism')
-rw-r--r-- | nonprism/pidgin/PKGBUILD | 23 | ||||
-rw-r--r-- | nonprism/pidgin/nonprism.patch | 12 | ||||
-rw-r--r-- | nonprism/pidgin/pidgin-2.10.11-gstreamer1.patch | 1144 | ||||
-rw-r--r-- | nonprism/pidgin/pidgin-py3-fixes.patch | 69 | ||||
-rw-r--r-- | nonprism/pidgin/purple-remote-python3.patch | 34 |
5 files changed, 51 insertions, 1231 deletions
diff --git a/nonprism/pidgin/PKGBUILD b/nonprism/pidgin/PKGBUILD index 6af0ffffe..2859be57c 100644 --- a/nonprism/pidgin/PKGBUILD +++ b/nonprism/pidgin/PKGBUILD @@ -8,26 +8,27 @@ # Contributor: Márcio Silva <coadde@hyperbola.info> pkgname=('pidgin' 'libpurple' 'finch') -pkgver=2.12.0 -pkgrel=1.nonprism1 +pkgver=2.13.0 +pkgrel=2.nonprism1 arch=('i686' 'x86_64' 'armv7h') url="http://pidgin.im/" license=('GPL') makedepends=('startup-notification' 'gtkspell' 'libxss' 'nss' 'libsasl' 'libsm' - 'libidn' 'python' 'hicolor-icon-theme' 'farstream' - 'avahi' 'tk' 'ca-certificates' 'intltool' 'networkmanager') + 'libidn' 'python' 'hicolor-icon-theme' 'farstream' 'tk' + 'libnsl' 'avahi' 'ca-certificates' 'intltool' 'networkmanager') source=(https://bitbucket.org/pidgin/main/downloads/$pkgname-$pkgver.tar.bz2{,.asc} - pidgin-py3-fixes.patch + purple-remote-python3.patch nonprism.patch) -sha256sums=('8c3d3536d6d3c971bd433ff9946678af70a0f6aa4e6969cc2a83bb357015b7f8' +sha256sums=('2747150c6f711146bddd333c496870bfd55058bab22ffb7e4eb784018ec46d8f' 'SKIP' - '2ae003adc19c2012186a2efc68163843d2037bdaf7540347185bb872424e18da' - '8156cd8248a1b318d5868c46f49c2d82e916d57ca95b0020eaf4c8a56f4b7c3e') -validpgpkeys=('364E2EB38EA6A8D61FB963AD75FE259AA8AC8032') + '4eb6be9310e4d5d1b906b1d579c395000ee0af6d6f5056307233512151d1f4b1' + '7024ead994efd4fe0fb404db92ff4358ba2dfa83d31a1871818faf2894744f97') +validpgpkeys=('364E2EB38EA6A8D61FB963AD75FE259AA8AC8032') # Gary Kramlich (grim) <grim@reaperworld.com> prepare() { cd $pkgbase-$pkgver - patch -Np1 -i ../pidgin-py3-fixes.patch + # https://developer.pidgin.im/ticket/17065 + patch -Np1 -i ../purple-remote-python3.patch msg "Remove Google Talk and Facebook protocols" patch -Np1 -i "$srcdir/nonprism.patch" @@ -91,7 +92,7 @@ package_pidgin(){ package_libpurple(){ pkgdesc="IM library extracted from Pidgin, without support for unsafe and dangerous for privacy protocols" - depends=('farstream' 'libsasl' 'libidn' 'dbus-glib' 'nss') + depends=('farstream' 'libsasl' 'libidn' 'libnsl' 'dbus-glib' 'nss') optdepends=('avahi: Bonjour protocol support' 'ca-certificates: SSL CA certificates' 'python-dbus: for purple-remote and purple-url-handler' diff --git a/nonprism/pidgin/nonprism.patch b/nonprism/pidgin/nonprism.patch index fd8bbdd8a..f42f83227 100644 --- a/nonprism/pidgin/nonprism.patch +++ b/nonprism/pidgin/nonprism.patch @@ -1,8 +1,6 @@ -diff --git a/pidgin/gtkutils.c b/pidgin/gtkutils.c -index e5a3565b7..f5ca3d0eb 100644 ---- a/pidgin/gtkutils.c -+++ b/pidgin/gtkutils.c -@@ -677,7 +677,6 @@ create_protocols_menu(const char *default_proto_id) +--- pidgin-2.13.0.orig/pidgin/gtkutils.c 2018-03-06 01:00:49.000000000 -0500 ++++ pidgin-2.13.0/pidgin/gtkutils.c 2018-07-03 19:15:12.211571089 -0500 +@@ -677,7 +677,6 @@ GdkPixbuf *pixbuf = NULL; GtkSizeGroup *sg; GList *p; @@ -10,7 +8,7 @@ index e5a3565b7..f5ca3d0eb 100644 int i; aop_menu = g_malloc0(sizeof(AopMenu)); -@@ -686,39 +685,12 @@ create_protocols_menu(const char *default_proto_id) +@@ -686,39 +685,12 @@ gtk_widget_show(aop_menu->menu); sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); @@ -40,7 +38,7 @@ index e5a3565b7..f5ca3d0eb 100644 - g_object_unref(pixbuf); - - /* libpurple3 compatibility */ -- if (g_strcmp0(default_proto_id, "prpl-gtalk") == 0) +- if (purple_strequal(default_proto_id, "prpl-gtalk")) - aop_menu->default_item = i; - - gtalk_name = NULL; diff --git a/nonprism/pidgin/pidgin-2.10.11-gstreamer1.patch b/nonprism/pidgin/pidgin-2.10.11-gstreamer1.patch deleted file mode 100644 index 83b00cd6b..000000000 --- a/nonprism/pidgin/pidgin-2.10.11-gstreamer1.patch +++ /dev/null @@ -1,1144 +0,0 @@ -Submitted By: Bruce Dubbs <bdubbs@liinuxfromscratch.org> -Date: 2015-07-07 -Initial Package Version: 2.10.11 -Upstream Status: Unknown -Origin: http://pkgs.fedoraproject.org/cgit/pidgin.git/ -Description: Allow pidgin to be built with gstreamer-1 -Notes: Re-diffed from upstream's original patch - -diff -Naur pidgin-2.10.11.orig/configure.ac pidgin-2.10.11/configure.ac ---- pidgin-2.10.11.orig/configure.ac 2014-11-23 10:41:25.000000000 -0600 -+++ pidgin-2.10.11/configure.ac 2015-07-07 15:36:28.689798169 -0500 -@@ -741,42 +741,115 @@ - dnl ####################################################################### - dnl # Check for GStreamer - dnl ####################################################################### --dnl --dnl TODO: Depend on gstreamer >= 0.10.10, and remove the conditional use of --dnl gst_registry_fork_set_enabled. - AC_ARG_ENABLE(gstreamer, -- [AC_HELP_STRING([--disable-gstreamer], [compile without GStreamer audio support])], -+ [AS_HELP_STRING([--disable-gstreamer], [compile without GStreamer audio support])], - enable_gst="$enableval", enable_gst="yes") -+AC_ARG_WITH(gstreamer, [AS_HELP_STRING([--with-gstreamer=<version>], -+ [compile with GStreamer 0.10 or 1.0 interface (default: auto)])], -+ with_gstreamer="$withval", with_gstreamer="auto") - if test "x$enable_gst" != "xno"; then -- PKG_CHECK_MODULES(GSTREAMER, [gstreamer-0.10], [ -- AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer for playing sounds]) -- AC_SUBST(GSTREAMER_CFLAGS) -- AC_SUBST(GSTREAMER_LIBS) -- AC_CHECK_LIB(gstreamer-0.10, gst_registry_fork_set_enabled, -- [ AC_DEFINE(GST_CAN_DISABLE_FORKING, [], -- [Define if gst_registry_fork_set_enabled exists])], -- [], [$GSTREAMER_LIBS]) -- ], [ -- AC_MSG_RESULT(no) -- enable_gst="no" -- if test "x$force_deps" = "xyes" ; then -- AC_MSG_ERROR([ -+ if test "x$with_gstreamer" == "xauto"; then -+ PKG_CHECK_MODULES(GSTREAMER, [gstreamer-1.0], [ -+ AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer for playing sounds]) -+ with_gstreamer="1.0" -+ AC_SUBST(GSTREAMER_CFLAGS) -+ AC_SUBST(GSTREAMER_LIBS) -+ dnl Check whether forking stuff is required for this version. -+ ], [ -+ PKG_CHECK_MODULES(GSTREAMER, [gstreamer-0.10], [ -+ AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer for playing sounds]) -+ with_gstreamer="0.10" -+ AC_SUBST(GSTREAMER_CFLAGS) -+ AC_SUBST(GSTREAMER_LIBS) -+ ], [ -+ AC_MSG_RESULT(no) -+ enable_gst="no" -+ if test "x$force_deps" = "xyes" ; then -+ AC_MSG_ERROR([ - GStreamer development headers not found. - Use --disable-gstreamer if you do not need GStreamer (sound) support. - ]) -- fi]) -+ fi -+ ]) -+ ]) -+ elif test "x$with_gstreamer" == "x1.0"; then -+ PKG_CHECK_MODULES(GSTREAMER, [gstreamer-1.0], [ -+ AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer 1.0 for playing sounds]) -+ AC_SUBST(GSTREAMER_CFLAGS) -+ AC_SUBST(GSTREAMER_LIBS) -+ ], [ -+ AC_MSG_RESULT(no) -+ enable_gst="no" -+ if test "x$force_deps" = "xyes" ; then -+ AC_MSG_ERROR([ -+GStreamer development headers not found. -+Use --disable-gstreamer if you do not need GStreamer (sound) support. -+]) -+ fi -+ ]) -+ elif test "x$with_gstreamer" == "x0.10"; then -+ PKG_CHECK_MODULES(GSTREAMER, [gstreamer-0.10], [ -+ AC_DEFINE(USE_GSTREAMER, 1, [Use GStreamer 0.10 for playing sounds]) -+ AC_SUBST(GSTREAMER_CFLAGS) -+ AC_SUBST(GSTREAMER_LIBS) -+ ], [ -+ AC_MSG_RESULT(no) -+ enable_gst="no" -+ if test "x$force_deps" = "xyes" ; then -+ AC_MSG_ERROR([ -+GStreamer development headers not found. -+Use --disable-gstreamer if you do not need GStreamer (sound) support. -+]) -+ fi -+ ]) -+ else -+ AC_MSG_ERROR([--with-gstreamer must specify one of 0.10, 1.0 or auto.]) -+ fi -+fi -+ -+if test "x$with_gtk" == "x3" -a "x$with_gstreamer" == "x0.10"; then -+ AC_MSG_ERROR([WebKitGTK+ 3.0 cannot be mixed with GStreamer 0.10. -+Please switch to WebKitGTK+ 2.0 or GStreamer 1.0.]) -+elif test "x$with_gtk" == "x2" -a "x$with_gstreamer" == "x1.0"; then -+ AC_MSG_ERROR([WebKitGTK+ 2.0 cannot be mixed with GStreamer 1.0. -+Please switch to WebKitGTK+ 3.0 or GStreamer 0.10.]) -+fi -+if test "x$with_gstreamer" == "x0.10" -o "x$with_gstreamer" == "x1.0"; then -+ AC_SUBST(GSTREAMER_VER, [$with_gstreamer]) -+else -+ AC_SUBST(GSTREAMER_VER, "") -+fi -+ -+dnl ####################################################################### -+dnl # Check for GStreamer Video -+dnl ####################################################################### -+if test "x$enable_gst" != "xno" -a "x$with_gstreamer" == "x1.0"; then -+ AC_ARG_ENABLE(gstreamer-video, -+ [AS_HELP_STRING([--disable-gstreamer-video], [compile without GStreamer 1.0 Video Overlay support])], -+ enable_gstvideo="$enableval", enable_gstvideo="yes") -+ if test "x$enable_gstvideo" != "xno"; then -+ PKG_CHECK_MODULES(GSTVIDEO, [gstreamer-video-1.0], [ -+ AC_DEFINE(USE_GSTVIDEO, 1, [Use GStreamer Video Overlay support]) -+ AC_SUBST(GSTVIDEO_CFLAGS) -+ AC_SUBST(GSTVIDEO_LIBS) -+ ], [ -+ enable_gstvideo="no" -+ ]) -+ fi -+else -+ enable_gstvideo="no" - fi - - dnl ####################################################################### - dnl # Check for GStreamer Interfaces - dnl ####################################################################### --if test "x$enable_gst" != "xno"; then -+if test "x$enable_gst" != "xno" -a "x$with_gstreamer" == "x0.10"; then - AC_ARG_ENABLE(gstreamer-interfaces, -- [AC_HELP_STRING([--disable-gstreamer-interfaces], [compile without GStreamer interface support])], -+ [AS_HELP_STRING([--disable-gstreamer-interfaces], [compile without GStreamer 0.10 interface support])], - enable_gstinterfaces="$enableval", enable_gstinterfaces="yes") - if test "x$enable_gstinterfaces" != "xno"; then - PKG_CHECK_MODULES(GSTINTERFACES, [gstreamer-interfaces-0.10], [ -- AC_DEFINE(USE_GSTINTERFACES, 1, [Use GStreamer interfaces for X overlay support]) -+ AC_DEFINE(USE_GSTINTERFACES, 1, [Use GStreamer 0.10 interfaces for X overlay support]) - AC_SUBST(GSTINTERFACES_CFLAGS) - AC_SUBST(GSTINTERFACES_LIBS) - ], [ -@@ -791,32 +864,43 @@ - dnl # Check for Farstream - dnl ####################################################################### - AC_ARG_ENABLE(farstream, -- [AC_HELP_STRING([--disable-farstream], [compile without farstream support])], -+ [AS_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_SUBST(FARSTREAM_CFLAGS) -- AC_SUBST(FARSTREAM_LIBS) -- ], [ -- # Try farsight. -- PKG_CHECK_MODULES(FARSTREAM, [farsight2-0.10 >= 0.0.9], [ -- AC_DEFINE(HAVE_FARSIGHT, 1, [Use Farsight instead of Farstream]) -+ if test "x$with_gstreamer" == "x1.0"; then -+ PKG_CHECK_MODULES(FARSTREAM, [farstream-0.2], [ - AC_SUBST(FARSTREAM_CFLAGS) - AC_SUBST(FARSTREAM_LIBS) - ], [ - enable_farstream="no" - ]) -- ]) -- fi -+ else -+ PKG_CHECK_MODULES(FARSTREAM, [farstream-0.1], [ -+ AC_SUBST(FARSTREAM_CFLAGS) -+ AC_SUBST(FARSTREAM_LIBS) -+ ], [ -+ # Try farsight. -+ PKG_CHECK_MODULES(FARSTREAM, [farsight2-0.10 >= 0.0.9], [ -+ AC_DEFINE(HAVE_FARSIGHT, 1, [Use Farsight instead of Farstream]) -+ AC_SUBST(FARSTREAM_CFLAGS) -+ AC_SUBST(FARSTREAM_LIBS) -+ ], [ -+ enable_farstream="no" -+ ]) -+ ]) -+ fi -+fi - - dnl ####################################################################### - dnl # Check for Voice and Video support - dnl ####################################################################### - AC_ARG_ENABLE(vv, -- [AC_HELP_STRING([--disable-vv], [compile without voice and video support])], -+ [AS_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_farstream" != "xno"; then -+ if test "x$enable_gst" != "xno" -a "x$with_gstreamer" == "x1.0" -a "x$enable_gstvideo" != "xno" -a "x$enable_farstream" != "xno"; then -+ AC_DEFINE(USE_VV, 1, [Use voice and video]) -+ elif test "x$enable_gst" != "xno" -a "x$with_gstreamer" == "x0.10" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farstream" != "xno"; then - AC_DEFINE(USE_VV, 1, [Use voice and video]) - else - enable_vv="no" -@@ -829,7 +913,7 @@ - fi - fi - fi --AM_CONDITIONAL(USE_VV, test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farstream" != "xno") -+AM_CONDITIONAL(USE_VV, test "x$enable_vv" != "xno") - - dnl ####################################################################### - dnl # Check for Internationalized Domain Name support -@@ -2605,6 +2689,7 @@ - echo Protocols to link statically.. : $STATIC_PRPLS - echo - echo Build with GStreamer support.. : $enable_gst -+echo Build for GStreamer version... : $with_gstreamer - echo Build with D-Bus support...... : $enable_dbus - echo Build with voice and video.... : $enable_vv - if test "x$enable_dbus" = "xyes" ; then -diff -Naur pidgin-2.10.11.orig/finch/Makefile.am pidgin-2.10.11/finch/Makefile.am ---- pidgin-2.10.11.orig/finch/Makefile.am 2014-11-23 10:41:25.000000000 -0600 -+++ pidgin-2.10.11/finch/Makefile.am 2015-07-07 15:36:28.689798169 -0500 -@@ -73,6 +73,7 @@ - $(LIBXML_LIBS) \ - $(GNT_LIBS) \ - $(GSTREAMER_LIBS) \ -+ $(GSTVIDEO_LIBS) \ - ./libgnt/libgnt.la \ - $(top_builddir)/libpurple/libpurple.la - -diff -Naur pidgin-2.10.11.orig/libpurple/Makefile.am pidgin-2.10.11/libpurple/Makefile.am ---- pidgin-2.10.11.orig/libpurple/Makefile.am 2014-11-23 10:41:25.000000000 -0600 -+++ pidgin-2.10.11/libpurple/Makefile.am 2015-07-07 15:36:28.690798136 -0500 -@@ -308,6 +308,7 @@ - $(INTLLIBS) \ - $(FARSTREAM_LIBS) \ - $(GSTREAMER_LIBS) \ -+ $(GSTVIDEO_LIBS) \ - $(GSTINTERFACES_LIBS) \ - $(IDN_LIBS) \ - ciphers/libpurple-ciphers.la \ -@@ -324,6 +325,7 @@ - $(LIBXML_CFLAGS) \ - $(FARSTREAM_CFLAGS) \ - $(GSTREAMER_CFLAGS) \ -+ $(GSTVIDEO_CFLAGS) \ - $(GSTINTERFACES_CFLAGS) \ - $(IDN_CFLAGS) \ - $(NETWORKMANAGER_CFLAGS) -diff -Naur pidgin-2.10.11.orig/libpurple/data/purple.pc.in pidgin-2.10.11/libpurple/data/purple.pc.in ---- pidgin-2.10.11.orig/libpurple/data/purple.pc.in 2014-11-23 10:41:25.000000000 -0600 -+++ pidgin-2.10.11/libpurple/data/purple.pc.in 2015-07-07 15:36:28.690798136 -0500 -@@ -5,6 +5,7 @@ - datarootdir=@datarootdir@ - datadir=@datadir@ - sysconfdir=@sysconfdir@ -+gstreamer=@GSTREAMER_VER@ - - plugindir=${libdir}/purple-@PURPLE_MAJOR_VERSION@ - -diff -Naur pidgin-2.10.11.orig/libpurple/example/Makefile.am pidgin-2.10.11/libpurple/example/Makefile.am ---- pidgin-2.10.11.orig/libpurple/example/Makefile.am 2014-11-23 10:41:25.000000000 -0600 -+++ pidgin-2.10.11/libpurple/example/Makefile.am 2015-07-07 15:36:28.690798136 -0500 -@@ -8,6 +8,7 @@ - $(INTLLIBS) \ - $(GLIB_LIBS) \ - $(LIBXML_LIBS) \ -+ $(GSTVIDEO_LIBS) \ - $(top_builddir)/libpurple/libpurple.la - - AM_CPPFLAGS = \ -diff -Naur pidgin-2.10.11.orig/libpurple/media/backend-fs2.c pidgin-2.10.11/libpurple/media/backend-fs2.c ---- pidgin-2.10.11.orig/libpurple/media/backend-fs2.c 2014-11-23 10:41:25.000000000 -0600 -+++ pidgin-2.10.11/libpurple/media/backend-fs2.c 2015-07-07 15:39:19.813094671 -0500 -@@ -41,6 +41,7 @@ - #include <farstream/fs-conference.h> - #include <farstream/fs-element-added-notifier.h> - #include <farstream/fs-utils.h> -+#include <gst/gststructure.h> - #endif - - /** @copydoc _PurpleMediaBackendFs2Class */ -@@ -239,9 +240,17 @@ - g_return_val_if_reached(PURPLE_MEDIA_NETWORK_PROTOCOL_TCP); - } - -+#if GST_CHECK_VERSION(1,0,0) -+static GstPadProbeReturn -+event_probe_cb(GstPad *srcpad, GstPadProbeInfo *info, gpointer unused) -+#else - static gboolean - event_probe_cb(GstPad *srcpad, GstEvent *event, gboolean release_pad) -+#endif - { -+#if GST_CHECK_VERSION(1,0,0) -+ GstEvent *event = GST_PAD_PROBE_INFO_EVENT(info); -+#endif - if (GST_EVENT_TYPE(event) == GST_EVENT_CUSTOM_DOWNSTREAM - && gst_event_has_name(event, "purple-unlink-tee")) { - -@@ -249,22 +258,40 @@ - - gst_pad_unlink(srcpad, gst_pad_get_peer(srcpad)); - -+#if GST_CHECK_VERSION(1,0,0) -+ gst_pad_remove_probe(srcpad, -+ g_value_get_ulong(gst_structure_get_value(s, "handler-id"))); -+#else - gst_pad_remove_event_probe(srcpad, - g_value_get_uint(gst_structure_get_value(s, "handler-id"))); -+#endif - - if (g_value_get_boolean(gst_structure_get_value(s, "release-pad"))) - gst_element_release_request_pad(GST_ELEMENT_PARENT(srcpad), srcpad); - -+#if GST_CHECK_VERSION(1,0,0) -+ return GST_PAD_PROBE_DROP; -+#else - return FALSE; -+#endif - } - -+#if GST_CHECK_VERSION(1,0,0) -+ return GST_PAD_PROBE_OK; -+#else - return TRUE; -+#endif - } - - static void - unlink_teepad_dynamic(GstPad *srcpad, gboolean release_pad) - { -+#if GST_CHECK_VERSION(1,0,0) -+ gulong id = gst_pad_add_probe(srcpad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM, -+ event_probe_cb, NULL, NULL); -+#else - guint id = gst_pad_add_event_probe(srcpad, G_CALLBACK(event_probe_cb), NULL); -+#endif - - if (GST_IS_GHOST_PAD(srcpad)) - srcpad = gst_ghost_pad_get_target(GST_GHOST_PAD(srcpad)); -@@ -273,7 +300,11 @@ - gst_event_new_custom(GST_EVENT_CUSTOM_DOWNSTREAM, - gst_structure_new("purple-unlink-tee", - "release-pad", G_TYPE_BOOLEAN, release_pad, -+#if GST_CHECK_VERSION(1,0,0) -+ "handler-id", G_TYPE_ULONG, id, -+#else - "handler-id", G_TYPE_UINT, id, -+#endif - NULL))); - } - -@@ -855,15 +886,31 @@ - gdouble value_db; - gdouble percent; - -- list = gst_structure_get_value( -- gst_message_get_structure(msg), value_name); -+ list = gst_structure_get_value(gst_message_get_structure(msg), value_name); -+#if GST_CHECK_VERSION(1,0,0) -+G_GNUC_BEGIN_IGNORE_DEPRECATIONS -+ value = g_value_array_get_nth(g_value_get_boxed(list), 0); -+G_GNUC_END_IGNORE_DEPRECATIONS -+#else - value = gst_value_list_get_value(list, 0); -+#endif - value_db = g_value_get_double(value); - percent = pow(10, value_db / 20); - return (percent > 1.0) ? 1.0 : percent; - } - - static void -+purple_media_error_fs(PurpleMedia *media, const gchar *error, -+ const GstStructure *fs_error) -+{ -+ const gchar *error_msg = gst_structure_get_string(fs_error, "error-msg"); -+ -+ purple_media_error(media, "%s%s%s", error, -+ error_msg ? _("\n\nMessage from Farsight: ") : "", -+ error_msg ? error_msg : ""); -+} -+ -+static void - gst_handle_message_element(GstBus *bus, GstMessage *msg, - PurpleMediaBackendFs2 *self) - { -@@ -871,11 +918,12 @@ - PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); - GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg)); - static guint level_id = 0; -+ const GstStructure *structure = gst_message_get_structure(msg); - - if (level_id == 0) - level_id = g_signal_lookup("level", PURPLE_TYPE_MEDIA); - -- if (gst_structure_has_name(msg->structure, "level")) { -+ if (gst_structure_has_name(structure, "level")) { - GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg)); - gchar *name; - gchar *participant = NULL; -@@ -930,31 +978,63 @@ - return; - - #ifdef HAVE_FARSIGHT -- if (gst_structure_has_name(msg->structure, "farsight-error")) { -+ if (gst_structure_has_name(structure, "farsight-error")) { - #else -- if (gst_structure_has_name(msg->structure, "farstream-error")) { -+ if (gst_structure_has_name(structure, "farstream-error")) { - #endif - FsError error_no; -- gst_structure_get_enum(msg->structure, "error-no", -+ gboolean error_emitted = FALSE; -+ gst_structure_get_enum(structure, "error-no", - FS_TYPE_ERROR, (gint*)&error_no); - switch (error_no) { -+ case FS_ERROR_CONSTRUCTION: -+ purple_media_error_fs(priv->media, -+ _("Error initializing the call. " -+ "This probably denotes problem in " -+#ifdef HAVE_FARSIGHT -+ "installation of GStreamer or Farsight."), -+#else -+ "installation of GStreamer or Farstream."), -+#endif -+ structure); -+ error_emitted = TRUE; -+ break; -+ case FS_ERROR_NETWORK: -+ purple_media_error_fs(priv->media, _("Network error."), -+ structure); -+ error_emitted = TRUE; -+ purple_media_end(priv->media, NULL, NULL); -+ break; -+ case FS_ERROR_NEGOTIATION_FAILED: -+ purple_media_error_fs(priv->media, -+ _("Codec negotiation failed. " -+ "This problem might be resolved by installing " -+ "more GStreamer codecs."), -+ structure); -+ error_emitted = TRUE; -+ purple_media_end(priv->media, NULL, NULL); -+ break; - case FS_ERROR_NO_CODECS: -- purple_media_error(priv->media, _("No codecs" -- " found. Install some" -- " GStreamer codecs found" -- " in GStreamer plugins" -- " packages.")); -+ purple_media_error(priv->media, -+ _("No codecs found. " -+ "Install some GStreamer codecs found " -+ "in GStreamer plugins packages.")); -+ error_emitted = TRUE; - purple_media_end(priv->media, NULL, NULL); - break; - #ifdef HAVE_FARSIGHT - 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_error(priv->media, -+ _("No codecs left. Your codec preferences " -+ "in fs-codecs.conf are too strict.")); -+ error_emitted = TRUE; - purple_media_end(priv->media, NULL, NULL); - break; -+ case FS_ERROR_CONNECTION_FAILED: -+ purple_media_error(priv->media, -+ _("Could not connect to the remote party")); -+ error_emitted = TRUE; -+ break; - case FS_ERROR_UNKNOWN_CNAME: - /* - * Unknown CName is only a problem for the -@@ -971,22 +1051,22 @@ - "farstream-error: %i: %s\n", - #endif - error_no, -- gst_structure_get_string( -- msg->structure, "error-msg")); -+ gst_structure_get_string(structure, "error-msg")); - break; - } - - if (FS_ERROR_IS_FATAL(error_no)) { -+ if (!error_emitted) - #ifdef HAVE_FARSIGHT -- purple_media_error(priv->media, _("A non-recoverable " -- "Farsight2 error has occurred.")); -+ purple_media_error(priv->media, -+ _("A non-recoverable Farsight2 error has occurred.")); - #else -- purple_media_error(priv->media, _("A non-recoverable " -- "Farstream error has occurred.")); -+ purple_media_error(priv->media, -+ _("A non-recoverable Farstream error has occurred.")); - #endif - purple_media_end(priv->media, NULL, NULL); - } -- } else if (gst_structure_has_name(msg->structure, -+ } else if (gst_structure_has_name(structure, - #ifdef HAVE_FARSIGHT - "farsight-new-local-candidate")) { - #else -@@ -1001,9 +1081,9 @@ - PurpleMediaBackendFs2Stream *media_stream; - gchar *name; - -- value = gst_structure_get_value(msg->structure, "stream"); -+ value = gst_structure_get_value(structure, "stream"); - stream = g_value_get_object(value); -- value = gst_structure_get_value(msg->structure, "candidate"); -+ value = gst_structure_get_value(structure, "candidate"); - local_candidate = g_value_get_boxed(value); - - session = get_session_from_fs_stream(self, stream); -@@ -1025,7 +1105,7 @@ - g_signal_emit_by_name(self, "new-candidate", - session->id, name, candidate); - g_object_unref(candidate); -- } else if (gst_structure_has_name(msg->structure, -+ } else if (gst_structure_has_name(structure, - #ifdef HAVE_FARSIGHT - "farsight-local-candidates-prepared")) { - #else -@@ -1037,7 +1117,7 @@ - PurpleMediaBackendFs2Session *session; - gchar *name; - -- value = gst_structure_get_value(msg->structure, "stream"); -+ value = gst_structure_get_value(structure, "stream"); - stream = g_value_get_object(value); - session = get_session_from_fs_stream(self, stream); - -@@ -1047,7 +1127,7 @@ - - g_signal_emit_by_name(self, "candidates-prepared", - session->id, name); -- } else if (gst_structure_has_name(msg->structure, -+ } else if (gst_structure_has_name(structure, - #ifdef HAVE_FARSIGHT - "farsight-new-active-candidate-pair")) { - #else -@@ -1062,13 +1142,11 @@ - PurpleMediaCandidate *lcandidate, *rcandidate; - gchar *name; - -- value = gst_structure_get_value(msg->structure, "stream"); -+ value = gst_structure_get_value(structure, "stream"); - stream = g_value_get_object(value); -- value = gst_structure_get_value(msg->structure, -- "local-candidate"); -+ value = gst_structure_get_value(structure, "local-candidate"); - local_candidate = g_value_get_boxed(value); -- value = gst_structure_get_value(msg->structure, -- "remote-candidate"); -+ value = gst_structure_get_value(structure, "remote-candidate"); - remote_candidate = g_value_get_boxed(value); - - g_object_get(stream, "participant", &participant, NULL); -@@ -1085,7 +1163,7 @@ - - g_object_unref(lcandidate); - g_object_unref(rcandidate); -- } else if (gst_structure_has_name(msg->structure, -+ } else if (gst_structure_has_name(structure, - #ifdef HAVE_FARSIGHT - "farsight-recv-codecs-changed")) { - #else -@@ -1095,7 +1173,7 @@ - GList *codecs; - FsCodec *codec; - -- value = gst_structure_get_value(msg->structure, "codecs"); -+ value = gst_structure_get_value(structure, "codecs"); - codecs = g_value_get_boxed(value); - codec = codecs->data; - -@@ -1106,7 +1184,7 @@ - "farstream-recv-codecs-changed: %s\n", - #endif - codec->encoding_name); -- } else if (gst_structure_has_name(msg->structure, -+ } else if (gst_structure_has_name(structure, - #ifdef HAVE_FARSIGHT - "farsight-component-state-changed")) { - #else -@@ -1117,9 +1195,9 @@ - guint component; - const gchar *state; - -- value = gst_structure_get_value(msg->structure, "state"); -+ value = gst_structure_get_value(structure, "state"); - fsstate = g_value_get_enum(value); -- value = gst_structure_get_value(msg->structure, "component"); -+ value = gst_structure_get_value(structure, "component"); - component = g_value_get_uint(value); - - switch (fsstate) { -@@ -1154,7 +1232,7 @@ - #endif - "component: %u state: %s\n", - component, state); -- } else if (gst_structure_has_name(msg->structure, -+ } else if (gst_structure_has_name(structure, - #ifdef HAVE_FARSIGHT - "farsight-send-codec-changed")) { - #else -@@ -1164,7 +1242,7 @@ - FsCodec *codec; - gchar *codec_str; - -- value = gst_structure_get_value(msg->structure, "codec"); -+ value = gst_structure_get_value(structure, "codec"); - codec = g_value_get_boxed(value); - codec_str = fs_codec_to_string(codec); - -@@ -1177,7 +1255,7 @@ - codec_str); - - g_free(codec_str); -- } else if (gst_structure_has_name(msg->structure, -+ } else if (gst_structure_has_name(structure, - #ifdef HAVE_FARSIGHT - "farsight-codecs-changed")) { - #else -@@ -1187,7 +1265,7 @@ - FsSession *fssession; - GList *sessions; - -- value = gst_structure_get_value(msg->structure, "session"); -+ value = gst_structure_get_value(structure, "session"); - fssession = g_value_get_object(value); - sessions = g_hash_table_get_values(priv->sessions); - -@@ -1631,7 +1709,11 @@ - srcpad = gst_element_get_static_pad(session->srcvalve, "src"); - g_object_set(volume, "volume", input_volume, NULL); - } else { -+#if GST_CHECK_VERSION(1,0,0) -+ srcpad = gst_element_get_request_pad(session->tee, "src_%u"); -+#else - srcpad = gst_element_get_request_pad(session->tee, "src%d"); -+#endif - } - - purple_debug_info("backend-fs2", "connecting pad: %s\n", -@@ -1641,11 +1723,14 @@ - gst_object_unref(session->src); - gst_object_unref(sinkpad); - -- gst_element_set_state(session->src, GST_STATE_PLAYING); -- - purple_media_manager_create_output_window(purple_media_get_manager( - priv->media), priv->media, sess_id, NULL); - -+ purple_debug_info("backend-fs2", "create_src: setting source " -+ "state to GST_STATE_PLAYING - it may hang here on win32\n"); -+ gst_element_set_state(session->src, GST_STATE_PLAYING); -+ purple_debug_info("backend-fs2", "create_src: state set\n"); -+ - return TRUE; - } - -@@ -1849,14 +1934,10 @@ - * audioresample ! audioconvert ! realsink - */ - stream->queue = gst_element_factory_make("queue", NULL); -- stream->volume = gst_element_factory_make( -- "volume", NULL); -- g_object_set(stream->volume, "volume", -- output_volume, NULL); -- stream->level = gst_element_factory_make( -- "level", NULL); -- stream->src = gst_element_factory_make( -- "liveadder", NULL); -+ stream->volume = gst_element_factory_make("volume", NULL); -+ g_object_set(stream->volume, "volume", output_volume, NULL); -+ stream->level = gst_element_factory_make("level", NULL); -+ stream->src = gst_element_factory_make("liveadder", NULL); - sink = purple_media_manager_get_element( - purple_media_get_manager(priv->media), - PURPLE_MEDIA_RECV_AUDIO, priv->media, -@@ -1875,10 +1956,12 @@ - gst_element_link(stream->queue, stream->volume); - sink = stream->queue; - } else if (codec->media_type == FS_MEDIA_TYPE_VIDEO) { -- stream->src = gst_element_factory_make( -- "fsfunnel", NULL); -- sink = gst_element_factory_make( -- "fakesink", NULL); -+#if GST_CHECK_VERSION(1,0,0) -+ stream->src = gst_element_factory_make("funnel", NULL); -+#else -+ stream->src = gst_element_factory_make("fsfunnel", NULL); -+#endif -+ sink = gst_element_factory_make("fakesink", NULL); - g_object_set(G_OBJECT(sink), "async", FALSE, NULL); - gst_bin_add(GST_BIN(priv->confbin), sink); - gst_element_set_state(sink, GST_STATE_PLAYING); -@@ -1892,7 +1975,11 @@ - gst_element_link_many(stream->src, stream->tee, sink, NULL); - } - -+#if GST_CHECK_VERSION(1,0,0) -+ sinkpad = gst_element_get_request_pad(stream->src, "sink_%u"); -+#else - sinkpad = gst_element_get_request_pad(stream->src, "sink%d"); -+#endif - gst_pad_link(srcpad, sinkpad); - gst_object_unref(sinkpad); - -@@ -2074,8 +2161,8 @@ - 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); -+ "Could not set transmitter %s: %s.\n", -+ transmitter, err ? err->message : NULL); - g_clear_error(&err); - g_free(_params); - return FALSE; -@@ -2394,38 +2481,6 @@ - return TRUE; - } - --static void --purple_media_backend_fs2_set_params(PurpleMediaBackend *self, -- guint num_params, GParameter *params) --{ -- PurpleMediaBackendFs2Private *priv; -- const gchar **supported = purple_media_backend_fs2_get_available_params(); -- const gchar **p; -- guint i; -- -- g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self)); -- -- priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); -- -- if (priv->conference == NULL && -- !init_conference(PURPLE_MEDIA_BACKEND_FS2(self))) { -- purple_debug_error("backend-fs2", -- "Error initializing the conference.\n"); -- return; -- } -- -- for (i = 0; i != num_params; ++i) { -- for (p = supported; *p != NULL; ++p) { -- if (!strcmp(params[i].name, *p)) { -- g_object_set(priv->conference, -- params[i].name, g_value_get_string(¶ms[i].value), -- NULL); -- break; -- } -- } -- } --} -- - static const gchar ** - purple_media_backend_fs2_get_available_params(void) - { -@@ -2436,6 +2491,72 @@ - - return supported_params; - } -+ -+static const gchar* -+param_to_sdes_type(const gchar *param) -+{ -+ const gchar **supported = purple_media_backend_fs2_get_available_params(); -+ static const gchar *sdes_types[] = { -+ "cname", "email", "location", "name", "note", "phone", "tool", NULL -+ }; -+ guint i; -+ -+ for (i = 0; supported[i] != NULL; ++i) { -+ if (!strcmp(param, supported[i])) { -+ return sdes_types[i]; -+ } -+ } -+ -+ return NULL; -+} -+ -+static void -+purple_media_backend_fs2_set_params(PurpleMediaBackend *self, -+ guint num_params, GParameter *params) -+{ -+ PurpleMediaBackendFs2Private *priv; -+ guint i; -+#ifndef HAVE_FARSIGHT -+ GstStructure *sdes; -+#endif -+ -+ g_return_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self)); -+ -+ priv = PURPLE_MEDIA_BACKEND_FS2_GET_PRIVATE(self); -+ -+ if (priv->conference == NULL && -+ !init_conference(PURPLE_MEDIA_BACKEND_FS2(self))) { -+ purple_debug_error("backend-fs2", -+ "Error initializing the conference.\n"); -+ return; -+ } -+ -+#ifdef HAVE_FARSIGHT -+ for (i = 0; i != num_params; ++i) { -+ if (param_to_sdes_type(params[i].name)) { -+ g_object_set(priv->conference, -+ params[i].name, g_value_get_string(¶ms[i].value), -+ NULL); -+ } -+ } -+#else -+ g_object_get(G_OBJECT(priv->conference), "sdes", &sdes, NULL); -+ -+ for (i = 0; i != num_params; ++i) { -+ const gchar *sdes_type = param_to_sdes_type(params[i].name); -+ if (!sdes_type) -+ continue; -+ -+ gst_structure_set(sdes, sdes_type, -+ G_TYPE_STRING, g_value_get_string(¶ms[i].value), -+ NULL); -+ } -+ -+ g_object_set(G_OBJECT(priv->conference), "sdes", sdes, NULL); -+ gst_structure_free(sdes); -+#endif /* HAVE_FARSIGHT */ -+} -+ - #else - GType - purple_media_backend_fs2_get_type(void) -@@ -2444,6 +2565,7 @@ - } - #endif /* USE_VV */ - -+ - #ifdef USE_GSTREAMER - GstElement * - purple_media_backend_fs2_get_src(PurpleMediaBackendFs2 *self, -diff -Naur pidgin-2.10.11.orig/libpurple/mediamanager.c pidgin-2.10.11/libpurple/mediamanager.c ---- pidgin-2.10.11.orig/libpurple/mediamanager.c 2014-11-23 10:41:25.000000000 -0600 -+++ pidgin-2.10.11/libpurple/mediamanager.c 2015-07-07 15:36:28.691798103 -0500 -@@ -44,7 +44,12 @@ - #else - #include <farstream/fs-element-added-notifier.h> - #endif -+ -+#if GST_CHECK_VERSION(1,0,0) -+#include <gst/video/videooverlay.h> -+#else - #include <gst/interfaces/xoverlay.h> -+#endif - - /** @copydoc _PurpleMediaManagerPrivate */ - typedef struct _PurpleMediaManagerPrivate PurpleMediaManagerPrivate; -@@ -270,8 +275,11 @@ - gst_bus_add_signal_watch(GST_BUS(bus)); - g_signal_connect(G_OBJECT(bus), "message", - G_CALLBACK(pipeline_bus_call), manager); -- gst_bus_set_sync_handler(bus, -- gst_bus_sync_signal_handler, NULL); -+#if GST_CHECK_VERSION(1,0,0) -+ gst_bus_set_sync_handler(bus, gst_bus_sync_signal_handler, NULL, NULL); -+#else -+ gst_bus_set_sync_handler(bus, gst_bus_sync_signal_handler, NULL); -+#endif - gst_object_unref(bus); - - filename = g_build_filename(purple_user_dir(), -@@ -405,20 +413,31 @@ - { - GstElement *parent = GST_ELEMENT_PARENT(pad); - GstIterator *iter; -+#if GST_CHECK_VERSION(1,0,0) -+ GValue tmp = G_VALUE_INIT; -+#endif - GstPad *remaining_pad; - GstIteratorResult result; - -- gst_element_release_request_pad(GST_ELEMENT_PARENT(pad), pad); -+ gst_element_release_request_pad(parent, pad); - - iter = gst_element_iterate_src_pads(parent); - -+#if GST_CHECK_VERSION(1,0,0) -+ result = gst_iterator_next(iter, &tmp); -+#else - result = gst_iterator_next(iter, (gpointer)&remaining_pad); -+#endif - - if (result == GST_ITERATOR_DONE) { - gst_element_set_locked_state(parent, TRUE); - gst_element_set_state(parent, GST_STATE_NULL); - gst_bin_remove(GST_BIN(GST_ELEMENT_PARENT(parent)), parent); - } else if (result == GST_ITERATOR_OK) { -+#if GST_CHECK_VERSION(1,0,0) -+ remaining_pad = g_value_get_object(&tmp); -+ g_value_reset(&tmp); -+#endif - gst_object_unref(remaining_pad); - } - -@@ -456,7 +475,11 @@ - { - #ifdef USE_VV - if (manager->priv->video_caps == NULL) -+#if GST_CHECK_VERSION(1,0,0) -+ manager->priv->video_caps = gst_caps_from_string("video/x-raw," -+#else - manager->priv->video_caps = gst_caps_from_string("video/x-raw-yuv," -+#endif - "width=[250,352], height=[200,288], framerate=[1/1,20/1]"); - return manager->priv->video_caps; - #else -@@ -539,7 +562,11 @@ - g_free(id); - - tee = gst_bin_get_by_name(GST_BIN(ret), "tee"); -+#if GST_CHECK_VERSION(1,0,0) -+ pad = gst_element_get_request_pad(tee, "src_%u"); -+#else - pad = gst_element_get_request_pad(tee, "src%d"); -+#endif - gst_object_unref(tee); - ghost = gst_ghost_pad_new(NULL, pad); - gst_object_unref(pad); -@@ -730,9 +757,12 @@ - { - GstElement *sink; - -- if (GST_MESSAGE_TYPE(msg) != GST_MESSAGE_ELEMENT || -- !gst_structure_has_name(msg->structure, -- "prepare-xwindow-id")) -+ if (GST_MESSAGE_TYPE(msg) != GST_MESSAGE_ELEMENT -+#if GST_CHECK_VERSION(1,0,0) -+ || !gst_is_video_overlay_prepare_window_handle_message(msg)) -+#else -+ || !gst_structure_has_name(msg->structure, "prepare-xwindow-id")) -+#endif - return; - - sink = GST_ELEMENT(GST_MESSAGE_SRC(msg)); -@@ -746,8 +776,16 @@ - | G_SIGNAL_MATCH_DATA, 0, 0, NULL, - window_id_cb, ow); - -- gst_x_overlay_set_xwindow_id(GST_X_OVERLAY( -- GST_MESSAGE_SRC(msg)), ow->window_id); -+#if GST_CHECK_VERSION(1,0,0) -+ gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(GST_MESSAGE_SRC(msg)), -+ ow->window_id); -+#elif GST_CHECK_VERSION(0,10,31) -+ gst_x_overlay_set_window_handle(GST_X_OVERLAY(GST_MESSAGE_SRC(msg)), -+ ow->window_id); -+#else -+ gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(GST_MESSAGE_SRC(msg)), -+ ow->window_id); -+#endif - } - #endif - -@@ -772,17 +810,19 @@ - (participant == ow->participant)) && - !strcmp(session_id, ow->session_id)) { - GstBus *bus; -- GstElement *queue, *colorspace; -+ GstElement *queue, *convert; - GstElement *tee = purple_media_get_tee(media, - session_id, participant); - - if (tee == NULL) - continue; - -- queue = gst_element_factory_make( -- "queue", NULL); -- colorspace = gst_element_factory_make( -- "ffmpegcolorspace", NULL); -+ queue = gst_element_factory_make("queue", NULL); -+#if GST_CHECK_VERSION(1,0,0) -+ convert = gst_element_factory_make("videoconvert", NULL); -+#else -+ convert = gst_element_factory_make("ffmpegcolorspace", NULL); -+#endif - ow->sink = purple_media_manager_get_element( - manager, PURPLE_MEDIA_RECV_VIDEO, - ow->media, ow->session_id, -@@ -795,7 +835,7 @@ - if (g_object_class_find_property(klass, - "sync")) - g_object_set(G_OBJECT(ow->sink), -- "sync", "FALSE", NULL); -+ "sync", FALSE, NULL); - if (g_object_class_find_property(klass, - "async")) - g_object_set(G_OBJECT(ow->sink), -@@ -803,7 +843,7 @@ - } - - gst_bin_add_many(GST_BIN(GST_ELEMENT_PARENT(tee)), -- queue, colorspace, ow->sink, NULL); -+ queue, convert, ow->sink, NULL); - - bus = gst_pipeline_get_bus(GST_PIPELINE( - manager->priv->pipeline)); -@@ -812,10 +852,10 @@ - gst_object_unref(bus); - - gst_element_set_state(ow->sink, GST_STATE_PLAYING); -- gst_element_set_state(colorspace, GST_STATE_PLAYING); -+ gst_element_set_state(convert, GST_STATE_PLAYING); - gst_element_set_state(queue, GST_STATE_PLAYING); -- gst_element_link(colorspace, ow->sink); -- gst_element_link(queue, colorspace); -+ gst_element_link(convert, ow->sink); -+ gst_element_link(queue, convert); - gst_element_link(tee, queue); - } - } -diff -Naur pidgin-2.10.11.orig/pidgin/Makefile.am pidgin-2.10.11/pidgin/Makefile.am ---- pidgin-2.10.11.orig/pidgin/Makefile.am 2014-11-23 10:41:26.000000000 -0600 -+++ pidgin-2.10.11/pidgin/Makefile.am 2015-07-07 15:36:28.691798103 -0500 -@@ -151,6 +151,7 @@ - $(GLIB_LIBS) \ - $(DBUS_LIBS) \ - $(GSTREAMER_LIBS) \ -+ $(GSTVIDEO_LIBS) \ - $(XSS_LIBS) \ - $(SM_LIBS) \ - $(INTLLIBS) \ -diff -Naur pidgin-2.10.11.orig/pidgin/gtkmedia.c pidgin-2.10.11/pidgin/gtkmedia.c ---- pidgin-2.10.11.orig/pidgin/gtkmedia.c 2014-11-23 10:41:26.000000000 -0600 -+++ pidgin-2.10.11/pidgin/gtkmedia.c 2015-07-07 15:36:28.691798103 -0500 -@@ -42,7 +42,9 @@ - #include <gdk/gdkwin32.h> - #endif - -+#if !GST_CHECK_VERSION(1,0,0) - #include <gst/interfaces/xoverlay.h> -+#endif - - #define PIDGIN_TYPE_MEDIA (pidgin_media_get_type()) - #define PIDGIN_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PIDGIN_TYPE_MEDIA, PidginMedia)) -@@ -589,6 +591,9 @@ - if (conv != NULL) - purple_conversation_write(conv, NULL, error, - PURPLE_MESSAGE_ERROR, time(NULL)); -+ else -+ purple_notify_error(NULL, NULL, _("Media error"), error); -+ - gtk_statusbar_push(GTK_STATUSBAR(gtkmedia->priv->statusbar), - 0, error); - } -diff -Naur pidgin-2.10.11.orig/pidgin/plugins/vvconfig.c pidgin-2.10.11/pidgin/plugins/vvconfig.c ---- pidgin-2.10.11.orig/pidgin/plugins/vvconfig.c 2014-11-23 10:41:27.000000000 -0600 -+++ pidgin-2.10.11/pidgin/plugins/vvconfig.c 2015-07-07 15:36:28.691798103 -0500 -@@ -26,7 +26,11 @@ - #include "gtkutils.h" - #include "gtkprefs.h" - -+#if GST_CHECK_VERSION(1,0,0) -+#include <gst/video/videooverlay.h> -+#else - #include <gst/interfaces/propertyprobe.h> -+#endif - - /* container window for showing a stand-alone configurator */ - static GtkWidget *window = NULL; -@@ -81,8 +85,10 @@ - GList *ret = NULL; - GstElement *element; - GObjectClass *klass; -+#if !GST_CHECK_VERSION(1,0,0) - GstPropertyProbe *probe; - const GParamSpec *pspec; -+#endif - - ret = g_list_prepend(ret, (gpointer)_("Default")); - ret = g_list_prepend(ret, ""); -@@ -103,6 +109,10 @@ - return g_list_reverse(ret); - } - -+#if GST_CHECK_VERSION(1,0,0) -+ purple_debug_info("vvconfig", "'%s' - gstreamer-1.0 doesn't suport " -+ "property probing\n", element_name); -+#else - if (!g_object_class_find_property(klass, "device") || - !GST_IS_PROPERTY_PROBE(element) || - !(probe = GST_PROPERTY_PROBE(element)) || -@@ -155,6 +165,7 @@ - gst_element_set_state(element, GST_STATE_NULL); - } - } -+#endif - gst_object_unref(element); - - return g_list_reverse(ret); -@@ -168,8 +179,13 @@ - ret = g_list_prepend(ret, "Default"); - ret = g_list_prepend(ret, ""); - for (; plugins[0] && plugins[1]; plugins += 2) { -+#if GST_CHECK_VERSION(1,0,0) -+ if (gst_registry_check_feature_version(gst_registry_get(), -+ plugins[0], 0, 0, 0)) { -+#else - if (gst_default_registry_check_feature_version( - plugins[0], 0, 0, 0)) { -+#endif - ret = g_list_prepend(ret, (gpointer)plugins[1]); - ret = g_list_prepend(ret, (gpointer)plugins[0]); - } -@@ -588,7 +604,13 @@ - - list = gst_structure_get_value( - gst_message_get_structure(msg), value_name); -+#if GST_CHECK_VERSION(1,0,0) -+G_GNUC_BEGIN_IGNORE_DEPRECATIONS -+ value = g_value_array_get_nth(g_value_get_boxed(list), 0); -+G_GNUC_END_IGNORE_DEPRECATIONS -+#else - value = gst_value_list_get_value(list, 0); -+#endif - value_db = g_value_get_double(value); - percent = pow(10, value_db / 20); - return (percent > 1.0) ? 1.0 : percent; -@@ -604,7 +626,7 @@ - gst_bus_cb(GstBus *bus, GstMessage *msg, BusCbCtx *ctx) - { - if (GST_MESSAGE_TYPE(msg) == GST_MESSAGE_ELEMENT && -- gst_structure_has_name(msg->structure, "level")) { -+ gst_structure_has_name(gst_message_get_structure(msg), "level")) { - - GstElement *src = GST_ELEMENT(GST_MESSAGE_SRC(msg)); - gchar *name = gst_element_get_name(src); diff --git a/nonprism/pidgin/pidgin-py3-fixes.patch b/nonprism/pidgin/pidgin-py3-fixes.patch deleted file mode 100644 index 9385e242f..000000000 --- a/nonprism/pidgin/pidgin-py3-fixes.patch +++ /dev/null @@ -1,69 +0,0 @@ -diff -uprb pidgin-2.10.12.orig/libpurple/purple-remote pidgin-2.10.12/libpurple/purple-remote ---- pidgin-2.10.12.orig/libpurple/purple-remote 2016-01-01 01:19:41.000000000 +0200 -+++ pidgin-2.10.12/libpurple/purple-remote 2016-01-02 06:23:14.082831498 +0200 -@@ -3,13 +3,20 @@ - import codecs - import dbus - import re --import urllib - import sys -+try: -+ from urllib.parse import unquote -+except ImportError: -+ from urllib import unquote - - import xml.dom.minidom - --sys.stdin = codecs.getwriter('utf-8')(sys.stdin); --sys.stdout = codecs.getwriter('utf-8')(sys.stdout); -+if sys.version_info[0] >= 3: -+ sys.stdin = codecs.getwriter('utf-8')(sys.stdin.buffer) -+ sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer) -+else: -+ sys.stdin = codecs.getwriter('utf-8')(sys.stdin) -+ sys.stdout = codecs.getwriter('utf-8')(sys.stdout) - - xml.dom.minidom.Element.all = xml.dom.minidom.Element.getElementsByTagName - -@@ -41,7 +48,7 @@ class CheckedAttribute: - return result - - def show_help(requested=False): -- print """This program uses D-Bus to communicate with purple. -+ print("""This program uses D-Bus to communicate with purple. - - Usage: - -@@ -72,7 +79,7 @@ Examples of commands: - - PurpleAccountsFindConnected?name=&protocol=prpl-jabber - PurpleAccountsFindConnected(,prpl-jabber) --""" % sys.argv[0] -+""" % sys.argv[0]) - if (requested): - sys.exit(0) - else: -@@ -120,7 +127,7 @@ def execute(uri): - if paramstring is not None: - for param in paramstring.split("&"): - key, value = extendlist(param.split("=",1), 2, "") -- params[key] = urllib.unquote(value) -+ params[key] = unquote(value) - - accountname = params.get("account", "") - -@@ -233,12 +240,11 @@ if len(sys.argv) == 1: - elif (sys.argv[1] == "--help" or sys.argv[1] == "-h"): - show_help(True) - elif (obj == None): -- print "No existing libpurple instance detected." -+ print("No existing libpurple instance detected.") - sys.exit(1); - - for arg in sys.argv[1:]: - output = execute(arg) - - if (output != None): -- print output -- -+ print(output) diff --git a/nonprism/pidgin/purple-remote-python3.patch b/nonprism/pidgin/purple-remote-python3.patch new file mode 100644 index 000000000..4bcf5c9cf --- /dev/null +++ b/nonprism/pidgin/purple-remote-python3.patch @@ -0,0 +1,34 @@ +# HG changeset patch +# User Evangelos Foutras <evangelos@foutrelis.com> +# Date 1520583640 -7200 +# Fri Mar 09 10:20:40 2018 +0200 +# Branch release-2.x.y +# Node ID ac2e05444162f1dc0fd60e4d5c8b4cbe2969b695 +# Parent 02df346d26d00cb9a1420c11a59fccb35d92f04e +Adjust purple-remote to work with Python 3 + +Fixes the following error: + + Traceback (most recent call last): + File "./libpurple/purple-remote", line 241, in <module> + print("No existing libpurple instance detected.") + File "/usr/lib/python3.6/codecs.py", line 377, in write + self.stream.write(data) + TypeError: write() argument must be str, not bytes + +diff -r 02df346d26d0 -r ac2e05444162 libpurple/purple-remote +--- a/libpurple/purple-remote Thu Mar 08 22:51:37 2018 -0600 ++++ b/libpurple/purple-remote Fri Mar 09 10:20:40 2018 +0200 +@@ -13,8 +13,10 @@ + + import xml.dom.minidom + +-sys.stdin = codecs.getwriter('utf-8')(sys.stdin); +-sys.stdout = codecs.getwriter('utf-8')(sys.stdout); ++if hasattr(sys.stdout, 'buffer'): ++ sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer) ++else: ++ sys.stdout = codecs.getwriter('utf-8')(sys.stdout) + + xml.dom.minidom.Element.all = xml.dom.minidom.Element.getElementsByTagName + |