Merged in CMaiku/pidgin (pull request #113)

Thu, 01 Sep 2016 23:12:51 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 01 Sep 2016 23:12:51 -0500
changeset 37977
2cc052ab7505
parent 37974
b7ecc46eaff8 (current diff)
parent 37976
743a04636b7b (diff)
child 37978
266009ac8af6
child 37983
7d134a4a87b2

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);

mercurial