Wed, 21 Dec 2005 18:43:39 +0000
[gaim-migrate @ 14935]
Jason LeBrun wrote to gaim-devel:
"I have found a small quirk in the way gdk_pixbuf_loader works. When you
are using it without signalling, the proper way to use it is to call
gdk_pixbuf_loader_close *before* calling gdk_pixbuf_loader_get_animation
or gdk_pixbuf_loader_get_pixbuf. The call to gdk_pixbuf_loader_close
signals that no more writes will be occuring.
In particular, this affects images that are less than 1k in size. If
gdk_pixbuf_loader_close is not called before _get_animation, the loader
will not return anything unless it has received more than 1k of data
(the file type sniffing buffer size) or it has been closed.
So, the proper order of calls for loaders in the gtk*.c code is:
gdk_pixbuf_loader_new();
gdk_pixbuf_loader_write();
gdk_pixbuf_loader_close();
gdk_pixbuf_loader_get_animation();"
I know we fixed a bug by changing this in one place. I've gone through and updated the rest.
|
11241
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
1 | #define DBUS_API_SUBJECT_TO_CHANGE |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
2 | |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
3 | #include <stdio.h> |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
4 | #include <stdlib.h> |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
5 | |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
6 | #include "gaim-client.h" |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
7 | |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
8 | /* |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
9 | This example demonstrates how to use libgaim-client to communicate |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
10 | with gaim. The names and signatures of functions provided by |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
11 | libgaim-client are the same as those in gaim. However, all |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
12 | structures (such as GaimAccount) are opaque, that is, you can only |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
13 | use pointer to them. In fact, these pointers DO NOT actually point |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
14 | to anything, they are just integer identifiers of assigned to these |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
15 | structures by gaim. So NEVER try to dereference these pointers. |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
16 | Integer ids as disguised as pointers to provide type checking and |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
17 | prevent mistakes such as passing an id of GaimAccount when an id of |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
18 | GaimBuddy is expected. According to glib manual, this technique is |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
19 | portable. |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
20 | */ |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
21 | |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
22 | int main (int argc, char **argv) |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
23 | { |
|
11277
ab3c0b6c5ca5
[gaim-migrate @ 13467]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11241
diff
changeset
|
24 | GList *alist, *node; |
|
ab3c0b6c5ca5
[gaim-migrate @ 13467]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11241
diff
changeset
|
25 | |
|
11241
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
26 | gaim_init(); |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
27 | |
|
11277
ab3c0b6c5ca5
[gaim-migrate @ 13467]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11241
diff
changeset
|
28 | alist = gaim_accounts_get_all(); |
|
ab3c0b6c5ca5
[gaim-migrate @ 13467]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11241
diff
changeset
|
29 | for (node = alist; node; node = node->next) { |
|
ab3c0b6c5ca5
[gaim-migrate @ 13467]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11241
diff
changeset
|
30 | GaimAccount *account = (GaimAccount*) node->data; |
|
ab3c0b6c5ca5
[gaim-migrate @ 13467]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11241
diff
changeset
|
31 | char *name = gaim_account_get_username(account); |
|
ab3c0b6c5ca5
[gaim-migrate @ 13467]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11241
diff
changeset
|
32 | g_print("Name: %s\n", name); |
|
ab3c0b6c5ca5
[gaim-migrate @ 13467]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11241
diff
changeset
|
33 | g_free(name); |
|
ab3c0b6c5ca5
[gaim-migrate @ 13467]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11241
diff
changeset
|
34 | } |
|
ab3c0b6c5ca5
[gaim-migrate @ 13467]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11241
diff
changeset
|
35 | |
|
ab3c0b6c5ca5
[gaim-migrate @ 13467]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
11241
diff
changeset
|
36 | g_list_free(alist); |
|
11241
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
37 | |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
38 | return 0; |
|
f62a71823fc3
[gaim-migrate @ 13404]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
39 | } |