Sat, 27 Aug 2016 18:16:01 -0500
connection: Add purple_connection_take_error()
This patch adds a purple_connection_take_error() function, which
is functionally equivalent to purple_connection_g_error(), except
that it takes ownership of the passed GError.
This is useful to simplify error handling so that the GError doesn't
have to be freed, or, in the future potentially copied, if it's no
longer needed where it's generated. It can also allow for GErrors
being generated without storing them in a variable. This would be
reasonably common if/when all PurpleConnection errors are passed
in via GError.
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
1 | /* purple |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
2 | * |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
3 | * Purple is the legal property of its developers, whose names are too numerous |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
4 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
5 | * source distribution. |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
6 | * |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
7 | * This program is free software; you can redistribute it and/or modify |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
8 | * it under the terms of the GNU General Public License as published by |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
9 | * the Free Software Foundation; either version 2 of the License, or |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
10 | * (at your option) any later version. |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
11 | * |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
12 | * This program is distributed in the hope that it will be useful, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
15 | * GNU General Public License for more details. |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
16 | * |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
17 | * You should have received a copy of the GNU General Public License |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
18 | * along with this program; if not, write to the Free Software |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
20 | */ |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
21 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
22 | #include "internal.h" |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
23 | #include "glibcompat.h" |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
24 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
25 | #include "debug.h" |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
26 | #include "image.h" |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
27 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
28 | #define PURPLE_IMAGE_GET_PRIVATE(obj) \ |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
29 | (G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_IMAGE, PurpleImagePrivate)) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
30 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
31 | typedef struct { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
32 | gchar *path; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
33 | GString *contents; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
34 | |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
35 | const gchar *extension; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
36 | const gchar *mime; |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
37 | gchar *gen_filename; |
|
35829
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
38 | gchar *friendly_filename; |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
39 | |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
40 | gboolean is_ready; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
41 | gboolean has_failed; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
42 | } PurpleImagePrivate; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
43 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
44 | enum |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
45 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
46 | PROP_0, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
47 | PROP_IS_READY, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
48 | PROP_HAS_FAILED, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
49 | PROP_LAST |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
50 | }; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
51 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
52 | enum |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
53 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
54 | SIG_READY, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
55 | SIG_FAILED, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
56 | SIG_LAST |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
57 | }; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
58 | |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
59 | static GObjectClass *parent_class; |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
60 | static guint signals[SIG_LAST]; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
61 | static GParamSpec *properties[PROP_LAST]; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
62 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
63 | /****************************************************************************** |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
64 | * Internal logic |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
65 | ******************************************************************************/ |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
66 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
67 | static void |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
68 | has_failed(PurpleImage *image) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
69 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
70 | gboolean ready_changed; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
71 | PurpleImagePrivate *priv; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
72 | priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
73 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
74 | g_return_if_fail(!priv->has_failed); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
75 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
76 | priv->has_failed = TRUE; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
77 | ready_changed = (priv->is_ready != FALSE); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
78 | priv->is_ready = FALSE; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
79 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
80 | if (priv->contents) { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
81 | g_string_free(priv->contents, TRUE); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
82 | priv->contents = NULL; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
83 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
84 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
85 | if (ready_changed) { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
86 | g_object_notify_by_pspec(G_OBJECT(image), |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
87 | properties[PROP_IS_READY]); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
88 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
89 | g_object_notify_by_pspec(G_OBJECT(image), properties[PROP_HAS_FAILED]); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
90 | g_signal_emit(image, signals[SIG_FAILED], 0); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
91 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
92 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
93 | static void |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
94 | became_ready(PurpleImage *image) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
95 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
96 | PurpleImagePrivate *priv; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
97 | priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
98 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
99 | g_return_if_fail(!priv->has_failed); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
100 | g_return_if_fail(!priv->is_ready); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
101 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
102 | priv->is_ready = TRUE; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
103 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
104 | g_object_notify_by_pspec(G_OBJECT(image), properties[PROP_IS_READY]); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
105 | g_signal_emit(image, signals[SIG_READY], 0); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
106 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
107 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
108 | static void |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
109 | steal_contents(PurpleImagePrivate *priv, gpointer data, gsize length) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
110 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
111 | g_return_if_fail(priv != NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
112 | g_return_if_fail(priv->contents == NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
113 | g_return_if_fail(data != NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
114 | g_return_if_fail(length > 0); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
115 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
116 | priv->contents = g_string_new(NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
117 | g_free(priv->contents->str); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
118 | priv->contents->str = data; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
119 | priv->contents->len = priv->contents->allocated_len = length; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
120 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
121 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
122 | static void |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
123 | fill_data(PurpleImage *image) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
124 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
125 | PurpleImagePrivate *priv; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
126 | GError *error = NULL; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
127 | gchar *contents; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
128 | gsize length; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
129 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
130 | priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
131 | if (priv->contents) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
132 | return; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
133 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
134 | if (!priv->is_ready) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
135 | return; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
136 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
137 | g_return_if_fail(priv->path); |
|
36049
bffbd724134d
Fix CWE-252 coverity issues
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35946
diff
changeset
|
138 | (void)g_file_get_contents(priv->path, &contents, &length, &error); |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
139 | if (error) { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
140 | purple_debug_error("image", "failed to read '%s' image: %s", |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
141 | priv->path, error->message); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
142 | g_error_free(error); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
143 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
144 | has_failed(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
145 | return; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
146 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
147 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
148 | steal_contents(priv, contents, length); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
149 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
150 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
151 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
152 | /****************************************************************************** |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
153 | * API implementation |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
154 | ******************************************************************************/ |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
155 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
156 | PurpleImage * |
|
35802
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
157 | purple_image_new_from_file(const gchar *path, gboolean be_eager) |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
158 | { |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
159 | PurpleImagePrivate *priv; |
|
35802
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
160 | PurpleImage *img; |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
161 | |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
162 | g_return_val_if_fail(path != NULL, NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
163 | g_return_val_if_fail(g_file_test(path, G_FILE_TEST_EXISTS), NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
164 | |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
165 | img = g_object_new(PURPLE_TYPE_IMAGE, NULL); |
|
35830
fb32647ef2f3
PurpleImage: better reference management
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35829
diff
changeset
|
166 | purple_image_set_friendly_filename(img, path); |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
167 | priv = PURPLE_IMAGE_GET_PRIVATE(img); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
168 | priv->path = g_strdup(path); |
|
35802
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
169 | |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
170 | if (be_eager) { |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
171 | fill_data(img); |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
172 | if (!priv->contents) { |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
173 | g_object_unref(img); |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
174 | return NULL; |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
175 | } |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
176 | |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
177 | g_assert(priv->is_ready && !priv->has_failed); |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
178 | } |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
179 | |
|
a804a812858c
PurpleImage: add be_eager param to purple_image_new_from_file
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35801
diff
changeset
|
180 | return img; |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
181 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
182 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
183 | PurpleImage * |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
184 | purple_image_new_from_data(gpointer data, gsize length) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
185 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
186 | PurpleImage *img; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
187 | PurpleImagePrivate *priv; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
188 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
189 | g_return_val_if_fail(data != NULL, NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
190 | g_return_val_if_fail(length > 0, NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
191 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
192 | img = g_object_new(PURPLE_TYPE_IMAGE, NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
193 | priv = PURPLE_IMAGE_GET_PRIVATE(img); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
194 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
195 | steal_contents(priv, data, length); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
196 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
197 | return img; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
198 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
199 | |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
200 | gboolean |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
201 | purple_image_save(PurpleImage *image, const gchar *path) |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
202 | { |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
203 | PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
35846
07dabf3c0022
PurpleImage: purple_image_get_data should return const buffer
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35843
diff
changeset
|
204 | gconstpointer data; |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
205 | gsize len; |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
206 | gboolean succ; |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
207 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
208 | g_return_val_if_fail(priv != NULL, FALSE); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
209 | g_return_val_if_fail(path != NULL, FALSE); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
210 | g_return_val_if_fail(path[0] != '\0', FALSE); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
211 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
212 | data = purple_image_get_data(image); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
213 | len = purple_image_get_size(image); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
214 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
215 | g_return_val_if_fail(data != NULL, FALSE); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
216 | g_return_val_if_fail(len > 0, FALSE); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
217 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
218 | succ = purple_util_write_data_to_file_absolute(path, data, len); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
219 | if (succ && priv->path == NULL) |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
220 | priv->path = g_strdup(path); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
221 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
222 | return succ; |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
223 | } |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
224 | |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
225 | const gchar * |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
226 | purple_image_get_path(PurpleImage *image) |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
227 | { |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
228 | PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
229 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
230 | g_return_val_if_fail(priv != NULL, NULL); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
231 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
232 | return priv->path; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
233 | } |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
234 | |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
235 | gboolean |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
236 | purple_image_is_ready(PurpleImage *image) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
237 | { |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
238 | PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
239 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
240 | g_return_val_if_fail(priv != NULL, FALSE); |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
241 | |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
242 | return priv->is_ready; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
243 | } |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
244 | |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
245 | gboolean |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
246 | purple_image_has_failed(PurpleImage *image) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
247 | { |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
248 | PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
249 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
250 | g_return_val_if_fail(priv != NULL, TRUE); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
251 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
252 | return priv->has_failed; |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
253 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
254 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
255 | gsize |
|
35806
49018c6bf755
Imgstore: implement with PurpleImage and purple_image_store
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35802
diff
changeset
|
256 | purple_image_get_size(PurpleImage *image) |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
257 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
258 | PurpleImagePrivate *priv; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
259 | priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
260 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
261 | g_return_val_if_fail(priv != NULL, 0); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
262 | g_return_val_if_fail(priv->is_ready, 0); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
263 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
264 | fill_data(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
265 | g_return_val_if_fail(priv->contents, 0); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
266 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
267 | return priv->contents->len; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
268 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
269 | |
|
35846
07dabf3c0022
PurpleImage: purple_image_get_data should return const buffer
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35843
diff
changeset
|
270 | gconstpointer |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
271 | purple_image_get_data(PurpleImage *image) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
272 | { |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
273 | PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
274 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
275 | g_return_val_if_fail(priv != NULL, NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
276 | g_return_val_if_fail(priv->is_ready, NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
277 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
278 | fill_data(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
279 | g_return_val_if_fail(priv->contents, NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
280 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
281 | return priv->contents->str; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
282 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
283 | |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
284 | const gchar * |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
285 | purple_image_get_extension(PurpleImage *image) |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
286 | { |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
287 | PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
35846
07dabf3c0022
PurpleImage: purple_image_get_data should return const buffer
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35843
diff
changeset
|
288 | gconstpointer data; |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
289 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
290 | g_return_val_if_fail(priv != NULL, NULL); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
291 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
292 | if (priv->extension) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
293 | return priv->extension; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
294 | |
|
35806
49018c6bf755
Imgstore: implement with PurpleImage and purple_image_store
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35802
diff
changeset
|
295 | if (purple_image_get_size(image) < 4) |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
296 | return NULL; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
297 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
298 | data = purple_image_get_data(image); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
299 | g_assert(data != NULL); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
300 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
301 | if (memcmp(data, "GIF8", 4) == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
302 | return priv->extension = "gif"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
303 | if (memcmp(data, "\xff\xd8\xff", 3) == 0) /* 4th may be e0 through ef */ |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
304 | return priv->extension = "jpg"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
305 | if (memcmp(data, "\x89PNG", 4) == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
306 | return priv->extension = "png"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
307 | if (memcmp(data, "MM", 2) == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
308 | return priv->extension = "tif"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
309 | if (memcmp(data, "II", 2) == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
310 | return priv->extension = "tif"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
311 | if (memcmp(data, "BM", 2) == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
312 | return priv->extension = "bmp"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
313 | if (memcmp(data, "\x00\x00\x01\x00", 4) == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
314 | return priv->extension = "ico"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
315 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
316 | return NULL; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
317 | } |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
318 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
319 | const gchar * |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
320 | purple_image_get_mimetype(PurpleImage *image) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
321 | { |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
322 | PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
323 | const gchar *ext = purple_image_get_extension(image); |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
324 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
325 | g_return_val_if_fail(priv != NULL, NULL); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
326 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
327 | if (priv->mime) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
328 | return priv->mime; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
329 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
330 | g_return_val_if_fail(ext != NULL, NULL); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
331 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
332 | if (g_strcmp0(ext, "gif") == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
333 | return priv->mime = "image/gif"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
334 | if (g_strcmp0(ext, "jpg") == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
335 | return priv->mime = "image/jpeg"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
336 | if (g_strcmp0(ext, "png") == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
337 | return priv->mime = "image/png"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
338 | if (g_strcmp0(ext, "tif") == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
339 | return priv->mime = "image/tiff"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
340 | if (g_strcmp0(ext, "bmp") == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
341 | return priv->mime = "image/bmp"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
342 | if (g_strcmp0(ext, "ico") == 0) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
343 | return priv->mime = "image/vnd.microsoft.icon"; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
344 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
345 | return NULL; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
346 | } |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
347 | |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
348 | const gchar * |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
349 | purple_image_generate_filename(PurpleImage *image) |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
350 | { |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
351 | PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
35846
07dabf3c0022
PurpleImage: purple_image_get_data should return const buffer
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35843
diff
changeset
|
352 | gconstpointer data; |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
353 | gsize len; |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
354 | const gchar *ext; |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
355 | gchar *checksum; |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
356 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
357 | g_return_val_if_fail(priv != NULL, NULL); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
358 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
359 | if (priv->gen_filename) |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
360 | return priv->gen_filename; |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
361 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
362 | ext = purple_image_get_extension(image); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
363 | data = purple_image_get_data(image); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
364 | len = purple_image_get_size(image); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
365 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
366 | g_return_val_if_fail(ext != NULL, NULL); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
367 | g_return_val_if_fail(data != NULL, NULL); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
368 | g_return_val_if_fail(len > 0, NULL); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
369 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
370 | checksum = g_compute_checksum_for_data(G_CHECKSUM_SHA1, data, len); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
371 | priv->gen_filename = g_strdup_printf("%s.%s", checksum, ext); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
372 | g_free(checksum); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
373 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
374 | return priv->gen_filename; |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
375 | } |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
376 | |
|
35819
cc375b914104
imgstore: remove refs from gg prpl
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35809
diff
changeset
|
377 | void |
|
cc375b914104
imgstore: remove refs from gg prpl
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35809
diff
changeset
|
378 | purple_image_set_friendly_filename(PurpleImage *image, const gchar *filename) |
|
cc375b914104
imgstore: remove refs from gg prpl
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35809
diff
changeset
|
379 | { |
|
35829
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
380 | PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
381 | gchar *newname; |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
382 | const gchar *escaped; |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
383 | |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
384 | g_return_if_fail(priv != NULL); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
385 | |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
386 | newname = g_path_get_basename(filename); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
387 | escaped = purple_escape_filename(newname); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
388 | g_free(newname); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
389 | newname = NULL; |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
390 | |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
391 | if (g_strcmp0(escaped, "") == 0 || g_strcmp0(escaped, ".") == 0 || |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
392 | g_strcmp0(escaped, G_DIR_SEPARATOR_S) == 0 || |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
393 | g_strcmp0(escaped, "/") == 0 || g_strcmp0(escaped, "\\") == 0) |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
394 | { |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
395 | escaped = NULL; |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
396 | } |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
397 | |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
398 | g_free(priv->friendly_filename); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
399 | priv->friendly_filename = g_strdup(escaped); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
400 | } |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
401 | |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
402 | const gchar * |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
403 | purple_image_get_friendly_filename(PurpleImage *image) |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
404 | { |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
405 | PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
406 | |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
407 | g_return_val_if_fail(priv != NULL, NULL); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
408 | |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
409 | if (G_UNLIKELY(!priv->friendly_filename)) { |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
410 | const gchar *newname = purple_image_generate_filename(image); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
411 | gsize newname_len = strlen(newname); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
412 | |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
413 | if (newname_len < 10) |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
414 | return NULL; |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
415 | |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
416 | /* let's use last 6 characters from checksum + 4 characters |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
417 | * from file ext */ |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
418 | newname += newname_len - 10; |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
419 | priv->friendly_filename = g_strdup(newname); |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
420 | } |
|
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
421 | |
|
35843
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
422 | if (G_UNLIKELY(priv->is_ready && |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
423 | strchr(priv->friendly_filename, '.') == NULL)) |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
424 | { |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
425 | const gchar *ext = purple_image_get_extension(image); |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
426 | gchar *tmp; |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
427 | if (!ext) |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
428 | return priv->friendly_filename; |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
429 | |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
430 | tmp = g_strdup_printf("%s.%s", priv->friendly_filename, ext); |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
431 | g_free(priv->friendly_filename); |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
432 | priv->friendly_filename = tmp; |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
433 | } |
|
b5d03ca6a680
Gadu-Gadu: use remote features of PurpleImage instead of handling image queue
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35830
diff
changeset
|
434 | |
|
35829
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
435 | return priv->friendly_filename; |
|
35819
cc375b914104
imgstore: remove refs from gg prpl
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35809
diff
changeset
|
436 | } |
|
cc375b914104
imgstore: remove refs from gg prpl
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35809
diff
changeset
|
437 | |
|
35801
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
438 | PurpleImage * |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
439 | purple_image_transfer_new(void) |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
440 | { |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
441 | PurpleImage *img; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
442 | PurpleImagePrivate *priv; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
443 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
444 | img = g_object_new(PURPLE_TYPE_IMAGE, NULL); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
445 | priv = PURPLE_IMAGE_GET_PRIVATE(img); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
446 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
447 | priv->is_ready = FALSE; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
448 | priv->contents = g_string_new(NULL); |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
449 | |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
450 | return img; |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
451 | } |
|
9cdf2c4d5a7a
PurpleImage: extension and mime type retrieval
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35800
diff
changeset
|
452 | |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
453 | void |
|
35946
44e9ed3cc8fe
scrncap: add resulting image to the webview
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35846
diff
changeset
|
454 | purple_image_transfer_write(PurpleImage *image, gconstpointer data, |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
455 | gsize length) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
456 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
457 | PurpleImagePrivate *priv = |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
458 | PURPLE_IMAGE_GET_PRIVATE(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
459 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
460 | g_return_if_fail(priv != NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
461 | g_return_if_fail(!priv->has_failed); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
462 | g_return_if_fail(!priv->is_ready); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
463 | g_return_if_fail(priv->contents != NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
464 | g_return_if_fail(data != NULL || length == 0); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
465 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
466 | if (length == 0) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
467 | return; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
468 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
469 | g_string_append_len(priv->contents, (const gchar*)data, length); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
470 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
471 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
472 | void |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
473 | purple_image_transfer_close(PurpleImage *image) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
474 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
475 | PurpleImagePrivate *priv = |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
476 | PURPLE_IMAGE_GET_PRIVATE(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
477 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
478 | g_return_if_fail(priv != NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
479 | g_return_if_fail(!priv->has_failed); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
480 | g_return_if_fail(!priv->is_ready); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
481 | g_return_if_fail(priv->contents != NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
482 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
483 | if (priv->contents->len == 0) { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
484 | purple_debug_error("image", "image is empty"); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
485 | has_failed(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
486 | return; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
487 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
488 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
489 | became_ready(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
490 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
491 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
492 | void |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
493 | purple_image_transfer_failed(PurpleImage *image) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
494 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
495 | PurpleImagePrivate *priv = |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
496 | PURPLE_IMAGE_GET_PRIVATE(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
497 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
498 | g_return_if_fail(priv != NULL); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
499 | g_return_if_fail(!priv->has_failed); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
500 | g_return_if_fail(!priv->is_ready); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
501 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
502 | has_failed(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
503 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
504 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
505 | /****************************************************************************** |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
506 | * Object stuff |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
507 | ******************************************************************************/ |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
508 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
509 | static void |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
510 | purple_image_init(GTypeInstance *instance, gpointer klass) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
511 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
512 | PurpleImage *image = PURPLE_IMAGE(instance); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
513 | PurpleImagePrivate *priv = |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
514 | PURPLE_IMAGE_GET_PRIVATE(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
515 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
516 | priv->contents = NULL; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
517 | priv->is_ready = TRUE; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
518 | priv->has_failed = FALSE; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
519 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
520 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
521 | static void |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
522 | purple_image_finalize(GObject *obj) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
523 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
524 | PurpleImage *image = PURPLE_IMAGE(obj); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
525 | PurpleImagePrivate *priv = |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
526 | PURPLE_IMAGE_GET_PRIVATE(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
527 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
528 | if (priv->contents) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
529 | g_string_free(priv->contents, TRUE); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
530 | g_free(priv->path); |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
531 | g_free(priv->gen_filename); |
|
35829
268931512478
imgstore: unref oscar
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35819
diff
changeset
|
532 | g_free(priv->friendly_filename); |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
533 | |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
534 | G_OBJECT_CLASS(parent_class)->finalize(obj); |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
535 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
536 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
537 | static void |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
538 | purple_image_get_property(GObject *object, guint par_id, GValue *value, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
539 | GParamSpec *pspec) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
540 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
541 | PurpleImage *image = PURPLE_IMAGE(object); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
542 | PurpleImagePrivate *priv = PURPLE_IMAGE_GET_PRIVATE(image); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
543 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
544 | switch (par_id) { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
545 | case PROP_IS_READY: |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
546 | g_value_set_boolean(value, priv->is_ready); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
547 | break; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
548 | case PROP_HAS_FAILED: |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
549 | g_value_set_boolean(value, priv->has_failed); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
550 | break; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
551 | default: |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
552 | G_OBJECT_WARN_INVALID_PROPERTY_ID(object, par_id, pspec); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
553 | break; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
554 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
555 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
556 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
557 | static void |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
558 | purple_image_class_init(PurpleImageClass *klass) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
559 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
560 | GObjectClass *gobj_class = G_OBJECT_CLASS(klass); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
561 | |
|
35809
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
562 | parent_class = g_type_class_peek_parent(klass); |
|
6dd40b244ce3
PurpleImage: convert buddyicon.c
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35806
diff
changeset
|
563 | |
|
35800
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
564 | g_type_class_add_private(klass, sizeof(PurpleImagePrivate)); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
565 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
566 | gobj_class->finalize = purple_image_finalize; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
567 | gobj_class->get_property = purple_image_get_property; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
568 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
569 | properties[PROP_IS_READY] = g_param_spec_boolean("is-ready", |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
570 | "Is ready", "The image is ready to be displayed. Image may " |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
571 | "change the state to failed in a single case: if it's backed " |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
572 | "by a file and that file fails to load", |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
573 | TRUE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
574 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
575 | properties[PROP_HAS_FAILED] = g_param_spec_boolean("has-failed", |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
576 | "Has hailed", "The remote host has failed to send the image", |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
577 | FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
578 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
579 | g_object_class_install_properties(gobj_class, PROP_LAST, properties); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
580 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
581 | /** |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
582 | * PurpleImage::failed: |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
583 | * @image: a image that failed to transfer. |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
584 | * |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
585 | * Called when a @image fails to be transferred. It's guaranteed to be |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
586 | * fired at most once for a particular @image. |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
587 | */ |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
588 | signals[SIG_FAILED] = g_signal_new("failed", G_OBJECT_CLASS_TYPE(klass), |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
589 | 0, 0, NULL, NULL, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
590 | g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
591 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
592 | /** |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
593 | * PurpleImage::ready: |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
594 | * @image: a image that became ready. |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
595 | * |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
596 | * Called when a @image becames ready to be displayed. It's guaranteed to be |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
597 | * fired at most once for a particular @image. |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
598 | */ |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
599 | signals[SIG_READY] = g_signal_new("ready", G_OBJECT_CLASS_TYPE(klass), |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
600 | 0, 0, NULL, NULL, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
601 | g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
602 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
603 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
604 | GType |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
605 | purple_image_get_type(void) |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
606 | { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
607 | static GType type = 0; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
608 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
609 | if (G_UNLIKELY(type == 0)) { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
610 | static const GTypeInfo info = { |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
611 | .class_size = sizeof(PurpleImageClass), |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
612 | .class_init = (GClassInitFunc)purple_image_class_init, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
613 | .instance_size = sizeof(PurpleImage), |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
614 | .instance_init = purple_image_init, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
615 | }; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
616 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
617 | type = g_type_register_static(G_TYPE_OBJECT, |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
618 | "PurpleImage", &info, 0); |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
619 | } |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
620 | |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
621 | return type; |
|
2c21828e7442
PurpleImage: initial implementation
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
622 | } |