/pidgin/main: 18146230e402: queuedoutputstream: Remove usage of ...

Mike Ruprecht <[email protected]> Tue, 06 Sep 2016 11:19:21 -0400
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: 18146230e402f65a648c1fa461d5a477820adb78
Author:	 Mike Ruprecht <[email protected]>
Date:	 2016-08-29 23:43 -0500
Branch:	 default
URL: https://hg.pidgin.im/pidgin/main/rev/18146230e402

Description:

queuedoutputstream: Remove usage of g_async_queue_push_front()

g_async_queue_push_front() is from GLib 2.46+. As of this commit,
we depend on GLib 2.34, though it should be 2.36, but that's for
another commit. This patch removes usage of that function so we
don't require nearly as high of a GLib version.

diffstat:

 libpurple/queuedoutputstream.c |  15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diffs (56 lines):

diff --git a/libpurple/queuedoutputstream.c b/libpurple/queuedoutputstream.c
--- a/libpurple/queuedoutputstream.c
+++ b/libpurple/queuedoutputstream.c
@@ -26,6 +26,7 @@
 
 struct _PurpleQueuedOutputStreamPrivate {
 	GAsyncQueue *queue;
+	GBytes *next;
 };
 
 GObjectClass *parent_class = NULL;
@@ -99,26 +100,32 @@ purple_queued_output_stream_dispose(GObj
 	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 @@ purple_queued_output_stream_flush(GOutpu
 				queue_bytes = g_bytes_ref(bytes);
 			}
 
-			g_async_queue_push_front(queue, queue_bytes);
+			priv->next = queue_bytes;
 		}
 
 		g_bytes_unref(bytes);

_______________________________________________
Commits mailing list
[email protected]
https://pidgin.im/cgi-bin/mailman/listinfo/commits