Thu, 01 Sep 2016 23:12:51 -0500
Merged in CMaiku/pidgin (pull request #113)
Correct some GLib dependency version issues
--- a/configure.ac Thu Sep 01 23:08:43 2016 -0500 +++ b/configure.ac Thu Sep 01 23:12:51 2016 -0500 @@ -470,13 +470,13 @@ AM_CONDITIONAL(INSTALL_I18N, test "x$enable_i18n" = "xyes") dnl ####################################################################### -dnl # Check for GLib 2.34 (required) +dnl # Check for GLib 2.36 (required) dnl ####################################################################### -PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.34.0 gio-2.0 gobject-2.0 gthread-2.0], , [ +PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.36.0 gio-2.0 gobject-2.0 gthread-2.0], , [ AC_MSG_RESULT(no) AC_MSG_ERROR([ -You must have GLib 2.34.0 or newer development headers installed to build. +You must have GLib 2.36.0 or newer development headers installed to build. If you have these installed already you may need to install pkg-config so I can find them.
--- a/libpurple/queuedoutputstream.c Thu Sep 01 23:08:43 2016 -0500 +++ b/libpurple/queuedoutputstream.c Thu Sep 01 23:12:51 2016 -0500 @@ -26,6 +26,7 @@ struct _PurpleQueuedOutputStreamPrivate { GAsyncQueue *queue; + GBytes *next; }; GObjectClass *parent_class = NULL; @@ -99,26 +100,32 @@ G_OBJECT_CLASS(parent_class)->dispose(object); g_clear_pointer(&stream->priv->queue, g_async_queue_unref); + g_clear_pointer(&stream->priv->next, g_bytes_unref); } static gboolean purple_queued_output_stream_flush(GOutputStream *stream, GCancellable *cancellable, GError **error) { + PurpleQueuedOutputStreamPrivate *priv; GOutputStream *base_stream; - GAsyncQueue *queue; GBytes *bytes; const void *buffer; gsize count; gsize bytes_written = 0; gboolean ret = TRUE; + priv = PURPLE_QUEUED_OUTPUT_STREAM(stream)->priv; base_stream = g_filter_output_stream_get_base_stream( G_FILTER_OUTPUT_STREAM(stream)); - queue = PURPLE_QUEUED_OUTPUT_STREAM(stream)->priv->queue; do { - bytes = g_async_queue_try_pop(queue); + if (priv->next != NULL) { + bytes = priv->next; + priv->next = NULL; + } else { + bytes = g_async_queue_try_pop(priv->queue); + } if (bytes == NULL) { break; @@ -140,7 +147,7 @@ queue_bytes = g_bytes_ref(bytes); } - g_async_queue_push_front(queue, queue_bytes); + priv->next = queue_bytes; } g_bytes_unref(bytes);