libpurple/queuedoutputstream.c

Thu, 25 Aug 2022 22:30:30 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 25 Aug 2022 22:30:30 -0500
branch
gtk4
changeset 41594
30ad4d17661f
parent 41479
3d2e114380f6
child 41685
ca22b00972d4
permissions
-rw-r--r--

Remove the use of the removed popup-menu signal and fix the popup menu not displaying

Testing Done:
Double clicked a buddy to open a conversation and right clicked a buddy to make sure the contact menu came up.

Reviewed at https://reviews.imfreedom.org/r/1651/

37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
1 /*
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
2 *
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
3 * purple
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
4 *
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
7 * source distribution.
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
8 *
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
12 * (at your option) any later version.
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
13 *
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
17 * GNU General Public License for more details.
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
18 *
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
22 */
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
23
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
24 #include "internal.h"
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
25 #include "queuedoutputstream.h"
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
26
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
27 struct _PurpleQueuedOutputStream
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
28 {
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
29 GFilterOutputStream parent;
37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
30 };
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
31
39556
622bf98df0ac Remove unnecessary struct tags.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39540
diff changeset
32 typedef struct
37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
33 {
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
34 GAsyncQueue *queue;
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
35 gboolean pending_queued;
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
36 } PurpleQueuedOutputStreamPrivate;
37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
37
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
38 G_DEFINE_TYPE_WITH_PRIVATE(PurpleQueuedOutputStream,
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
39 purple_queued_output_stream, G_TYPE_FILTER_OUTPUT_STREAM)
37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
40
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
41 /******************************************************************************
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
42 * Helpers
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
43 *****************************************************************************/
37665
3eab84b9b88f libpurple: Add PurpleQueuedOutputStream for fire and forget output
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
44
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
45 static void purple_queued_output_stream_start_push_bytes_async(GTask *task);
37978
266009ac8af6 purplequeuedoutputstream: Implement unthreaded asynchronous flush
Mike Ruprecht <cmaiku@gmail.com>
parents: 37975
diff changeset
46
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
47 static void
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
48 purple_queued_output_stream_push_bytes_async_cb(GObject *source,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
49 GAsyncResult *res, gpointer user_data)
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
50 {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
51 GTask *task = G_TASK(user_data);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
52 PurpleQueuedOutputStream *stream = g_task_get_source_object(task);
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
53 PurpleQueuedOutputStreamPrivate *priv = purple_queued_output_stream_get_instance_private(stream);
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
54 gssize written;
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
55 GBytes *bytes;
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
56 gsize size;
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
57 GError *error = NULL;
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
58
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
59 written = g_output_stream_write_bytes_finish(G_OUTPUT_STREAM(source),
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
60 res, &error);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
61
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
62 bytes = g_task_get_task_data(task);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
63 size = g_bytes_get_size(bytes);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
64
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
65 if (written < 0) {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
66 /* Error occurred, return error */
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
67 g_task_return_error(task, error);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
68 g_clear_object(&task);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
69 } else if (size > written) {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
70 /* Partial write, prepare to send remaining data */
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
71 bytes = g_bytes_new_from_bytes(bytes, written, size - written);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
72 g_task_set_task_data(task, bytes,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
73 (GDestroyNotify)g_bytes_unref);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
74 } else {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
75 /* Full write, this task is finished */
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
76 g_task_return_boolean(task, TRUE);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
77 g_clear_object(&task);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
78 }
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
79
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
80 /* If g_task_return_* was called in this function, the callback
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
81 * may have cleared the stream. If so, there will be no remaining
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
82 * tasks to process here.
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
83 */
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
84
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
85 if (task == NULL) {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
86 /* Any queued data left? */
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
87 task = g_async_queue_try_pop(priv->queue);
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
88 }
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
89
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
90 if (task != NULL) {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
91 /* More to process */
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
92 purple_queued_output_stream_start_push_bytes_async(task);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
93 } else {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
94 /* All done */
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
95 priv->pending_queued = FALSE;
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
96 g_output_stream_clear_pending(G_OUTPUT_STREAM(stream));
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
97 }
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
98 }
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
99
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
100 static void
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
101 purple_queued_output_stream_start_push_bytes_async(GTask *task)
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
102 {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
103 PurpleQueuedOutputStream *stream = g_task_get_source_object(task);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
104 GOutputStream *base_stream;
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
105
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
106 base_stream = g_filter_output_stream_get_base_stream(
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
107 G_FILTER_OUTPUT_STREAM(stream));
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
108
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
109 g_output_stream_write_bytes_async(base_stream,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
110 g_task_get_task_data(task),
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
111 g_task_get_priority(task),
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
112 g_task_get_cancellable(task),
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
113 purple_queued_output_stream_push_bytes_async_cb,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
114 task);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
115 }
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
116
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
117 /******************************************************************************
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
118 * GObject Implementation
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
119 *****************************************************************************/
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
120
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
121 static void
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
122 purple_queued_output_stream_dispose(GObject *object)
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
123 {
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
124 PurpleQueuedOutputStream *stream = PURPLE_QUEUED_OUTPUT_STREAM(object);
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
125 PurpleQueuedOutputStreamPrivate *priv = purple_queued_output_stream_get_instance_private(stream);
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
126
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
127 g_clear_pointer(&priv->queue, g_async_queue_unref);
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
128
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
129 G_OBJECT_CLASS(purple_queued_output_stream_parent_class)->dispose(object);
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
130 }
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
131
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
132 static void
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
133 purple_queued_output_stream_class_init(PurpleQueuedOutputStreamClass *klass)
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
134 {
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
135 GObjectClass *obj_class = G_OBJECT_CLASS(klass);
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
136
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
137 obj_class->dispose = purple_queued_output_stream_dispose;
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
138 }
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
139
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
140 static void
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
141 purple_queued_output_stream_init(PurpleQueuedOutputStream *stream)
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
142 {
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
143 PurpleQueuedOutputStreamPrivate *priv = purple_queued_output_stream_get_instance_private(stream);
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
144 priv->queue = g_async_queue_new_full((GDestroyNotify)g_bytes_unref);
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
145 priv->pending_queued = FALSE;
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
146 }
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
147
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
148 /******************************************************************************
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
149 * Public API
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
150 *****************************************************************************/
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
151
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
152 PurpleQueuedOutputStream *
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
153 purple_queued_output_stream_new(GOutputStream *base_stream)
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
154 {
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
155 PurpleQueuedOutputStream *stream;
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
156
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
157 g_return_val_if_fail(G_IS_OUTPUT_STREAM(base_stream), NULL);
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
158
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
159 stream = g_object_new(PURPLE_TYPE_QUEUED_OUTPUT_STREAM,
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
160 "base-stream", base_stream,
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
161 NULL);
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
162
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
163 return stream;
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
164 }
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
165
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
166 void
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
167 purple_queued_output_stream_push_bytes_async(PurpleQueuedOutputStream *stream,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
168 GBytes *bytes, int io_priority, GCancellable *cancellable,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
169 GAsyncReadyCallback callback, gpointer user_data)
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
170 {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
171 GTask *task;
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
172 gboolean set_pending;
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
173 GError *error = NULL;
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
174 PurpleQueuedOutputStreamPrivate *priv = NULL;
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
175
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
176 g_return_if_fail(PURPLE_IS_QUEUED_OUTPUT_STREAM(stream));
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
177 g_return_if_fail(bytes != NULL);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
178
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
179 priv = purple_queued_output_stream_get_instance_private(stream);
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
180
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
181 task = g_task_new(stream, cancellable, callback, user_data);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
182 g_task_set_task_data(task, g_bytes_ref(bytes),
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
183 (GDestroyNotify)g_bytes_unref);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
184 g_task_set_source_tag(task,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
185 purple_queued_output_stream_push_bytes_async);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
186 g_task_set_priority(task, io_priority);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
187
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
188 set_pending = g_output_stream_set_pending(
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
189 G_OUTPUT_STREAM(stream), &error);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
190
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
191 /* Since we're allowing queuing requests without blocking,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
192 * it's not an error to be pending while processing queued operations.
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
193 */
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
194 if (!set_pending && (!g_error_matches(error,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
195 G_IO_ERROR, G_IO_ERROR_PENDING) ||
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
196 !priv->pending_queued)) {
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
197 g_task_return_error(task, error);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
198 g_object_unref(task);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
199 return;
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
200 }
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
201
40265
03bafaff77dd fix some other memory leaks
Fabrice Bellet <fabrice@bellet.info>
parents: 39556
diff changeset
202 g_clear_error (&error);
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
203 priv->pending_queued = TRUE;
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
204
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
205 if (set_pending) {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
206 /* Start processing if there were no pending operations */
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
207 purple_queued_output_stream_start_push_bytes_async(task);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
208 } else {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
209 /* Otherwise queue the data */
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
210 g_async_queue_push(priv->queue, task);
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
211 }
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
212 }
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
213
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
214 gboolean
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
215 purple_queued_output_stream_push_bytes_finish(PurpleQueuedOutputStream *stream,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
216 GAsyncResult *result, GError **error)
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
217 {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
218 g_return_val_if_fail(PURPLE_IS_QUEUED_OUTPUT_STREAM(stream), FALSE);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
219 g_return_val_if_fail(g_task_is_valid(result, stream), FALSE);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
220 g_return_val_if_fail(g_async_result_is_tagged(result,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
221 purple_queued_output_stream_push_bytes_async), FALSE);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
222
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
223 return g_task_propagate_boolean(G_TASK(result), error);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
224 }
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
225
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
226 void
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
227 purple_queued_output_stream_clear_queue(PurpleQueuedOutputStream *stream)
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
228 {
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
229 GTask *task;
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
230 PurpleQueuedOutputStreamPrivate *priv = NULL;
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
231
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
232 g_return_if_fail(PURPLE_IS_QUEUED_OUTPUT_STREAM(stream));
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
233
39540
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
234 priv = purple_queued_output_stream_get_instance_private(stream);
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
235
8a5927c69f02 Use more standard GObject setup for queuedoutputstream.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39169
diff changeset
236 while ((task = g_async_queue_try_pop(priv->queue)) != NULL) {
39165
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
237 g_task_return_new_error(task, G_IO_ERROR, G_IO_ERROR_CANCELLED,
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
238 "PurpleQueuedOutputStream queue cleared");
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
239 g_object_unref(task);
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
240 }
62b8ef4dd1d3 queuedoutputstream: Refactor to behave better with the rest of Gio
Mike Ruprecht <cmaiku@gmail.com>
parents: 38052
diff changeset
241 }

mercurial