Codebase list grilo / a806ee7
Imported Upstream version 0.2.10 Alberto Garcia 10 years ago
79 changed file(s) with 2540 addition(s) and 1537 deletion(s). Raw diff Collapse all Expand all
0 commit d88e91c9abc801266f3a5a06b3d9689307f6d9ba
1 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
2 Date: Wed Mar 19 12:04:31 2014 +0000
3
4 Release 0.2.10
5
6 NEWS | 29 +++++++++++++++++++++++++++++
7 configure.ac | 6 +++---
8 src/data/grl-media.c | 4 ++++
9 src/grl-registry.c | 2 ++
10 4 files changed, 38 insertions(+), 3 deletions(-)
11
12 commit b88a996231a70334f08bef1153d9cf88ab54f48e
13 Author: Bastien Nocera <hadess@hadess.net>
14 Date: Tue Mar 18 18:08:34 2014 +0100
15
16 pls: Set file size attribute
17
18 https://bugzilla.gnome.org/show_bug.cgi?id=629002
19
20 libs/pls/grl-pls.c | 4 ++++
21 1 file changed, 4 insertions(+)
22
23 commit 09d9b0a88286a5bf29414187ebcf636474d83c75
24 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
25 Date: Mon Mar 3 00:03:14 2014 +0000
26
27 core: Add metadata key for size
28
29 Add GRL_METADATA_KEY_SIZE, and proper functions, that get/set the size in media
30 size in bytes.
31
32 https://bugzilla.gnome.org/show_bug.cgi?id=629002
33
34 doc/grilo/grilo-sections.txt | 2 ++
35 src/data/grl-media.c | 28 ++++++++++++++++++++++++++++
36 src/data/grl-media.h | 4 ++++
37 src/grl-metadata-key.c | 13 +++++++++++++
38 src/grl-metadata-key.h | 1 +
39 5 files changed, 48 insertions(+)
40
41 commit 21e6fb514884251d5dfb042b56b78e687d05d5a0
42 Author: Bastien Nocera <hadess@hadess.net>
43 Date: Fri Mar 14 14:01:39 2014 +0100
44
45 core: Add guards for public API
46
47 Add guards for all the grl_data_* public API functions.
48
49 https://bugzilla.gnome.org/show_bug.cgi?id=726340
50
51 src/data/grl-data.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++----
52 1 file changed, 73 insertions(+), 6 deletions(-)
53
54 commit 1d806abd6310e013035eb98347df700d93b11dd6
55 Author: Ryan Lortie <desrt@desrt.ca>
56 Date: Wed Mar 12 15:35:03 2014 -0400
57
58 configure: don't hardcode lib64
59
60 If the user wants libraries installed in a directory called lib64 then
61 they will specify this via the --libdir option.
62
63 https://bugzilla.gnome.org/show_bug.cgi?id=726197
64
65 configure.ac | 11 -----------
66 1 file changed, 11 deletions(-)
67
68 commit 8f82675b221a15287e12546bb2fc8cc08f67c618
69 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
70 Date: Sun Mar 9 21:54:21 2014 +0000
71
72 core: Rename variable
73
74 src/grl-source.c | 6 +++---
75 1 file changed, 3 insertions(+), 3 deletions(-)
76
77 commit 90253afd0e30bc1e33a69c6cc6c89b28461dd04c
78 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
79 Date: Sun Mar 9 21:52:18 2014 +0000
80
81 doc: Update grl-inspect man page
82
83 Add documentation about inspecting metadata keys.
84
85 grl-inspect.1 | 14 ++++++++++----
86 1 file changed, 10 insertions(+), 4 deletions(-)
87
88 commit 4ce8e5056180a54c027e88b4c7ed9b11038aa029
89 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
90 Date: Sun Mar 9 19:32:02 2014 +0000
91
92 test-ui: Show new registered metadata keys.
93
94 tools/grilo-test-ui/main.c | 20 ++++++++++++++++++++
95 1 file changed, 20 insertions(+)
96
97 commit f2a3ad3cadffb35833dd8ab00280aaa62b0c2110
98 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
99 Date: Sun Mar 9 19:31:21 2014 +0000
100
101 core: Add "metadata-key-added" signal
102
103 This signal is emitted when a source registers a new custom metadata key.
104
105 src/grl-registry.c | 36 ++++++++++++++++++++++++++++++++----
106 1 file changed, 32 insertions(+), 4 deletions(-)
107
108 commit 2c331dfe66e79459ca85a8fd8c888edbb9e30c45
109 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
110 Date: Sun Mar 9 17:29:44 2014 +0000
111
112 core: Pull plugin leak
113
114 src/grl-registry.c | 2 +-
115 1 file changed, 1 insertion(+), 1 deletion(-)
116
117 commit 1c3bd7f7d76f13c43f7d66d2836adac6f88cabd0
118 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
119 Date: Sun Mar 9 16:11:33 2014 +0000
120
121 core: Use a hashtable to store metadatakeys
122
123 Do not use a GParamSpecPool for it, as this class does not have a way to free
124 it.
125
126 Instead, use a GHashTable.
127
128 src/grl-metadata-key.c | 908 ++++++++++++++++++++++++------------------------
129 src/grl-registry-priv.h | 8 +-
130 src/grl-registry.c | 106 +++---
131 3 files changed, 517 insertions(+), 505 deletions(-)
132
133 commit 90aa982ee7a75da374424064d3ffe5552e3e3435
134 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
135 Date: Sun Mar 9 00:36:49 2014 +0000
136
137 core: Free tags
138
139 src/grl-source.c | 1 +
140 1 file changed, 1 insertion(+)
141
142 commit 0c3913e2a01f8949c380dc3c5eb86c73020410d8
143 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
144 Date: Sun Mar 9 00:03:32 2014 +0000
145
146 core: configurations are stored in a list
147
148 When freeing the list of configurations, do not unref directly because they are
149 inside a list. Use g_list_free_full() to do the job.
150
151 src/grl-registry.c | 10 +++++++++-
152 1 file changed, 9 insertions(+), 1 deletion(-)
153
154 commit 806a8598c34d5b408eeebd3b699d50a03bd5c105
155 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
156 Date: Thu Mar 6 17:28:08 2014 +0000
157
158 core: Use g_clear_pointer/object when possible
159
160 Reduces the number of lines and makes the code more readable.
161
162 configure.ac | 2 +-
163 libs/net/grl-net-mock.c | 37 ++++++++-------------------
164 libs/net/grl-net-wc.c | 10 +++-----
165 libs/pls/grl-pls.c | 32 ++++++-----------------
166 src/grl-caps.c | 8 ++----
167 src/grl-plugin.c | 9 +++----
168 src/grl-range-value.c | 9 ++-----
169 src/grl-registry.c | 31 ++++++-----------------
170 src/grl-source.c | 13 +++-------
171 tools/grilo-test-ui/main.c | 63 ++++++++++++----------------------------------
172 10 files changed, 58 insertions(+), 156 deletions(-)
173
174 commit 0d380b7e10b84740a54ec108df61fc4c62b43e0f
175 Author: Bastien Nocera <hadess@hadess.net>
176 Date: Fri Feb 28 21:22:32 2014 +0100
177
178 core: Add names to all the timeouts and idles
179
180 For debugging purposes.
181
182 https://bugzilla.gnome.org/show_bug.cgi?id=725419
183
184 libs/net/grl-net-wc.c | 1 +
185 libs/pls/grl-pls.c | 5 +-
186 src/grl-multiple.c | 8 ++-
187 src/grl-source.c | 151 ++++++++++++++++++++++++++++++--------------------
188 4 files changed, 101 insertions(+), 64 deletions(-)
189
190 commit 5520b4e219d9a9e1dd66aefcd27b2bda2d040a8e
191 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
192 Date: Sun Mar 2 01:24:03 2014 +0000
193
194 core: Free registry resources before unreffing it
195
196 We can't unref the registry to finalize all the sources and plugins, because
197 they can try to access the registry again in their finalize method.
198
199 This commit first finalizes the sources, plugins, and other resources, and at
200 the end it unrefs the registry.
201
202 https://bugzilla.gnome.org/show_bug.cgi?id=724660
203
204 src/grilo.c | 2 +-
205 src/grl-registry-priv.h | 2 +
206 src/grl-registry.c | 141 ++++++++++++++++++++++++------------------------
207 3 files changed, 72 insertions(+), 73 deletions(-)
208
209 commit 30823a258d7340436bf0c6f79f77cc2947d9086c
210 Author: Marcus Lundblad <ml@update.uu.se>
211 Date: Fri Feb 28 21:17:16 2014 +0000
212
213 Added Swedish translation
214
215 po/LINGUAS | 1 +
216 po/sv.po | 192 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
217 2 files changed, 193 insertions(+)
218
219 commit f6b7305afcf1264f90e51004ea0eda95d4413089
220 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
221 Date: Fri Feb 28 00:23:35 2014 +0000
222
223 build: Detect Vala presence
224
225 Build vala bindings if vala is present.
226
227 https://bugzilla.gnome.org/show_bug.cgi?id=724648
228
229 configure.ac | 51 +++++++++++++++++++++++++++++++--------------------
230 1 file changed, 31 insertions(+), 20 deletions(-)
231
232 commit 171211cfc75d241b0208308c198f0495e80f3f80
233 Author: Bastien Nocera <hadess@hadess.net>
234 Date: Fri Feb 21 12:25:28 2014 +0100
235
236 core: Add documentation for source-tags
237
238 Explain usage and commonly used tags.
239
240 https://bugzilla.gnome.org/show_bug.cgi?id=724019
241
242 src/grl-source.c | 42 ++++++++++++++++++++++++++++++++++++++++++
243 1 file changed, 42 insertions(+)
244
245 commit 636ac50f093c11afbc68a0158fe8baaab363085b
246 Author: Bastien Nocera <hadess@hadess.net>
247 Date: Tue Feb 25 14:37:13 2014 +0100
248
249 core: Fix gtk-doc for source-tags
250
251 They were referred to as "tags" in some places, and "source-tags"
252 in others.
253
254 src/grl-source.c | 10 +++++-----
255 1 file changed, 5 insertions(+), 5 deletions(-)
256
257 commit 790f3508d5f805577f4d9187ab5bf6e89262d4b5
258 Author: Bastien Nocera <hadess@hadess.net>
259 Date: Sun Feb 23 19:02:02 2014 +0100
260
261 pls: Fix build with grilo never installed
262
263 This re-applies the fix from:
264 https://git.gnome.org/browse/grilo/commit/?id=3f66bb29a2d0f81479a435c1fabc80c08c4961be
265
266 Which got broken by the wrong de-duplicating done in
267 5f88b535800d1105439641795ddd2e07fd113744
268
269 https://bugzilla.gnome.org/show_bug.cgi?id=724871
270
271 libs/pls/Makefile.am | 2 +-
272 1 file changed, 1 insertion(+), 1 deletion(-)
273
274 commit bd2a3875e3460e8a93ba30a9c7841650669a8c3f
275 Author: Bastien Nocera <hadess@hadess.net>
276 Date: Fri Feb 21 12:30:26 2014 +0100
277
278 core: Fix API documentation typo
279
280 ../../src/data/grl-data.c:389: warning: Parameter description
281 for grl_data_get_boolean::key is missing in source code comment block.
282
283 https://bugzilla.gnome.org/show_bug.cgi?id=724871
284
285 src/data/grl-data.c | 2 +-
286 1 file changed, 1 insertion(+), 1 deletion(-)
287
288 commit 5f88b535800d1105439641795ddd2e07fd113744
289 Author: Bastien Nocera <hadess@hadess.net>
290 Date: Fri Feb 21 12:24:59 2014 +0100
291
292 pls: Fix redefinition of compiler args
293
294 https://bugzilla.gnome.org/show_bug.cgi?id=724871
295
296 libs/pls/Makefile.am | 1 -
297 1 file changed, 1 deletion(-)
298
299 commit 71def91bc93da36d1abf7332e899b5fd88dd1cf1
300 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
301 Date: Fri Feb 21 00:35:42 2014 +0100
302
303 travis: Update package dependencies
304
305 .travis.yml | 4 ++--
306 1 file changed, 2 insertions(+), 2 deletions(-)
307
308 commit 0defc30bd6e432cfb04c8956fef13d035d9c2178
309 Author: Bastien Nocera <hadess@hadess.net>
310 Date: Mon Feb 10 12:39:44 2014 +0100
311
312 test-ui: Show "source-tags" property
313
314 https://bugzilla.gnome.org/show_bug.cgi?id=724019
315
316 tools/grilo-test-ui/main.c | 28 ++++++++++++++++++++++++++++
317 1 file changed, 28 insertions(+)
318
319 commit 5fd88084afe8a7469fc65abe1eff3b0a7ac5488f
320 Author: Bastien Nocera <hadess@hadess.net>
321 Date: Mon Feb 10 12:37:40 2014 +0100
322
323 core: Add "source-tags" property
324
325 So that more information can be conveyed about the source's content
326 to the front-end applications, such as:
327 - the genre of the media (tv, cinema, radio, music, etc.)
328 - the countries the media is relevant to
329 - whether the media served is from the same machine, or from
330 the local network
331
332 https://bugzilla.gnome.org/show_bug.cgi?id=724019
333
334 Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
335
336 src/grl-source.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
337 src/grl-source.h | 2 ++
338 2 files changed, 60 insertions(+), 1 deletion(-)
339
340 commit 4f68bcff087ad0a073a86fbbeaec88a1dae2d4f3
341 Author: Bastien Nocera <hadess@hadess.net>
342 Date: Tue Feb 18 16:46:21 2014 +0100
343
344 test-ui: Fix crasher on exit
345
346 The test UI was crashing because we left closing through the
347 "Close" button destroy the window, which left all the pointers
348 dangling.
349
350 https://bugzilla.gnome.org/show_bug.cgi?id=724658
351
352 tools/grilo-test-ui/main.c | 14 ++++++++++++--
353 1 file changed, 12 insertions(+), 2 deletions(-)
354
355 commit 4e38032dc0bdc62d868ebdb8c2d08983b5865760
356 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
357 Date: Tue Feb 18 14:18:14 2014 +0000
358
359 Post-release version bump to 0.2.10
360
361 configure.ac | 2 +-
362 1 file changed, 1 insertion(+), 1 deletion(-)
363
0364 commit c3add1a606383bd0e583d48cf85ad5c714ff1639
1365 Author: Juan A. Suarez Romero <jasuarez@igalia.com>
2366 Date: Tue Feb 18 14:15:33 2014 +0000
0 NEW in 0.2.10
1 =============
2
3 * Increase glib requirement to 2.34 or greater
4 * Added new property in GrlSource: "source-tags"
5 * Added new signal in GrlRegistry: "metadata-key-added"
6 * Added new functions: grl_media_{set,get}_size()
7 * Added new key: GRL_METADATA_KEY_SIZE
8 * Updated man page
9 * Several fixes, including:
10 * BGO#629002 - Add GRL_METADATA_KEY_SIZE
11 * BGO#724019 - core: Add "source-tags" property
12 * BGO#724648 - Vala dependency is not correctly detected
13 * BGO#724658 - test-ui: Fix crasher on exit
14 * BGO#724660 - Warnings on exit
15 * BGO#724871 - Warning fixes
16 * BGO#725419 - core: Add names to all the timeouts and idles
17 * BGO#726197 - grilo should not ignore ${libdir} and hardcode lib64
18 * BGO#726340 - core: Add guards for public API
19 * Added/Updated support for i18n
20 * Swedish (new)
21
22 * Contributors to this release:
23 Bastien Nocera <hadess@hadess.net>
24 Juan A. Suarez Romero <jasuarez@igalia.com>
25 Marcus Lundblad <ml@update.uu.se>
26 Ryan Lortie <desrt@desrt.ca>
27
28
029 NEW in 0.2.9
130 ============
231
999999 END
10001000 AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
10011001 fi
1002 fi])
1002 fi
1003 ])
10031004
10041005 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
10051006 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
129129 public unowned string get_region_data (out unowned GLib.DateTime publication_date, string certificate);
130130 public unowned string get_region_data_nth (uint index, out unowned GLib.DateTime publication_date, string certificate);
131131 public unowned string get_site ();
132 public int get_size ();
132133 public unowned string get_source ();
133134 public float get_start_time ();
134135 public unowned string get_studio ();
163164 public void set_region (string region);
164165 public void set_region_data (string region, GLib.DateTime publication_date, string certificate);
165166 public void set_site (string site);
167 public void set_size (int size);
166168 public void set_source (string source);
167169 public void set_studio (string studio);
168170 public void set_thumbnail (string thumbnail);
448450 public bool register_source (Grl.Plugin plugin, Grl.Source source) throws GLib.Error;
449451 public bool unload_plugin (string plugin_id) throws GLib.Error;
450452 public bool unregister_source (Grl.Source source) throws GLib.Error;
453 public virtual signal void metadata_key_added (string p0);
451454 public virtual signal void source_added (Grl.Source p0);
452455 public virtual signal void source_removed (Grl.Source p0);
453456 }
497500 public unowned Grl.Plugin get_plugin ();
498501 public int get_rank ();
499502 public Grl.MediaType get_supported_media ();
503 public unowned string get_tags ();
500504 public virtual bool may_resolve (Grl.Media media, Grl.KeyID key_id, out GLib.List<weak Grl.KeyID> missing_keys);
501505 [NoWrapper]
502506 public virtual void media_from_uri (Grl.SourceMediaFromUriSpec mfus);
535539 public string source_id { owned get; set construct; }
536540 [NoAccessorMethod]
537541 public string source_name { owned get; set construct; }
542 [CCode (array_length = false, array_null_terminated = true)]
543 [NoAccessorMethod]
544 public string[] source_tags { owned get; set construct; }
538545 [NoAccessorMethod]
539546 public Grl.MediaType supported_media { get; set construct; }
540547 public virtual signal void content_changed (GLib.PtrArray p0, Grl.SourceChangeType p1, bool p2);
00 #! /bin/sh
11 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.69 for grilo 0.2.9.
2 # Generated by GNU Autoconf 2.69 for grilo 0.2.10.
33 #
44 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=grilo;component=core>.
55 #
590590 # Identity of this package.
591591 PACKAGE_NAME='grilo'
592592 PACKAGE_TARNAME='grilo'
593 PACKAGE_VERSION='0.2.9'
594 PACKAGE_STRING='grilo 0.2.9'
593 PACKAGE_VERSION='0.2.10'
594 PACKAGE_STRING='grilo 0.2.10'
595595 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=grilo;component=core'
596596 PACKAGE_URL='https://wiki.gnome.org/Projects/Grilo'
597597
14541454 # Omit some internal or obsolete options to make the list less imposing.
14551455 # This message is too long to be a string in the A/UX 3.1 sh.
14561456 cat <<_ACEOF
1457 \`configure' configures grilo 0.2.9 to adapt to many kinds of systems.
1457 \`configure' configures grilo 0.2.10 to adapt to many kinds of systems.
14581458
14591459 Usage: $0 [OPTION]... [VAR=VALUE]...
14601460
15241524
15251525 if test -n "$ac_init_help"; then
15261526 case $ac_init_help in
1527 short | recursive ) echo "Configuration of grilo 0.2.9:";;
1527 short | recursive ) echo "Configuration of grilo 0.2.10:";;
15281528 esac
15291529 cat <<\_ACEOF
15301530
15541554 --enable-grl-pls Enable Grilo Pls library (default: auto)
15551555 --enable-debug include debug symbols
15561556 --enable-tests build unit tests
1557 --enable-vala Enable Vala plugin support
1557 --enable-vala Enable Vala plugin support (default: auto)
15581558 --enable-gtk-doc use gtk-doc to build documentation [[default=no]]
15591559 --enable-gtk-doc-html build documentation in html format [[default=yes]]
15601560 --enable-gtk-doc-pdf build documentation in pdf format [[default=no]]
16711671 test -n "$ac_init_help" && exit $ac_status
16721672 if $ac_init_version; then
16731673 cat <<\_ACEOF
1674 grilo configure 0.2.9
1674 grilo configure 0.2.10
16751675 generated by GNU Autoconf 2.69
16761676
16771677 Copyright (C) 2012 Free Software Foundation, Inc.
19491949 This file contains any messages produced by compilers while
19501950 running configure, to aid debugging if configure makes a mistake.
19511951
1952 It was created by grilo $as_me 0.2.9, which was
1952 It was created by grilo $as_me 0.2.10, which was
19531953 generated by GNU Autoconf 2.69. Invocation command line was
19541954
19551955 $ $0 $@
28132813
28142814 # Define the identity of the package.
28152815 PACKAGE='grilo'
2816 VERSION='0.2.9'
2816 VERSION='0.2.10'
28172817
28182818
28192819 cat >>confdefs.h <<_ACEOF
29052905 as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
29062906 fi
29072907 fi
2908
29082909
29092910
29102911
1177611777 # Libtool library version, not to confuse with API version
1177711778 # see http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
1177811779
11779 GRL_LT_VERSION=6:1:5
11780 GRLNET_LT_VERSION=1:6:1
11781 GRLPLS_LT_VERSION=0:1:0
11780 GRL_LT_VERSION=7:0:6
11781 GRLNET_LT_VERSION=1:7:1
11782 GRLPLS_LT_VERSION=0:2:0
1178211783
1178311784
1178411785
1198211983
1198311984 if test "x${exec_prefix}" = "xNONE" ; then
1198411985 exec_prefix="${prefix}"
11985 fi
11986
11987 if test "${libdir}" = '${exec_prefix}/lib'; then
11988 case `uname -m` in
11989 x86_64|ppc64|powerpc64)
11990 libdir='${exec_prefix}/lib64'
11991 ;;
11992 *)
11993 libdir='${exec_prefix}/lib'
11994 ;;
11995 esac
1199611986 fi
1199711987
1199811988 # Plugins directory
1213812128 pkg_cv_DEPS_CFLAGS="$DEPS_CFLAGS"
1213912129 elif test -n "$PKG_CONFIG"; then
1214012130 if test -n "$PKG_CONFIG" && \
12141 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.32 \\
12131 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.34 \\
1214212132 gobject-2.0 \\
1214312133 gmodule-2.0 \\
1214412134 gio-2.0 \\
1214512135 libxml-2.0\""; } >&5
12146 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.32 \
12136 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.34 \
1214712137 gobject-2.0 \
1214812138 gmodule-2.0 \
1214912139 gio-2.0 \
1215112141 ac_status=$?
1215212142 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1215312143 test $ac_status = 0; }; then
12154 pkg_cv_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.32 \
12144 pkg_cv_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.34 \
1215512145 gobject-2.0 \
1215612146 gmodule-2.0 \
1215712147 gio-2.0 \
1216712157 pkg_cv_DEPS_LIBS="$DEPS_LIBS"
1216812158 elif test -n "$PKG_CONFIG"; then
1216912159 if test -n "$PKG_CONFIG" && \
12170 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.32 \\
12160 { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.34 \\
1217112161 gobject-2.0 \\
1217212162 gmodule-2.0 \\
1217312163 gio-2.0 \\
1217412164 libxml-2.0\""; } >&5
12175 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.32 \
12165 ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.34 \
1217612166 gobject-2.0 \
1217712167 gmodule-2.0 \
1217812168 gio-2.0 \
1218012170 ac_status=$?
1218112171 $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
1218212172 test $ac_status = 0; }; then
12183 pkg_cv_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.32 \
12173 pkg_cv_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.34 \
1218412174 gobject-2.0 \
1218512175 gmodule-2.0 \
1218612176 gio-2.0 \
1220512195 _pkg_short_errors_supported=no
1220612196 fi
1220712197 if test $_pkg_short_errors_supported = yes; then
12208 DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.32 \
12198 DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.34 \
1220912199 gobject-2.0 \
1221012200 gmodule-2.0 \
1221112201 gio-2.0 \
1221212202 libxml-2.0" 2>&1`
1221312203 else
12214 DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.32 \
12204 DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.34 \
1221512205 gobject-2.0 \
1221612206 gmodule-2.0 \
1221712207 gio-2.0 \
1222012210 # Put the nasty error message in config.log where it belongs
1222112211 echo "$DEPS_PKG_ERRORS" >&5
1222212212
12223 as_fn_error $? "Package requirements (glib-2.0 >= 2.32 \
12213 as_fn_error $? "Package requirements (glib-2.0 >= 2.34 \
1222412214 gobject-2.0 \
1222512215 gmodule-2.0 \
1222612216 gio-2.0 \
1271812708 # VALA BINDINGS
1271912709 # ----------------------------------------------------------
1272012710
12721 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Vala plugin support is requested" >&5
12722 $as_echo_n "checking whether Vala plugin support is requested... " >&6; }
12723 # Check whether --enable-vala was given.
12724 if test "${enable_vala+set}" = set; then :
12725 enableval=$enable_vala; enable_vala=$enableval have_vala=$enableval
12726 else
12727 enable_vala=autodetect have_vala=yes
12728 fi
12729
12730 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_vala" >&5
12731 $as_echo "$enable_vala" >&6; }
12732 if test "x$enable_vala" != "xno"; then
12733 # Extract the first word of "valac", so it can be a program name with args.
12711 # Extract the first word of "valac", so it can be a program name with args.
1273412712 set dummy valac; ac_word=$2
1273512713 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
1273612714 $as_echo_n "checking for $ac_word... " >&6; }
1277012748 fi
1277112749
1277212750
12773 if test "x$VALAC" = "x"; then
12774 as_fn_error $? "No Vala compiler found." "$LINENO" 5
12775 fi
12776
12777 # Extract the first word of "vala-gen-introspect", so it can be a program name with args.
12751 # Extract the first word of "vala-gen-introspect", so it can be a program name with args.
1277812752 set dummy vala-gen-introspect; ac_word=$2
1277912753 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
1278012754 $as_echo_n "checking for $ac_word... " >&6; }
1281412788 fi
1281512789
1281612790
12817 if test "x$VALA_GEN_INTROSPECT" = "x"; then
12818 as_fn_error $? "Cannot find \"vala-gen-introspect\" in your PATH" "$LINENO" 5
12819 fi
12820
12821 # Extract the first word of "vapigen", so it can be a program name with args.
12791 # Extract the first word of "vapigen", so it can be a program name with args.
1282212792 set dummy vapigen; ac_word=$2
1282312793 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
1282412794 $as_echo_n "checking for $ac_word... " >&6; }
1285812828 fi
1285912829
1286012830
12861 if test "x$VAPIGEN" = "x"; then
12862 as_fn_error $? "Cannot fine \"vapigen\" in your PATH" "$LINENO" 5
12831
12832 # Check whether --enable-vala was given.
12833 if test "${enable_vala+set}" = set; then :
12834 enableval=$enable_vala;
12835 case "$enableval" in
12836 yes)
12837 if test "x$VALAC" = "x"; then
12838 as_fn_error $? "valac not found, install it or use --disable-vala" "$LINENO" 5
12839 fi
12840 if test "x$VALA_GEN_INTROSPECT" = "x"; then
12841 as_fn_error $? "vala-gen-introspect not found, install it or use --disable-vala" "$LINENO" 5
12842 fi
12843 if test "x$VAPIGEN" = "x"; then
12844 as_fn_error $? "vapigen not found, install it or use --disable-vala" "$LINENO" 5
12845 fi
12846 ;;
12847 no)
12848 enable_vala=no
12849 ;;
12850 esac
12851
12852 else
12853
12854 if test "x$VALAC" != "x" -a "x$VALA_GEN_INTROSPECT" != "x" -a "x$VAPIGEN" != "x"; then
12855 enable_vala=yes
12856 else
12857 enable_vala=no
1286312858 fi
12864 fi
12865 if test "x$enable_vala" != "xno"; then
12859
12860 fi
12861
12862
12863 if test "x$enable_vala" = "xyes"; then
1286612864 HAVE_VALA_TRUE=
1286712865 HAVE_VALA_FALSE='#'
1286812866 else
1455314551 # report actual input values of CONFIG_FILES etc. instead of their
1455414552 # values after options handling.
1455514553 ac_log="
14556 This file was extended by grilo $as_me 0.2.9, which was
14554 This file was extended by grilo $as_me 0.2.10, which was
1455714555 generated by GNU Autoconf 2.69. Invocation command line was
1455814556
1455914557 CONFIG_FILES = $CONFIG_FILES
1462014618 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
1462114619 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
1462214620 ac_cs_version="\\
14623 grilo config.status 0.2.9
14621 grilo config.status 0.2.10
1462414622 configured by $0, generated by GNU Autoconf 2.69,
1462514623 with options \\"\$ac_cs_config\\"
1462614624
88 m4_define([prj_gir_name], [Grilo])
99 m4_define([grl_major_version], [0])
1010 m4_define([grl_minor_version], [2])
11 m4_define([grl_micro_version], [9])
11 m4_define([grl_micro_version], [10])
1212 m4_define([prj_version], grl_major_version.grl_minor_version.grl_micro_version)
1313
1414 AC_INIT([prj_name],
5656 # Libtool library version, not to confuse with API version
5757 # see http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
5858
59 GRL_LT_VERSION=6:1:5
60 GRLNET_LT_VERSION=1:6:1
61 GRLPLS_LT_VERSION=0:1:0
59 GRL_LT_VERSION=7:0:6
60 GRLNET_LT_VERSION=1:7:1
61 GRLPLS_LT_VERSION=0:2:0
6262
6363 AC_SUBST([GRL_LT_VERSION])
6464 AC_SUBST([GRLNET_LT_VERSION])
101101 exec_prefix="${prefix}"
102102 fi
103103
104 if test "${libdir}" = '${exec_prefix}/lib'; then
105 case `uname -m` in
106 x86_64|ppc64|powerpc64)
107 libdir='${exec_prefix}/lib64'
108 ;;
109 *)
110 libdir='${exec_prefix}/lib'
111 ;;
112 esac
113 fi
114
115104 # Plugins directory
116105
117106 GRL_PLUGINS_DIR=`eval echo ${libdir}/${GRL_NAME}`
122111 # DEPENDENCIES
123112 # ----------------------------------------------------------
124113
125 PKG_CHECK_MODULES(DEPS, glib-2.0 >= 2.32 \
114 PKG_CHECK_MODULES(DEPS, glib-2.0 >= 2.34 \
126115 gobject-2.0 \
127116 gmodule-2.0 \
128117 gio-2.0 \
251240 # VALA BINDINGS
252241 # ----------------------------------------------------------
253242
254 AC_MSG_CHECKING([whether Vala plugin support is requested])
243 AC_PATH_PROG([VALAC], [valac])
244 AC_PATH_PROG([VALA_GEN_INTROSPECT], [vala-gen-introspect])
245 AC_PATH_PROG([VAPIGEN], [vapigen])
246
255247 AC_ARG_ENABLE([vala],
256 AS_HELP_STRING([--enable-vala],[Enable Vala plugin support]),
257 [enable_vala=$enableval have_vala=$enableval],
258 [enable_vala=autodetect have_vala=yes])
259 AC_MSG_RESULT([$enable_vala])
260 if test "x$enable_vala" != "xno"; then
261 AC_PATH_PROG([VALAC], [valac])
262 if test "x$VALAC" = "x"; then
263 AC_MSG_ERROR([No Vala compiler found.])
248 AS_HELP_STRING([--enable-vala],
249 [Enable Vala plugin support (default: auto)]),
250 [
251 case "$enableval" in
252 yes)
253 if test "x$VALAC" = "x"; then
254 AC_MSG_ERROR([valac not found, install it or use --disable-vala])
255 fi
256 if test "x$VALA_GEN_INTROSPECT" = "x"; then
257 AC_MSG_ERROR([vala-gen-introspect not found, install it or use --disable-vala])
258 fi
259 if test "x$VAPIGEN" = "x"; then
260 AC_MSG_ERROR([vapigen not found, install it or use --disable-vala])
261 fi
262 ;;
263 no)
264 enable_vala=no
265 ;;
266 esac
267 ],
268 [
269 if test "x$VALAC" != "x" -a "x$VALA_GEN_INTROSPECT" != "x" -a "x$VAPIGEN" != "x"; then
270 enable_vala=yes
271 else
272 enable_vala=no
264273 fi
265
266 AC_PATH_PROG([VALA_GEN_INTROSPECT], [vala-gen-introspect])
267 if test "x$VALA_GEN_INTROSPECT" = "x"; then
268 AC_MSG_ERROR([Cannot find "vala-gen-introspect" in your PATH])
269 fi
270
271 AC_PATH_PROG([VAPIGEN], [vapigen])
272 if test "x$VAPIGEN" = "x"; then
273 AC_MSG_ERROR([Cannot fine "vapigen" in your PATH])
274 fi
275 fi
276 AM_CONDITIONAL(HAVE_VALA, test "x$enable_vala" != "xno")
274 ])
275
276 AM_CONDITIONAL([HAVE_VALA], [test "x$enable_vala" = "xyes"])
277277
278278 # ----------------------------------------------------------
279279 # GTK-DOC
379379 grl_media_get_url
380380 grl_media_get_url_data
381381 grl_media_get_url_data_nth
382 grl_media_get_size
382383 grl_media_serialize
383384 grl_media_serialize_extended
384385 grl_media_set_author
409410 grl_media_set_title
410411 grl_media_set_url
411412 grl_media_set_url_data
413 grl_media_set_size
412414 grl_media_unserialize
413415 <SUBSECTION Standard>
414416 GRL_IS_MEDIA
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlCaps.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlCaps.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
1818 <a href="#GrlCaps.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
1919 </td>
2020 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlConfig.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlConfig.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
1818 <a href="#GrlConfig.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
1919 </td>
2020 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlData.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlData.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
1818 <a href="#GrlData.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
1919 </td>
2020 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
712712 <col class="parameters_description">
713713 <col width="200px" class="parameters_annotations">
714714 </colgroup>
715 <tbody><tr>
716 <td class="parameter_name"><p>data</p></td>
717 <td class="parameter_description"><p>data to inspect
718 <em class="parameter"><code>key</code></em>
719 (type GrlKeyID): key to use</p></td>
720 <td class="parameter_annotations"> </td>
721 </tr></tbody>
715 <tbody>
716 <tr>
717 <td class="parameter_name"><p>data</p></td>
718 <td class="parameter_description"><p>data to inspect</p></td>
719 <td class="parameter_annotations"> </td>
720 </tr>
721 <tr>
722 <td class="parameter_name"><p>key</p></td>
723 <td class="parameter_description"><p> key to use. </p></td>
724 <td class="parameter_annotations"><span class="annotation">[<acronym title="Override the parsed C type with given type."><span class="acronym">type</span></acronym> GrlKeyID]</span></td>
725 </tr>
726 </tbody>
722727 </table></div>
723728 </div>
724729 <div class="refsect3">
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlMedia.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlMedia.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
1818 <a href="#GrlMedia.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
1919 </td>
2020 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
381381 </tr>
382382 <tr>
383383 <td class="function_type">
384 <span class="returnvalue">gint</span>
385 </td>
386 <td class="function_name">
387 <a class="link" href="GrlMedia.html#grl-media-get-size" title="grl_media_get_size ()">grl_media_get_size</a> <span class="c_punctuation">()</span>
388 </td>
389 </tr>
390 <tr>
391 <td class="function_type">
384392 <span class="returnvalue">gchar</span> *
385393 </td>
386394 <td class="function_name">
617625 </td>
618626 <td class="function_name">
619627 <a class="link" href="GrlMedia.html#grl-media-set-url-data" title="grl_media_set_url_data ()">grl_media_set_url_data</a> <span class="c_punctuation">()</span>
628 </td>
629 </tr>
630 <tr>
631 <td class="function_type">
632 <span class="returnvalue">void</span>
633 </td>
634 <td class="function_name">
635 <a class="link" href="GrlMedia.html#grl-media-set-size" title="grl_media_set_size ()">grl_media_set_size</a> <span class="c_punctuation">()</span>
620636 </td>
621637 </tr>
622638 <tr>
21542170 </div>
21552171 <hr>
21562172 <div class="refsect2">
2173 <a name="grl-media-get-size"></a><h3>grl_media_get_size ()</h3>
2174 <pre class="programlisting"><span class="returnvalue">gint</span>
2175 grl_media_get_size (<em class="parameter"><code><a class="link" href="GrlMedia.html" title="GrlMedia"><span class="type">GrlMedia</span></a> *media</code></em>);</pre>
2176 <div class="refsect3">
2177 <a name="id-1.5.8.4.8.48.4"></a><h4>Parameters</h4>
2178 <div class="informaltable"><table width="100%" border="0">
2179 <colgroup>
2180 <col width="150px" class="parameters_name">
2181 <col class="parameters_description">
2182 <col width="200px" class="parameters_annotations">
2183 </colgroup>
2184 <tbody><tr>
2185 <td class="parameter_name"><p>media</p></td>
2186 <td class="parameter_description"><p>the media object</p></td>
2187 <td class="parameter_annotations"> </td>
2188 </tr></tbody>
2189 </table></div>
2190 </div>
2191 <div class="refsect3">
2192 <a name="id-1.5.8.4.8.48.5"></a><h4>Returns</h4>
2193 <p> the media's size, in bytes or -1 if unknown.</p>
2194 <p></p>
2195 </div>
2196 <p class="since">Since 0.2.10</p>
2197 </div>
2198 <hr>
2199 <div class="refsect2">
21572200 <a name="grl-media-serialize"></a><h3>grl_media_serialize ()</h3>
21582201 <pre class="programlisting"><span class="returnvalue">gchar</span> *
21592202 grl_media_serialize (<em class="parameter"><code><a class="link" href="GrlMedia.html" title="GrlMedia"><span class="type">GrlMedia</span></a> *media</code></em>);</pre>
21602203 <p>Serializes a GrlMedia into a string. It does a basic serialization.</p>
21612204 <p>See <a class="link" href="GrlMedia.html#grl-media-serialize-extended" title="grl_media_serialize_extended ()"><code class="function">grl_media_serialize_extended()</code></a> to get more serialization approaches.</p>
21622205 <div class="refsect3">
2163 <a name="id-1.5.8.4.8.48.6"></a><h4>Parameters</h4>
2206 <a name="id-1.5.8.4.8.49.6"></a><h4>Parameters</h4>
21642207 <div class="informaltable"><table width="100%" border="0">
21652208 <colgroup>
21662209 <col width="150px" class="parameters_name">
21752218 </table></div>
21762219 </div>
21772220 <div class="refsect3">
2178 <a name="id-1.5.8.4.8.48.7"></a><h4>Returns</h4>
2221 <a name="id-1.5.8.4.8.49.7"></a><h4>Returns</h4>
21792222 <p> serialized media</p>
21802223 <p></p>
21812224 </div>
21962239 with the properties to consider in serialization (id and source are
21972240 always considered).</p>
21982241 <div class="refsect3">
2199 <a name="id-1.5.8.4.8.49.7"></a><h4>Parameters</h4>
2242 <a name="id-1.5.8.4.8.50.7"></a><h4>Parameters</h4>
22002243 <div class="informaltable"><table width="100%" border="0">
22012244 <colgroup>
22022245 <col width="150px" class="parameters_name">
22232266 </table></div>
22242267 </div>
22252268 <div class="refsect3">
2226 <a name="id-1.5.8.4.8.49.8"></a><h4>Returns</h4>
2269 <a name="id-1.5.8.4.8.50.8"></a><h4>Returns</h4>
22272270 <p> serialized media</p>
22282271 <p></p>
22292272 </div>
22372280 <em class="parameter"><code>const <span class="type">gchar</span> *author</code></em>);</pre>
22382281 <p>Set the media's author</p>
22392282 <div class="refsect3">
2240 <a name="id-1.5.8.4.8.50.5"></a><h4>Parameters</h4>
2283 <a name="id-1.5.8.4.8.51.5"></a><h4>Parameters</h4>
22412284 <div class="informaltable"><table width="100%" border="0">
22422285 <colgroup>
22432286 <col width="150px" class="parameters_name">
22712314 age certificate. Use <a class="link" href="GrlMedia.html#grl-media-set-region-data" title="grl_media_set_region_data ()"><code class="function">grl_media_set_region_data()</code></a> to
22722315 set other age certificates.</p>
22732316 <div class="refsect3">
2274 <a name="id-1.5.8.4.8.51.5"></a><h4>Parameters</h4>
2317 <a name="id-1.5.8.4.8.52.5"></a><h4>Parameters</h4>
22752318 <div class="informaltable"><table width="100%" border="0">
22762319 <colgroup>
22772320 <col width="150px" class="parameters_name">
23022345 <em class="parameter"><code>const <span class="type">GDateTime</span> *creation_date</code></em>);</pre>
23032346 <p>Set the creation_date of the media</p>
23042347 <div class="refsect3">
2305 <a name="id-1.5.8.4.8.52.5"></a><h4>Parameters</h4>
2348 <a name="id-1.5.8.4.8.53.5"></a><h4>Parameters</h4>
23062349 <div class="informaltable"><table width="100%" border="0">
23072350 <colgroup>
23082351 <col width="150px" class="parameters_name">
23332376 <em class="parameter"><code>const <span class="type">gchar</span> *description</code></em>);</pre>
23342377 <p>Set the media's description</p>
23352378 <div class="refsect3">
2336 <a name="id-1.5.8.4.8.53.5"></a><h4>Parameters</h4>
2379 <a name="id-1.5.8.4.8.54.5"></a><h4>Parameters</h4>
23372380 <div class="informaltable"><table width="100%" border="0">
23382381 <colgroup>
23392382 <col width="150px" class="parameters_name">
23642407 <em class="parameter"><code><span class="type">gint</span> duration</code></em>);</pre>
23652408 <p>Set the media's duration</p>
23662409 <div class="refsect3">
2367 <a name="id-1.5.8.4.8.54.5"></a><h4>Parameters</h4>
2410 <a name="id-1.5.8.4.8.55.5"></a><h4>Parameters</h4>
23682411 <div class="informaltable"><table width="100%" border="0">
23692412 <colgroup>
23702413 <col width="150px" class="parameters_name">
23952438 <em class="parameter"><code>const <span class="type">gchar</span> *player</code></em>);</pre>
23962439 <p>Set the location of a player for the media (usually a flash player)</p>
23972440 <div class="refsect3">
2398 <a name="id-1.5.8.4.8.55.5"></a><h4>Parameters</h4>
2441 <a name="id-1.5.8.4.8.56.5"></a><h4>Parameters</h4>
23992442 <div class="informaltable"><table width="100%" border="0">
24002443 <colgroup>
24012444 <col width="150px" class="parameters_name">
24262469 <em class="parameter"><code>const <span class="type">gchar</span> *url</code></em>);</pre>
24272470 <p>Set an external location where users can play the media</p>
24282471 <div class="refsect3">
2429 <a name="id-1.5.8.4.8.56.5"></a><h4>Parameters</h4>
2472 <a name="id-1.5.8.4.8.57.5"></a><h4>Parameters</h4>
24302473 <div class="informaltable"><table width="100%" border="0">
24312474 <colgroup>
24322475 <col width="150px" class="parameters_name">
24572500 <em class="parameter"><code><span class="type">gboolean</span> favourite</code></em>);</pre>
24582501 <p>Set if the media is favourite or not</p>
24592502 <div class="refsect3">
2460 <a name="id-1.5.8.4.8.57.5"></a><h4>Parameters</h4>
2503 <a name="id-1.5.8.4.8.58.5"></a><h4>Parameters</h4>
24612504 <div class="informaltable"><table width="100%" border="0">
24622505 <colgroup>
24632506 <col width="150px" class="parameters_name">
24882531 <em class="parameter"><code>const <span class="type">gchar</span> *id</code></em>);</pre>
24892532 <p>Set the media identifier</p>
24902533 <div class="refsect3">
2491 <a name="id-1.5.8.4.8.58.5"></a><h4>Parameters</h4>
2534 <a name="id-1.5.8.4.8.59.5"></a><h4>Parameters</h4>
24922535 <div class="informaltable"><table width="100%" border="0">
24932536 <colgroup>
24942537 <col width="150px" class="parameters_name">
25202563 <p>Sets the keyword describing the <em class="parameter"><code>media</code></em>
25212564 .</p>
25222565 <div class="refsect3">
2523 <a name="id-1.5.8.4.8.59.5"></a><h4>Parameters</h4>
2566 <a name="id-1.5.8.4.8.60.5"></a><h4>Parameters</h4>
25242567 <div class="informaltable"><table width="100%" border="0">
25252568 <colgroup>
25262569 <col width="150px" class="parameters_name">
25512594 <em class="parameter"><code>const <span class="type">gchar</span> *last_played</code></em>);</pre>
25522595 <p>Set the media last played date</p>
25532596 <div class="refsect3">
2554 <a name="id-1.5.8.4.8.60.5"></a><h4>Parameters</h4>
2597 <a name="id-1.5.8.4.8.61.5"></a><h4>Parameters</h4>
25552598 <div class="informaltable"><table width="100%" border="0">
25562599 <colgroup>
25572600 <col width="150px" class="parameters_name">
25822625 <em class="parameter"><code><span class="type">gint</span> last_position</code></em>);</pre>
25832626 <p>Set the media last played position</p>
25842627 <div class="refsect3">
2585 <a name="id-1.5.8.4.8.61.5"></a><h4>Parameters</h4>
2628 <a name="id-1.5.8.4.8.62.5"></a><h4>Parameters</h4>
25862629 <div class="informaltable"><table width="100%" border="0">
25872630 <colgroup>
25882631 <col width="150px" class="parameters_name">
26132656 <em class="parameter"><code>const <span class="type">gchar</span> *license</code></em>);</pre>
26142657 <p>Set the media license</p>
26152658 <div class="refsect3">
2616 <a name="id-1.5.8.4.8.62.5"></a><h4>Parameters</h4>
2659 <a name="id-1.5.8.4.8.63.5"></a><h4>Parameters</h4>
26172660 <div class="informaltable"><table width="100%" border="0">
26182661 <colgroup>
26192662 <col width="150px" class="parameters_name">
26442687 <em class="parameter"><code>const <span class="type">gchar</span> *mime</code></em>);</pre>
26452688 <p>Set the media's mime-type</p>
26462689 <div class="refsect3">
2647 <a name="id-1.5.8.4.8.63.5"></a><h4>Parameters</h4>
2690 <a name="id-1.5.8.4.8.64.5"></a><h4>Parameters</h4>
26482691 <div class="informaltable"><table width="100%" border="0">
26492692 <colgroup>
26502693 <col width="150px" class="parameters_name">
26752718 <em class="parameter"><code>const <span class="type">GDateTime</span> *modification_date</code></em>);</pre>
26762719 <p>Set the modification date of the media</p>
26772720 <div class="refsect3">
2678 <a name="id-1.5.8.4.8.64.5"></a><h4>Parameters</h4>
2721 <a name="id-1.5.8.4.8.65.5"></a><h4>Parameters</h4>
26792722 <div class="informaltable"><table width="100%" border="0">
26802723 <colgroup>
26812724 <col width="150px" class="parameters_name">
27062749 <em class="parameter"><code><span class="type">gint</span> play_count</code></em>);</pre>
27072750 <p>Set the media play count</p>
27082751 <div class="refsect3">
2709 <a name="id-1.5.8.4.8.65.5"></a><h4>Parameters</h4>
2752 <a name="id-1.5.8.4.8.66.5"></a><h4>Parameters</h4>
27102753 <div class="informaltable"><table width="100%" border="0">
27112754 <colgroup>
27122755 <col width="150px" class="parameters_name">
27382781 <p>Set the publication date of <em class="parameter"><code>media</code></em>
27392782 .</p>
27402783 <div class="refsect3">
2741 <a name="id-1.5.8.4.8.66.5"></a><h4>Parameters</h4>
2784 <a name="id-1.5.8.4.8.67.5"></a><h4>Parameters</h4>
27422785 <div class="informaltable"><table width="100%" border="0">
27432786 <colgroup>
27442787 <col width="150px" class="parameters_name">
27712814 <p>This method receives a rating and its scale and normalizes it on a scale
27722815 from 0...5 to match the usual five-star rating.</p>
27732816 <div class="refsect3">
2774 <a name="id-1.5.8.4.8.67.5"></a><h4>Parameters</h4>
2817 <a name="id-1.5.8.4.8.68.5"></a><h4>Parameters</h4>
27752818 <div class="informaltable"><table width="100%" border="0">
27762819 <colgroup>
27772820 <col width="150px" class="parameters_name">
28092852 where <em class="parameter"><code>media</code></em>
28102853 was published.</p>
28112854 <div class="refsect3">
2812 <a name="id-1.5.8.4.8.68.5"></a><h4>Parameters</h4>
2855 <a name="id-1.5.8.4.8.69.5"></a><h4>Parameters</h4>
28132856 <div class="informaltable"><table width="100%" border="0">
28142857 <colgroup>
28152858 <col width="150px" class="parameters_name">
28432886 <p>Sets regional publication and certification information for <em class="parameter"><code>region</code></em>
28442887 .</p>
28452888 <div class="refsect3">
2846 <a name="id-1.5.8.4.8.69.5"></a><h4>Parameters</h4>
2889 <a name="id-1.5.8.4.8.70.5"></a><h4>Parameters</h4>
28472890 <div class="informaltable"><table width="100%" border="0">
28482891 <colgroup>
28492892 <col width="150px" class="parameters_name">
28852928 <p>Set the media's site. A site is a website about the media such as a
28862929 studio's promotional website for a movie.</p>
28872930 <div class="refsect3">
2888 <a name="id-1.5.8.4.8.70.5"></a><h4>Parameters</h4>
2931 <a name="id-1.5.8.4.8.71.5"></a><h4>Parameters</h4>
28892932 <div class="informaltable"><table width="100%" border="0">
28902933 <colgroup>
28912934 <col width="150px" class="parameters_name">
29162959 <em class="parameter"><code>const <span class="type">gchar</span> *source</code></em>);</pre>
29172960 <p>Set the media's source</p>
29182961 <div class="refsect3">
2919 <a name="id-1.5.8.4.8.71.5"></a><h4>Parameters</h4>
2962 <a name="id-1.5.8.4.8.72.5"></a><h4>Parameters</h4>
29202963 <div class="informaltable"><table width="100%" border="0">
29212964 <colgroup>
29222965 <col width="150px" class="parameters_name">
29472990 <em class="parameter"><code>const <span class="type">gchar</span> *studio</code></em>);</pre>
29482991 <p>Set the media studio</p>
29492992 <div class="refsect3">
2950 <a name="id-1.5.8.4.8.72.5"></a><h4>Parameters</h4>
2993 <a name="id-1.5.8.4.8.73.5"></a><h4>Parameters</h4>
29512994 <div class="informaltable"><table width="100%" border="0">
29522995 <colgroup>
29532996 <col width="150px" class="parameters_name">
29783021 <em class="parameter"><code>const <span class="type">gchar</span> *thumbnail</code></em>);</pre>
29793022 <p>Set the media's thumbnail URL</p>
29803023 <div class="refsect3">
2981 <a name="id-1.5.8.4.8.73.5"></a><h4>Parameters</h4>
3024 <a name="id-1.5.8.4.8.74.5"></a><h4>Parameters</h4>
29823025 <div class="informaltable"><table width="100%" border="0">
29833026 <colgroup>
29843027 <col width="150px" class="parameters_name">
30103053 <em class="parameter"><code><span class="type">gsize</span> size</code></em>);</pre>
30113054 <p>Set the media's binary thumbnail</p>
30123055 <div class="refsect3">
3013 <a name="id-1.5.8.4.8.74.5"></a><h4>Parameters</h4>
3056 <a name="id-1.5.8.4.8.75.5"></a><h4>Parameters</h4>
30143057 <div class="informaltable"><table width="100%" border="0">
30153058 <colgroup>
30163059 <col width="150px" class="parameters_name">
30463089 <em class="parameter"><code>const <span class="type">gchar</span> *title</code></em>);</pre>
30473090 <p>Set the media's title</p>
30483091 <div class="refsect3">
3049 <a name="id-1.5.8.4.8.75.5"></a><h4>Parameters</h4>
3092 <a name="id-1.5.8.4.8.76.5"></a><h4>Parameters</h4>
30503093 <div class="informaltable"><table width="100%" border="0">
30513094 <colgroup>
30523095 <col width="150px" class="parameters_name">
30773120 <em class="parameter"><code>const <span class="type">gchar</span> *url</code></em>);</pre>
30783121 <p>Set the media's URL</p>
30793122 <div class="refsect3">
3080 <a name="id-1.5.8.4.8.76.5"></a><h4>Parameters</h4>
3123 <a name="id-1.5.8.4.8.77.5"></a><h4>Parameters</h4>
30813124 <div class="informaltable"><table width="100%" border="0">
30823125 <colgroup>
30833126 <col width="150px" class="parameters_name">
31093152 <em class="parameter"><code>const <span class="type">gchar</span> *mime</code></em>);</pre>
31103153 <p>Set the media's URL and its mime-type.</p>
31113154 <div class="refsect3">
3112 <a name="id-1.5.8.4.8.77.5"></a><h4>Parameters</h4>
3155 <a name="id-1.5.8.4.8.78.5"></a><h4>Parameters</h4>
31133156 <div class="informaltable"><table width="100%" border="0">
31143157 <colgroup>
31153158 <col width="150px" class="parameters_name">
31373180 </table></div>
31383181 </div>
31393182 <p class="since">Since 0.1.10</p>
3183 </div>
3184 <hr>
3185 <div class="refsect2">
3186 <a name="grl-media-set-size"></a><h3>grl_media_set_size ()</h3>
3187 <pre class="programlisting"><span class="returnvalue">void</span>
3188 grl_media_set_size (<em class="parameter"><code><a class="link" href="GrlMedia.html" title="GrlMedia"><span class="type">GrlMedia</span></a> *media</code></em>,
3189 <em class="parameter"><code><span class="type">gint</span> size</code></em>);</pre>
3190 <p>Set the size of the media</p>
3191 <div class="refsect3">
3192 <a name="id-1.5.8.4.8.79.5"></a><h4>Parameters</h4>
3193 <div class="informaltable"><table width="100%" border="0">
3194 <colgroup>
3195 <col width="150px" class="parameters_name">
3196 <col class="parameters_description">
3197 <col width="200px" class="parameters_annotations">
3198 </colgroup>
3199 <tbody>
3200 <tr>
3201 <td class="parameter_name"><p>media</p></td>
3202 <td class="parameter_description"><p>the media</p></td>
3203 <td class="parameter_annotations"> </td>
3204 </tr>
3205 <tr>
3206 <td class="parameter_name"><p>size</p></td>
3207 <td class="parameter_description"><p>the size in bytes</p></td>
3208 <td class="parameter_annotations"> </td>
3209 </tr>
3210 </tbody>
3211 </table></div>
3212 </div>
3213 <p class="since">Since 0.2.10</p>
31403214 </div>
31413215 <hr>
31423216 <div class="refsect2">
31453219 grl_media_unserialize (<em class="parameter"><code>const <span class="type">gchar</span> *serial</code></em>);</pre>
31463220 <p>Unserializes a GrlMedia.</p>
31473221 <div class="refsect3">
3148 <a name="id-1.5.8.4.8.78.5"></a><h4>Parameters</h4>
3222 <a name="id-1.5.8.4.8.80.5"></a><h4>Parameters</h4>
31493223 <div class="informaltable"><table width="100%" border="0">
31503224 <colgroup>
31513225 <col width="150px" class="parameters_name">
31603234 </table></div>
31613235 </div>
31623236 <div class="refsect3">
3163 <a name="id-1.5.8.4.8.78.6"></a><h4>Returns</h4>
3237 <a name="id-1.5.8.4.8.80.6"></a><h4>Returns</h4>
31643238 <p> the GrlMedia from the serial. </p>
31653239 <p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
31663240 </div>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlMediaAudio.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlMediaAudio.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
1818 <a href="#GrlMediaAudio.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
1919 </td>
2020 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlMediaBox.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlMediaBox.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
1818 <a href="#GrlMediaBox.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
1919 </td>
2020 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlMediaImage.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlMediaImage.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
1818 <a href="#GrlMediaImage.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
1919 </td>
2020 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlMediaVideo.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlMediaVideo.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
1818 <a href="#GrlMediaVideo.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
1919 </td>
2020 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlOperationOptions.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlOperationOptions.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
1818 <a href="#GrlOperationOptions.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
1919 </td>
2020 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlPlugin.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#GrlPlugin.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlPlugin.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
18 <a href="#GrlPlugin.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
1919 <a href="#GrlPlugin.properties" class="shortcut">Properties</a></span>
2020 </td>
2121 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlRegistry.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#GrlRegistry.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_signals"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlRegistry.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
18 <a href="#GrlRegistry.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_signals">  <span class="dim">|</span> 
1919 <a href="#GrlRegistry.signals" class="shortcut">Signals</a></span>
2020 </td>
2121 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
263263 <col width="200px" class="signals_flags">
264264 </colgroup>
265265 <tbody>
266 <tr>
267 <td class="signal_type"><span class="returnvalue">void</span></td>
268 <td class="signal_name"><a class="link" href="GrlRegistry.html#GrlRegistry-metadata-key-added" title="The “metadata-key-added” signal">metadata-key-added</a></td>
269 <td class="signal_flags">Action</td>
270 </tr>
266271 <tr>
267272 <td class="signal_type"><span class="returnvalue">void</span></td>
268273 <td class="signal_name"><a class="link" href="GrlRegistry.html#GrlRegistry-source-added" title="The “source-added” signal">source-added</a></td>
15281533 <div class="refsect1">
15291534 <a name="GrlRegistry.signal-details"></a><h2>Signal Details</h2>
15301535 <div class="refsect2">
1536 <a name="GrlRegistry-metadata-key-added"></a><h3>The <code class="literal">“metadata-key-added”</code> signal</h3>
1537 <pre class="programlisting"><span class="returnvalue">void</span>
1538 user_function (<a class="link" href="GrlRegistry.html" title="GrlRegistry"><span class="type">GrlRegistry</span></a> *registry,
1539 <span class="type">gchar</span> *key,
1540 <span class="type">gpointer</span> user_data)</pre>
1541 <p>Signals that a new metadata key has been registered.</p>
1542 <div class="refsect3">
1543 <a name="id-1.5.3.2.11.2.5"></a><h4>Parameters</h4>
1544 <div class="informaltable"><table width="100%" border="0">
1545 <colgroup>
1546 <col width="150px" class="parameters_name">
1547 <col class="parameters_description">
1548 <col width="200px" class="parameters_annotations">
1549 </colgroup>
1550 <tbody>
1551 <tr>
1552 <td class="parameter_name"><p>registry</p></td>
1553 <td class="parameter_description"><p>the registry</p></td>
1554 <td class="parameter_annotations"> </td>
1555 </tr>
1556 <tr>
1557 <td class="parameter_name"><p>key</p></td>
1558 <td class="parameter_description"><p>the name of the new key added</p></td>
1559 <td class="parameter_annotations"> </td>
1560 </tr>
1561 <tr>
1562 <td class="parameter_name"><p>user_data</p></td>
1563 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1564 <td class="parameter_annotations"> </td>
1565 </tr>
1566 </tbody>
1567 </table></div>
1568 </div>
1569 <p>Flags: Action</p>
1570 <p class="since">Since 0.2.10</p>
1571 </div>
1572 <hr>
1573 <div class="refsect2">
15311574 <a name="GrlRegistry-source-added"></a><h3>The <code class="literal">“source-added”</code> signal</h3>
15321575 <pre class="programlisting"><span class="returnvalue">void</span>
15331576 user_function (<a class="link" href="GrlRegistry.html" title="GrlRegistry"><span class="type">GrlRegistry</span></a> *registry,
15351578 <span class="type">gpointer</span> user_data)</pre>
15361579 <p>Signals that a source has been added to the registry.</p>
15371580 <div class="refsect3">
1538 <a name="id-1.5.3.2.11.2.5"></a><h4>Parameters</h4>
1581 <a name="id-1.5.3.2.11.3.5"></a><h4>Parameters</h4>
15391582 <div class="informaltable"><table width="100%" border="0">
15401583 <colgroup>
15411584 <col width="150px" class="parameters_name">
15731616 <span class="type">gpointer</span> user_data)</pre>
15741617 <p>Signals that a source has been removed from the registry.</p>
15751618 <div class="refsect3">
1576 <a name="id-1.5.3.2.11.3.5"></a><h4>Parameters</h4>
1619 <a name="id-1.5.3.2.11.4.5"></a><h4>Parameters</h4>
15771620 <div class="informaltable"><table width="100%" border="0">
15781621 <colgroup>
15791622 <col width="150px" class="parameters_name">
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlRelatedKeys.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlRelatedKeys.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
1818 <a href="#GrlRelatedKeys.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
1919 </td>
2020 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#GrlSource.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#GrlSource.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
19 <a href="#GrlSource.properties" class="shortcut">Properties</a></span><span id="nav_signals"> <span class="dim">|</span> 
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#GrlSource.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
18 <a href="#GrlSource.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span> 
19 <a href="#GrlSource.properties" class="shortcut">Properties</a></span><span id="nav_signals">  <span class="dim">|</span> 
2020 <a href="#GrlSource.signals" class="shortcut">Signals</a></span>
2121 </td>
2222 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
405405 <td class="property_type">
406406 <span class="type">gchar</span> *</td>
407407 <td class="property_name"><a class="link" href="GrlSource.html#GrlSource--source-name" title="The “source-name” property">source-name</a></td>
408 <td class="property_flags">Read / Write / Construct</td>
409 </tr>
410 <tr>
411 <td class="property_type"><span class="type">GStrv</span></td>
412 <td class="property_name"><a class="link" href="GrlSource.html#GrlSource--source-tags" title="The “source-tags” property">source-tags</a></td>
408413 <td class="property_flags">Read / Write / Construct</td>
409414 </tr>
410415 <tr>
33173322 </div>
33183323 <hr>
33193324 <div class="refsect2">
3325 <a name="GrlSource--source-tags"></a><h3>The <code class="literal">“source-tags”</code> property</h3>
3326 <pre class="programlisting"> “source-tags” <span class="type">GStrv</span></pre>
3327 <p>A string array of tags relevant this source.</p>
3328 <p>The tags are arbitrary, and applications should just pass over the tags
3329 it does not understand. Applications would usually use this to either
3330 group sources together, or hide certain sources: a radio application
3331 would filter for <a class="link" href="GrlMedia.html#GRL-MEDIA-TYPE-AUDIO:CAPS"><code class="literal">GRL_MEDIA_TYPE_AUDIO</code></a> in GrlSource::supported-media as
3332 well as "radio" being listed in the tags.</p>
3333 <p>To avoid irrelevant content being listed in applications, sources
3334 such as generic video sites should not be tagged as "cinema" or
3335 "tv" as they contain a lot of content that's not either of those.</p>
3336 <p>This is a list of commonly used values:</p>
3337 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
3338 <li class="listitem"><p>"cinema", or "tv"
3339 The content served is from cinema or TV sources. For example, a
3340 source for movie trailers would select the former, a source for
3341 streaming live TV would select the latter.</p></li>
3342 <li class="listitem"><p>"radio"
3343 The content served is from streaming radios.</p></li>
3344 <li class="listitem"><p>"music"
3345 The content served is music, for example, music stores such as
3346 Jamendo or Magnatune.</p></li>
3347 <li class="listitem"><p>"country:country-code"
3348 The content is mostly relevant to users from a particular country,
3349 such as a national broadcaster. For example, BBC content would be
3350 tagged as "country:uk". Country codes should be an ISO-639-1 or
3351 ISO-639-2 code.</p></li>
3352 <li class="listitem"><p>"protocol:protocol-name"
3353 The content browsing or searching uses a particular protocol, such
3354 as DLNA/UPnP or DMAP/DAAP. This makes it easier to whitelist or
3355 blacklist sources rather than matching the implementation specific
3356 source ID. Examples are "protocol:dlna" and "protocol:dmap".</p></li>
3357 <li class="listitem"><p>"localhost", or "localuser"
3358 The content is served from the machine the application is running on,
3359 or by an application the user is running. Applications might choose to
3360 avoid showing the user's own data in their interfaces, or integrate it
3361 in the user's local collection.</p></li>
3362 </ul></div>
3363 <p>Flags: Read / Write / Construct</p>
3364 <p class="since">Since 0.2.10</p>
3365 </div>
3366 <hr>
3367 <div class="refsect2">
33203368 <a name="GrlSource--supported-media"></a><h3>The <code class="literal">“supported-media”</code> property</h3>
33213369 <pre class="programlisting"> “supported-media” <a class="link" href="GrlMedia.html#GrlMediaType" title="enum GrlMediaType"><span class="type">GrlMediaType</span></a></pre>
33223370 <p>List of supported media types by this source.</p>
1010 <link rel="stylesheet" href="style.css" type="text/css">
1111 </head>
1212 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
13 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1414 <td width="100%" align="left" class="shortcuts"><span id="nav_glossary"><a class="shortcut" href="#glsA">A</a>
1515  <span class="dim">|</span> 
1616 <a class="shortcut" href="#glsE">E</a>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"><span id="nav_index"><a class="shortcut" href="#idxC">C</a>
1616  <span class="dim">|</span> 
1717 <a class="shortcut" href="#idxD">D</a>
454454 </dt>
455455 <dd></dd>
456456 <dt>
457 <a class="link" href="grilo-grl-log.html#grl-log" title="grl_log ()">grl_log</a>, function in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>
458 </dt>
459 <dd></dd>
460 <dt>
457461 <a class="link" href="grilo-grl-log.html#GRL-LOG:CAPS" title="GRL_LOG()">GRL_LOG</a>, macro in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>
458462 </dt>
459463 <dd></dd>
460464 <dt>
461 <a class="link" href="grilo-grl-log.html#grl-log" title="grl_log ()">grl_log</a>, function in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>
462 </dt>
463 <dd></dd>
464 <dt>
465465 <a class="link" href="grilo-grl-log.html#GrlLogDomain" title="GrlLogDomain">GrlLogDomain</a>, struct in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>
466466 </dt>
467467 <dd></dd>
486486 </dt>
487487 <dd></dd>
488488 <dt>
489 <a class="link" href="grilo-grl-log.html#grl-log-domain-free" title="grl_log_domain_free ()">grl_log_domain_free</a>, function in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>
490 </dt>
491 <dd></dd>
492 <dt>
489493 <a class="link" href="grilo-grl-log.html#GRL-LOG-DOMAIN-FREE:CAPS" title="GRL_LOG_DOMAIN_FREE()">GRL_LOG_DOMAIN_FREE</a>, macro in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>
490494 </dt>
491495 <dd></dd>
492496 <dt>
493 <a class="link" href="grilo-grl-log.html#grl-log-domain-free" title="grl_log_domain_free ()">grl_log_domain_free</a>, function in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>
494 </dt>
495 <dd></dd>
496 <dt>
497497 <a class="link" href="grilo-grl-log.html#GRL-LOG-DOMAIN-INIT:CAPS" title="GRL_LOG_DOMAIN_INIT()">GRL_LOG_DOMAIN_INIT</a>, macro in <a class="link" href="grilo-grl-log.html" title="grl-log">grl-log</a>
498498 </dt>
499499 <dd></dd>
795795 </dt>
796796 <dd></dd>
797797 <dt>
798 <a class="link" href="GrlMedia.html#grl-media-get-size" title="grl_media_get_size ()">grl_media_get_size</a>, function in <a class="link" href="GrlMedia.html" title="GrlMedia">GrlMedia</a>
799 </dt>
800 <dd></dd>
801 <dt>
798802 <a class="link" href="GrlMedia.html#grl-media-get-source" title="grl_media_get_source ()">grl_media_get_source</a>, function in <a class="link" href="GrlMedia.html" title="GrlMedia">GrlMedia</a>
799803 </dt>
800804 <dd></dd>
10151019 </dt>
10161020 <dd></dd>
10171021 <dt>
1022 <a class="link" href="GrlMedia.html#grl-media-set-size" title="grl_media_set_size ()">grl_media_set_size</a>, function in <a class="link" href="GrlMedia.html" title="GrlMedia">GrlMedia</a>
1023 </dt>
1024 <dd></dd>
1025 <dt>
10181026 <a class="link" href="GrlMedia.html#grl-media-set-source" title="grl_media_set_source ()">grl_media_set_source</a>, function in <a class="link" href="GrlMedia.html" title="GrlMedia">GrlMedia</a>
10191027 </dt>
10201028 <dd></dd>
12591267 </dt>
12601268 <dd></dd>
12611269 <dt>
1270 <a class="link" href="grilo-grl-metadata-key.html#grl-metadata-key-get-desc" title="grl_metadata_key_get_desc ()">grl_metadata_key_get_desc</a>, function in <a class="link" href="grilo-grl-metadata-key.html" title="grl-metadata-key">grl-metadata-key</a>
1271 </dt>
1272 <dd></dd>
1273 <dt>
12621274 <a class="link" href="grilo-grl-metadata-key.html#GRL-METADATA-KEY-GET-DESC:CAPS" title="GRL_METADATA_KEY_GET_DESC()">GRL_METADATA_KEY_GET_DESC</a>, macro in <a class="link" href="grilo-grl-metadata-key.html" title="grl-metadata-key">grl-metadata-key</a>
12631275 </dt>
12641276 <dd></dd>
12651277 <dt>
1266 <a class="link" href="grilo-grl-metadata-key.html#grl-metadata-key-get-desc" title="grl_metadata_key_get_desc ()">grl_metadata_key_get_desc</a>, function in <a class="link" href="grilo-grl-metadata-key.html" title="grl-metadata-key">grl-metadata-key</a>
1267 </dt>
1268 <dd></dd>
1269 <dt>
12701278 <a class="link" href="grilo-grl-metadata-key.html#GRL-METADATA-KEY-GET-ID:CAPS" title="GRL_METADATA_KEY_GET_ID()">GRL_METADATA_KEY_GET_ID</a>, macro in <a class="link" href="grilo-grl-metadata-key.html" title="grl-metadata-key">grl-metadata-key</a>
12711279 </dt>
12721280 <dd></dd>
12791287 </dt>
12801288 <dd></dd>
12811289 <dt>
1290 <a class="link" href="grilo-grl-metadata-key.html#grl-metadata-key-get-type" title="grl_metadata_key_get_type ()">grl_metadata_key_get_type</a>, function in <a class="link" href="grilo-grl-metadata-key.html" title="grl-metadata-key">grl-metadata-key</a>
1291 </dt>
1292 <dd></dd>
1293 <dt>
12821294 <a class="link" href="grilo-grl-metadata-key.html#GRL-METADATA-KEY-GET-TYPE:CAPS" title="GRL_METADATA_KEY_GET_TYPE()">GRL_METADATA_KEY_GET_TYPE</a>, macro in <a class="link" href="grilo-grl-metadata-key.html" title="grl-metadata-key">grl-metadata-key</a>
12831295 </dt>
12841296 <dd></dd>
12851297 <dt>
1286 <a class="link" href="grilo-grl-metadata-key.html#grl-metadata-key-get-type" title="grl_metadata_key_get_type ()">grl_metadata_key_get_type</a>, function in <a class="link" href="grilo-grl-metadata-key.html" title="grl-metadata-key">grl-metadata-key</a>
1287 </dt>
1288 <dd></dd>
1289 <dt>
12901298 <a class="link" href="grilo-grl-metadata-key.html#GRL-METADATA-KEY-HEIGHT:CAPS" title="GRL_METADATA_KEY_HEIGHT">GRL_METADATA_KEY_HEIGHT</a>, macro in <a class="link" href="grilo-grl-metadata-key.html" title="grl-metadata-key">grl-metadata-key</a>
12911299 </dt>
12921300 <dd></dd>
17231731 </dt>
17241732 <dd></dd>
17251733 <dt>
1734 <a class="link" href="GrlRegistry.html#GrlRegistry-metadata-key-added" title="The “metadata-key-added” signal">GrlRegistry::metadata-key-added</a>, object signal in <a class="link" href="GrlRegistry.html" title="GrlRegistry">GrlRegistry</a>
1735 </dt>
1736 <dd></dd>
1737 <dt>
17261738 <a class="link" href="GrlRegistry.html#GrlRegistry-source-added" title="The “source-added” signal">GrlRegistry::source-added</a>, object signal in <a class="link" href="GrlRegistry.html" title="GrlRegistry">GrlRegistry</a>
17271739 </dt>
17281740 <dd></dd>
19691981 <dd></dd>
19701982 <dt>
19711983 <a class="link" href="GrlSource.html#GrlSource--source-name" title="The “source-name” property">GrlSource:source-name</a>, object property in <a class="link" href="GrlSource.html" title="GrlSource">GrlSource</a>
1984 </dt>
1985 <dd></dd>
1986 <dt>
1987 <a class="link" href="GrlSource.html#GrlSource--source-tags" title="The “source-tags” property">GrlSource:source-tags</a>, object property in <a class="link" href="GrlSource.html" title="GrlSource">GrlSource</a>
19721988 </dt>
19731989 <dd></dd>
19741990 <dt>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn03.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn03.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn03.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#grilo-GrlNetWc.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#grilo-GrlNetWc.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#grilo-GrlNetWc.description" class="shortcut">Description</a></span>
1918 </td>
2019 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
2120 <td><a accesskey="u" href="grilo-net.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
158157 </table></div>
159158 </div>
160159 <div class="refsect1">
161 <a name="grilo-GrlNetWc.object-hierarchy"></a><h2>Object Hierarchy</h2>
162 <pre class="screen">
163 </pre>
164 </div>
165 <div class="refsect1">
166160 <a name="grilo-GrlNetWc.includes"></a><h2>Includes</h2>
167161 <pre class="synopsis">#include &lt;grilo.h&gt;
168162 </pre>
181175 grl_net_wc_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
182176 <p>Creates a new <a class="link" href="grilo-GrlNetWc.html#GrlNetWc" title="struct GrlNetWc"><span class="type">GrlNetWc</span></a>.</p>
183177 <div class="refsect3">
184 <a name="id-1.6.4.2.8.2.5"></a><h4>Returns</h4>
178 <a name="id-1.6.4.2.7.2.5"></a><h4>Returns</h4>
185179 <p> a new allocated instance of <a class="link" href="grilo-GrlNetWc.html#GrlNetWc" title="struct GrlNetWc"><span class="type">GrlNetWc</span></a>. Do <code class="function">g_object_unref()</code> after
186180 use it.</p>
187181 <p></p>
200194 grl_net_wc_flush_delayed_requests (<em class="parameter"><code><a class="link" href="grilo-GrlNetWc.html#GrlNetWc" title="struct GrlNetWc"><span class="type">GrlNetWc</span></a> *self</code></em>);</pre>
201195 <p>This method will flush all the pending request in the queue.</p>
202196 <div class="refsect3">
203 <a name="id-1.6.4.2.8.4.5"></a><h4>Parameters</h4>
197 <a name="id-1.6.4.2.7.4.5"></a><h4>Parameters</h4>
204198 <div class="informaltable"><table width="100%" border="0">
205199 <colgroup>
206200 <col width="150px" class="parameters_name">
229223 asynchronous, thus the result will be returned within the <em class="parameter"><code>callback</code></em>
230224 .</p>
231225 <div class="refsect3">
232 <a name="id-1.6.4.2.8.5.5"></a><h4>Parameters</h4>
226 <a name="id-1.6.4.2.7.5.5"></a><h4>Parameters</h4>
233227 <div class="informaltable"><table width="100%" border="0">
234228 <colgroup>
235229 <col width="150px" class="parameters_name">
282276 <p>The content address will be invalidated at the next request. So if you
283277 want to keep it, please copy it into another address.</p>
284278 <div class="refsect3">
285 <a name="id-1.6.4.2.8.6.6"></a><h4>Parameters</h4>
279 <a name="id-1.6.4.2.7.6.6"></a><h4>Parameters</h4>
286280 <div class="informaltable"><table width="100%" border="0">
287281 <colgroup>
288282 <col width="150px" class="parameters_name">
320314 </table></div>
321315 </div>
322316 <div class="refsect3">
323 <a name="id-1.6.4.2.8.6.7"></a><h4>Returns</h4>
317 <a name="id-1.6.4.2.7.6.7"></a><h4>Returns</h4>
324318 <p> <code class="literal">TRUE</code> if the request was successfull. If <code class="literal">FALSE</code> an error occurred.</p>
325319 <p></p>
326320 </div>
340334 asynchronous, thus the result will be returned within the <em class="parameter"><code>callback</code></em>
341335 .</p>
342336 <div class="refsect3">
343 <a name="id-1.6.4.2.8.7.5"></a><h4>Parameters</h4>
337 <a name="id-1.6.4.2.7.7.5"></a><h4>Parameters</h4>
344338 <div class="informaltable"><table width="100%" border="0">
345339 <colgroup>
346340 <col width="150px" class="parameters_name">
401395 asynchronous, thus the result will be returned within the <em class="parameter"><code>callback</code></em>
402396 .</p>
403397 <div class="refsect3">
404 <a name="id-1.6.4.2.8.8.5"></a><h4>Parameters</h4>
398 <a name="id-1.6.4.2.7.8.5"></a><h4>Parameters</h4>
405399 <div class="informaltable"><table width="100%" border="0">
406400 <colgroup>
407401 <col width="150px" class="parameters_name">
456450 supporting. If sets <code class="literal">TRUE</code>, a new cache will be created. If sets to <code class="literal">FALSE</code>,
457451 current cache is clean and removed.</p>
458452 <div class="refsect3">
459 <a name="id-1.6.4.2.8.9.5"></a><h4>Parameters</h4>
453 <a name="id-1.6.4.2.7.9.5"></a><h4>Parameters</h4>
460454 <div class="informaltable"><table width="100%" border="0">
461455 <colgroup>
462456 <col width="150px" class="parameters_name">
488482 <p>Sets the new maximum size of cache, in Megabytes. Default value is 10. Using
489483 0 means no cache will be done.</p>
490484 <div class="refsect3">
491 <a name="id-1.6.4.2.8.10.5"></a><h4>Parameters</h4>
485 <a name="id-1.6.4.2.7.10.5"></a><h4>Parameters</h4>
492486 <div class="informaltable"><table width="100%" border="0">
493487 <colgroup>
494488 <col width="150px" class="parameters_name">
520514 <p>Setting the log level the logger feature is added into
521515 the libsoup session.</p>
522516 <div class="refsect3">
523 <a name="id-1.6.4.2.8.11.5"></a><h4>Parameters</h4>
517 <a name="id-1.6.4.2.7.11.5"></a><h4>Parameters</h4>
524518 <div class="informaltable"><table width="100%" border="0">
525519 <colgroup>
526520 <col width="150px" class="parameters_name">
551545 <p>Setting this property, the <a class="link" href="grilo-GrlNetWc.html#GrlNetWc" title="struct GrlNetWc"><span class="type">GrlNetWc</span></a> will queue all the requests and
552546 will dispatch them with a pause between them of this value.</p>
553547 <div class="refsect3">
554 <a name="id-1.6.4.2.8.12.5"></a><h4>Parameters</h4>
548 <a name="id-1.6.4.2.7.12.5"></a><h4>Parameters</h4>
555549 <div class="informaltable"><table width="100%" border="0">
556550 <colgroup>
557551 <col width="150px" class="parameters_name">
583577 };
584578 </pre>
585579 <div class="refsect3">
586 <a name="id-1.6.4.2.9.2.4"></a><h4>Members</h4>
580 <a name="id-1.6.4.2.8.2.4"></a><h4>Members</h4>
587581 <div class="informaltable"><table width="100%" border="0">
588582 <colgroup>
589583 <col width="300px" class="struct_members_name">
609603 <p>It's a simple and thin web client to be used by the sources to download
610604 content from Internet.</p>
611605 <div class="refsect3">
612 <a name="id-1.6.4.2.9.3.6"></a><h4>Members</h4>
606 <a name="id-1.6.4.2.8.3.6"></a><h4>Members</h4>
613607 <div class="informaltable"><table width="100%" border="0">
614608 <colgroup>
615609 <col width="300px" class="struct_members_name">
630624 <p>These constants identify all the available errors managed by
631625 the web client.</p>
632626 <div class="refsect3">
633 <a name="id-1.6.4.2.9.4.4"></a><h4>Members</h4>
627 <a name="id-1.6.4.2.8.4.4"></a><h4>Members</h4>
634628 <div class="informaltable"><table width="100%" border="0">
635629 <colgroup>
636630 <col width="300px" class="enum_members_name">
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#grilo-GrlPls.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#grilo-GrlPls.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#grilo-GrlPls.description" class="shortcut">Description</a></span>
1918 </td>
2019 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
2120 <td><a accesskey="u" href="grilo-pls.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
6766 </table></div>
6867 </div>
6968 <div class="refsect1">
70 <a name="grilo-GrlPls.object-hierarchy"></a><h2>Object Hierarchy</h2>
71 <pre class="screen">
72 </pre>
73 </div>
74 <div class="refsect1">
7569 <a name="grilo-GrlPls.includes"></a><h2>Includes</h2>
7670 <pre class="synopsis">#include &lt;grilo.h&gt;
7771 </pre>
9185 <p>Check if a file identified by GrlMedia object is a playlist or not.
9286 This function does blocking I/O.</p>
9387 <div class="refsect3">
94 <a name="id-1.6.5.2.7.2.5"></a><h4>Parameters</h4>
88 <a name="id-1.6.5.2.6.2.5"></a><h4>Parameters</h4>
9589 <div class="informaltable"><table width="100%" border="0">
9690 <colgroup>
9791 <col width="150px" class="parameters_name">
106100 </table></div>
107101 </div>
108102 <div class="refsect3">
109 <a name="id-1.6.5.2.7.2.6"></a><h4>Returns</h4>
103 <a name="id-1.6.5.2.6.2.6"></a><h4>Returns</h4>
110104 <p> <code class="literal">TRUE</code> if a GrlMedia is recognized as a playlist.</p>
111105 <p></p>
112106 </div>
135129 <p>See <a class="link" href="GrlSource.html#grl-source-browse" title="grl_source_browse ()"><code class="function">grl_source_browse()</code></a> function for additional information
136130 and sample code.</p>
137131 <div class="refsect3">
138 <a name="id-1.6.5.2.7.3.8"></a><h4>Parameters</h4>
132 <a name="id-1.6.5.2.6.3.8"></a><h4>Parameters</h4>
139133 <div class="informaltable"><table width="100%" border="0">
140134 <colgroup>
141135 <col width="150px" class="parameters_name">
183177 </table></div>
184178 </div>
185179 <div class="refsect3">
186 <a name="id-1.6.5.2.7.3.9"></a><h4>Returns</h4>
180 <a name="id-1.6.5.2.6.3.9"></a><h4>Returns</h4>
187181 <p> the operation identifier</p>
188182 <p></p>
189183 </div>
214208 <p>See <a class="link" href="GrlSource.html#grl-source-browse-sync" title="grl_source_browse_sync ()"><code class="function">grl_source_browse_sync()</code></a> function for additional information
215209 and sample code.</p>
216210 <div class="refsect3">
217 <a name="id-1.6.5.2.7.4.9"></a><h4>Parameters</h4>
211 <a name="id-1.6.5.2.6.4.9"></a><h4>Parameters</h4>
218212 <div class="informaltable"><table width="100%" border="0">
219213 <colgroup>
220214 <col width="150px" class="parameters_name">
258252 </table></div>
259253 </div>
260254 <div class="refsect3">
261 <a name="id-1.6.5.2.7.4.10"></a><h4>Returns</h4>
255 <a name="id-1.6.5.2.6.4.10"></a><h4>Returns</h4>
262256 <p> a <span class="type">GList</span> with <a class="link" href="GrlMedia.html" title="GrlMedia"><span class="type">GrlMedia</span></a>
263257 elements. After use <code class="function">g_object_unref()</code> every element and <code class="function">g_list_free()</code> the
264258 list. </p>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#grilo-Multiple.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#grilo-Multiple.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#grilo-Multiple.description" class="shortcut">Description</a></span>
1918 </td>
2019 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
2120 <td><a accesskey="u" href="multiple.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
6564 </tr>
6665 </tbody>
6766 </table></div>
68 </div>
69 <div class="refsect1">
70 <a name="grilo-Multiple.object-hierarchy"></a><h2>Object Hierarchy</h2>
71 <pre class="screen">
72 </pre>
7367 </div>
7468 <div class="refsect1">
7569 <a name="grilo-Multiple.includes"></a><h2>Includes</h2>
10094 .</p>
10195 <p>This method is asynchronous.</p>
10296 <div class="refsect3">
103 <a name="id-1.5.6.2.7.2.6"></a><h4>Parameters</h4>
97 <a name="id-1.5.6.2.6.2.6"></a><h4>Parameters</h4>
10498 <div class="informaltable"><table width="100%" border="0">
10599 <colgroup>
106100 <col width="150px" class="parameters_name">
157151 plugin (see <a class="link" href="GrlSource.html#grl-source-search" title="grl_source_search ()"><span class="type">grl_source_search</span></a> for more details).</p>
158152 <p>This method is asynchronous.</p>
159153 <div class="refsect3">
160 <a name="id-1.5.6.2.7.3.7"></a><h4>Parameters</h4>
154 <a name="id-1.5.6.2.6.3.7"></a><h4>Parameters</h4>
161155 <div class="informaltable"><table width="100%" border="0">
162156 <colgroup>
163157 <col width="150px" class="parameters_name">
201195 </table></div>
202196 </div>
203197 <div class="refsect3">
204 <a name="id-1.5.6.2.7.3.8"></a><h4>Returns</h4>
198 <a name="id-1.5.6.2.6.3.8"></a><h4>Returns</h4>
205199 <p> the operation identifier</p>
206200 <p></p>
207201 </div>
221215 .</p>
222216 <p>This method is synchronous.</p>
223217 <div class="refsect3">
224 <a name="id-1.5.6.2.7.4.6"></a><h4>Parameters</h4>
218 <a name="id-1.5.6.2.6.4.6"></a><h4>Parameters</h4>
225219 <div class="informaltable"><table width="100%" border="0">
226220 <colgroup>
227221 <col width="150px" class="parameters_name">
261255 </table></div>
262256 </div>
263257 <div class="refsect3">
264 <a name="id-1.5.6.2.7.4.7"></a><h4>Returns</h4>
258 <a name="id-1.5.6.2.6.4.7"></a><h4>Returns</h4>
265259 <p> a list with <a class="link" href="GrlMedia.html" title="GrlMedia"><span class="type">GrlMedia</span></a> elements. </p>
266260 <p><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GrlMedia][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
267261 </div>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#grilo-grilo.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#grilo-grilo.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#grilo-grilo.description" class="shortcut">Description</a></span>
1918 </td>
2019 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
2120 <td><a accesskey="u" href="rn03.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
6766 </table></div>
6867 </div>
6968 <div class="refsect1">
70 <a name="grilo-grilo.object-hierarchy"></a><h2>Object Hierarchy</h2>
71 <pre class="screen">
72 </pre>
73 </div>
74 <div class="refsect1">
7569 <a name="grilo-grilo.includes"></a><h2>Includes</h2>
7670 <pre class="synopsis">#include &lt;grilo.h&gt;
7771 </pre>
9690 <em class="parameter"><code><span class="type">gchar</span> **argv[]</code></em>);</pre>
9791 <p>Initializes the Grilo library</p>
9892 <div class="refsect3">
99 <a name="id-1.5.2.7.2.5"></a><h4>Parameters</h4>
93 <a name="id-1.5.2.6.2.5"></a><h4>Parameters</h4>
10094 <div class="informaltable"><table width="100%" border="0">
10195 <colgroup>
10296 <col width="150px" class="parameters_name">
130124 libraries that use the GOption commandline parser
131125 (see <code class="function">g_option_context_add_group()</code> ).</p>
132126 <div class="refsect3">
133 <a name="id-1.5.2.7.3.6"></a><h4>Returns</h4>
127 <a name="id-1.5.2.6.3.6"></a><h4>Returns</h4>
134128 <p> a pointer to Grilo's option group. Should be dereferenced
135129 after use.</p>
136130 <p></p>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#grilo-grl-definitions.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#grilo-grl-definitions.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#grilo-grl-definitions.description" class="shortcut">Description</a></span>
1918 </td>
2019 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
2120 <td><a accesskey="u" href="misc.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
5150 </table></div>
5251 </div>
5352 <div class="refsect1">
54 <a name="grilo-grl-definitions.object-hierarchy"></a><h2>Object Hierarchy</h2>
55 <pre class="screen">
56 </pre>
57 </div>
58 <div class="refsect1">
5953 <a name="grilo-grl-definitions.includes"></a><h2>Includes</h2>
6054 <pre class="synopsis">#include &lt;grilo.h&gt;
6155 </pre>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#grilo-grl-error.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#grilo-grl-error.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#grilo-grl-error.description" class="shortcut">Description</a></span>
1918 </td>
2019 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
2120 <td><a accesskey="u" href="misc.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
5150 </table></div>
5251 </div>
5352 <div class="refsect1">
54 <a name="grilo-grl-error.object-hierarchy"></a><h2>Object Hierarchy</h2>
55 <pre class="screen">
56 </pre>
57 </div>
58 <div class="refsect1">
5953 <a name="grilo-grl-error.includes"></a><h2>Includes</h2>
6054 <pre class="synopsis">#include &lt;grilo.h&gt;
6155 </pre>
7266 <a name="GrlCoreError"></a><h3>enum GrlCoreError</h3>
7367 <p>These constants identify all the available core errors</p>
7468 <div class="refsect3">
75 <a name="id-1.5.9.4.8.2.4"></a><h4>Members</h4>
69 <a name="id-1.5.9.4.7.2.4"></a><h4>Members</h4>
7670 <div class="informaltable"><table width="100%" border="0">
7771 <colgroup>
7872 <col width="300px" class="enum_members_name">
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#grilo-grl-log.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#grilo-grl-log.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#grilo-grl-log.description" class="shortcut">Description</a></span>
1918 </td>
2019 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
2120 <td><a accesskey="u" href="misc.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
164163 </table></div>
165164 </div>
166165 <div class="refsect1">
167 <a name="grilo-grl-log.object-hierarchy"></a><h2>Object Hierarchy</h2>
168 <pre class="screen">
169 </pre>
170 </div>
171 <div class="refsect1">
172166 <a name="grilo-grl-log.includes"></a><h2>Includes</h2>
173167 <pre class="synopsis">#include &lt;grilo.h&gt;
174168 </pre>
186180 debugging messages. You will probably want to use one of the ones described
187181 below.</p>
188182 <div class="refsect3">
189 <a name="id-1.5.9.3.8.2.5"></a><h4>Parameters</h4>
183 <a name="id-1.5.9.3.7.2.5"></a><h4>Parameters</h4>
190184 <div class="informaltable"><table width="100%" border="0">
191185 <colgroup>
192186 <col width="150px" class="parameters_name">
220214 </pre>
221215 <p>Defines a GrlLogDomain variable.</p>
222216 <div class="refsect3">
223 <a name="id-1.5.9.3.8.3.5"></a><h4>Parameters</h4>
217 <a name="id-1.5.9.3.7.3.5"></a><h4>Parameters</h4>
224218 <div class="informaltable"><table width="100%" border="0">
225219 <colgroup>
226220 <col width="150px" class="parameters_name">
242236 </pre>
243237 <p>Declares a GrlLogDomain variable as extern. Use in header files.</p>
244238 <div class="refsect3">
245 <a name="id-1.5.9.3.8.4.5"></a><h4>Parameters</h4>
239 <a name="id-1.5.9.3.7.4.5"></a><h4>Parameters</h4>
246240 <div class="informaltable"><table width="100%" border="0">
247241 <colgroup>
248242 <col width="150px" class="parameters_name">
263257 <pre class="programlisting">#define GRL_LOG_DOMAIN_FREE(domain)</pre>
264258 <p>Free a previously allocated <a class="link" href="grilo-grl-log.html#GrlLogDomain" title="GrlLogDomain"><span class="type">GrlLogDomain</span></a>.</p>
265259 <div class="refsect3">
266 <a name="id-1.5.9.3.8.5.5"></a><h4>Parameters</h4>
260 <a name="id-1.5.9.3.7.5.5"></a><h4>Parameters</h4>
267261 <div class="informaltable"><table width="100%" border="0">
268262 <colgroup>
269263 <col width="150px" class="parameters_name">
284278 <pre class="programlisting">#define GRL_LOG_DOMAIN_INIT(domain, name)</pre>
285279 <p>Creates a new <a class="link" href="grilo-grl-log.html#GrlLogDomain" title="GrlLogDomain"><span class="type">GrlLogDomain</span></a> with the given name.</p>
286280 <div class="refsect3">
287 <a name="id-1.5.9.3.8.6.5"></a><h4>Parameters</h4>
281 <a name="id-1.5.9.3.7.6.5"></a><h4>Parameters</h4>
288282 <div class="informaltable"><table width="100%" border="0">
289283 <colgroup>
290284 <col width="150px" class="parameters_name">
313307 </pre>
314308 <p>Defines a static GrlLogDomain variable.</p>
315309 <div class="refsect3">
316 <a name="id-1.5.9.3.8.7.5"></a><h4>Parameters</h4>
310 <a name="id-1.5.9.3.7.7.5"></a><h4>Parameters</h4>
317311 <div class="informaltable"><table width="100%" border="0">
318312 <colgroup>
319313 <col width="150px" class="parameters_name">
334328 <pre class="programlisting">#define GRL_DEBUG(...)</pre>
335329 <p>Output a debugging message in the default log domain.</p>
336330 <div class="refsect3">
337 <a name="id-1.5.9.3.8.8.5"></a><h4>Parameters</h4>
331 <a name="id-1.5.9.3.7.8.5"></a><h4>Parameters</h4>
338332 <div class="informaltable"><table width="100%" border="0">
339333 <colgroup>
340334 <col width="150px" class="parameters_name">
355349 <pre class="programlisting">#define GRL_ERROR(...)</pre>
356350 <p>Output an error message in the default log domain.</p>
357351 <div class="refsect3">
358 <a name="id-1.5.9.3.8.9.5"></a><h4>Parameters</h4>
352 <a name="id-1.5.9.3.7.9.5"></a><h4>Parameters</h4>
359353 <div class="informaltable"><table width="100%" border="0">
360354 <colgroup>
361355 <col width="150px" class="parameters_name">
376370 <pre class="programlisting">#define GRL_INFO(...)</pre>
377371 <p>Output an informational message in the default log domain.</p>
378372 <div class="refsect3">
379 <a name="id-1.5.9.3.8.10.5"></a><h4>Parameters</h4>
373 <a name="id-1.5.9.3.7.10.5"></a><h4>Parameters</h4>
380374 <div class="informaltable"><table width="100%" border="0">
381375 <colgroup>
382376 <col width="150px" class="parameters_name">
397391 <pre class="programlisting">#define GRL_MESSAGE(...)</pre>
398392 <p>Output a logging message in the default log domain.</p>
399393 <div class="refsect3">
400 <a name="id-1.5.9.3.8.11.5"></a><h4>Parameters</h4>
394 <a name="id-1.5.9.3.7.11.5"></a><h4>Parameters</h4>
401395 <div class="informaltable"><table width="100%" border="0">
402396 <colgroup>
403397 <col width="150px" class="parameters_name">
418412 <pre class="programlisting">#define GRL_WARNING(...)</pre>
419413 <p>Output a warning message in the default log domain.</p>
420414 <div class="refsect3">
421 <a name="id-1.5.9.3.8.12.5"></a><h4>Parameters</h4>
415 <a name="id-1.5.9.3.7.12.5"></a><h4>Parameters</h4>
422416 <div class="informaltable"><table width="100%" border="0">
423417 <colgroup>
424418 <col width="150px" class="parameters_name">
444438 <em class="parameter"><code>...</code></em>);</pre>
445439 <p>Send a log message.</p>
446440 <div class="refsect3">
447 <a name="id-1.5.9.3.8.13.5"></a><h4>Parameters</h4>
441 <a name="id-1.5.9.3.7.13.5"></a><h4>Parameters</h4>
448442 <div class="informaltable"><table width="100%" border="0">
449443 <colgroup>
450444 <col width="150px" class="parameters_name">
524518 defining the GRL_DEBUG environment variable to a configuration string
525519 as described above</div>
526520 <div class="refsect3">
527 <a name="id-1.5.9.3.8.14.11"></a><h4>Parameters</h4>
521 <a name="id-1.5.9.3.7.14.11"></a><h4>Parameters</h4>
528522 <div class="informaltable"><table width="100%" border="0">
529523 <colgroup>
530524 <col width="150px" class="parameters_name">
548542 <p>Releases <em class="parameter"><code>domain</code></em>
549543 .</p>
550544 <div class="refsect3">
551 <a name="id-1.5.9.3.8.15.5"></a><h4>Parameters</h4>
545 <a name="id-1.5.9.3.7.15.5"></a><h4>Parameters</h4>
552546 <div class="informaltable"><table width="100%" border="0">
553547 <colgroup>
554548 <col width="150px" class="parameters_name">
570564 <pre class="programlisting"><a class="link" href="grilo-grl-log.html#GrlLogDomain" title="GrlLogDomain"><span class="returnvalue">GrlLogDomain</span></a> *
571565 grl_log_domain_new (<em class="parameter"><code>const <span class="type">gchar</span> *name</code></em>);</pre>
572566 <div class="refsect3">
573 <a name="id-1.5.9.3.8.16.4"></a><h4>Parameters</h4>
567 <a name="id-1.5.9.3.7.16.4"></a><h4>Parameters</h4>
574568 <div class="informaltable"><table width="100%" border="0">
575569 <colgroup>
576570 <col width="150px" class="parameters_name">
585579 </table></div>
586580 </div>
587581 <div class="refsect3">
588 <a name="id-1.5.9.3.8.16.5"></a><h4>Returns</h4>
582 <a name="id-1.5.9.3.7.16.5"></a><h4>Returns</h4>
589583 <p> The new log domain</p>
590584 <p></p>
591585 </div>
603597 <a name="GrlLogLevel"></a><h3>enum GrlLogLevel</h3>
604598 <p>Grilo log levels. Defines the level of verbosity selected in Grilo.</p>
605599 <div class="refsect3">
606 <a name="id-1.5.9.3.9.3.4"></a><h4>Members</h4>
600 <a name="id-1.5.9.3.8.3.4"></a><h4>Members</h4>
607601 <div class="informaltable"><table width="100%" border="0">
608602 <colgroup>
609603 <col width="300px" class="enum_members_name">
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#grilo-grl-metadata-key.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#grilo-grl-metadata-key.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#grilo-grl-metadata-key.description" class="shortcut">Description</a></span>
1918 </td>
2019 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
2120 <td><a accesskey="u" href="misc.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
328327 </table></div>
329328 </div>
330329 <div class="refsect1">
331 <a name="grilo-grl-metadata-key.object-hierarchy"></a><h2>Object Hierarchy</h2>
332 <pre class="screen">
333 </pre>
334 </div>
335 <div class="refsect1">
336330 <a name="grilo-grl-metadata-key.includes"></a><h2>Includes</h2>
337331 <pre class="synopsis">#include &lt;grilo.h&gt;
338332 </pre>
385379 grl_metadata_key_get_desc (<em class="parameter"><code><a class="link" href="grilo-grl-metadata-key.html#GrlKeyID" title="GrlKeyID"><span class="type">GrlKeyID</span></a> key</code></em>);</pre>
386380 <p>Retrieves the description associated with the key</p>
387381 <div class="refsect3">
388 <a name="id-1.5.9.2.8.8.5"></a><h4>Parameters</h4>
382 <a name="id-1.5.9.2.7.8.5"></a><h4>Parameters</h4>
389383 <div class="informaltable"><table width="100%" border="0">
390384 <colgroup>
391385 <col width="150px" class="parameters_name">
400394 </table></div>
401395 </div>
402396 <div class="refsect3">
403 <a name="id-1.5.9.2.8.8.6"></a><h4>Returns</h4>
397 <a name="id-1.5.9.2.7.8.6"></a><h4>Returns</h4>
404398 <p> the description of the key</p>
405399 <p></p>
406400 </div>
413407 grl_metadata_key_get_name (<em class="parameter"><code><a class="link" href="grilo-grl-metadata-key.html#GrlKeyID" title="GrlKeyID"><span class="type">GrlKeyID</span></a> key</code></em>);</pre>
414408 <p>Retrieves the name associated with the key</p>
415409 <div class="refsect3">
416 <a name="id-1.5.9.2.8.9.5"></a><h4>Parameters</h4>
410 <a name="id-1.5.9.2.7.9.5"></a><h4>Parameters</h4>
417411 <div class="informaltable"><table width="100%" border="0">
418412 <colgroup>
419413 <col width="150px" class="parameters_name">
428422 </table></div>
429423 </div>
430424 <div class="refsect3">
431 <a name="id-1.5.9.2.8.9.6"></a><h4>Returns</h4>
425 <a name="id-1.5.9.2.7.9.6"></a><h4>Returns</h4>
432426 <p> The name of the key</p>
433427 <p></p>
434428 </div>
441435 grl_metadata_key_get_type (<em class="parameter"><code><a class="link" href="grilo-grl-metadata-key.html#GrlKeyID" title="GrlKeyID"><span class="type">GrlKeyID</span></a> key</code></em>);</pre>
442436 <p>Retrieves the expected type for values associated with this key</p>
443437 <div class="refsect3">
444 <a name="id-1.5.9.2.8.10.5"></a><h4>Parameters</h4>
438 <a name="id-1.5.9.2.7.10.5"></a><h4>Parameters</h4>
445439 <div class="informaltable"><table width="100%" border="0">
446440 <colgroup>
447441 <col width="150px" class="parameters_name">
456450 </table></div>
457451 </div>
458452 <div class="refsect3">
459 <a name="id-1.5.9.2.8.10.6"></a><h4>Returns</h4>
453 <a name="id-1.5.9.2.7.10.6"></a><h4>Returns</h4>
460454 <p> the expected value type</p>
461455 <p></p>
462456 </div>
471465 <p>Returns a <span class="type">GList</span> containing the va_list keys. Use <a class="link" href="grilo-grl-metadata-key.html#GRL-METADATA-KEY-INVALID:CAPS" title="GRL_METADATA_KEY_INVALID"><span class="type">GRL_METADATA_KEY_INVALID</span></a>
472466 to finalize them.</p>
473467 <div class="refsect3">
474 <a name="id-1.5.9.2.8.11.5"></a><h4>Parameters</h4>
468 <a name="id-1.5.9.2.7.11.5"></a><h4>Parameters</h4>
475469 <div class="informaltable"><table width="100%" border="0">
476470 <colgroup>
477471 <col width="150px" class="parameters_name">
493487 </table></div>
494488 </div>
495489 <div class="refsect3">
496 <a name="id-1.5.9.2.8.11.6"></a><h4>Returns</h4>
490 <a name="id-1.5.9.2.7.11.6"></a><h4>Returns</h4>
497491 <p> a <span class="type">GList</span></p>
498492 <p></p>
499493 </div>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#grilo-grl-operation.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#grilo-grl-operation.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#grilo-grl-operation.description" class="shortcut">Description</a></span>
1918 </td>
2019 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
2120 <td><a accesskey="u" href="misc.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
7574 </table></div>
7675 </div>
7776 <div class="refsect1">
78 <a name="grilo-grl-operation.object-hierarchy"></a><h2>Object Hierarchy</h2>
79 <pre class="screen">
80 </pre>
81 </div>
82 <div class="refsect1">
8377 <a name="grilo-grl-operation.includes"></a><h2>Includes</h2>
8478 <pre class="synopsis">#include &lt;grilo.h&gt;
8579 </pre>
9589 grl_operation_cancel (<em class="parameter"><code><span class="type">guint</span> operation_id</code></em>);</pre>
9690 <p>Cancel an operation.</p>
9791 <div class="refsect3">
98 <a name="id-1.5.9.6.7.2.5"></a><h4>Parameters</h4>
92 <a name="id-1.5.9.6.6.2.5"></a><h4>Parameters</h4>
9993 <div class="informaltable"><table width="100%" border="0">
10094 <colgroup>
10195 <col width="150px" class="parameters_name">
117111 grl_operation_get_data (<em class="parameter"><code><span class="type">guint</span> operation_id</code></em>);</pre>
118112 <p>Obtains the previously attached data</p>
119113 <div class="refsect3">
120 <a name="id-1.5.9.6.7.3.5"></a><h4>Parameters</h4>
114 <a name="id-1.5.9.6.6.3.5"></a><h4>Parameters</h4>
121115 <div class="informaltable"><table width="100%" border="0">
122116 <colgroup>
123117 <col width="150px" class="parameters_name">
132126 </table></div>
133127 </div>
134128 <div class="refsect3">
135 <a name="id-1.5.9.6.7.3.6"></a><h4>Returns</h4>
129 <a name="id-1.5.9.6.6.3.6"></a><h4>Returns</h4>
136130 <p> The previously attached data. </p>
137131 <p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
138132 </div>
145139 <em class="parameter"><code><span class="type">gpointer</span> user_data</code></em>);</pre>
146140 <p>Attach a pointer to the specific operation.</p>
147141 <div class="refsect3">
148 <a name="id-1.5.9.6.7.4.5"></a><h4>Parameters</h4>
142 <a name="id-1.5.9.6.6.4.5"></a><h4>Parameters</h4>
149143 <div class="informaltable"><table width="100%" border="0">
150144 <colgroup>
151145 <col width="150px" class="parameters_name">
179173 callback is not called if <em class="parameter"><code>user_data</code></em>
180174 is <code class="literal">NULL</code>.</p>
181175 <div class="refsect3">
182 <a name="id-1.5.9.6.7.5.6"></a><h4>Parameters</h4>
176 <a name="id-1.5.9.6.6.5.6"></a><h4>Parameters</h4>
183177 <div class="informaltable"><table width="100%" border="0">
184178 <colgroup>
185179 <col width="150px" class="parameters_name">
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts">
16 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
17 <a href="#grilo-grl-util.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
18 <a href="#grilo-grl-util.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
16 <a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
17 <a href="#grilo-grl-util.description" class="shortcut">Description</a></span>
1918 </td>
2019 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
2120 <td><a accesskey="u" href="misc.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
6766 </table></div>
6867 </div>
6968 <div class="refsect1">
70 <a name="grilo-grl-util.object-hierarchy"></a><h2>Object Hierarchy</h2>
71 <pre class="screen">
72 </pre>
73 </div>
74 <div class="refsect1">
7569 <a name="grilo-grl-util.includes"></a><h2>Includes</h2>
7670 <pre class="synopsis">#include &lt;grilo.h&gt;
7771 </pre>
8680 <pre class="programlisting"><span class="returnvalue">GDateTime</span> *
8781 grl_date_time_from_iso8601 (<em class="parameter"><code>const <span class="type">gchar</span> *date</code></em>);</pre>
8882 <div class="refsect3">
89 <a name="id-1.5.9.7.7.2.4"></a><h4>Parameters</h4>
83 <a name="id-1.5.9.7.6.2.4"></a><h4>Parameters</h4>
9084 <div class="informaltable"><table width="100%" border="0">
9185 <colgroup>
9286 <col width="150px" class="parameters_name">
10195 </table></div>
10296 </div>
10397 <div class="refsect3">
104 <a name="id-1.5.9.7.7.2.5"></a><h4>Returns</h4>
98 <a name="id-1.5.9.7.6.2.5"></a><h4>Returns</h4>
10599 <p> a newly-allocated <span class="type">GDateTime</span> set to the time corresponding to
106100 <em class="parameter"><code>date</code></em>
107101 , or <code class="literal">NULL</code> if <em class="parameter"><code>date</code></em>
119113 <p>Returns a <span class="type">GList</span> containing the va_list pointers. Use <em class="parameter"><code>NULL</code></em>
120114 to finalize them,</p>
121115 <div class="refsect3">
122 <a name="id-1.5.9.7.7.3.5"></a><h4>Parameters</h4>
116 <a name="id-1.5.9.7.6.3.5"></a><h4>Parameters</h4>
123117 <div class="informaltable"><table width="100%" border="0">
124118 <colgroup>
125119 <col width="150px" class="parameters_name">
141135 </table></div>
142136 </div>
143137 <div class="refsect3">
144 <a name="id-1.5.9.7.7.3.6"></a><h4>Returns</h4>
138 <a name="id-1.5.9.7.6.3.6"></a><h4>Returns</h4>
145139 <p> a <span class="type">GList</span>.</p>
146140 <p></p>
147141 </div>
179173 . If the later
180174 is also 0, then page size will be <span class="type">G_MAXUINT</span>.</p>
181175 <div class="refsect3">
182 <a name="id-1.5.9.7.7.4.9"></a><h4>Parameters</h4>
176 <a name="id-1.5.9.7.6.4.9"></a><h4>Parameters</h4>
183177 <div class="informaltable"><table width="100%" border="0">
184178 <colgroup>
185179 <col width="150px" class="parameters_name">
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn04.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn04.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
163163 <keyword type="macro" name="GRL_PLUGIN_LIST_VAR" link="GrlRegistry.html#GRL-PLUGIN-LIST-VAR:CAPS"/>
164164 <keyword type="macro" name="GRL_PLUGIN_PATH_VAR" link="GrlRegistry.html#GRL-PLUGIN-PATH-VAR:CAPS"/>
165165 <keyword type="macro" name="GRL_PLUGIN_RANKS_VAR" link="GrlRegistry.html#GRL-PLUGIN-RANKS-VAR:CAPS"/>
166 <keyword type="signal" name="The “metadata-key-added” signal" link="GrlRegistry.html#GrlRegistry-metadata-key-added"/>
166167 <keyword type="signal" name="The “source-added” signal" link="GrlRegistry.html#GrlRegistry-source-added"/>
167168 <keyword type="signal" name="The “source-removed” signal" link="GrlRegistry.html#GrlRegistry-source-removed"/>
168169 <keyword type="function" name="grl_plugin_get_author ()" link="GrlPlugin.html#grl-plugin-get-author" since="0.2.0"/>
247248 <keyword type="property" name="The “source-icon” property" link="GrlSource.html#GrlSource--source-icon"/>
248249 <keyword type="property" name="The “source-id” property" link="GrlSource.html#GrlSource--source-id"/>
249250 <keyword type="property" name="The “source-name” property" link="GrlSource.html#GrlSource--source-name"/>
251 <keyword type="property" name="The “source-tags” property" link="GrlSource.html#GrlSource--source-tags"/>
250252 <keyword type="property" name="The “supported-media” property" link="GrlSource.html#GrlSource--supported-media"/>
251253 <keyword type="signal" name="The “content-changed” signal" link="GrlSource.html#GrlSource-content-changed"/>
252254 <keyword type="function" name="grl_caps_new ()" link="GrlCaps.html#grl-caps-new" since="0.2.0"/>
431433 <keyword type="function" name="grl_media_get_url ()" link="GrlMedia.html#grl-media-get-url" since="0.1.4"/>
432434 <keyword type="function" name="grl_media_get_url_data ()" link="GrlMedia.html#grl-media-get-url-data" since="0.1.10"/>
433435 <keyword type="function" name="grl_media_get_url_data_nth ()" link="GrlMedia.html#grl-media-get-url-data-nth" since="0.1.10"/>
436 <keyword type="function" name="grl_media_get_size ()" link="GrlMedia.html#grl-media-get-size" since="0.2.10"/>
434437 <keyword type="function" name="grl_media_serialize ()" link="GrlMedia.html#grl-media-serialize" since="0.1.6"/>
435438 <keyword type="function" name="grl_media_serialize_extended ()" link="GrlMedia.html#grl-media-serialize-extended" since="0.1.6"/>
436439 <keyword type="function" name="grl_media_set_author ()" link="GrlMedia.html#grl-media-set-author" since="0.1.4"/>
461464 <keyword type="function" name="grl_media_set_title ()" link="GrlMedia.html#grl-media-set-title" since="0.1.4"/>
462465 <keyword type="function" name="grl_media_set_url ()" link="GrlMedia.html#grl-media-set-url" since="0.1.4"/>
463466 <keyword type="function" name="grl_media_set_url_data ()" link="GrlMedia.html#grl-media-set-url-data" since="0.1.10"/>
467 <keyword type="function" name="grl_media_set_size ()" link="GrlMedia.html#grl-media-set-size" since="0.2.10"/>
464468 <keyword type="function" name="grl_media_unserialize ()" link="GrlMedia.html#grl-media-unserialize" since="0.1.6"/>
465469 <keyword type="struct" name="struct GrlMedia" link="GrlMedia.html#GrlMedia-struct"/>
466470 <keyword type="struct" name="struct GrlMediaClass" link="GrlMedia.html#GrlMediaClass"/>
11 <ONLINE href="http://git.gnome.org/browse/grilo-plugins">
22 <ANCHOR id="grilo-grilo" href="grilo/grilo-grilo.html">
33 <ANCHOR id="grilo-grilo.functions" href="grilo/grilo-grilo.html#grilo-grilo.functions">
4 <ANCHOR id="grilo-grilo.object-hierarchy" href="grilo/grilo-grilo.html#grilo-grilo.object-hierarchy">
54 <ANCHOR id="grilo-grilo.includes" href="grilo/grilo-grilo.html#grilo-grilo.includes">
65 <ANCHOR id="grilo-grilo.description" href="grilo/grilo-grilo.html#grilo-grilo.description">
76 <ANCHOR id="grilo-grilo.functions_details" href="grilo/grilo-grilo.html#grilo-grilo.functions_details">
5251 <ANCHOR id="GRL-PLUGIN-PATH-VAR:CAPS" href="grilo/GrlRegistry.html#GRL-PLUGIN-PATH-VAR:CAPS">
5352 <ANCHOR id="GRL-PLUGIN-RANKS-VAR:CAPS" href="grilo/GrlRegistry.html#GRL-PLUGIN-RANKS-VAR:CAPS">
5453 <ANCHOR id="GrlRegistry.signal-details" href="grilo/GrlRegistry.html#GrlRegistry.signal-details">
54 <ANCHOR id="GrlRegistry-metadata-key-added" href="grilo/GrlRegistry.html#GrlRegistry-metadata-key-added">
5555 <ANCHOR id="GrlRegistry-source-added" href="grilo/GrlRegistry.html#GrlRegistry-source-added">
5656 <ANCHOR id="GrlRegistry-source-removed" href="grilo/GrlRegistry.html#GrlRegistry-source-removed">
5757 <ANCHOR id="GrlRegistry.see-also" href="grilo/GrlRegistry.html#GrlRegistry.see-also">
159159 <ANCHOR id="GrlSource--source-icon" href="grilo/GrlSource.html#GrlSource--source-icon">
160160 <ANCHOR id="GrlSource--source-id" href="grilo/GrlSource.html#GrlSource--source-id">
161161 <ANCHOR id="GrlSource--source-name" href="grilo/GrlSource.html#GrlSource--source-name">
162 <ANCHOR id="GrlSource--source-tags" href="grilo/GrlSource.html#GrlSource--source-tags">
162163 <ANCHOR id="GrlSource--supported-media" href="grilo/GrlSource.html#GrlSource--supported-media">
163164 <ANCHOR id="GrlSource.signal-details" href="grilo/GrlSource.html#GrlSource.signal-details">
164165 <ANCHOR id="GrlSource-content-changed" href="grilo/GrlSource.html#GrlSource-content-changed">
218219 <ANCHOR id="GrlOperationOptions.see-also" href="grilo/GrlOperationOptions.html#GrlOperationOptions.see-also">
219220 <ANCHOR id="grilo-Multiple" href="grilo/grilo-Multiple.html">
220221 <ANCHOR id="grilo-Multiple.functions" href="grilo/grilo-Multiple.html#grilo-Multiple.functions">
221 <ANCHOR id="grilo-Multiple.object-hierarchy" href="grilo/grilo-Multiple.html#grilo-Multiple.object-hierarchy">
222222 <ANCHOR id="grilo-Multiple.includes" href="grilo/grilo-Multiple.html#grilo-Multiple.includes">
223223 <ANCHOR id="grilo-Multiple.description" href="grilo/grilo-Multiple.html#grilo-Multiple.description">
224224 <ANCHOR id="grilo-Multiple.functions_details" href="grilo/grilo-Multiple.html#grilo-Multiple.functions_details">
404404 <ANCHOR id="grl-media-get-url" href="grilo/GrlMedia.html#grl-media-get-url">
405405 <ANCHOR id="grl-media-get-url-data" href="grilo/GrlMedia.html#grl-media-get-url-data">
406406 <ANCHOR id="grl-media-get-url-data-nth" href="grilo/GrlMedia.html#grl-media-get-url-data-nth">
407 <ANCHOR id="grl-media-get-size" href="grilo/GrlMedia.html#grl-media-get-size">
407408 <ANCHOR id="grl-media-serialize" href="grilo/GrlMedia.html#grl-media-serialize">
408409 <ANCHOR id="grl-media-serialize-extended" href="grilo/GrlMedia.html#grl-media-serialize-extended">
409410 <ANCHOR id="grl-media-set-author" href="grilo/GrlMedia.html#grl-media-set-author">
434435 <ANCHOR id="grl-media-set-title" href="grilo/GrlMedia.html#grl-media-set-title">
435436 <ANCHOR id="grl-media-set-url" href="grilo/GrlMedia.html#grl-media-set-url">
436437 <ANCHOR id="grl-media-set-url-data" href="grilo/GrlMedia.html#grl-media-set-url-data">
438 <ANCHOR id="grl-media-set-size" href="grilo/GrlMedia.html#grl-media-set-size">
437439 <ANCHOR id="grl-media-unserialize" href="grilo/GrlMedia.html#grl-media-unserialize">
438440 <ANCHOR id="GrlMedia.other_details" href="grilo/GrlMedia.html#GrlMedia.other_details">
439441 <ANCHOR id="GrlMedia-struct" href="grilo/GrlMedia.html#GrlMedia-struct">
566568 <ANCHOR id="grilo-grl-metadata-key" href="grilo/grilo-grl-metadata-key.html">
567569 <ANCHOR id="grilo-grl-metadata-key.functions" href="grilo/grilo-grl-metadata-key.html#grilo-grl-metadata-key.functions">
568570 <ANCHOR id="grilo-grl-metadata-key.other" href="grilo/grilo-grl-metadata-key.html#grilo-grl-metadata-key.other">
569 <ANCHOR id="grilo-grl-metadata-key.object-hierarchy" href="grilo/grilo-grl-metadata-key.html#grilo-grl-metadata-key.object-hierarchy">
570571 <ANCHOR id="grilo-grl-metadata-key.includes" href="grilo/grilo-grl-metadata-key.html#grilo-grl-metadata-key.includes">
571572 <ANCHOR id="grilo-grl-metadata-key.description" href="grilo/grilo-grl-metadata-key.html#grilo-grl-metadata-key.description">
572573 <ANCHOR id="grilo-grl-metadata-key.functions_details" href="grilo/grilo-grl-metadata-key.html#grilo-grl-metadata-key.functions_details">
636637 <ANCHOR id="grilo-grl-log" href="grilo/grilo-grl-log.html">
637638 <ANCHOR id="grilo-grl-log.functions" href="grilo/grilo-grl-log.html#grilo-grl-log.functions">
638639 <ANCHOR id="grilo-grl-log.other" href="grilo/grilo-grl-log.html#grilo-grl-log.other">
639 <ANCHOR id="grilo-grl-log.object-hierarchy" href="grilo/grilo-grl-log.html#grilo-grl-log.object-hierarchy">
640640 <ANCHOR id="grilo-grl-log.includes" href="grilo/grilo-grl-log.html#grilo-grl-log.includes">
641641 <ANCHOR id="grilo-grl-log.description" href="grilo/grilo-grl-log.html#grilo-grl-log.description">
642642 <ANCHOR id="grilo-grl-log.functions_details" href="grilo/grilo-grl-log.html#grilo-grl-log.functions_details">
661661 <ANCHOR id="GRL-LOG-DOMAIN-DEFAULT:CAPS" href="grilo/grilo-grl-log.html#GRL-LOG-DOMAIN-DEFAULT:CAPS">
662662 <ANCHOR id="grilo-grl-error" href="grilo/grilo-grl-error.html">
663663 <ANCHOR id="grilo-grl-error.other" href="grilo/grilo-grl-error.html#grilo-grl-error.other">
664 <ANCHOR id="grilo-grl-error.object-hierarchy" href="grilo/grilo-grl-error.html#grilo-grl-error.object-hierarchy">
665664 <ANCHOR id="grilo-grl-error.includes" href="grilo/grilo-grl-error.html#grilo-grl-error.includes">
666665 <ANCHOR id="grilo-grl-error.description" href="grilo/grilo-grl-error.html#grilo-grl-error.description">
667666 <ANCHOR id="grilo-grl-error.functions_details" href="grilo/grilo-grl-error.html#grilo-grl-error.functions_details">
670669 <ANCHOR id="GRL-CORE-ERROR:CAPS" href="grilo/grilo-grl-error.html#GRL-CORE-ERROR:CAPS">
671670 <ANCHOR id="grilo-grl-definitions" href="grilo/grilo-grl-definitions.html">
672671 <ANCHOR id="grilo-grl-definitions.other" href="grilo/grilo-grl-definitions.html#grilo-grl-definitions.other">
673 <ANCHOR id="grilo-grl-definitions.object-hierarchy" href="grilo/grilo-grl-definitions.html#grilo-grl-definitions.object-hierarchy">
674672 <ANCHOR id="grilo-grl-definitions.includes" href="grilo/grilo-grl-definitions.html#grilo-grl-definitions.includes">
675673 <ANCHOR id="grilo-grl-definitions.description" href="grilo/grilo-grl-definitions.html#grilo-grl-definitions.description">
676674 <ANCHOR id="grilo-grl-definitions.functions_details" href="grilo/grilo-grl-definitions.html#grilo-grl-definitions.functions_details">
679677 <ANCHOR id="GRL-SOURCE-REMAINING-UNKNOWN:CAPS" href="grilo/grilo-grl-definitions.html#GRL-SOURCE-REMAINING-UNKNOWN:CAPS">
680678 <ANCHOR id="grilo-grl-operation" href="grilo/grilo-grl-operation.html">
681679 <ANCHOR id="grilo-grl-operation.functions" href="grilo/grilo-grl-operation.html#grilo-grl-operation.functions">
682 <ANCHOR id="grilo-grl-operation.object-hierarchy" href="grilo/grilo-grl-operation.html#grilo-grl-operation.object-hierarchy">
683680 <ANCHOR id="grilo-grl-operation.includes" href="grilo/grilo-grl-operation.html#grilo-grl-operation.includes">
684681 <ANCHOR id="grilo-grl-operation.description" href="grilo/grilo-grl-operation.html#grilo-grl-operation.description">
685682 <ANCHOR id="grilo-grl-operation.functions_details" href="grilo/grilo-grl-operation.html#grilo-grl-operation.functions_details">
690687 <ANCHOR id="grilo-grl-operation.other_details" href="grilo/grilo-grl-operation.html#grilo-grl-operation.other_details">
691688 <ANCHOR id="grilo-grl-util" href="grilo/grilo-grl-util.html">
692689 <ANCHOR id="grilo-grl-util.functions" href="grilo/grilo-grl-util.html#grilo-grl-util.functions">
693 <ANCHOR id="grilo-grl-util.object-hierarchy" href="grilo/grilo-grl-util.html#grilo-grl-util.object-hierarchy">
694690 <ANCHOR id="grilo-grl-util.includes" href="grilo/grilo-grl-util.html#grilo-grl-util.includes">
695691 <ANCHOR id="grilo-grl-util.description" href="grilo/grilo-grl-util.html#grilo-grl-util.description">
696692 <ANCHOR id="grilo-grl-util.functions_details" href="grilo/grilo-grl-util.html#grilo-grl-util.functions_details">
701697 <ANCHOR id="grilo-GrlNetWc" href="grilo/grilo-GrlNetWc.html">
702698 <ANCHOR id="grilo-GrlNetWc.functions" href="grilo/grilo-GrlNetWc.html#grilo-GrlNetWc.functions">
703699 <ANCHOR id="grilo-GrlNetWc.other" href="grilo/grilo-GrlNetWc.html#grilo-GrlNetWc.other">
704 <ANCHOR id="grilo-GrlNetWc.object-hierarchy" href="grilo/grilo-GrlNetWc.html#grilo-GrlNetWc.object-hierarchy">
705700 <ANCHOR id="grilo-GrlNetWc.includes" href="grilo/grilo-GrlNetWc.html#grilo-GrlNetWc.includes">
706701 <ANCHOR id="grilo-GrlNetWc.description" href="grilo/grilo-GrlNetWc.html#grilo-GrlNetWc.description">
707702 <ANCHOR id="grilo-GrlNetWc.functions_details" href="grilo/grilo-GrlNetWc.html#grilo-GrlNetWc.functions_details">
723718 <ANCHOR id="GRL-NET-WC-ERROR:CAPS" href="grilo/grilo-GrlNetWc.html#GRL-NET-WC-ERROR:CAPS">
724719 <ANCHOR id="grilo-GrlPls" href="grilo/grilo-GrlPls.html">
725720 <ANCHOR id="grilo-GrlPls.functions" href="grilo/grilo-GrlPls.html#grilo-GrlPls.functions">
726 <ANCHOR id="grilo-GrlPls.object-hierarchy" href="grilo/grilo-GrlPls.html#grilo-GrlPls.object-hierarchy">
727721 <ANCHOR id="grilo-GrlPls.includes" href="grilo/grilo-GrlPls.html#grilo-GrlPls.includes">
728722 <ANCHOR id="grilo-GrlPls.description" href="grilo/grilo-GrlPls.html#grilo-GrlPls.description">
729723 <ANCHOR id="grilo-GrlPls.functions_details" href="grilo/grilo-GrlPls.html#grilo-GrlPls.functions_details">
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn03.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn03.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn03.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
1111 <link rel="stylesheet" href="style.css" type="text/css">
1212 </head>
1313 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
14 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
1515 <td width="100%" align="left" class="shortcuts"></td>
1616 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
1717 <td><a accesskey="u" href="rn03.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
2929 vertical-align: top;
3030 }
3131
32 div.gallery-float
33 {
34 float: left;
35 padding: 10px;
36 }
37 div.gallery-float img
38 {
39 border-style: none;
40 }
41 div.gallery-spacer
42 {
43 clear: both;
44 }
45
46 a, a:visited
47 {
48 text-decoration: none;
49 /* tango:sky blue 2 */
50 color: #3465a4;
51 }
52 a:hover
53 {
54 text-decoration: underline;
55 /* tango:sky blue 1 */
56 color: #729fcf;
57 }
58
59 div.informaltable table
60 {
61 border-collapse: separate;
62 border-spacing: 1em 0.5em;
63 border: none;
64 }
65
66 div.informaltable table td, div.informaltable table th
67 {
68 vertical-align: top;
69 }
70
71 .function_type,
72 .variable_type,
73 .property_type,
74 .signal_type,
75 .parameter_name,
76 .struct_member_name,
77 .union_member_name,
78 .define_keyword,
79 .datatype_keyword,
80 .typedef_keyword
81 {
82 text-align: right;
83 }
84
85 /* dim non-primary columns */
86 .c_punctuation,
87 .function_type,
88 .variable_type,
89 .property_type,
90 .signal_type,
91 .define_keyword,
92 .datatype_keyword,
93 .typedef_keyword,
94 .property_flags,
95 .signal_flags,
96 .parameter_annotations,
97 .enum_member_annotations,
98 .struct_member_annotations,
99 .union_member_annotations
100 {
101 color: #888a85;
102 }
103
104 .function_type a,
105 .function_type a:visited,
106 .function_type a:hover,
107 .property_type a,
108 .property_type a:visited,
109 .property_type a:hover,
110 .signal_type a,
111 .signal_type a:visited,
112 .signal_type a:hover,
113 .signal_flags a,
114 .signal_flags a:visited,
115 .signal_flags a:hover
116 {
117 color: #729fcf;
118 }
119
120 td p
121 {
122 margin: 0.25em;
123 }
124
125 div.table table
126 {
127 border-collapse: collapse;
128 border-spacing: 0px;
129 /* tango:aluminium 3 */
130 border: solid 1px #babdb6;
131 }
132
133 div.table table td, div.table table th
134 {
135 /* tango:aluminium 3 */
136 border: solid 1px #babdb6;
137 padding: 3px;
138 vertical-align: top;
139 }
140
141 div.table table th
142 {
143 /* tango:aluminium 2 */
144 background-color: #d3d7cf;
145 }
146
147 h4
148 {
149 color: #555753;
150 }
151
152 hr
153 {
154 /* tango:aluminium 1 */
155 color: #d3d7cf;
156 background: #d3d7cf;
157 border: none 0px;
158 height: 1px;
159 clear: both;
160 margin: 2.0em 0em 2.0em 0em;
161 }
162
163 dl.toc dt
164 {
165 padding-bottom: 0.25em;
166 }
167
168 dl.toc > dd > dl > dt
169 {
170 padding-top: 0.25em;
171 padding-bottom: 0.25em;
172 }
173
174 dl.toc > dt
175 {
176 padding-top: 1em;
177 padding-bottom: 0.5em;
178 font-weight: bold;
179 }
180
181 .parameter
182 {
183 font-style: normal;
184 }
185
186 .footer
187 {
188 padding-top: 3.5em;
189 /* tango:aluminium 3 */
190 color: #babdb6;
191 text-align: center;
192 font-size: 80%;
193 }
194
195 .informalfigure,
196 .figure
197 {
198 margin: 1em;
199 }
200
201 .informalexample,
202 .example
203 {
204 margin-top: 1em;
205 margin-bottom: 1em;
206 }
207
208 .warning
209 {
210 /* tango:orange 0/1 */
211 background: #ffeed9;
212 background: rgba(252, 175, 62, 0.1);
213 border-color: #ffb04f;
214 border-color: rgba(252, 175, 62, 0.2);
215 }
216 .note
217 {
218 /* tango:chameleon 0/0.5 */
219 background: #d8ffb2;
220 background: rgba(138, 226, 52, 0.1);
221 border-color: #abf562;
222 border-color: rgba(138, 226, 52, 0.2);
223 }
224 div.blockquote
225 {
226 border-color: #eeeeec;
227 }
228 .note, .warning, div.blockquote
229 {
230 padding: 0.5em;
231 border-width: 1px;
232 border-style: solid;
233 margin: 2em;
234 }
235 .note p, .warning p
236 {
237 margin: 0;
238 }
239
240 div.warning h3.title,
241 div.note h3.title
242 {
243 display: none;
244 }
245
246 p + div.section
247 {
248 margin-top: 1em;
249 }
250
251 div.refnamediv,
252 div.refsynopsisdiv,
253 div.refsect1,
254 div.refsect2,
255 div.toc,
256 div.section
257 {
258 margin-bottom: 1em;
259 }
260
261 /* blob links */
262 h2 .extralinks, h3 .extralinks
263 {
264 float: right;
265 /* tango:aluminium 3 */
266 color: #babdb6;
267 font-size: 80%;
268 font-weight: normal;
269 }
270
271 .lineart
272 {
273 color: #d3d7cf;
274 font-weight: normal;
275 }
276
277 .annotation
278 {
279 /* tango:aluminium 5 */
280 color: #555753;
281 font-weight: normal;
282 }
283
284 .structfield
285 {
286 font-style: normal;
287 font-weight: normal;
288 }
289
290 acronym,abbr
291 {
292 border-bottom: 1px dotted gray;
293 }
294
295 /* code listings */
296
297 .listing_code .programlisting .normal,
298 .listing_code .programlisting .normal a,
299 .listing_code .programlisting .number,
300 .listing_code .programlisting .cbracket,
301 .listing_code .programlisting .symbol { color: #555753; }
302 .listing_code .programlisting .comment,
303 .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
304 .listing_code .programlisting .function,
305 .listing_code .programlisting .function a,
306 .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
307 .listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */
308 .listing_code .programlisting .keyword,
309 .listing_code .programlisting .usertype,
310 .listing_code .programlisting .type,
311 .listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */
312
313 .listing_frame {
314 /* tango:sky blue 1 */
315 border: solid 1px #729fcf;
316 border: solid 1px rgba(114, 159, 207, 0.2);
317 padding: 0px;
318 }
319
320 .listing_lines, .listing_code {
321 margin-top: 0px;
322 margin-bottom: 0px;
323 padding: 0.5em;
324 }
325 .listing_lines {
326 /* tango:sky blue 0.5 */
327 background: #a6c5e3;
328 background: rgba(114, 159, 207, 0.2);
329 /* tango:aluminium 6 */
330 color: #2e3436;
331 }
332 .listing_code {
333 /* tango:sky blue 0 */
334 background: #e6f3ff;
335 background: rgba(114, 159, 207, 0.1);
336 }
337 .listing_code .programlisting {
338 /* override from previous */
339 border: none 0px;
340 padding: 0px;
341 background: none;
342 }
343 .listing_lines pre, .listing_code pre {
344 margin: 0px;
345 }
346
32347 @media screen {
33348 sup a.footnote
34349 {
52367 */
53368 body
54369 {
55 padding-top: 5em;
370 padding-top: 2.5em;
56371 padding-bottom: 500px;
57372 max-width: 60em;
58373 }
66381 position: fixed;
67382 background: #e2e2e2;
68383 border-bottom: solid 1px #babdb6;
384 border-spacing: 5px;
69385 margin-top: 0;
70386 margin-bottom: 0;
71387 top: 0;
72388 left: 0;
73 height: 3em;
74389 z-index: 10;
390 }
391 table.navigation#top td
392 {
393 padding-left: 6px;
394 padding-right: 6px;
75395 }
76396 .navigation a, .navigation a:visited
77397 {
93413 td.shortcuts .dim
94414 {
95415 color: #babdb6;
416 }
417 .navigation .title
418 {
419 font-size: 80%;
420 max-width: none;
421 margin: 0px;
422 font-weight: normal;
96423 }
97424 }
98425 @media screen and (min-width: 60em) {
126453 col.enum_members_description { width: auto; }
127454 col.union_members_name { width: auto; }
128455 col.union_members_description { width: auto; }
456 .listing_lines { display: none; }
129457 }
130458 @media print {
131459 table.navigation {
145473 }
146474 }
147475
148 .navigation .title
149 {
150 font-size: 120%;
151 }
152
153 div.gallery-float
154 {
155 float: left;
156 padding: 10px;
157 }
158 div.gallery-float img
159 {
160 border-style: none;
161 }
162 div.gallery-spacer
163 {
164 clear: both;
165 }
166
167 a, a:visited
168 {
169 text-decoration: none;
170 /* tango:sky blue 2 */
171 color: #3465a4;
172 }
173 a:hover
174 {
175 text-decoration: underline;
176 /* tango:sky blue 1 */
177 color: #729fcf;
178 }
179
180 div.informaltable table
181 {
182 border-collapse: separate;
183 border-spacing: 20px 3px;
184 border: none;
185 }
186
187 div.informaltable table td, div.informaltable table th
188 {
189 vertical-align: top;
190 }
191
192 .function_type,
193 .variable_type,
194 .property_type,
195 .signal_type,
196 .parameter_name,
197 .struct_member_name,
198 .union_member_name,
199 .define_keyword,
200 .datatype_keyword,
201 .typedef_keyword
202 {
203 text-align: right;
204 }
205
206 /* dim non-primary columns */
207 .c_punctuation,
208 .function_type,
209 .variable_type,
210 .property_type,
211 .signal_type,
212 .define_keyword,
213 .datatype_keyword,
214 .typedef_keyword,
215 .property_flags,
216 .signal_flags,
217 .parameter_annotations,
218 .enum_member_annotations,
219 .struct_member_annotations,
220 .union_member_annotations
221 {
222 color: #888a85;
223 }
224
225 .function_type a,
226 .function_type a:visited,
227 .function_type a:hover,
228 .property_type a,
229 .property_type a:visited,
230 .property_type a:hover,
231 .signal_type a,
232 .signal_type a:visited,
233 .signal_type a:hover,
234 .signal_flags a,
235 .signal_flags a:visited,
236 .signal_flags a:hover
237 {
238 color: #729fcf;
239 }
240
241 div.table table
242 {
243 border-collapse: collapse;
244 border-spacing: 0px;
245 /* tango:aluminium 3 */
246 border: solid 1px #babdb6;
247 }
248
249 div.table table td, div.table table th
250 {
251 /* tango:aluminium 3 */
252 border: solid 1px #babdb6;
253 padding: 3px;
254 vertical-align: top;
255 }
256
257 div.table table th
258 {
259 /* tango:aluminium 2 */
260 background-color: #d3d7cf;
261 }
262
263 h4
264 {
265 color: #555753;
266 }
267
268 hr
269 {
270 /* tango:aluminium 1 */
271 color: #d3d7cf;
272 background: #d3d7cf;
273 border: none 0px;
274 height: 1px;
275 clear: both;
276 margin: 2.0em 0em 2.0em 0em;
277 }
278
279 dl.toc dt
280 {
281 padding-bottom: 0.25em;
282 }
283
284 dl.toc > dd > dl > dt
285 {
286 padding-top: 0.25em;
287 padding-bottom: 0.25em;
288 }
289
290 dl.toc > dt
291 {
292 padding-top: 1em;
293 padding-bottom: 0.5em;
294 font-weight: bold;
295 }
296
297 .parameter
298 {
299 font-style: normal;
300 }
301
302 .footer
303 {
304 padding-top: 3.5em;
305 /* tango:aluminium 3 */
306 color: #babdb6;
307 text-align: center;
308 font-size: 80%;
309 }
310
311 .informalfigure,
312 .figure
313 {
314 margin: 1em;
315 }
316
317 .informalexample,
318 .example
319 {
320 margin-top: 1em;
321 margin-bottom: 1em;
322 }
323
324 .warning
325 {
326 /* tango:orange 0/1 */
327 background: #ffeed9;
328 background: rgba(252, 175, 62, 0.1);
329 border-color: #ffb04f;
330 border-color: rgba(252, 175, 62, 0.2);
331 }
332 .note
333 {
334 /* tango:chameleon 0/0.5 */
335 background: #d8ffb2;
336 background: rgba(138, 226, 52, 0.1);
337 border-color: #abf562;
338 border-color: rgba(138, 226, 52, 0.2);
339 }
340 div.blockquote
341 {
342 border-color: #eeeeec;
343 }
344 .note, .warning, div.blockquote
345 {
346 padding: 0.5em;
347 border-width: 1px;
348 border-style: solid;
349 margin: 2em;
350 }
351 .note p, .warning p
352 {
353 margin: 0;
354 }
355
356 div.warning h3.title,
357 div.note h3.title
358 {
359 display: none;
360 }
361
362 p + div.section
363 {
364 margin-top: 1em;
365 }
366
367 div.refnamediv,
368 div.refsynopsisdiv,
369 div.refsect1,
370 div.refsect2,
371 div.toc,
372 div.section
373 {
374 margin-bottom: 1em;
375 }
376
377 /* blob links */
378 h2 .extralinks, h3 .extralinks
379 {
380 float: right;
381 /* tango:aluminium 3 */
382 color: #babdb6;
383 font-size: 80%;
384 font-weight: normal;
385 }
386
387 .lineart
388 {
389 color: #d3d7cf;
390 font-weight: normal;
391 }
392
393 .annotation
394 {
395 /* tango:aluminium 5 */
396 color: #555753;
397 font-weight: normal;
398 }
399
400 .structfield
401 {
402 font-style: normal;
403 font-weight: normal;
404 }
405
406 acronym,abbr
407 {
408 border-bottom: 1px dotted gray;
409 }
410
411 /* code listings */
412
413 .listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */
414 .listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */
415 .listing_code .programlisting .function { color: #000000; font-weight: bold; }
416 .listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */
417 .listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */
418 .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */
419 .listing_code .programlisting .normal { color: #000000; }
420 .listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */
421 .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */
422 .listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */
423 .listing_code .programlisting .type { color: #000000; }
424 .listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */
425 .listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */
426
427 .listing_frame {
428 /* tango:sky blue 1 */
429 border: solid 1px #729fcf;
430 border: solid 1px rgba(114, 159, 207, 0.2);
431 padding: 0px;
432 }
433
434 .listing_lines, .listing_code {
435 margin-top: 0px;
436 margin-bottom: 0px;
437 padding: 0.5em;
438 }
439 .listing_lines {
440 /* this just adds visual clutter and
441 takes precious room from small screens */
442 display: none;
443 }
444 .listing_lines {
445 /* tango:sky blue 0.5 */
446 background: #a6c5e3;
447 background: rgba(114, 159, 207, 0.2);
448 /* tango:aluminium 6 */
449 color: #2e3436;
450 }
451 .listing_code {
452 /* tango:sky blue 0 */
453 background: #e6f3ff;
454 background: rgba(114, 159, 207, 0.1);
455 }
456 .listing_code .programlisting {
457 /* override from previous */
458 border: none 0px;
459 padding: 0px;
460 background: none;
461 }
462 .listing_lines pre, .listing_code pre {
463 margin: 0px;
464 }
465
1515 .\" .sp <n> insert n+1 empty lines
1616 .\" for manpage-specific macros, see man(7)
1717 .SH NAME
18 grl-inspect \- show information about a Grilo source or plugin
18 grl-inspect \- show information about Grilo sources and keys
1919 .SH SYNOPSIS
2020 .B grl-inspect
2121 .RI [ options ]
22 .RI [ source ]
22 .RI [ source | key ]
2323 .SH DESCRIPTION
2424 This manual page documents briefly the
2525 .B grl-inspect
2626 command.
2727 .PP
2828 \fBgrl-inspect\fP is a tool that prints out information on available Grilo
29 sources. When executed with no SOURCE argument, grl-inspect will print
30 the list of all plugins and sources. When executed with a SOURCE,
29 sources and metadata keys. When executed with no SOURCE argument, grl-inspect
30 will print the list of all plugins and sources. When executed with a SOURCE,
3131 grl-inspect will print information about that source.
32 .PP
33 Alternatively, using \fB-k\fP prints out information about the available
34 metadata keys.
3235 .SH OPTIONS
3336 .TP
3437 .B \-h, \-\-help
4043 .B \-\-help\-all
4144 Show summary of all options.
4245 .TP
46 .B \-k
47 Show information about metadata keys
48 .TP
4349 .BI \-d,\ \-\-delay " seconds"
4450 Wait for some seconds before showing results. Useful when plugins may
4551 need some time for the source discovery process (example: UPnP).
118118 g_simple_async_result_complete_in_idle (G_SIMPLE_ASYNC_RESULT (result));
119119 g_object_unref (result);
120120 g_free (new_url);
121 if (data_file)
122 g_free (data_file);
123 if (full_path)
124 g_free (full_path);
125 return;
126 }
127 if (data_file)
128 g_free (data_file);
129 if (full_path)
130 g_free (full_path);
121 g_clear_pointer (&data_file, g_free);
122 g_clear_pointer (&full_path, g_free);
123
124 return;
125 }
126 g_clear_pointer (&data_file, g_free);
127 g_clear_pointer (&full_path, g_free);
131128
132129 g_simple_async_result_set_op_res_gpointer (G_SIMPLE_ASYNC_RESULT (result),
133130 new_url,
155152 }
156153 g_file_get_contents (full_path, content, length, &error);
157154
158 if (data_file)
159 g_free (data_file);
160
161 if (full_path)
162 g_free (full_path);
155 g_clear_pointer (&data_file, g_free);
156 g_clear_pointer (&full_path, g_free);
163157 }
164158
165159 void init_mock_requester (GrlNetWc *self)
205199
206200 if (!enable_mocking) {
207201 g_free (config_filename);
208 g_key_file_unref (config);
209 config = NULL;
202 g_clear_pointer (&config, g_key_file_unref);
210203 return;
211204 }
212205
265258 }
266259
267260 if (g_atomic_int_dec_and_test (&refcount)) {
268 if (config) {
269 g_key_file_unref (config);
270 }
271
272 if (base_path) {
273 g_free (base_path);
274 }
275
276 if (ignored_parameters) {
277 g_regex_unref (ignored_parameters);
278 }
261 g_clear_pointer (&config, g_key_file_unref);
262 g_clear_pointer (&base_path, g_free);
263 g_clear_pointer (&ignored_parameters, g_regex_unref);
279264 }
280265 }
281266
442442 struct request_clos *c = (struct request_clos *) data;
443443
444444 g_free (c->url);
445 if (c->headers) {
446 g_hash_table_unref (c->headers);
447 }
445 g_clear_pointer (&c->headers, g_hash_table_unref);
448446 g_free (c);
449447 }
450448
789787 priv->last_request.tv_sec - now.tv_sec,
790788 get_url_cb, c, request_clos_destroy);
791789 }
790 g_source_set_name_by_id (id, "[grl-net] get_url_cb");
792791
793792 c->source_id = id;
794793 g_queue_push_head (self->priv->pending, c);
803802 GrlNetWcPrivate *priv = self->priv;
804803 struct request_res *rr = op;
805804
806 if (priv->previous_data)
807 g_free (priv->previous_data);
805 g_clear_pointer (&priv->previous_data, g_free);
808806
809807 if (is_mocked ()) {
810808 get_content_mocked (self, op, &(priv->previous_data), length);
920918 callback,
921919 user_data);
922920
923 if (headers)
924 g_hash_table_unref (headers);
921 g_clear_pointer (&headers, g_hash_table_unref);
925922 }
926923
927924
4545
4646 INTROSPECTION_GIRS =
4747 INTROSPECTION_SCANNER_ARGS = --warn-all --add-include-path=$(top_srcdir)/src
48 INTROSPECTION_COMPILER_ARGS = --includedir=$(top_srcdir)/src
48 INTROSPECTION_COMPILER_ARGS = --includedir=$(top_srcdir)/src --includedir=$(top_builddir)/src
4949
5050 introspection_sources = \
5151 $(gir_headers) \
6060 $(top_builddir)/src/lib@GRL_NAME@.la
6161 GrlPls_@GRL_MAJORMINOR_NORM@_gir_FILES = $(introspection_sources)
6262 INTROSPECTION_GIRS += GrlPls-@GRL_MAJORMINOR@.gir
63 INTROSPECTION_COMPILER_ARGS = --includedir=$(top_builddir)/src
6463
6564 girdir = @INTROSPECTION_GIRDIR@
6665 gir_DATA = $(INTROSPECTION_GIRS)
404404 @HAVE_INTROSPECTION_TRUE@INTROSPECTION_GIRS = \
405405 @HAVE_INTROSPECTION_TRUE@ GrlPls-@GRL_MAJORMINOR@.gir
406406 @HAVE_INTROSPECTION_TRUE@INTROSPECTION_SCANNER_ARGS = --warn-all --add-include-path=$(top_srcdir)/src
407 @HAVE_INTROSPECTION_TRUE@INTROSPECTION_COMPILER_ARGS = --includedir=$(top_builddir)/src
407 @HAVE_INTROSPECTION_TRUE@INTROSPECTION_COMPILER_ARGS = --includedir=$(top_srcdir)/src --includedir=$(top_builddir)/src
408408 @HAVE_INTROSPECTION_TRUE@introspection_sources = \
409409 @HAVE_INTROSPECTION_TRUE@ $(gir_headers) \
410410 @HAVE_INTROSPECTION_TRUE@ $(gir_sources)
7474 G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "," \
7575 G_FILE_ATTRIBUTE_STANDARD_TYPE "," \
7676 G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN "," \
77 G_FILE_ATTRIBUTE_STANDARD_SIZE "," \
7778 G_FILE_ATTRIBUTE_TIME_MODIFIED "," \
7879 G_FILE_ATTRIBUTE_THUMBNAIL_PATH "," \
7980 G_FILE_ATTRIBUTE_THUMBNAILING_FAILED "," \
116117 {
117118 g_return_if_fail (priv);
118119
119 if (priv->cancellable) {
120 g_object_unref (priv->cancellable);
121 priv->cancellable = NULL;
122 }
123
120 g_clear_object (&priv->cancellable);
124121 g_free (priv);
125122 }
126123
127124 static void
128125 grl_source_browse_spec_free (GrlSourceBrowseSpec *spec)
129126 {
130 if (spec->source) {
131 g_object_unref (spec->source);
132 spec->source = NULL;
133 }
134
135 if (spec->container) {
136 g_object_unref (spec->container);
137 spec->container = NULL;
138 }
127 g_clear_object (&spec->source);
128 g_clear_object (&spec->container);
139129
140130 if (spec->keys) {
141131 /* TODO */
142132 spec->keys = NULL;
143133 }
144134
145 if (spec->options) {
146 g_object_unref (spec->options);
147 spec->options = NULL;
148 }
135 g_clear_object (&spec->options);
149136
150137 if (spec->user_data) {
151138 struct _GrlPlsPrivate *priv = (struct _GrlPlsPrivate *) spec->user_data;
832819 /* check if we have the entries cached or not */
833820 valid_entries = g_object_get_data (G_OBJECT (bs->container), GRL_DATA_PRIV_PLS_VALID_ENTRIES);
834821 if (valid_entries) {
822 guint id;
823
835824 GRL_DEBUG ("%s : using cached data bs=%p", __FUNCTION__, bs);
836 g_idle_add ((GSourceFunc) grl_pls_browse_report_results, bs);
825 id = g_idle_add ((GSourceFunc) grl_pls_browse_report_results, bs);
826 g_source_set_name_by_id (id, "[grl-pls] grl_pls_browse_report_results");
837827 return;
838828 }
839829
11201110 }
11211111
11221112 end:
1123 if (file_date)
1124 g_date_time_unref (file_date);
1125 if (min_date)
1126 g_date_time_unref (min_date);
1127 if (max_date)
1128 g_date_time_unref (max_date);
1113 g_clear_pointer (&file_date, g_date_time_unref);
1114 g_clear_pointer (&min_date, g_date_time_unref);
1115 g_clear_pointer (&max_date, g_date_time_unref);
1116
11291117 return is_media;
11301118 }
11311119
13091297 grl_media_set_mime (media, mime);
13101298 }
13111299
1300 /* Size */
1301 grl_media_set_size (media, g_file_info_get_size (info));
1302
13121303 /* Title */
13131304 str = g_strdup (g_file_info_get_display_name (info));
13141305
2727 sl
2828 sr
2929 sr@latin
30 sv
3031 tg
3132 uk
3233 zh_CN
0 # Swedish translation for grilo.
1 # Copyright (C) 2014 grilo's COPYRIGHT HOLDER
2 # This file is distributed under the same license as the grilo package.
3 # Marcus Lundblad <ml@update.uu.se>, 2014.
4 #
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: grilo master\n"
8 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
9 "product=grilo&keywords=I18N+L10N&component=general\n"
10 "POT-Creation-Date: 2014-02-08 09:42+0000\n"
11 "PO-Revision-Date: 2014-02-25 22:45+0100\n"
12 "Last-Translator: Marcus Lundblad <ml@update.uu.se>\n"
13 "Language-Team: svenska <tp-sv@listor.tp-sv.se>\n"
14 "Language: sv\n"
15 "MIME-Version: 1.0\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
18 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
19 "X-Generator: Gtranslator 2.91.6\n"
20
21 #: ../libs/net/grl-net-mock.c:86
22 msgid "No mock definition found"
23 msgstr "Ingen attrappdefinition hittades"
24
25 #: ../libs/net/grl-net-mock.c:98
26 #, c-format
27 msgid "Could not find mock content %s"
28 msgstr "Kunde inte hitta attrappinnehåll %s"
29
30 #: ../libs/net/grl-net-mock.c:118
31 msgid "Could not access mock content"
32 msgstr "Kunde inte komma åt attrappinnehåll"
33
34 #: ../libs/net/grl-net-wc.c:468
35 msgid "Cannot connect to the server"
36 msgstr "Kan inte ansluta till servern"
37
38 #: ../libs/net/grl-net-wc.c:474
39 msgid "Cannot connect to the proxy server"
40 msgstr "Kan inte ansluta till proxyservern"
41
42 #: ../libs/net/grl-net-wc.c:481
43 #, c-format
44 msgid "Invalid request URI or header: %s"
45 msgstr "Ogiltig fråge-URI eller huvud: %s"
46
47 #: ../libs/net/grl-net-wc.c:488
48 #, c-format
49 msgid "Authentication required: %s"
50 msgstr "Autentisering krävs: %s"
51
52 #: ../libs/net/grl-net-wc.c:493
53 #, c-format
54 msgid "The requested resource was not found: %s"
55 msgstr "Den efterfrågade resursen hittades inte: %s"
56
57 #: ../libs/net/grl-net-wc.c:500
58 #, c-format
59 msgid "The entry has been modified since it was downloaded: %s"
60 msgstr "Innehållet har ändrats sedan det laddades ner: %s"
61
62 #: ../libs/net/grl-net-wc.c:506 ../libs/net/grl-net-wc.c:615
63 #: ../src/grl-source.c:1736 ../src/grl-source.c:1831 ../src/grl-source.c:1974
64 #: ../src/grl-source.c:2210 ../src/grl-source.c:2330
65 #, c-format
66 msgid "Operation was cancelled"
67 msgstr "Åtgärd avbröts"
68
69 #: ../libs/net/grl-net-wc.c:509
70 #, c-format
71 msgid "Unhandled status: %s"
72 msgstr "Ohanterad status: %s"
73
74 #: ../libs/net/grl-net-wc.c:619 ../libs/net/grl-net-wc.c:660
75 msgid "Data not available"
76 msgstr "Data ej tillgängligt"
77
78 #: ../libs/net/grl-net-wc.c:713
79 #, c-format
80 msgid "Invalid URL %s"
81 msgstr "Ogiltig plats %s"
82
83 #: ../src/grilo.c:181
84 msgid "Semicolon-separated paths containing Grilo plugins"
85 msgstr "Semikolonavgränsade sökvägar innehållandes Grilo-insticksmoduler"
86
87 #: ../src/grilo.c:183
88 msgid "Colon-separated paths containing Grilo plugins"
89 msgstr "Kolonavgränsade sökvägar innehållandes Grilo-insticksmoduler"
90
91 #: ../src/grilo.c:186
92 msgid "Colon-separated list of Grilo plugins to use"
93 msgstr "Kolonavgränsad lista med Grilo-insticksmodulera att använda"
94
95 #: ../src/grilo.c:191
96 msgid "Grilo Options"
97 msgstr "Grilo-val"
98
99 #: ../src/grilo.c:192
100 msgid "Show Grilo Options"
101 msgstr "Visa Grilo-val"
102
103 #: ../src/grl-multiple.c:130
104 #, c-format
105 msgid "No searchable sources available"
106 msgstr "Inga sökbara källor är tillgängliga"
107
108 #: ../src/grl-multiple.c:485
109 #, c-format
110 msgid "Could not resolve media for URI '%s'"
111 msgstr "Kunde inte slå upp media för platsen ”%s”"
112
113 #: ../src/grl-registry.c:328 ../src/grl-registry.c:1002
114 #, c-format
115 msgid "Plugin '%s' is already loaded"
116 msgstr "Insticksmodulen ”%s” är redan laddad"
117
118 #: ../src/grl-registry.c:340
119 #, c-format
120 msgid "Failed to initialize plugin from %s"
121 msgstr "Misslyckades med att intitialisera insticksmodul från %s"
122
123 #: ../src/grl-registry.c:734
124 #, c-format
125 msgid "Source with id '%s' was not found"
126 msgstr "Källa med id ”%s” hittades inte"
127
128 #: ../src/grl-registry.c:797
129 #, c-format
130 msgid "Failed to load plugin from %s"
131 msgstr "Misslyckades med att ladda insticksmodul från %s"
132
133 #: ../src/grl-registry.c:806
134 #, c-format
135 msgid "Invalid plugin file %s"
136 msgstr "Ogiltig insticksmodulsfil %s"
137
138 #: ../src/grl-registry.c:817
139 #, c-format
140 msgid "'%s' is not a valid plugin file"
141 msgstr "”%s” är inte en giltig insticksmodulsfil"
142
143 #: ../src/grl-registry.c:836
144 #, c-format
145 msgid "Unable to load plugin '%s'"
146 msgstr "Misslyckades med att ladda insticksmodul ”%s”"
147
148 #: ../src/grl-registry.c:847
149 #, c-format
150 msgid "Plugin '%s' already exists"
151 msgstr "Insticksmodulen ”%s” finns redan"
152
153 #: ../src/grl-registry.c:944
154 #, c-format
155 msgid "All configured plugin paths are invalid"
156 msgstr "Alla konfigurerade sökvägar till insticksmoduler är felaktiga"
157
158 #: ../src/grl-registry.c:991
159 #, c-format
160 msgid "Plugin '%s' not available"
161 msgstr "Insticksmodulen ”%s” är ej tillgänglig"
162
163 #: ../src/grl-registry.c:1212
164 #, c-format
165 msgid "Plugin not found: '%s'"
166 msgstr "Insticksmodul hittades inte: %s"
167
168 #: ../src/grl-registry.c:1294
169 #, c-format
170 msgid "Metadata key '%s' cannot be registered"
171 msgstr "Metadatanyckeln ”%s” kunde inte registreras"
172
173 #: ../src/grl-registry.c:1587
174 #, c-format
175 msgid "Plugin configuration does not contain 'plugin-id' reference"
176 msgstr "Konfiguration för insticksmodul innehåller ingen ”plugin-in”-referens"
177
178 #: ../src/grl-source.c:2659
179 #, c-format
180 msgid "Some keys could not be written"
181 msgstr "Några nycklar kunde inte skrivas"
182
183 #: ../src/grl-source.c:2731
184 #, c-format
185 msgid "None of the specified keys are writable"
186 msgstr "Ingen av de angivna nycklarna är skrivbara"
187
188 #: ../src/grl-source.c:4037
189 #, c-format
190 msgid "Media has no 'id', cannot remove"
191 msgstr "Mediet har inget ”id”, kan inte ta bort"
231231 {
232232 GValue value = { 0 };
233233
234 g_return_if_fail (GRL_IS_DATA (data));
235 g_return_if_fail (key);
236
234237 if (strvalue) {
235238 g_value_init (&value, G_TYPE_STRING);
236239 g_value_set_string (&value, strvalue);
256259 const gchar *
257260 grl_data_get_string (GrlData *data, GrlKeyID key)
258261 {
259 const GValue *value = grl_data_get (data, key);
262 const GValue *value;
263
264 g_return_val_if_fail (GRL_IS_DATA (data), NULL);
265 g_return_val_if_fail (key, NULL);
266
267 value = grl_data_get (data, key);
260268
261269 if (!value || !G_VALUE_HOLDS_STRING (value)) {
262270 return NULL;
280288 grl_data_set_int (GrlData *data, GrlKeyID key, gint intvalue)
281289 {
282290 GValue value = { 0 };
291
292 g_return_if_fail (GRL_IS_DATA (data));
293 g_return_if_fail (key);
294
283295 g_value_init (&value, G_TYPE_INT);
284296 g_value_set_int (&value, intvalue);
285297 grl_data_set (data, key, &value);
301313 gint
302314 grl_data_get_int (GrlData *data, GrlKeyID key)
303315 {
304 const GValue *value = grl_data_get (data, key);
316 const GValue *value;
317
318 g_return_val_if_fail (GRL_IS_DATA (data), 0);
319 g_return_val_if_fail (key, 0);
320
321 value = grl_data_get (data, key);
305322
306323 if (!value || !G_VALUE_HOLDS_INT (value)) {
307324 return 0;
325342 grl_data_set_float (GrlData *data, GrlKeyID key, float floatvalue)
326343 {
327344 GValue value = { 0 };
345
346 g_return_if_fail (GRL_IS_DATA (data));
347 g_return_if_fail (key);
348
328349 g_value_init (&value, G_TYPE_FLOAT);
329350 g_value_set_float (&value, floatvalue);
330351 grl_data_set (data, key, &value);
346367 gfloat
347368 grl_data_get_float (GrlData *data, GrlKeyID key)
348369 {
349 const GValue *value = grl_data_get (data, key);
370 const GValue *value;
371
372 g_return_val_if_fail (GRL_IS_DATA (data), 0.0);
373 g_return_val_if_fail (key, 0.0);
374
375 value = grl_data_get (data, key);
350376
351377 if (!value || !G_VALUE_HOLDS_FLOAT (value)) {
352378 return 0;
370396 grl_data_set_boolean (GrlData *data, GrlKeyID key, gboolean boolvalue)
371397 {
372398 GValue value = { 0 };
399
400 g_return_if_fail (GRL_IS_DATA (data));
401 g_return_if_fail (key);
402
373403 g_value_init (&value, G_TYPE_BOOLEAN);
374404 g_value_set_boolean (&value, boolvalue);
375405 grl_data_set (data, key, &value);
378408 /**
379409 * grl_data_get_boolean:
380410 * @data: data to inspect
381 * @key (type GrlKeyID): key to use
411 * @key: (type GrlKeyID): key to use
382412 *
383413 * Returns: the first boolean value associated with @key from @data. If @key has
384414 * no first value, or value is not a gboolean, or @key is not in the data, then
389419 gboolean
390420 grl_data_get_boolean (GrlData *data, GrlKeyID key)
391421 {
392 const GValue *value = grl_data_get (data, key);
422 const GValue *value;
423
424 g_return_val_if_fail (GRL_IS_DATA (data), FALSE);
425 g_return_val_if_fail (key, FALSE);
426
427 value = grl_data_get (data, key);
393428
394429 if (!value || !G_VALUE_HOLDS_BOOLEAN (value)) {
395430 return FALSE;
416451 GValue v = { 0 };
417452 GByteArray * array;
418453
454 g_return_if_fail (GRL_IS_DATA (data));
455 g_return_if_fail (key);
456
419457 if (!buf || !size) {
420458 return;
421459 }
448486 const guint8 *
449487 grl_data_get_binary(GrlData *data, GrlKeyID key, gsize *size)
450488 {
489 const GValue *value;
490
451491 g_return_val_if_fail (size, NULL);
452
453 const GValue *value = grl_data_get (data, key);
492 g_return_val_if_fail (GRL_IS_DATA (data), NULL);
493 g_return_val_if_fail (key, NULL);
494
495 value = grl_data_get (data, key);
454496
455497 if (!value || !G_VALUE_HOLDS_BOXED (value)) {
456498 return NULL;
479521 {
480522 GValue value = { 0 };
481523
524 g_return_if_fail (GRL_IS_DATA (data));
525 g_return_if_fail (key);
482526 g_return_if_fail (boxed != NULL);
483527
484528 g_value_init (&value, GRL_METADATA_KEY_GET_TYPE (key));
505549 gpointer
506550 grl_data_get_boxed (GrlData *data, GrlKeyID key)
507551 {
508 const GValue *value = grl_data_get (data, key);
552 const GValue *value;
553
554 g_return_val_if_fail (GRL_IS_DATA (data), NULL);
555 g_return_val_if_fail (key, NULL);
556
557 value = grl_data_get (data, key);
509558
510559 if (!value || !G_VALUE_HOLDS_BOXED (value)) {
511560 return NULL;
527576 void
528577 grl_data_remove (GrlData *data, GrlKeyID key)
529578 {
579 g_return_if_fail (GRL_IS_DATA (data));
580 g_return_if_fail (key);
581
530582 grl_data_remove_nth (data, key, 0);
531583 }
532584
549601 gboolean found = FALSE;
550602
551603 g_return_val_if_fail (GRL_IS_DATA (data), FALSE);
604 g_return_val_if_fail (key, FALSE);
552605
553606 sample_key = get_sample_key (key);
554607 if (!sample_key) {
671724 {
672725 GrlRelatedKeys *relkeys;
673726
727 g_return_if_fail (GRL_IS_DATA (data));
728 g_return_if_fail (key);
729
674730 if (strvalue) {
675731 relkeys = grl_related_keys_new ();
676732 grl_related_keys_set_string (relkeys, key, strvalue);
695751 {
696752 GrlRelatedKeys *relkeys;
697753
754 g_return_if_fail (GRL_IS_DATA (data));
755 g_return_if_fail (key);
756
698757 relkeys = grl_related_keys_new ();
699758 grl_related_keys_set_int (relkeys, key, intvalue);
700759 grl_data_add_related_keys (data, relkeys);
716775 gfloat floatvalue)
717776 {
718777 GrlRelatedKeys *relkeys;
778
779 g_return_if_fail (GRL_IS_DATA (data));
780 g_return_if_fail (key);
719781
720782 relkeys = grl_related_keys_new ();
721783 grl_related_keys_set_float (relkeys, key, floatvalue);
741803 {
742804 GrlRelatedKeys *relkeys;
743805
806 g_return_if_fail (GRL_IS_DATA (data));
807 g_return_if_fail (key);
808
744809 if (!buf || !size) {
745810 return;
746811 }
767832 {
768833 GrlRelatedKeys *relkeys;
769834
835 g_return_if_fail (GRL_IS_DATA (data));
836 g_return_if_fail (key);
770837 g_return_if_fail (boxed != NULL);
771838
772839 relkeys = grl_related_keys_new ();
11191119 }
11201120
11211121 /**
1122 * grl_media_set_size:
1123 * @media: the media
1124 * @size: the size in bytes
1125 *
1126 * Set the size of the media
1127 *
1128 * Since: 0.2.10
1129 */
1130 void
1131 grl_media_set_size (GrlMedia *media, gint size)
1132 {
1133 grl_data_set_int (GRL_DATA (media),
1134 GRL_METADATA_KEY_SIZE,
1135 size);
1136 }
1137
1138 /**
11221139 * grl_media_get_id:
11231140 * @media: the media object
11241141 *
17881805 return grl_related_keys_get_string (relkeys,
17891806 GRL_METADATA_KEY_KEYWORD);
17901807 }
1808
1809 /**
1810 * grl_media_get_size:
1811 * @media: the media object
1812 *
1813 * Returns: the media's size, in bytes or -1 if unknown.
1814 *
1815 * since: 0.2.10
1816 */
1817 gint
1818 grl_media_get_size (GrlMedia *media)
1819 {
1820 g_return_val_if_fail (GRL_IS_MEDIA (media), -1);
1821 return grl_data_get_int (GRL_DATA (media), GRL_METADATA_KEY_SIZE);
1822 }
184184
185185 void grl_media_set_keyword (GrlMedia *media, const gchar *keyword);
186186
187 void grl_media_set_size (GrlMedia *media, gint size);
188
187189 void grl_media_add_url_data (GrlMedia *media, const gchar *url, const gchar *mime);
188190
189191 void grl_media_add_author (GrlMedia *media, const gchar *author);
277279
278280 const gchar * grl_media_get_keyword_nth (GrlMedia *media, guint index);
279281
282 gint grl_media_get_size (GrlMedia *media);
283
280284 GType grl_media_get_type (void) G_GNUC_CONST;
281285
282286 GrlMedia *grl_media_new (void);
180180 }
181181
182182 registry = grl_registry_get_default ();
183 g_object_unref (registry);
183 grl_registry_shutdown (registry);
184184 }
185185
186186 /**
227227 {
228228 g_return_if_fail (caps);
229229
230 if (caps->priv->key_filter) {
231 g_list_free (caps->priv->key_filter);
232 }
230 g_clear_pointer (&caps->priv->key_filter, g_list_free);
233231
234232 caps->priv->key_filter = g_list_copy (keys);
235233 }
286284 {
287285 g_return_if_fail (caps);
288286
289 if (caps->priv->key_range_filter) {
290 g_list_free (caps->priv->key_range_filter);
291 }
287 g_clear_pointer (&caps->priv->key_range_filter, g_list_free);
292288
293289 caps->priv->key_range_filter = g_list_copy (keys);
294290 }
3636 void
3737 grl_metadata_key_setup_system_keys (GrlRegistry *registry)
3838 {
39 grl_registry_register_metadata_key_full (registry,
40 g_param_spec_string ("album",
41 "Album",
42 "Album the media belongs to",
43 NULL,
44 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
45 GRL_METADATA_KEY_ALBUM,
46 NULL);
47
48 grl_registry_register_metadata_key_full (registry,
49 g_param_spec_string ("artist",
50 "Artist",
51 "Main artist",
52 NULL,
53 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
54 GRL_METADATA_KEY_ARTIST,
55 NULL);
56
57 grl_registry_register_metadata_key_full (registry,
58 g_param_spec_string ("author",
59 "Author",
60 "Creator of the media",
61 NULL,
62 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
63 GRL_METADATA_KEY_AUTHOR,
64 NULL);
65
66 grl_registry_register_metadata_key_full (registry,
67 g_param_spec_boxed ("publishing-date",
68 "Publishing date",
69 "When the media was originally published",
70 G_TYPE_DATE_TIME,
71 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
72 GRL_METADATA_KEY_PUBLICATION_DATE,
73 NULL);
74
75 grl_registry_register_metadata_key_full (registry,
76 g_param_spec_string ("description",
77 "Description",
78 "Description of the media",
79 NULL,
80 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
81 GRL_METADATA_KEY_DESCRIPTION,
82 NULL);
83
84 grl_registry_register_metadata_key_full (registry,
85 g_param_spec_string ("genre",
86 "Genre",
87 "Genre of the media",
88 NULL,
89 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
90 GRL_METADATA_KEY_GENRE,
91 NULL);
92
93 grl_registry_register_metadata_key_full (registry,
94 g_param_spec_string ("id",
95 "ID",
96 "Identifier of media",
97 NULL,
98 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
99 GRL_METADATA_KEY_ID,
100 NULL);
101
102 grl_registry_register_metadata_key_full (registry,
103 g_param_spec_string ("last-played-time",
104 "LastPlayedTime",
105 "Last time the media was played",
106 NULL,
107 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
108 GRL_METADATA_KEY_LAST_PLAYED,
109 NULL);
110
111 grl_registry_register_metadata_key_full (registry,
112 g_param_spec_string ("lyrics",
113 "Lyrics",
114 "Song lyrics",
115 NULL,
116 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
117 GRL_METADATA_KEY_LYRICS,
118 NULL);
119
120 grl_registry_register_metadata_key_full (registry,
121 g_param_spec_string ("mime-type",
122 "MimeType",
123 "Media mime type",
124 NULL,
125 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
126 GRL_METADATA_KEY_MIME,
127 NULL);
128
129 grl_registry_register_metadata_key_full (registry,
130 g_param_spec_string ("site",
131 "Site",
132 "Site",
133 NULL,
134 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
135 GRL_METADATA_KEY_SITE,
136 NULL);
137
138 grl_registry_register_metadata_key_full (registry,
139 g_param_spec_string ("source",
140 "Source",
141 "Source ID providing the content",
142 NULL,
143 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
144 GRL_METADATA_KEY_SOURCE,
145 NULL);
146
147 grl_registry_register_metadata_key_full (registry,
148 g_param_spec_string ("thumbnail",
149 "Thumbnail",
150 "Thumbnail image",
151 NULL,
152 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
153 GRL_METADATA_KEY_THUMBNAIL,
154 NULL);
155
156
157 grl_registry_register_metadata_key_full (registry,
158 g_param_spec_boxed ("thumbnail-binary",
159 "Thumbnail Binary",
160 "Thumbnail binary image",
161 G_TYPE_BYTE_ARRAY,
162 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
163 GRL_METADATA_KEY_THUMBNAIL_BINARY,
164
165 NULL);
166
167 grl_registry_register_metadata_key_full (registry,
168 g_param_spec_string ("title",
169 "Title",
170 "Title of the media",
171 NULL,
172 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
173 GRL_METADATA_KEY_TITLE,
174 NULL);
175
176 grl_registry_register_metadata_key_full (registry,
177 g_param_spec_string ("url",
178 "URL",
179 "Media URL",
180 NULL,
181 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
182 GRL_METADATA_KEY_URL,
183 NULL);
184
185
186 grl_registry_register_metadata_key_full (registry,
187 g_param_spec_string ("external-url",
188 "External URL",
189 "External location where the media can be played back, usually a website",
190 NULL,
191 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
192 GRL_METADATA_KEY_EXTERNAL_URL,
193 NULL);
194
195
196 grl_registry_register_metadata_key_full (registry,
197 g_param_spec_string ("external-player",
198 "External Player URL",
199 "URL of an external player that can be used to play the resource (usually a Flash player)",
200 NULL,
201 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
202 GRL_METADATA_KEY_EXTERNAL_PLAYER,
203 NULL);
204
205
206 grl_registry_register_metadata_key_full (registry,
207 g_param_spec_string ("studio",
208 "Studio",
209 "Studio the media is from",
210 NULL,
211 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
212 GRL_METADATA_KEY_STUDIO,
213 NULL);
214
215
216 grl_registry_register_metadata_key_full (registry,
217 g_param_spec_string ("certificate",
218 "Certificate",
219 "Age certificate of the media",
220 NULL,
221 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
222 GRL_METADATA_KEY_CERTIFICATE,
223 NULL);
224
225
226 grl_registry_register_metadata_key_full (registry,
227 g_param_spec_string ("license",
228 "License",
229 "The license of the media",
230 NULL,
231 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
232 GRL_METADATA_KEY_LICENSE,
233 NULL);
234
235 grl_registry_register_metadata_key_full (registry,
236 g_param_spec_int ("bitrate",
237 "Bitrate",
238 "Media bitrate in KBits/s",
239 0, G_MAXINT,
240 0,
241 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
242 GRL_METADATA_KEY_BITRATE,
243 NULL);
244
245 grl_registry_register_metadata_key_full (registry,
246 g_param_spec_int ("childcount",
247 "Childcount",
248 "Number of items contained in a container",
249 -1, G_MAXINT,
250 GRL_METADATA_KEY_CHILDCOUNT_UNKNOWN,
251 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
252 GRL_METADATA_KEY_CHILDCOUNT,
253 NULL);
254
255 grl_registry_register_metadata_key_full (registry,
256 g_param_spec_int ("duration",
257 "Duration",
258 "Media duration in seconds",
259 0, G_MAXINT,
260 0,
261 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
262 GRL_METADATA_KEY_DURATION,
263 NULL);
264
265 grl_registry_register_metadata_key_full (registry,
266 g_param_spec_int ("height",
267 "Height",
268 "Height of media ('y' axis)",
269 0, G_MAXINT,
270 0,
271 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
272 GRL_METADATA_KEY_HEIGHT,
273 NULL);
274
275 grl_registry_register_metadata_key_full (registry,
276 g_param_spec_int ("playback-interrupted-time",
277 "PlaybackInterruptedTime",
278 "Time at which playback was interrupted",
279 0, G_MAXINT,
280 0,
281 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
282 GRL_METADATA_KEY_LAST_POSITION,
283 NULL);
284
285 grl_registry_register_metadata_key_full (registry,
286 g_param_spec_int ("play-count",
287 "PlayCount",
288 "How many times media was played",
289 0, G_MAXINT,
290 0,
291 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
292 GRL_METADATA_KEY_PLAY_COUNT,
293 NULL);
294
295 grl_registry_register_metadata_key_full (registry,
296 g_param_spec_int ("width",
297 "Width",
298 "Width of media ('x' axis)",
299 0, G_MAXINT,
300 0,
301 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
302 GRL_METADATA_KEY_WIDTH,
303 NULL);
304
305
306 grl_registry_register_metadata_key_full (registry,
307 g_param_spec_float ("framerate",
308 "Framerate",
309 "Frames per second",
310 0, G_MAXFLOAT,
311 0,
312 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
313 GRL_METADATA_KEY_FRAMERATE,
314 NULL);
315
316 grl_registry_register_metadata_key_full (registry,
317 g_param_spec_float ("rating",
318 "Rating",
319 "Media rating",
320 0, G_MAXFLOAT,
321 0,
322 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
323 GRL_METADATA_KEY_RATING,
324 NULL);
325
326
327 grl_registry_register_metadata_key_full (registry,
328 g_param_spec_int ("season",
329 "Season",
330 "Season of a show",
331 0, G_MAXINT,
332 0,
333 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
334 GRL_METADATA_KEY_SEASON,
335 NULL);
336
337
338 grl_registry_register_metadata_key_full (registry,
339 g_param_spec_int ("episode",
340 "Episode",
341 "Episode of a show",
342 0, G_MAXINT,
343 0,
344 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
345 GRL_METADATA_KEY_EPISODE,
346 NULL);
347
348
349 grl_registry_register_metadata_key_full (registry,
350 g_param_spec_string ("show",
351 "Show",
352 "Name of a show",
353 NULL,
354 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
355 GRL_METADATA_KEY_SHOW,
356 NULL);
357
358
359 grl_registry_register_metadata_key_full (registry,
360 g_param_spec_boxed ("creation-date",
361 "Creation date",
362 "Creation date",
363 G_TYPE_DATE_TIME,
364 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
365 GRL_METADATA_KEY_CREATION_DATE,
366 NULL);
367
368
369 grl_registry_register_metadata_key_full (registry,
370 g_param_spec_string ("camera-model",
371 "Camera model",
372 "Name of the camera model used to take the photo",
373 NULL,
374 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
375 GRL_METADATA_KEY_CAMERA_MODEL,
376 NULL);
377
378
379 grl_registry_register_metadata_key_full (registry,
380 g_param_spec_int ("orientation",
381 "Picture orientation",
382 "Orientation of the photo in degree (clockwise)",
383 0, 359,
384 0,
385 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
386 GRL_METADATA_KEY_ORIENTATION,
387 NULL);
388
389
390 grl_registry_register_metadata_key_full (registry,
391 g_param_spec_boolean ("flash-used",
392 "Flash used",
393 "Whether or not a flash was used to take that picture",
394 FALSE,
395 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
396 GRL_METADATA_KEY_FLASH_USED,
397 NULL);
398
399
400 grl_registry_register_metadata_key_full (registry,
401 g_param_spec_float ("exposure-time",
402 "Exposure time",
403 "Exposure time of the photo in seconds",
404 0, G_MAXFLOAT,
405 0,
406 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
407 GRL_METADATA_KEY_EXPOSURE_TIME,
408 NULL);
409
410
411 grl_registry_register_metadata_key_full (registry,
412 g_param_spec_float ("iso-speed",
413 "ISO speed",
414 "Photographic film's sensitivity to light as ISO value",
415 0, G_MAXFLOAT,
416 0,
417 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
418 GRL_METADATA_KEY_ISO_SPEED,
419 NULL);
420
421 grl_registry_register_metadata_key_full (registry,
422 g_param_spec_int ("track-number",
423 "Track number",
424 "Track number inside the album",
425 1, G_MAXINT,
426 1,
427 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
428 GRL_METADATA_KEY_TRACK_NUMBER,
429 NULL);
430
431 grl_registry_register_metadata_key_full (registry,
432 g_param_spec_boxed ("modification-date",
433 "Modification date",
434 "When the media was last modified",
435 G_TYPE_DATE_TIME,
436 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
437 GRL_METADATA_KEY_MODIFICATION_DATE,
438 NULL);
439
440 grl_registry_register_metadata_key_full (registry,
441 g_param_spec_float ("start-time",
442 "Start Time",
443 "Start offset in seconds relative to container",
444 0.0, G_MAXFLOAT,
445 0.0,
446 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
447 GRL_METADATA_KEY_START_TIME,
448 NULL);
449
450 grl_registry_register_metadata_key_full (registry,
451 g_param_spec_boolean ("favourite",
452 "Favourite",
453 "Whether or not the element was marked as favourite",
454 FALSE,
455 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
456 GRL_METADATA_KEY_FAVOURITE,
457 NULL);
458
459 grl_registry_register_metadata_key_full (registry,
460 g_param_spec_string ("region",
461 "Region",
462 "Region in which the media was published",
463 NULL,
464 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
465 GRL_METADATA_KEY_REGION,
466 NULL);
467
468 grl_registry_register_metadata_key_full (registry,
469 g_param_spec_string ("keyword",
470 "keyword",
471 "A keyword describing the media",
472 NULL,
473 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
474 GRL_METADATA_KEY_KEYWORD,
475 NULL);
476
477 grl_registry_register_metadata_key_full (registry,
478 g_param_spec_string ("performer",
479 "performer",
480 "An actor performing in the movie",
481 NULL,
482 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
483 GRL_METADATA_KEY_PERFORMER,
484 NULL);
485
486 grl_registry_register_metadata_key_full (registry,
487 g_param_spec_string ("producer",
488 "Producer",
489 "Producer of the movie",
490 NULL,
491 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
492 GRL_METADATA_KEY_PRODUCER,
493 NULL);
494
495 grl_registry_register_metadata_key_full (registry,
496 g_param_spec_string ("director",
497 "Director",
498 "Director of the movie",
499 NULL,
500 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
501 GRL_METADATA_KEY_DIRECTOR,
502 NULL);
503
504 grl_registry_register_metadata_key_full (registry,
505 g_param_spec_string ("original-title",
506 "Original Title",
507 "Original, untranslated title of the movie",
508 NULL,
509 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
510 GRL_METADATA_KEY_ORIGINAL_TITLE,
511 NULL);
39 grl_registry_register_metadata_key_system (registry,
40 g_param_spec_string ("album",
41 "Album",
42 "Album the media belongs to",
43 NULL,
44 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
45 GRL_METADATA_KEY_ALBUM,
46 NULL);
47
48 grl_registry_register_metadata_key_system (registry,
49 g_param_spec_string ("artist",
50 "Artist",
51 "Main artist",
52 NULL,
53 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
54 GRL_METADATA_KEY_ARTIST,
55 NULL);
56
57 grl_registry_register_metadata_key_system (registry,
58 g_param_spec_string ("author",
59 "Author",
60 "Creator of the media",
61 NULL,
62 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
63 GRL_METADATA_KEY_AUTHOR,
64 NULL);
65
66 grl_registry_register_metadata_key_system (registry,
67 g_param_spec_boxed ("publishing-date",
68 "Publishing date",
69 "When the media was originally published",
70 G_TYPE_DATE_TIME,
71 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
72 GRL_METADATA_KEY_PUBLICATION_DATE,
73 NULL);
74
75 grl_registry_register_metadata_key_system (registry,
76 g_param_spec_string ("description",
77 "Description",
78 "Description of the media",
79 NULL,
80 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
81 GRL_METADATA_KEY_DESCRIPTION,
82 NULL);
83
84 grl_registry_register_metadata_key_system (registry,
85 g_param_spec_string ("genre",
86 "Genre",
87 "Genre of the media",
88 NULL,
89 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
90 GRL_METADATA_KEY_GENRE,
91 NULL);
92
93 grl_registry_register_metadata_key_system (registry,
94 g_param_spec_string ("id",
95 "ID",
96 "Identifier of media",
97 NULL,
98 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
99 GRL_METADATA_KEY_ID,
100 NULL);
101
102 grl_registry_register_metadata_key_system (registry,
103 g_param_spec_string ("last-played-time",
104 "LastPlayedTime",
105 "Last time the media was played",
106 NULL,
107 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
108 GRL_METADATA_KEY_LAST_PLAYED,
109 NULL);
110
111 grl_registry_register_metadata_key_system (registry,
112 g_param_spec_string ("lyrics",
113 "Lyrics",
114 "Song lyrics",
115 NULL,
116 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
117 GRL_METADATA_KEY_LYRICS,
118 NULL);
119
120 grl_registry_register_metadata_key_system (registry,
121 g_param_spec_string ("mime-type",
122 "MimeType",
123 "Media mime type",
124 NULL,
125 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
126 GRL_METADATA_KEY_MIME,
127 NULL);
128
129 grl_registry_register_metadata_key_system (registry,
130 g_param_spec_string ("site",
131 "Site",
132 "Site",
133 NULL,
134 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
135 GRL_METADATA_KEY_SITE,
136 NULL);
137
138 grl_registry_register_metadata_key_system (registry,
139 g_param_spec_string ("source",
140 "Source",
141 "Source ID providing the content",
142 NULL,
143 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
144 GRL_METADATA_KEY_SOURCE,
145 NULL);
146
147 grl_registry_register_metadata_key_system (registry,
148 g_param_spec_string ("thumbnail",
149 "Thumbnail",
150 "Thumbnail image",
151 NULL,
152 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
153 GRL_METADATA_KEY_THUMBNAIL,
154 NULL);
155
156
157 grl_registry_register_metadata_key_system (registry,
158 g_param_spec_boxed ("thumbnail-binary",
159 "Thumbnail Binary",
160 "Thumbnail binary image",
161 G_TYPE_BYTE_ARRAY,
162 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
163 GRL_METADATA_KEY_THUMBNAIL_BINARY,
164
165 NULL);
166
167 grl_registry_register_metadata_key_system (registry,
168 g_param_spec_string ("title",
169 "Title",
170 "Title of the media",
171 NULL,
172 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
173 GRL_METADATA_KEY_TITLE,
174 NULL);
175
176 grl_registry_register_metadata_key_system (registry,
177 g_param_spec_string ("url",
178 "URL",
179 "Media URL",
180 NULL,
181 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
182 GRL_METADATA_KEY_URL,
183 NULL);
184
185
186 grl_registry_register_metadata_key_system (registry,
187 g_param_spec_string ("external-url",
188 "External URL",
189 "External location where the media can be played back, usually a website",
190 NULL,
191 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
192 GRL_METADATA_KEY_EXTERNAL_URL,
193 NULL);
194
195
196 grl_registry_register_metadata_key_system (registry,
197 g_param_spec_string ("external-player",
198 "External Player URL",
199 "URL of an external player that can be used to play the resource (usually a Flash player)",
200 NULL,
201 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
202 GRL_METADATA_KEY_EXTERNAL_PLAYER,
203 NULL);
204
205
206 grl_registry_register_metadata_key_system (registry,
207 g_param_spec_string ("studio",
208 "Studio",
209 "Studio the media is from",
210 NULL,
211 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
212 GRL_METADATA_KEY_STUDIO,
213 NULL);
214
215
216 grl_registry_register_metadata_key_system (registry,
217 g_param_spec_string ("certificate",
218 "Certificate",
219 "Age certificate of the media",
220 NULL,
221 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
222 GRL_METADATA_KEY_CERTIFICATE,
223 NULL);
224
225
226 grl_registry_register_metadata_key_system (registry,
227 g_param_spec_string ("license",
228 "License",
229 "The license of the media",
230 NULL,
231 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
232 GRL_METADATA_KEY_LICENSE,
233 NULL);
234
235 grl_registry_register_metadata_key_system (registry,
236 g_param_spec_int ("bitrate",
237 "Bitrate",
238 "Media bitrate in KBits/s",
239 0, G_MAXINT,
240 0,
241 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
242 GRL_METADATA_KEY_BITRATE,
243 NULL);
244
245 grl_registry_register_metadata_key_system (registry,
246 g_param_spec_int ("childcount",
247 "Childcount",
248 "Number of items contained in a container",
249 -1, G_MAXINT,
250 GRL_METADATA_KEY_CHILDCOUNT_UNKNOWN,
251 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
252 GRL_METADATA_KEY_CHILDCOUNT,
253 NULL);
254
255 grl_registry_register_metadata_key_system (registry,
256 g_param_spec_int ("duration",
257 "Duration",
258 "Media duration in seconds",
259 0, G_MAXINT,
260 0,
261 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
262 GRL_METADATA_KEY_DURATION,
263 NULL);
264
265 grl_registry_register_metadata_key_system (registry,
266 g_param_spec_int ("height",
267 "Height",
268 "Height of media ('y' axis)",
269 0, G_MAXINT,
270 0,
271 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
272 GRL_METADATA_KEY_HEIGHT,
273 NULL);
274
275 grl_registry_register_metadata_key_system (registry,
276 g_param_spec_int ("playback-interrupted-time",
277 "PlaybackInterruptedTime",
278 "Time at which playback was interrupted",
279 0, G_MAXINT,
280 0,
281 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
282 GRL_METADATA_KEY_LAST_POSITION,
283 NULL);
284
285 grl_registry_register_metadata_key_system (registry,
286 g_param_spec_int ("play-count",
287 "PlayCount",
288 "How many times media was played",
289 0, G_MAXINT,
290 0,
291 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
292 GRL_METADATA_KEY_PLAY_COUNT,
293 NULL);
294
295 grl_registry_register_metadata_key_system (registry,
296 g_param_spec_int ("width",
297 "Width",
298 "Width of media ('x' axis)",
299 0, G_MAXINT,
300 0,
301 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
302 GRL_METADATA_KEY_WIDTH,
303 NULL);
304
305
306 grl_registry_register_metadata_key_system (registry,
307 g_param_spec_float ("framerate",
308 "Framerate",
309 "Frames per second",
310 0, G_MAXFLOAT,
311 0,
312 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
313 GRL_METADATA_KEY_FRAMERATE,
314 NULL);
315
316 grl_registry_register_metadata_key_system (registry,
317 g_param_spec_float ("rating",
318 "Rating",
319 "Media rating",
320 0, G_MAXFLOAT,
321 0,
322 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
323 GRL_METADATA_KEY_RATING,
324 NULL);
325
326
327 grl_registry_register_metadata_key_system (registry,
328 g_param_spec_int ("season",
329 "Season",
330 "Season of a show",
331 0, G_MAXINT,
332 0,
333 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
334 GRL_METADATA_KEY_SEASON,
335 NULL);
336
337
338 grl_registry_register_metadata_key_system (registry,
339 g_param_spec_int ("episode",
340 "Episode",
341 "Episode of a show",
342 0, G_MAXINT,
343 0,
344 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
345 GRL_METADATA_KEY_EPISODE,
346 NULL);
347
348
349 grl_registry_register_metadata_key_system (registry,
350 g_param_spec_string ("show",
351 "Show",
352 "Name of a show",
353 NULL,
354 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
355 GRL_METADATA_KEY_SHOW,
356 NULL);
357
358
359 grl_registry_register_metadata_key_system (registry,
360 g_param_spec_boxed ("creation-date",
361 "Creation date",
362 "Creation date",
363 G_TYPE_DATE_TIME,
364 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
365 GRL_METADATA_KEY_CREATION_DATE,
366 NULL);
367
368
369 grl_registry_register_metadata_key_system (registry,
370 g_param_spec_string ("camera-model",
371 "Camera model",
372 "Name of the camera model used to take the photo",
373 NULL,
374 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
375 GRL_METADATA_KEY_CAMERA_MODEL,
376 NULL);
377
378
379 grl_registry_register_metadata_key_system (registry,
380 g_param_spec_int ("orientation",
381 "Picture orientation",
382 "Orientation of the photo in degree (clockwise)",
383 0, 359,
384 0,
385 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
386 GRL_METADATA_KEY_ORIENTATION,
387 NULL);
388
389
390 grl_registry_register_metadata_key_system (registry,
391 g_param_spec_boolean ("flash-used",
392 "Flash used",
393 "Whether or not a flash was used to take that picture",
394 FALSE,
395 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
396 GRL_METADATA_KEY_FLASH_USED,
397 NULL);
398
399
400 grl_registry_register_metadata_key_system (registry,
401 g_param_spec_float ("exposure-time",
402 "Exposure time",
403 "Exposure time of the photo in seconds",
404 0, G_MAXFLOAT,
405 0,
406 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
407 GRL_METADATA_KEY_EXPOSURE_TIME,
408 NULL);
409
410
411 grl_registry_register_metadata_key_system (registry,
412 g_param_spec_float ("iso-speed",
413 "ISO speed",
414 "Photographic film's sensitivity to light as ISO value",
415 0, G_MAXFLOAT,
416 0,
417 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
418 GRL_METADATA_KEY_ISO_SPEED,
419 NULL);
420
421 grl_registry_register_metadata_key_system (registry,
422 g_param_spec_int ("track-number",
423 "Track number",
424 "Track number inside the album",
425 1, G_MAXINT,
426 1,
427 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
428 GRL_METADATA_KEY_TRACK_NUMBER,
429 NULL);
430
431 grl_registry_register_metadata_key_system (registry,
432 g_param_spec_boxed ("modification-date",
433 "Modification date",
434 "When the media was last modified",
435 G_TYPE_DATE_TIME,
436 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
437 GRL_METADATA_KEY_MODIFICATION_DATE,
438 NULL);
439
440 grl_registry_register_metadata_key_system (registry,
441 g_param_spec_float ("start-time",
442 "Start Time",
443 "Start offset in seconds relative to container",
444 0.0, G_MAXFLOAT,
445 0.0,
446 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
447 GRL_METADATA_KEY_START_TIME,
448 NULL);
449
450 grl_registry_register_metadata_key_system (registry,
451 g_param_spec_boolean ("favourite",
452 "Favourite",
453 "Whether or not the element was marked as favourite",
454 FALSE,
455 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
456 GRL_METADATA_KEY_FAVOURITE,
457 NULL);
458
459 grl_registry_register_metadata_key_system (registry,
460 g_param_spec_string ("region",
461 "Region",
462 "Region in which the media was published",
463 NULL,
464 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
465 GRL_METADATA_KEY_REGION,
466 NULL);
467
468 grl_registry_register_metadata_key_system (registry,
469 g_param_spec_string ("keyword",
470 "keyword",
471 "A keyword describing the media",
472 NULL,
473 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
474 GRL_METADATA_KEY_KEYWORD,
475 NULL);
476
477 grl_registry_register_metadata_key_system (registry,
478 g_param_spec_string ("performer",
479 "performer",
480 "An actor performing in the movie",
481 NULL,
482 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
483 GRL_METADATA_KEY_PERFORMER,
484 NULL);
485
486 grl_registry_register_metadata_key_system (registry,
487 g_param_spec_string ("producer",
488 "Producer",
489 "Producer of the movie",
490 NULL,
491 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
492 GRL_METADATA_KEY_PRODUCER,
493 NULL);
494
495 grl_registry_register_metadata_key_system (registry,
496 g_param_spec_string ("director",
497 "Director",
498 "Director of the movie",
499 NULL,
500 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
501 GRL_METADATA_KEY_DIRECTOR,
502 NULL);
503
504 grl_registry_register_metadata_key_system (registry,
505 g_param_spec_string ("original-title",
506 "Original Title",
507 "Original, untranslated title of the movie",
508 NULL,
509 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
510 GRL_METADATA_KEY_ORIGINAL_TITLE,
511 NULL);
512
513 grl_registry_register_metadata_key_system (registry,
514 g_param_spec_int ("size",
515 "Size",
516 "Size in bytes",
517 -1, G_MAXINT,
518 -1,
519 G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
520 GRL_METADATA_KEY_SIZE,
521 NULL);
512522
513523 /* Create the relations */
514524 grl_registry_register_metadata_key_relation (registry,
529539 grl_registry_register_metadata_key_relation (registry,
530540 GRL_METADATA_KEY_URL,
531541 GRL_METADATA_KEY_START_TIME);
542 grl_registry_register_metadata_key_relation (registry,
543 GRL_METADATA_KEY_URL,
544 GRL_METADATA_KEY_SIZE);
532545 grl_registry_register_metadata_key_relation (registry,
533546 GRL_METADATA_KEY_REGION,
534547 GRL_METADATA_KEY_PUBLICATION_DATE);
9595 #define GRL_METADATA_KEY_PRODUCER 47
9696 #define GRL_METADATA_KEY_DIRECTOR 48
9797 #define GRL_METADATA_KEY_ORIGINAL_TITLE 49
98 #define GRL_METADATA_KEY_SIZE 50
9899
99100 G_BEGIN_DECLS
100101
139139 handle_no_searchable_sources (GrlSourceResultCb callback, gpointer user_data)
140140 {
141141 struct CallbackData *callback_data = g_new0 (struct CallbackData, 1);
142 guint id;
142143 callback_data->user_callback = callback;
143144 callback_data->user_data = user_data;
144 g_idle_add (handle_no_searchable_sources_idle, callback_data);
145 id = g_idle_add (handle_no_searchable_sources_idle, callback_data);
146 g_source_set_name_by_id (id, "[grilo] handle_no_searchable_sources_idle");
145147 }
146148
147149 static struct MultipleSearchData *
576578 multiple_search_cancel_cb (struct MultipleSearchData *msd)
577579 {
578580 GList *sources, *ids;
581 guint id;
579582
580583 /* Go through all the sources involved in that operation and issue
581584 cancel() operations for each one */
593596 msd->cancelled = TRUE;
594597
595598 /* Send operation finished message now to client (remaining == 0) */
596 g_idle_add (confirm_cancel_idle, msd);
599 id = g_idle_add (confirm_cancel_idle, msd);
600 g_source_set_name_by_id (id, "[grilo] confirm_cancel_idle");
597601 }
598602
599603 /**
263263 {
264264 g_return_if_fail (GRL_IS_PLUGIN (plugin));
265265
266 if (plugin->priv->id) {
267 g_free (plugin->priv->id);
268 }
266 g_clear_pointer (&plugin->priv->id, g_free);
267
269268 plugin->priv->id = g_strdup (id);
270269 }
271270
282281 {
283282 g_return_if_fail (GRL_IS_PLUGIN (plugin));
284283
285 if (plugin->priv->filename) {
286 g_free (plugin->priv->filename);
287 }
284 g_clear_pointer (&plugin->priv->filename, g_free);
288285
289286 plugin->priv->filename = g_strdup (filename);
290287 }
5454 void
5555 grl_range_value_free (GrlRangeValue *range)
5656 {
57 if (range->min) {
58 grl_g_value_free (range->min);
59 }
60
61 if (range->max) {
62 grl_g_value_free (range->max);
63 }
57 g_clear_pointer (&range->min, grl_g_value_free);
58 g_clear_pointer (&range->max, grl_g_value_free);
6459
6560 g_slice_free (GrlRangeValue, range);
6661 }
2828 grl_registry_restrict_plugins (GrlRegistry *registry,
2929 gchar **plugins);
3030
31 GrlKeyID grl_registry_register_metadata_key_full (GrlRegistry *registry,
32 GParamSpec *param_spec,
33 GrlKeyID key,
34 GError **error);
31 GrlKeyID grl_registry_register_metadata_key_system (GrlRegistry *registry,
32 GParamSpec *param_spec,
33 GrlKeyID key,
34 GError **error);
35
36 void grl_registry_shutdown (GrlRegistry *registry);
3537
3638 #endif /* _GRL_REGISTRY_PRIV_H_ */
7878 GHashTable *plugins;
7979 GHashTable *sources;
8080 GHashTable *related_keys;
81 GParamSpecPool *system_keys;
81 GHashTable *system_keys;
8282 GHashTable *ranks;
8383 GSList *plugins_dir;
8484 GSList *allowed_plugins;
8686 struct KeyIDHandler key_id_handler;
8787 };
8888
89 static void grl_registry_finalize (GObject *object);
90
9189 static void grl_registry_setup_ranks (GrlRegistry *registry);
9290
9391 static void grl_registry_preload_plugins (GrlRegistry *registry,
107105 GrlKeyID key, const gchar *key_name);
108106
109107 static void shutdown_plugin (GrlPlugin *plugin);
108
109 static void configs_free (GList *configs);
110110
111111 /* ================ GrlRegistry GObject ================ */
112112
113113 enum {
114114 SIG_SOURCE_ADDED,
115115 SIG_SOURCE_REMOVED,
116 SIG_METADATA_KEY_ADDED,
116117 SIG_LAST
117118 };
118119 static gint registry_signals[SIG_LAST];
122123 static void
123124 grl_registry_class_init (GrlRegistryClass *klass)
124125 {
125 GObjectClass *gobject_klass;
126
127126 g_type_class_add_private (klass, sizeof (GrlRegistryPrivate));
128
129 gobject_klass = G_OBJECT_CLASS (klass);
130
131 gobject_klass->finalize = grl_registry_finalize;
132127
133128 /**
134129 * GrlRegistry::source-added:
167162 NULL,
168163 g_cclosure_marshal_VOID__OBJECT,
169164 G_TYPE_NONE, 1, GRL_TYPE_SOURCE);
165
166 /**
167 * GrlRegistry::metadata-key-added:
168 * @registry: the registry
169 * @key: the name of the new key added
170 *
171 * Signals that a new metadata key has been registered.
172 *
173 * Since: 0.2.10
174 */
175 registry_signals[SIG_METADATA_KEY_ADDED] =
176 g_signal_new("metadata-key-added",
177 G_TYPE_FROM_CLASS(klass),
178 G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
179 0,
180 NULL,
181 NULL,
182 g_cclosure_marshal_VOID__STRING,
183 G_TYPE_NONE, 1, G_TYPE_STRING);
170184 }
171185
172186 static void
175189 registry->priv = GRL_REGISTRY_GET_PRIVATE (registry);
176190
177191 registry->priv->configs =
178 g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
192 g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) configs_free);
179193 registry->priv->plugins =
180194 g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
181195 registry->priv->sources =
183197 registry->priv->related_keys =
184198 g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, NULL);
185199 registry->priv->system_keys =
186 g_param_spec_pool_new (FALSE);
200 g_hash_table_new_full (g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_param_spec_unref);
187201
188202 key_id_handler_init (&registry->priv->key_id_handler);
189203
190204 grl_registry_setup_ranks (registry);
191205 }
192206
207 /* ================ Utitilies ================ */
208
193209 static void
194 grl_registry_finalize (GObject *object)
195 {
196 GHashTableIter iter;
197 GList *each_key;
198 GList *related_keys = NULL;
199 GrlPlugin *plugin = NULL;
200 GrlRegistry *registry = GRL_REGISTRY (object);
201 GrlSource *source = NULL;
202
203 if (registry->priv->sources) {
204 g_hash_table_iter_init (&iter, registry->priv->sources);
205 while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &source)) {
206 g_object_unref (source);
207 }
208 g_hash_table_unref (registry->priv->sources);
209 registry->priv->sources = NULL;
210 }
211
212 if (registry->priv->plugins) {
213 g_hash_table_iter_init (&iter, registry->priv->plugins);
214 while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &plugin)) {
215 shutdown_plugin (plugin);
216 }
217 g_hash_table_unref (registry->priv->plugins);
218 registry->priv->plugins = NULL;
219 }
220
221 if (registry->priv->ranks) {
222 g_hash_table_unref (registry->priv->ranks);
223 registry->priv->configs = NULL;
224 }
225
226 if (registry->priv->configs) {
227 g_hash_table_unref (registry->priv->configs);
228 registry->priv->configs = NULL;
229 }
230
231 /* We need to free this table with care. Several keys can be pointing to the
232 same value, so we need to ensure that we only free the value once */
233 if (registry->priv->related_keys) {
234 while (TRUE) {
235 g_hash_table_iter_init (&iter, registry->priv->related_keys);
236 if (!g_hash_table_iter_next (&iter, NULL, (gpointer *) &related_keys)) {
237 break;
238 }
239 /* This will invalidate the iterator */
240 for (each_key = related_keys; each_key; each_key = g_list_next (each_key)) {
241 g_hash_table_remove (registry->priv->related_keys, GRLKEYID_TO_POINTER (each_key->data));
242 }
243 g_list_free (related_keys);
244 }
245 g_hash_table_unref (registry->priv->related_keys);
246 registry->priv->related_keys = NULL;
247 }
248
249 g_slist_free_full (registry->priv->plugins_dir, (GDestroyNotify) g_free);
250 g_slist_free_full (registry->priv->allowed_plugins, (GDestroyNotify) g_free);
251
252 key_id_handler_free (&registry->priv->key_id_handler);
253
254 G_OBJECT_CLASS (grl_registry_parent_class)->finalize (object);
255 }
256
257 /* ================ Utitilies ================ */
210 configs_free (GList *configs)
211 {
212 g_list_free_full (configs, g_object_unref);
213 }
258214
259215 static void
260216 config_source_rank (GrlRegistry *registry,
493449
494450 g_hash_table_insert (registry->priv->plugins,
495451 id,
496 g_object_ref (plugin));
452 plugin);
497453 }
498454 return plugin;
499455 }
573529 return loaded_one;
574530 }
575531
532 static GrlKeyID
533 grl_registry_register_metadata_key_full (GrlRegistry *registry,
534 GParamSpec *param_spec,
535 GrlKeyID key,
536 GError **error)
537 {
538 const gchar *key_name;
539
540 g_return_val_if_fail (GRL_IS_REGISTRY (registry), 0);
541 g_return_val_if_fail (G_IS_PARAM_SPEC (param_spec), 0);
542 GrlKeyID registered_key;
543
544 key_name = g_param_spec_get_name (param_spec);
545
546 registered_key = key_id_handler_add (&registry->priv->key_id_handler, key, key_name);
547
548 if (registered_key == GRL_METADATA_KEY_INVALID) {
549 GRL_WARNING ("metadata key '%s' cannot be registered", key_name);
550 g_set_error (error,
551 GRL_CORE_ERROR,
552 GRL_CORE_ERROR_REGISTER_METADATA_KEY_FAILED,
553 _("Metadata key '%s' cannot be registered"),
554 key_name);
555
556 return GRL_METADATA_KEY_INVALID;
557 }
558
559 g_hash_table_insert (registry->priv->system_keys,
560 (gpointer) key_name,
561 g_param_spec_ref (param_spec));
562
563 /* Each key is related to itself */
564 g_hash_table_insert (registry->priv->related_keys,
565 GRLKEYID_TO_POINTER (registered_key),
566 g_list_prepend (NULL,
567 GRLKEYID_TO_POINTER (registered_key)));
568
569 return registered_key;
570 }
571
576572 static void
577573 key_id_handler_init (struct KeyIDHandler *handler)
578574 {
704700
705701 /* Free previous list */
706702 if (registry->priv->allowed_plugins) {
707 g_slist_foreach (registry->priv->allowed_plugins, (GFunc) g_free, NULL);
708 g_slist_free (registry->priv->allowed_plugins);
703 g_slist_free_full (registry->priv->allowed_plugins, g_free);
709704 registry->priv->allowed_plugins = NULL;
710705 }
711706
714709 g_strdup (*plugins));
715710 plugins++;
716711 }
712 }
713
714 /*
715 * grl_registry_shutdown:
716 * @registry: the registry instance
717 *
718 * Frees all the resources in the registry and the registry itself.
719 **/
720 void
721 grl_registry_shutdown (GrlRegistry *registry)
722 {
723 GHashTableIter iter;
724 GList *each_key;
725 GList *related_keys = NULL;
726 GrlPlugin *plugin = NULL;
727 GrlSource *source = NULL;
728
729 if (registry->priv->plugins) {
730 g_hash_table_iter_init (&iter, registry->priv->plugins);
731 while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &plugin)) {
732 shutdown_plugin (plugin);
733 }
734 g_clear_pointer (&registry->priv->plugins, g_hash_table_unref);
735 }
736
737 if (registry->priv->sources) {
738 g_hash_table_iter_init (&iter, registry->priv->sources);
739 while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &source)) {
740 g_object_unref (source);
741 }
742 g_clear_pointer (&registry->priv->sources, g_hash_table_unref);
743 }
744
745 g_clear_pointer (&registry->priv->ranks, g_hash_table_unref);
746 g_clear_pointer (&registry->priv->configs, g_hash_table_unref);
747
748 /* We need to free this table with care. Several keys can be pointing to the
749 same value, so we need to ensure that we only free the value once */
750 if (registry->priv->related_keys) {
751 while (TRUE) {
752 g_hash_table_iter_init (&iter, registry->priv->related_keys);
753 if (!g_hash_table_iter_next (&iter, NULL, (gpointer *) &related_keys)) {
754 break;
755 }
756 /* This will invalidate the iterator */
757 for (each_key = related_keys; each_key; each_key = g_list_next (each_key)) {
758 g_hash_table_remove (registry->priv->related_keys, GRLKEYID_TO_POINTER (each_key->data));
759 }
760 g_list_free (related_keys);
761 }
762 g_clear_pointer (&registry->priv->related_keys, g_hash_table_unref);
763 }
764
765 g_slist_free_full (registry->priv->plugins_dir, (GDestroyNotify) g_free);
766 g_slist_free_full (registry->priv->allowed_plugins, (GDestroyNotify) g_free);
767
768 key_id_handler_free (&registry->priv->key_id_handler);
769 g_clear_pointer (&registry->priv->system_keys, g_hash_table_unref);
770
771 g_object_unref (registry);
717772 }
718773
719774 /* ================ PUBLIC API ================ */
13441399 GParamSpec *param_spec,
13451400 GError **error)
13461401 {
1347 return grl_registry_register_metadata_key_full (registry,
1348 param_spec,
1349 GRL_METADATA_KEY_INVALID,
1350 error);
1402 GrlKeyID key;
1403
1404 key = grl_registry_register_metadata_key_full (registry,
1405 param_spec,
1406 GRL_METADATA_KEY_INVALID,
1407 error);
1408
1409 if (key != GRL_METADATA_KEY_INVALID) {
1410 g_signal_emit (registry, registry_signals[SIG_METADATA_KEY_ADDED],
1411 0,
1412 grl_metadata_key_get_name (key));
1413 }
1414
1415 return key;
13511416 }
13521417
13531418 /*
1354 * grl_registry_register_metadata_key_full:
1419 * grl_registry_register_metadata_key_system:
13551420 *
13561421 * This is an internal method only meant to be used to register core
13571422 * keys.
13601425 * grl_registry_register_metadata_key().
13611426 */
13621427 GrlKeyID
1363 grl_registry_register_metadata_key_full (GrlRegistry *registry,
1364 GParamSpec *param_spec,
1365 GrlKeyID key,
1366 GError **error)
1367 {
1368 const gchar *key_name;
1369
1370 g_return_val_if_fail (GRL_IS_REGISTRY (registry), 0);
1371 g_return_val_if_fail (G_IS_PARAM_SPEC (param_spec), 0);
1428 grl_registry_register_metadata_key_system (GrlRegistry *registry,
1429 GParamSpec *param_spec,
1430 GrlKeyID key,
1431 GError **error)
1432 {
13721433 GrlKeyID registered_key;
13731434
1374 key_name = g_param_spec_get_name (param_spec);
1375
1376 registered_key = key_id_handler_add (&registry->priv->key_id_handler, key, key_name);
1377
1378 if (registered_key == GRL_METADATA_KEY_INVALID) {
1379 GRL_WARNING ("metadata key '%s' cannot be registered", key_name);
1380 g_set_error (error,
1381 GRL_CORE_ERROR,
1382 GRL_CORE_ERROR_REGISTER_METADATA_KEY_FAILED,
1383 _("Metadata key '%s' cannot be registered"),
1384 key_name);
1385
1386 return GRL_METADATA_KEY_INVALID;
1387 }
1388
1389 g_param_spec_pool_insert (registry->priv->system_keys,
1390 param_spec,
1391 GRL_TYPE_MEDIA);
1392 /* Each key is related to itself */
1393 g_hash_table_insert (registry->priv->related_keys,
1394 GRLKEYID_TO_POINTER (registered_key),
1395 g_list_prepend (NULL,
1396 GRLKEYID_TO_POINTER (registered_key)));
1435 registered_key = grl_registry_register_metadata_key_full (registry,
1436 param_spec,
1437 key,
1438 error);
1439 g_param_spec_unref (param_spec);
13971440
13981441 return registered_key;
13991442 }
1400
14011443
14021444 /**
14031445 * grl_registry_register_metadata_key_relation:
15171559 if (!key_name) {
15181560 return NULL;
15191561 }
1520 key_pspec = g_param_spec_pool_lookup (registry->priv->system_keys,
1521 key_name,
1522 GRL_TYPE_MEDIA,
1523 FALSE);
1562 key_pspec = g_hash_table_lookup (registry->priv->system_keys, key_name);
1563
15241564 if (key_pspec) {
15251565 return g_param_spec_get_blurb (key_pspec);
15261566 } else {
15521592 if (!key_name) {
15531593 return G_TYPE_INVALID;
15541594 }
1555 key_pspec = g_param_spec_pool_lookup (registry->priv->system_keys,
1556 key_name,
1557 GRL_TYPE_MEDIA,
1558 FALSE);
1595 key_pspec = g_hash_table_lookup (registry->priv->system_keys, key_name);
1596
15591597 if (key_pspec) {
15601598 return G_PARAM_SPEC_VALUE_TYPE (key_pspec);
15611599 } else {
15921630 if (!key_name) {
15931631 return FALSE;
15941632 }
1595 key_pspec = g_param_spec_pool_lookup (registry->priv->system_keys,
1596 key_name,
1597 GRL_TYPE_MEDIA,
1598 FALSE);
1633 key_pspec = g_hash_table_lookup (registry->priv->system_keys, key_name);
1634
15991635 if (key_pspec) {
16001636 return !g_param_value_validate (key_pspec, value);
16011637 } else {
18161852 }
18171853
18181854 bail:
1819 if (keyfile) {
1820 g_key_file_free (keyfile);
1821 }
1822 if (bytes) {
1823 g_bytes_unref (bytes);
1824 }
1855 g_clear_pointer (&keyfile, g_key_file_free);
1856 g_clear_pointer (&bytes, g_bytes_unref);
18251857
18261858 return ret;
18271859 }
6767 PROP_PLUGIN,
6868 PROP_RANK,
6969 PROP_AUTO_SPLIT_THRESHOLD,
70 PROP_SUPPORTED_MEDIA
70 PROP_SUPPORTED_MEDIA,
71 PROP_SOURCE_TAGS
7172 };
7273
7374 enum {
7576 SIG_LAST
7677 };
7778
78 static gint registry_signals[SIG_LAST];
79 static gint source_signals[SIG_LAST];
7980
8081 typedef void (*MediaDecorateCb) (GrlMedia *media,
8182 gpointer user_data,
9091 guint auto_split_threshold;
9192 GrlPlugin *plugin;
9293 GIcon *icon;
94 GPtrArray *tags;
9395 };
9496
9597 typedef struct {
406408 G_PARAM_STATIC_STRINGS));
407409
408410 /**
411 * GrlSource:source-tags:
412 *
413 * A string array of tags relevant this source.
414 *
415 * The tags are arbitrary, and applications should just pass over the tags
416 * it does not understand. Applications would usually use this to either
417 * group sources together, or hide certain sources: a radio application
418 * would filter for %GRL_MEDIA_TYPE_AUDIO in GrlSource::supported-media as
419 * well as "radio" being listed in the tags.
420 *
421 * To avoid irrelevant content being listed in applications, sources
422 * such as generic video sites should not be tagged as "cinema" or
423 * "tv" as they contain a lot of content that's not either of those.
424 *
425 * This is a list of commonly used values:
426 *
427 * - "cinema", or "tv"
428 * The content served is from cinema or TV sources. For example, a
429 * source for movie trailers would select the former, a source for
430 * streaming live TV would select the latter.
431 *
432 * - "radio"
433 * The content served is from streaming radios.
434 *
435 * - "music"
436 * The content served is music, for example, music stores such as
437 * Jamendo or Magnatune.
438 *
439 * - "country:country-code"
440 * The content is mostly relevant to users from a particular country,
441 * such as a national broadcaster. For example, BBC content would be
442 * tagged as "country:uk". Country codes should be an ISO-639-1 or
443 * ISO-639-2 code.
444 *
445 * - "protocol:protocol-name"
446 * The content browsing or searching uses a particular protocol, such
447 * as DLNA/UPnP or DMAP/DAAP. This makes it easier to whitelist or
448 * blacklist sources rather than matching the implementation specific
449 * source ID. Examples are "protocol:dlna" and "protocol:dmap".
450 *
451 * - "localhost", or "localuser"
452 * The content is served from the machine the application is running on,
453 * or by an application the user is running. Applications might choose to
454 * avoid showing the user's own data in their interfaces, or integrate it
455 * in the user's local collection.
456 *
457 * Since: 0.2.10
458 */
459 g_object_class_install_property (gobject_class,
460 PROP_SOURCE_TAGS,
461 g_param_spec_boxed ("source-tags",
462 "Tags",
463 "String array of tags relevant this source",
464 G_TYPE_STRV,
465 G_PARAM_READWRITE |
466 G_PARAM_CONSTRUCT |
467 G_PARAM_STATIC_STRINGS));
468
469 /**
409470 * GrlSource::content-changed:
410471 * @source: source that has changed
411472 * @changed_medias: (element-type GrlMedia): a #GPtrArray with the medias
431492 *
432493 * Since: 0.2.0
433494 */
434 registry_signals[SIG_CONTENT_CHANGED] =
495 source_signals[SIG_CONTENT_CHANGED] =
435496 g_signal_new("content-changed",
436497 G_TYPE_FROM_CLASS (gobject_class),
437498 G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
453514 grl_source_init (GrlSource *source)
454515 {
455516 source->priv = GRL_SOURCE_GET_PRIVATE (source);
517 source->priv->tags = g_ptr_array_new_with_free_func (g_free);
456518 }
457519
458520 static void
471533 GrlSource *source = GRL_SOURCE (object);
472534
473535 g_clear_object (&source->priv->icon);
536 g_clear_pointer (&source->priv->tags, g_ptr_array_unref);
474537 g_free (source->priv->id);
475538 g_free (source->priv->name);
476539 g_free (source->priv->desc);
481544 static void
482545 set_string_property (gchar **property, const GValue *value)
483546 {
484 if (*property) {
485 g_free (*property);
486 }
547 g_clear_pointer (property, g_free);
487548 *property = g_value_dup_string (value);
549 }
550
551 static void
552 grl_source_set_tags (GrlSource *source,
553 const char **strv)
554 {
555 guint i;
556
557 g_ptr_array_set_size (source->priv->tags, 0);
558 if (strv == NULL)
559 return;
560
561 for (i = 0; strv[i] != NULL; i++)
562 g_ptr_array_add (source->priv->tags, g_strdup (strv[i]));
563 g_ptr_array_add (source->priv->tags, NULL);
488564 }
489565
490566 static void
522598 case PROP_SUPPORTED_MEDIA:
523599 source->priv->supported_media = g_value_get_flags (value);
524600 break;
601 case PROP_SOURCE_TAGS:
602 grl_source_set_tags (source, g_value_get_boxed (value));
603 break;
525604 default:
526605 G_OBJECT_WARN_INVALID_PROPERTY_ID (source, prop_id, pspec);
527606 break;
563642 case PROP_SUPPORTED_MEDIA:
564643 g_value_set_flags (value, source->priv->supported_media);
565644 break;
645 case PROP_SOURCE_TAGS:
646 g_value_set_boxed (value, source->priv->tags->pdata);
647 break;
566648 default:
567649 G_OBJECT_WARN_INVALID_PROPERTY_ID (source, prop_id, pspec);
568650 break;
10931175 }
10941176 g_hash_table_unref (rrc->map);
10951177 }
1096
1097 if (rrc->resolve_specs)
1098 g_hash_table_unref (rrc->resolve_specs);
1178 g_clear_pointer (&rrc->resolve_specs, g_hash_table_unref);
10991179
11001180 g_slice_free (struct ResolveRelayCb, rrc);
11011181 }
11091189 if (brc->auto_split) {
11101190 g_slice_free (struct AutoSplitCtl, brc->auto_split);
11111191 }
1112 if (brc->queue) {
1113 g_queue_free (brc->queue);
1114 }
1192 g_clear_pointer (&brc->queue, g_queue_free);
1193
11151194 g_slice_free (struct BrowseRelayCb, brc);
11161195 }
11171196
19322011
19332012 rrc->specs_to_invoke = g_hash_table_get_values (rrc->resolve_specs);
19342013 if (rrc->specs_to_invoke) {
1935 g_idle_add_full (grl_operation_options_get_flags (rrc->options) & GRL_RESOLVE_IDLE_RELAY?
1936 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
1937 resolve_idle,
1938 rrc,
1939 NULL);
2014 guint id;
2015 id = g_idle_add_full (grl_operation_options_get_flags (rrc->options) & GRL_RESOLVE_IDLE_RELAY?
2016 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
2017 resolve_idle,
2018 rrc,
2019 NULL);
2020 g_source_set_name_by_id (id, "[grilo] resolve_idle");
19402021 } else {
1941 g_idle_add_full (grl_operation_options_get_flags (rrc->options) & GRL_RESOLVE_IDLE_RELAY?
1942 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
1943 resolve_all_done,
1944 rrc,
1945 NULL);
2022 guint id;
2023 id = g_idle_add_full (grl_operation_options_get_flags (rrc->options) & GRL_RESOLVE_IDLE_RELAY?
2024 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
2025 resolve_all_done,
2026 rrc,
2027 NULL);
2028 g_source_set_name_by_id (id, "[grilo] resolve_all_done");
19462029 }
19472030 }
19482031 }
20162099 if (!brc->dispatcher_running) {
20172100 qelement = g_queue_peek_head (brc->queue);
20182101 if (qelement && qelement->is_ready) {
2019 g_idle_add (queue_process, brc);
2102 guint id = g_idle_add (queue_process, brc);
2103 g_source_set_name_by_id (id, "[grilo] queue_process");
20202104 brc->dispatcher_running = TRUE;
20212105 }
20222106 }
21192203 static void
21202204 auto_split_run_next_chunk (struct BrowseRelayCb *brc)
21212205 {
2206 guint id;
21222207 brc->auto_split->chunk_remaining = MIN (brc->auto_split->threshold,
21232208 brc->auto_split->total_remaining);
21242209
21322217 GRL_DEBUG ("auto-split: requesting chunk (skip=%u, count=%u)",
21332218 grl_operation_options_get_skip (brc->spec.browse->options),
21342219 grl_operation_options_get_count (brc->spec.browse->options));
2135 g_idle_add_full (grl_operation_options_get_flags (brc->options) & GRL_RESOLVE_IDLE_RELAY?
2136 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
2137 browse_idle,
2138 brc->spec.browse,
2139 NULL);
2220 id = g_idle_add_full (grl_operation_options_get_flags (brc->options) & GRL_RESOLVE_IDLE_RELAY?
2221 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
2222 browse_idle,
2223 brc->spec.browse,
2224 NULL);
2225 g_source_set_name_by_id (id, "[grilo] browse_idle");
21402226 break;
21412227 case GRL_OP_SEARCH:
21422228 grl_operation_options_set_skip (brc->spec.search->options,
21472233 GRL_DEBUG ("auto-split: requesting chunk (skip=%u, count=%u)",
21482234 grl_operation_options_get_skip (brc->spec.search->options),
21492235 grl_operation_options_get_count (brc->spec.search->options));
2150 g_idle_add_full (grl_operation_options_get_flags (brc->options) & GRL_RESOLVE_IDLE_RELAY?
2151 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
2152 search_idle,
2153 brc->spec.search,
2154 NULL);
2236 id = g_idle_add_full (grl_operation_options_get_flags (brc->options) & GRL_RESOLVE_IDLE_RELAY?
2237 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
2238 search_idle,
2239 brc->spec.search,
2240 NULL);
2241 g_source_set_name_by_id (id, "[grilo] search_idle");
21552242 break;
21562243 case GRL_OP_QUERY:
21572244 grl_operation_options_set_skip (brc->spec.query->options,
21622249 GRL_DEBUG ("auto-split: requesting chunk (skip=%u, count=%u)",
21632250 grl_operation_options_get_skip (brc->spec.query->options),
21642251 grl_operation_options_get_count (brc->spec.query->options));
2165 g_idle_add_full (grl_operation_options_get_flags (brc->options) & GRL_RESOLVE_IDLE_RELAY?
2166 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
2167 query_idle,
2168 brc->spec.query,
2169 NULL);
2252 id = g_idle_add_full (grl_operation_options_get_flags (brc->options) & GRL_RESOLVE_IDLE_RELAY?
2253 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
2254 query_idle,
2255 brc->spec.query,
2256 NULL);
2257 g_source_set_name_by_id (id, "[grilo] query_idle");
21702258 break;
21712259 default:
21722260 g_assert_not_reached ();
27212809 GList *failed_keys = NULL;
27222810 GError *error;
27232811 struct StoreMetadataRelayCb *smrc;
2812 guint id;
27242813
27252814 map = map_writable_keys (source, keys, flags, &failed_keys);
27262815
27492838 smrc->user_callback = callback;
27502839 smrc->user_data = user_data;
27512840
2752 g_idle_add (store_metadata_idle, smrc);
2841 id = g_idle_add (store_metadata_idle, smrc);
2842 g_source_set_name_by_id (id, "[grilo] store_metadata_idle");
27532843 }
27542844
27552845 static gboolean
29092999 g_return_val_if_fail (GRL_IS_SOURCE (source), NULL);
29103000
29113001 return source->priv->desc;
3002 }
3003
3004 /**
3005 * grl_source_get_tags:
3006 * @source: a source
3007 *
3008 * Returns: (element-type utf8) (transfer none): a %NULL-terminated list of tags
3009 *
3010 * Since: 0.2.10
3011 */
3012 const char **
3013 grl_source_get_tags (GrlSource *source)
3014 {
3015 g_return_val_if_fail (GRL_IS_SOURCE (source), NULL);
3016
3017 return (const char **) source->priv->tags->pdata;
29123018 }
29133019
29143020 /**
31713277
31723278 /* If there are no sources able to solve just send the media */
31733279 if (g_list_length (sources) == 0) {
3280 guint id;
31743281 g_list_free (_keys);
3175 g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY?
3176 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3177 resolve_all_done,
3178 rrc,
3179 NULL);
3282 id = g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY?
3283 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3284 resolve_all_done,
3285 rrc,
3286 NULL);
3287 g_source_set_name_by_id (id, "[grilo] resolve_all_done");
31803288 return operation_id;
31813289 }
31823290
32043312
32053313 rrc->specs_to_invoke = g_hash_table_get_values (rrc->resolve_specs);
32063314 if (rrc->specs_to_invoke) {
3207 g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY?
3208 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3209 resolve_idle,
3210 rrc,
3211 NULL);
3315 guint id;
3316 id = g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY?
3317 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3318 resolve_idle,
3319 rrc,
3320 NULL);
3321 g_source_set_name_by_id (id, "[grilo] resolve_idle");
32123322 } else {
3213 g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY?
3214 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3215 resolve_all_done,
3216 rrc,
3217 NULL);
3323 guint id;
3324 id = g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY?
3325 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3326 resolve_all_done,
3327 rrc,
3328 NULL);
3329 g_source_set_name_by_id (id, "[grilo] resolve_all_done");
32183330 }
32193331
32203332 return operation_id;
34073519 struct ResolveRelayCb *rrc;
34083520 guint operation_id;
34093521 GrlResolutionFlags flags;
3522 guint id;
34103523
34113524 GRL_DEBUG (__FUNCTION__);
34123525
34643577
34653578 operation_set_ongoing (source, operation_id);
34663579
3467 g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY?
3468 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3469 media_from_uri_idle,
3470 mfus,
3471 NULL);
3580 id = g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY?
3581 G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3582 media_from_uri_idle,
3583 mfus,
3584 NULL);
3585 g_source_set_name_by_id (id, "[grilo] media_from_uri_idle");
34723586
34733587 return operation_id;
34743588 }
35593673 guint operation_id;
35603674 struct BrowseRelayCb *brc;
35613675 GrlResolutionFlags flags;
3676 guint id;
35623677
35633678 g_return_val_if_fail (GRL_IS_SOURCE (source), 0);
35643679 g_return_val_if_fail (GRL_IS_OPERATION_OPTIONS (options), 0);
36273742
36283743 operation_set_ongoing (source, operation_id);
36293744
3630 g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY? G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3631 browse_idle,
3632 bs,
3633 NULL);
3745 id = g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY? G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3746 browse_idle,
3747 bs,
3748 NULL);
3749 g_source_set_name_by_id (id, "[grilo] browse_idle");
36343750
36353751 return operation_id;
36363752 }
37253841 guint operation_id;
37263842 struct BrowseRelayCb *brc;
37273843 GrlResolutionFlags flags;
3844 guint id;
37283845
37293846 g_return_val_if_fail (GRL_IS_SOURCE (source), 0);
37303847 g_return_val_if_fail (GRL_IS_OPERATION_OPTIONS (options), 0);
37843901
37853902 operation_set_ongoing (source, operation_id);
37863903
3787 g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY? G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3788 search_idle,
3789 ss,
3790 NULL);
3904 id = g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY? G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3905 search_idle,
3906 ss,
3907 NULL);
3908 g_source_set_name_by_id (id, "[grilo] search_idle");
37913909
37923910 return operation_id;
37933911 }
38854003 guint operation_id;
38864004 struct BrowseRelayCb *brc;
38874005 GrlResolutionFlags flags;
4006 guint id;
38884007
38894008 g_return_val_if_fail (GRL_IS_SOURCE (source), 0);
38904009 g_return_val_if_fail (GRL_IS_OPERATION_OPTIONS (options), 0);
39444063
39454064 operation_set_ongoing (source, operation_id);
39464065
3947 g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY? G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
3948 query_idle,
3949 qs,
3950 NULL);
4066 id = g_idle_add_full (flags & GRL_RESOLVE_IDLE_RELAY? G_PRIORITY_DEFAULT_IDLE: G_PRIORITY_HIGH_IDLE,
4067 query_idle,
4068 qs,
4069 NULL);
4070 g_source_set_name_by_id (id, "[grilo] query_idle");
39514071
39524072 return operation_id;
39534073 }
40154135 const gchar *id;
40164136 struct RemoveRelayCb *rrc;
40174137 GrlSourceRemoveSpec *rs;
4138 guint tag_id;
40184139
40194140 GRL_DEBUG (__FUNCTION__);
40204141
40484169 rrc->spec = rs;
40494170 }
40504171
4051 g_idle_add (remove_idle, rrc);
4172 tag_id = g_idle_add (remove_idle, rrc);
4173 g_source_set_name_by_id (tag_id, "[grilo] remove_idle");
40524174
40534175 return TRUE;
40544176 }
41234245 {
41244246 struct StoreRelayCb *src;
41254247 GrlSourceStoreSpec *ss;
4248 guint id;
41264249
41274250 GRL_DEBUG (__FUNCTION__);
41284251
41504273
41514274 src->spec = ss;
41524275
4153 g_idle_add (store_idle, ss);
4276 id = g_idle_add (store_idle, ss);
4277 g_source_set_name_by_id (id, "[grilo] store_idle");
41544278
41554279 return TRUE;
41564280 }
44304554 g_ptr_array_set_free_func (changed_medias, (GDestroyNotify) g_object_unref);
44314555
44324556 g_signal_emit (source,
4433 registry_signals[SIG_CONTENT_CHANGED],
4557 source_signals[SIG_CONTENT_CHANGED],
44344558 0,
44354559 changed_medias,
44364560 change_type,
632632
633633 GrlMediaType grl_source_get_supported_media (GrlSource *source);
634634
635 const char ** grl_source_get_tags (GrlSource *source);
636
635637 G_END_DECLS
636638
637639 #endif /* _GRL_SOURCE_H_ */
4848 "GRL_METADATA_KEY_PRODUCER",
4949 "GRL_METADATA_KEY_DIRECTOR",
5050 "GRL_METADATA_KEY_ORIGINAL_TITLE",
51 "GRL_METADATA_KEY_SIZE",
5152 };
412412 static void
413413 set_cur_browse (GrlSource *source, GrlMedia *media)
414414 {
415 if (ui_state->cur_source)
416 g_object_unref (ui_state->cur_source);
417 if (ui_state->cur_container)
418 g_object_unref (ui_state->cur_container);
415 g_clear_object (&ui_state->cur_source);
416 g_clear_object (&ui_state->cur_container);
419417
420418 if (source)
421419 g_object_ref (source);
429427 static void
430428 set_cur_resolve (GrlSource *source, GrlMedia *media)
431429 {
432 if (ui_state->cur_md_source)
433 g_object_unref (ui_state->cur_md_source);
434 if (ui_state->cur_md_media)
435 g_object_unref (ui_state->cur_md_media);
430 g_clear_object (&ui_state->cur_md_source);
431 g_clear_object (&ui_state->cur_md_media);
436432
437433 if (source)
438434 g_object_ref (source);
706702 -1);
707703
708704 g_object_unref (media);
709 if (icon) {
710 g_object_unref (icon);
711 }
705 g_clear_object (&icon);
712706 }
713707
714708 if (remaining == 0) {
869863 browse_history_push (ui_state->cur_source, ui_state->cur_container);
870864 browse (source, container);
871865
872 if (source) {
873 g_object_unref (source);
874 }
875 if (content) {
876 g_object_unref (content);
877 }
866 g_clear_object (&source);
867 g_clear_object (&content);
878868 }
879869
880870 static void
913903 g_string_append (s, "image, ");
914904
915905 g_string_truncate (s, s->len - 2);
906 return g_string_free (s, FALSE);
907 }
908
909 static char *
910 tags_to_str (char **tags)
911 {
912 GString *s;
913 guint i;
914
915 if (tags == NULL)
916 return g_strdup ("");
917
918 s = g_string_new (NULL);
919
920 for (i = 0; tags[i] != NULL; i++) {
921 g_string_append (s, tags[i]);
922 g_string_append (s, ", ");
923 }
924
925 if (i > 0)
926 g_string_truncate (s, s->len - 2);
916927 return g_string_free (s, FALSE);
917928 }
918929
939950 int rank;
940951 GrlMediaType supported_media;
941952 GIcon *icon;
953 char **tags;
942954
943955 for (i = 0; i < G_N_ELEMENTS (str_props); i++) {
944956 g_object_get (G_OBJECT (source), str_props[i], &str, NULL);
951963 "rank", &rank,
952964 "supported-media", &supported_media,
953965 "source-icon", &icon,
966 "source-tags", &tags,
954967 NULL);
955968
956969 str = g_strdup_printf ("%i", auto_split_threshold);
971984 g_free (str);
972985 g_object_unref (icon);
973986 }
987
988 str = tags_to_str (tags);
989 add_source_metadata (view->metadata_model, "source-tags", str);
990 g_free (str);
991 g_strfreev (tags);
974992 }
975993
976994 gtk_widget_set_sensitive (view->show_btn, FALSE);
10411059 }
10421060
10431061 g_object_unref (source);
1044 if (content)
1045 g_object_unref (content);
1062 g_clear_object (&content);
10461063 }
10471064
10481065 static void
10761093 GRL_WARNING ("Cannot use '%s' to show '%s'; using default application",
10771094 g_app_info_get_name (app),
10781095 ui_state->last_url);
1079 g_error_free (error);
1080 error = NULL;
1096 g_clear_error (&error);
10811097 g_app_info_launch_default_for_uri (ui_state->last_url, NULL, &error);
10821098 if (error) {
10831099 GRL_WARNING ("Cannot use default application to show '%s'. "
11051121 browse_history_pop (&prev_source, &prev_container);
11061122 browse (prev_source, prev_container);
11071123
1108 if (prev_source)
1109 g_object_unref (prev_source);
1110 if (prev_container)
1111 g_object_unref (prev_container);
1124 g_clear_object (&prev_source);
1125 g_clear_object (&prev_container);
11121126 }
11131127
11141128 static void
12631277
12641278 grl_source_remove (source, media, remove_cb, NULL);
12651279
1266 if (source) {
1267 g_object_unref (source);
1268 }
1269 if (media) {
1270 g_object_unref (media);
1271 }
1280 g_clear_object (&source);
1281 g_clear_object (&media);
12721282 }
12731283
12741284 static void
13391349 search (source, text);
13401350 }
13411351
1342 if (source) {
1343 g_object_unref (source);
1344 }
1352 g_clear_object (&source);
13451353 }
13461354 }
13471355
13821390 text = gtk_entry_get_text (GTK_ENTRY (view->query_text));
13831391 query (source, text);
13841392
1385 if (source) {
1386 g_object_unref (source);
1387 }
1393 g_clear_object (&source);
13881394 }
13891395 }
13901396
18201826 grl_operation_options_set_flags (default_resolve_options, RESOLVE_FLAGS);
18211827 }
18221828
1829 static gboolean
1830 delete_event_cb (GtkWidget *widget,
1831 GdkEvent *event,
1832 gpointer user_data)
1833 {
1834 gtk_widget_hide (widget);
1835 gtk_main_quit ();
1836 return TRUE;
1837 }
1838
18231839 static void
18241840 ui_setup (void)
18251841 {
18301846 view->window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
18311847 gtk_window_set_title (GTK_WINDOW (view->window), WINDOW_TITLE);
18321848 gtk_window_resize (GTK_WINDOW (view->window), 600, 400);
1833 g_signal_connect (G_OBJECT (view->window), "destroy",
1834 G_CALLBACK (gtk_main_quit), NULL);
1849 g_signal_connect (G_OBJECT (view->window), "delete-event",
1850 G_CALLBACK (delete_event_cb), NULL);
18351851
18361852 GtkActionGroup *actions = gtk_action_group_new ("actions");
18371853 gtk_action_group_add_actions (actions, entries, G_N_ELEMENTS (entries), NULL);
21082124 static void
21092125 free_stack (GList **stack)
21102126 {
2111 GList *iter;
2112 iter = *stack;
2113 while (iter) {
2114 if (iter->data) {
2115 g_object_unref (iter->data);
2116 }
2117 iter = g_list_next (iter);
2118 }
2119 g_list_free (*stack);
2120 *stack = NULL;
2127 g_list_free_full (*stack, g_object_unref);
21212128 }
21222129
21232130 static void
22082215 }
22092216
22102217 static void
2218 metadata_key_added_cb (GrlRegistry *registry,
2219 const gchar *key,
2220 gpointer user_data)
2221 {
2222 gchar *message;
2223 guint id;
2224
2225 message = g_strdup_printf ("New metadata key '%s' has been added", key);
2226 id = gtk_statusbar_push (GTK_STATUSBAR (view->statusbar),
2227 view->statusbar_context_id,
2228 message);
2229 g_timeout_add_seconds (NOTIFICATION_TIMEOUT,
2230 remove_notification,
2231 GUINT_TO_POINTER (id));
2232 g_free (message);
2233 }
2234
2235 static void
22112236 source_added_cb (GrlRegistry *registry,
22122237 GrlSource *source,
22132238 gpointer user_data)
22702295 G_CALLBACK (source_added_cb), NULL);
22712296 g_signal_connect (registry, "source-removed",
22722297 G_CALLBACK (source_removed_cb), NULL);
2298 g_signal_connect (registry, "metadata-key-added",
2299 G_CALLBACK (metadata_key_added_cb), NULL);
22732300 if (!grl_registry_load_all_plugins (registry, NULL)) {
22742301 g_error ("Failed to load plugins.");
22752302 }
0 /* grilo-test.c generated by valac 0.23.2.9-cb12, the Vala compiler
0 /* grilo-test.c generated by valac 0.23.3.20-47868, the Vala compiler
11 * generated from grilo-test.vala, do not modify */
22
33