1 /* HTBackdrops.c generated by valac 0.12.0, the Vala compiler
2  * generated from HTBackdrops.vala, do not modify */
3 
4 /* Gnome Music Player Client (GMPC)
5  * Copyright (C) 2004-2011 Qball Cow <qball@gmpclient.org>
6  * Project homepage: http://gmpclient.org/
7 
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12 
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17 
18  * You should have received a copy of the GNU General Public License along
19  * with this program; if not, write to the Free Software Foundation, Inc.,
20  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 */
22 
23 #include <glib.h>
24 #include <glib-object.h>
25 #include <gtk/gtk.h>
26 #include <gtktransition.h>
27 #include <stdlib.h>
28 #include <string.h>
29 #include <config.h>
30 #include "gmpc-extras.h"
31 #include <plugin.h>
32 #include <config1.h>
33 #include <libmpd/libmpdclient.h>
34 #include <libmpd/libmpd.h>
35 #include <misc.h>
36 #include <metadata.h>
37 #include <libxml/tree.h>
38 #include <libxml/parser.h>
39 #include <gmpc_easy_download.h>
40 
41 #define _g_free0(var) (var = (g_free (var), NULL))
42 #define _meta_data_free0(var) ((var == NULL) ? NULL : (var = (meta_data_free (var), NULL)))
43 typedef struct _GmpcProviderHTBackdropsProp GmpcProviderHTBackdropsProp;
44 #define __g_list_free__meta_data_free0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__meta_data_free0_ (var), NULL)))
45 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
46 
47 struct _GmpcProviderHTBackdropsProp {
48 	GmpcProviderHTBackdrops* this;
49 	GmpcPluginMetaDataCallback callback;
50 	gpointer callback_target;
51 	GDestroyNotify callback_target_destroy_notify;
52 };
53 
54 
55 static gpointer gmpc_provider_ht_backdrops_parent_class = NULL;
56 static GmpcPluginMetaDataIfaceIface* gmpc_provider_ht_backdrops_gmpc_plugin_meta_data_iface_parent_iface = NULL;
57 
58 #define use_transition_ppbd TRUE
59 #define some_unique_name_ppbd VERSION
60 #define log_domain_ppbd "Gmpc.Provider.HTBackdrops"
61 enum  {
62 	GMPC_PROVIDER_HT_BACKDROPS_DUMMY_PROPERTY
63 };
64 #define GMPC_PROVIDER_HT_BACKDROPS_query "http://htbackdrops.com/api/%s/searchXML?keywords=%s&default_operator=a" \
65 "nd&fields=title"
66 #define GMPC_PROVIDER_HT_BACKDROPS_download_url "http://htbackdrops.com/api/%s/download/%s/fullsize"
67 #define GMPC_PROVIDER_HT_BACKDROPS_thumbnail_url "http://htbackdrops.com/api/%s/download/%s/thumbnail"
68 #define GMPC_PROVIDER_HT_BACKDROPS_api_key "b3085ed18168f083aa69179b3364c9d8"
69 static gint* gmpc_provider_ht_backdrops_real_get_version (GmpcPluginBase* base, int* result_length1);
70 static const gchar* gmpc_provider_ht_backdrops_real_get_name (GmpcPluginBase* base);
71 static void gmpc_provider_ht_backdrops_real_set_priority (GmpcPluginMetaDataIface* base, gint priority);
72 static gint gmpc_provider_ht_backdrops_real_get_priority (GmpcPluginMetaDataIface* base);
73 static void gmpc_provider_ht_backdrops_real_get_metadata (GmpcPluginMetaDataIface* base, const mpd_Song* song, MetaDataType type, GmpcPluginMetaDataCallback callback, void* callback_target);
74 static void gmpc_provider_ht_backdrops_get_artist_art (GmpcProviderHTBackdrops* self, const mpd_Song* song, GmpcPluginMetaDataCallback callback, void* callback_target);
75 static void gmpc_provider_ht_backdrops_add_image (GmpcProviderHTBackdrops* self, GList** list, xmlNode* image);
76 static void gmpc_provider_ht_backdrops_parse_data (GmpcProviderHTBackdrops* self, GList** list, guchar* data, int data_length1);
77 static void gmpc_provider_ht_backdrops_handle_download (GmpcProviderHTBackdrops* self, const GEADAsyncHandler* handle, GEADStatus status, void* d);
78 static void gmpc_provider_ht_backdrops_prop_free (GmpcProviderHTBackdropsProp* self);
79 static guchar* _vala_array_dup1 (guchar* self, int length);
80 static void _meta_data_free0_ (gpointer var);
81 static void _g_list_free__meta_data_free0_ (GList* self);
82 static GmpcProviderHTBackdropsProp* gmpc_provider_ht_backdrops_prop_new (void);
83 static GmpcProviderHTBackdropsProp* gmpc_provider_ht_backdrops_prop_new (void);
84 static void _gmpc_provider_ht_backdrops_handle_download_gmpc_async_download_callback_vala (const GEADAsyncHandler* handle, GEADStatus status, void* p, gpointer self);
85 static GObject * gmpc_provider_ht_backdrops_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
86 static void gmpc_provider_ht_backdrops_prop_instance_init (GmpcProviderHTBackdropsProp * self);
87 
88 static const gint GMPC_PROVIDER_HT_BACKDROPS_version[3] = {0, 0, 2};
89 
gmpc_provider_ht_backdrops_real_get_version(GmpcPluginBase * base,int * result_length1)90 static gint* gmpc_provider_ht_backdrops_real_get_version (GmpcPluginBase* base, int* result_length1) {
91 	GmpcProviderHTBackdrops * self;
92 	gint* result = NULL;
93 	gint* _tmp0_;
94 	self = (GmpcProviderHTBackdrops*) base;
95 	_tmp0_ = GMPC_PROVIDER_HT_BACKDROPS_version;
96 	*result_length1 = G_N_ELEMENTS (GMPC_PROVIDER_HT_BACKDROPS_version);
97 	result = _tmp0_;
98 	return result;
99 }
100 
101 
gmpc_provider_ht_backdrops_real_get_name(GmpcPluginBase * base)102 static const gchar* gmpc_provider_ht_backdrops_real_get_name (GmpcPluginBase* base) {
103 	GmpcProviderHTBackdrops * self;
104 	const gchar* result = NULL;
105 	self = (GmpcProviderHTBackdrops*) base;
106 	result = "Home Theater Backdrops";
107 	return result;
108 }
109 
110 
gmpc_provider_ht_backdrops_real_set_priority(GmpcPluginMetaDataIface * base,gint priority)111 static void gmpc_provider_ht_backdrops_real_set_priority (GmpcPluginMetaDataIface* base, gint priority) {
112 	GmpcProviderHTBackdrops * self;
113 	const gchar* _tmp0_ = NULL;
114 	self = (GmpcProviderHTBackdrops*) base;
115 	_tmp0_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
116 	cfg_set_single_value_as_int (config, _tmp0_, "priority", priority);
117 }
118 
119 
gmpc_provider_ht_backdrops_real_get_priority(GmpcPluginMetaDataIface * base)120 static gint gmpc_provider_ht_backdrops_real_get_priority (GmpcPluginMetaDataIface* base) {
121 	GmpcProviderHTBackdrops * self;
122 	gint result = 0;
123 	const gchar* _tmp0_ = NULL;
124 	gint _tmp1_;
125 	self = (GmpcProviderHTBackdrops*) base;
126 	_tmp0_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
127 	_tmp1_ = cfg_get_single_value_as_int_with_default (config, _tmp0_, "priority", 0);
128 	result = _tmp1_;
129 	return result;
130 }
131 
132 
gmpc_provider_ht_backdrops_real_get_metadata(GmpcPluginMetaDataIface * base,const mpd_Song * song,MetaDataType type,GmpcPluginMetaDataCallback callback,void * callback_target)133 static void gmpc_provider_ht_backdrops_real_get_metadata (GmpcPluginMetaDataIface* base, const mpd_Song* song, MetaDataType type, GmpcPluginMetaDataCallback callback, void* callback_target) {
134 	GmpcProviderHTBackdrops * self;
135 	gboolean _tmp0_ = FALSE;
136 	self = (GmpcProviderHTBackdrops*) base;
137 	g_return_if_fail (song != NULL);
138 	if (song == NULL) {
139 		_tmp0_ = TRUE;
140 	} else {
141 		_tmp0_ = song->artist == NULL;
142 	}
143 	if (_tmp0_) {
144 		g_log (log_domain_ppbd, G_LOG_LEVEL_DEBUG, "HTBackdrops.vala:63: Insufficient information. doing nothing");
145 		callback (NULL, callback_target);
146 		return;
147 	}
148 	switch (type) {
149 		case META_ARTIST_ART:
150 		{
151 			gmpc_provider_ht_backdrops_get_artist_art (self, song, callback, callback_target);
152 			return;
153 		}
154 		default:
155 		case META_ARTIST_TXT:
156 		case META_ARTIST_SIMILAR:
157 		case META_ALBUM_ART:
158 		case META_ALBUM_TXT:
159 		case META_SONG_TXT:
160 		case META_SONG_SIMILAR:
161 		case META_GENRE_SIMILAR:
162 		case META_SONG_GUITAR_TAB:
163 		case META_QUERY_DATA_TYPES:
164 		case META_QUERY_NO_CACHE:
165 		{
166 			break;
167 		}
168 	}
169 	callback (NULL, callback_target);
170 }
171 
172 
gmpc_provider_ht_backdrops_add_image(GmpcProviderHTBackdrops * self,GList ** list,xmlNode * image)173 static void gmpc_provider_ht_backdrops_add_image (GmpcProviderHTBackdrops* self, GList** list, xmlNode* image) {
174 	g_return_if_fail (self != NULL);
175 	{
176 		xmlNode* entries;
177 		entries = image->children;
178 		{
179 			gboolean _tmp0_;
180 			_tmp0_ = TRUE;
181 			while (TRUE) {
182 				if (!_tmp0_) {
183 					entries = entries->next;
184 				}
185 				_tmp0_ = FALSE;
186 				if (!(entries != NULL)) {
187 					break;
188 				}
189 				if (g_strcmp0 (entries->name, "id") == 0) {
190 					gchar* _tmp1_ = NULL;
191 					gchar* _tmp2_;
192 					gchar* _tmp3_ = NULL;
193 					gchar* _tmp4_;
194 					gchar* path;
195 					gchar* _tmp5_ = NULL;
196 					gchar* _tmp6_;
197 					gchar* _tmp7_ = NULL;
198 					gchar* _tmp8_;
199 					gchar* thumb_path;
200 					MetaData* _tmp9_ = NULL;
201 					MetaData* pitem;
202 					const gchar* _tmp10_ = NULL;
203 					MetaData* _tmp11_;
204 					_tmp1_ = xmlNodeGetContent (entries);
205 					_tmp2_ = _tmp1_;
206 					_tmp3_ = g_strdup_printf (GMPC_PROVIDER_HT_BACKDROPS_download_url, GMPC_PROVIDER_HT_BACKDROPS_api_key, _tmp2_);
207 					_tmp4_ = _tmp3_;
208 					_g_free0 (_tmp2_);
209 					path = _tmp4_;
210 					_tmp5_ = xmlNodeGetContent (entries);
211 					_tmp6_ = _tmp5_;
212 					_tmp7_ = g_strdup_printf (GMPC_PROVIDER_HT_BACKDROPS_thumbnail_url, GMPC_PROVIDER_HT_BACKDROPS_api_key, _tmp6_);
213 					_tmp8_ = _tmp7_;
214 					_g_free0 (_tmp6_);
215 					thumb_path = _tmp8_;
216 					g_log (log_domain_ppbd, G_LOG_LEVEL_DEBUG, "HTBackdrops.vala:109: Entry : %s", path);
217 					_tmp9_ = meta_data_new ();
218 					pitem = _tmp9_;
219 					pitem->type = META_ARTIST_ART;
220 					_tmp10_ = gmpc_plugin_base_get_name ((GmpcPluginBase*) self);
221 					pitem->plugin_name = _tmp10_;
222 					pitem->content_type = META_DATA_CONTENT_URI;
223 					meta_data_set_uri (pitem, path);
224 					meta_data_set_thumbnail_uri (pitem, thumb_path);
225 					_tmp11_ = pitem;
226 					pitem = NULL;
227 					*list = g_list_append (*list, _tmp11_);
228 					_meta_data_free0 (pitem);
229 					_g_free0 (thumb_path);
230 					_g_free0 (path);
231 				}
232 			}
233 		}
234 	}
235 }
236 
237 
gmpc_provider_ht_backdrops_parse_data(GmpcProviderHTBackdrops * self,GList ** list,guchar * data,int data_length1)238 static void gmpc_provider_ht_backdrops_parse_data (GmpcProviderHTBackdrops* self, GList** list, guchar* data, int data_length1) {
239 	xmlDoc* _tmp0_ = NULL;
240 	xmlDoc* doc;
241 	xmlNode* _tmp1_ = NULL;
242 	xmlNode* root;
243 	g_return_if_fail (self != NULL);
244 	_tmp0_ = xmlParseMemory ((const gchar*) data, data_length1);
245 	doc = _tmp0_;
246 	if (doc == NULL) {
247 		return;
248 	}
249 	_tmp1_ = xmlDocGetRootElement (doc);
250 	root = _tmp1_;
251 	if (root != NULL) {
252 		{
253 			xmlNode* child;
254 			child = root->children;
255 			{
256 				gboolean _tmp2_;
257 				_tmp2_ = TRUE;
258 				while (TRUE) {
259 					if (!_tmp2_) {
260 						child = child->next;
261 					}
262 					_tmp2_ = FALSE;
263 					if (!(child != NULL)) {
264 						break;
265 					}
266 					if (g_strcmp0 (child->name, "images") == 0) {
267 						{
268 							xmlNode* image;
269 							image = child->children;
270 							{
271 								gboolean _tmp3_;
272 								_tmp3_ = TRUE;
273 								while (TRUE) {
274 									if (!_tmp3_) {
275 										image = image->next;
276 									}
277 									_tmp3_ = FALSE;
278 									if (!(image != NULL)) {
279 										break;
280 									}
281 									if (g_strcmp0 (image->name, "image") == 0) {
282 										gmpc_provider_ht_backdrops_add_image (self, list, image);
283 									}
284 								}
285 							}
286 						}
287 					}
288 				}
289 			}
290 		}
291 	}
292 }
293 
294 
_vala_array_dup1(guchar * self,int length)295 static guchar* _vala_array_dup1 (guchar* self, int length) {
296 	return g_memdup (self, length * sizeof (guchar));
297 }
298 
299 
_meta_data_free0_(gpointer var)300 static void _meta_data_free0_ (gpointer var) {
301 	(var == NULL) ? NULL : (var = (meta_data_free (var), NULL));
302 }
303 
304 
_g_list_free__meta_data_free0_(GList * self)305 static void _g_list_free__meta_data_free0_ (GList* self) {
306 	g_list_foreach (self, (GFunc) _meta_data_free0_, NULL);
307 	g_list_free (self);
308 }
309 
310 
gmpc_provider_ht_backdrops_handle_download(GmpcProviderHTBackdrops * self,const GEADAsyncHandler * handle,GEADStatus status,void * d)311 static void gmpc_provider_ht_backdrops_handle_download (GmpcProviderHTBackdrops* self, const GEADAsyncHandler* handle, GEADStatus status, void* d) {
312 	GmpcProviderHTBackdropsProp* p;
313 	g_return_if_fail (self != NULL);
314 	g_return_if_fail (handle != NULL);
315 	p = (GmpcProviderHTBackdropsProp*) d;
316 	if (status == GEAD_DONE) {
317 		GList* list;
318 		gint _tmp0_;
319 		guchar* _tmp1_ = NULL;
320 		guchar* _tmp2_;
321 		guchar* _tmp3_;
322 		guchar* data;
323 		gint data_length1;
324 		gint _data_size_;
325 		guint _tmp4_;
326 		GList* _tmp5_;
327 		list = NULL;
328 		_tmp1_ = gmpc_easy_handler_get_data_vala_wrap (handle, &_tmp0_);
329 		_tmp2_ = (_tmp3_ = _tmp1_, (_tmp3_ == NULL) ? ((gpointer) _tmp3_) : _vala_array_dup1 (_tmp3_, _tmp0_));
330 		data = _tmp2_;
331 		data_length1 = _tmp0_;
332 		_data_size_ = _tmp0_;
333 		if (data != NULL) {
334 			gmpc_provider_ht_backdrops_parse_data (self, &list, data, data_length1);
335 		}
336 		_tmp4_ = g_list_length (list);
337 		g_log (log_domain_ppbd, G_LOG_LEVEL_DEBUG, "HTBackdrops.vala:163: Download done: results: %u ", _tmp4_);
338 		_tmp5_ = list;
339 		list = NULL;
340 		p->callback (_tmp5_, p->callback_target);
341 		gmpc_provider_ht_backdrops_prop_free (p);
342 		data = (g_free (data), NULL);
343 		__g_list_free__meta_data_free0_0 (list);
344 	} else {
345 		if (status == GEAD_PROGRESS) {
346 		} else {
347 			GList* list;
348 			GList* _tmp6_;
349 			list = NULL;
350 			_tmp6_ = list;
351 			list = NULL;
352 			p->callback (_tmp6_, p->callback_target);
353 			gmpc_provider_ht_backdrops_prop_free (p);
354 			__g_list_free__meta_data_free0_0 (list);
355 		}
356 	}
357 }
358 
359 
360 /**
361      * Get artist art
362      */
_g_object_ref0(gpointer self)363 static gpointer _g_object_ref0 (gpointer self) {
364 	return self ? g_object_ref (self) : NULL;
365 }
366 
367 
_gmpc_provider_ht_backdrops_handle_download_gmpc_async_download_callback_vala(const GEADAsyncHandler * handle,GEADStatus status,void * p,gpointer self)368 static void _gmpc_provider_ht_backdrops_handle_download_gmpc_async_download_callback_vala (const GEADAsyncHandler* handle, GEADStatus status, void* p, gpointer self) {
369 	gmpc_provider_ht_backdrops_handle_download (self, handle, status, p);
370 }
371 
372 
gmpc_provider_ht_backdrops_get_artist_art(GmpcProviderHTBackdrops * self,const mpd_Song * song,GmpcPluginMetaDataCallback callback,void * callback_target)373 static void gmpc_provider_ht_backdrops_get_artist_art (GmpcProviderHTBackdrops* self, const mpd_Song* song, GmpcPluginMetaDataCallback callback, void* callback_target) {
374 	GmpcProviderHTBackdropsProp* _tmp0_ = NULL;
375 	GmpcProviderHTBackdropsProp* p;
376 	GmpcProviderHTBackdrops* _tmp1_;
377 	GmpcPluginMetaDataCallback _tmp2_;
378 	gchar* _tmp3_ = NULL;
379 	gchar* _tmp4_;
380 	gchar* _tmp5_ = NULL;
381 	gchar* _tmp6_;
382 	gchar* path;
383 	g_return_if_fail (self != NULL);
384 	g_return_if_fail (song != NULL);
385 	_tmp0_ = gmpc_provider_ht_backdrops_prop_new ();
386 	p = _tmp0_;
387 	_tmp1_ = _g_object_ref0 (self);
388 	_g_object_unref0 (p->this);
389 	p->this = _tmp1_;
390 	_tmp2_ = callback;
391 	(p->callback_target_destroy_notify == NULL) ? NULL : (p->callback_target_destroy_notify (p->callback_target), NULL);
392 	p->callback = NULL;
393 	p->callback_target = NULL;
394 	p->callback_target_destroy_notify = NULL;
395 	p->callback = _tmp2_;
396 	p->callback_target = callback_target;
397 	p->callback_target_destroy_notify = NULL;
398 	_tmp3_ = gmpc_easy_download_uri_escape (song->artist);
399 	_tmp4_ = _tmp3_;
400 	_tmp5_ = g_strdup_printf (GMPC_PROVIDER_HT_BACKDROPS_query, GMPC_PROVIDER_HT_BACKDROPS_api_key, _tmp4_);
401 	_tmp6_ = _tmp5_;
402 	_g_free0 (_tmp4_);
403 	path = _tmp6_;
404 	g_log (log_domain_ppbd, G_LOG_LEVEL_DEBUG, "HTBackdrops.vala:189: Query artist art: %s ", path);
405 	gmpc_easy_async_downloader_vala (path, p, _gmpc_provider_ht_backdrops_handle_download_gmpc_async_download_callback_vala, self);
406 	_g_free0 (path);
407 }
408 
409 
gmpc_provider_ht_backdrops_construct(GType object_type)410 GmpcProviderHTBackdrops* gmpc_provider_ht_backdrops_construct (GType object_type) {
411 	GmpcProviderHTBackdrops * self = NULL;
412 	self = (GmpcProviderHTBackdrops*) gmpc_plugin_base_construct (object_type);
413 	return self;
414 }
415 
416 
gmpc_provider_ht_backdrops_new(void)417 GmpcProviderHTBackdrops* gmpc_provider_ht_backdrops_new (void) {
418 	return gmpc_provider_ht_backdrops_construct (GMPC_PROVIDER_TYPE_HT_BACKDROPS);
419 }
420 
421 
gmpc_provider_ht_backdrops_constructor(GType type,guint n_construct_properties,GObjectConstructParam * construct_properties)422 static GObject * gmpc_provider_ht_backdrops_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
423 	GObject * obj;
424 	GObjectClass * parent_class;
425 	GmpcProviderHTBackdrops * self;
426 	parent_class = G_OBJECT_CLASS (gmpc_provider_ht_backdrops_parent_class);
427 	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
428 	self = GMPC_PROVIDER_HT_BACKDROPS (obj);
429 	((GmpcPluginBase*) self)->plugin_type = 8 + 32;
430 	return obj;
431 }
432 
433 
gmpc_provider_ht_backdrops_prop_new(void)434 static GmpcProviderHTBackdropsProp* gmpc_provider_ht_backdrops_prop_new (void) {
435 	GmpcProviderHTBackdropsProp* self;
436 	self = g_slice_new0 (GmpcProviderHTBackdropsProp);
437 	gmpc_provider_ht_backdrops_prop_instance_init (self);
438 	return self;
439 }
440 
441 
gmpc_provider_ht_backdrops_prop_instance_init(GmpcProviderHTBackdropsProp * self)442 static void gmpc_provider_ht_backdrops_prop_instance_init (GmpcProviderHTBackdropsProp * self) {
443 }
444 
445 
gmpc_provider_ht_backdrops_prop_free(GmpcProviderHTBackdropsProp * self)446 static void gmpc_provider_ht_backdrops_prop_free (GmpcProviderHTBackdropsProp* self) {
447 	_g_object_unref0 (self->this);
448 	(self->callback_target_destroy_notify == NULL) ? NULL : (self->callback_target_destroy_notify (self->callback_target), NULL);
449 	self->callback = NULL;
450 	self->callback_target = NULL;
451 	self->callback_target_destroy_notify = NULL;
452 	g_slice_free (GmpcProviderHTBackdropsProp, self);
453 }
454 
455 
gmpc_provider_ht_backdrops_class_init(GmpcProviderHTBackdropsClass * klass)456 static void gmpc_provider_ht_backdrops_class_init (GmpcProviderHTBackdropsClass * klass) {
457 	gmpc_provider_ht_backdrops_parent_class = g_type_class_peek_parent (klass);
458 	GMPC_PLUGIN_BASE_CLASS (klass)->get_version = gmpc_provider_ht_backdrops_real_get_version;
459 	GMPC_PLUGIN_BASE_CLASS (klass)->get_name = gmpc_provider_ht_backdrops_real_get_name;
460 	G_OBJECT_CLASS (klass)->constructor = gmpc_provider_ht_backdrops_constructor;
461 }
462 
463 
gmpc_provider_ht_backdrops_gmpc_plugin_meta_data_iface_interface_init(GmpcPluginMetaDataIfaceIface * iface)464 static void gmpc_provider_ht_backdrops_gmpc_plugin_meta_data_iface_interface_init (GmpcPluginMetaDataIfaceIface * iface) {
465 	gmpc_provider_ht_backdrops_gmpc_plugin_meta_data_iface_parent_iface = g_type_interface_peek_parent (iface);
466 	iface->set_priority = (void (*)(GmpcPluginMetaDataIface* ,gint)) gmpc_provider_ht_backdrops_real_set_priority;
467 	iface->get_priority = (gint (*)(GmpcPluginMetaDataIface*)) gmpc_provider_ht_backdrops_real_get_priority;
468 	iface->get_metadata = (void (*)(GmpcPluginMetaDataIface* ,const mpd_Song* ,MetaDataType ,GmpcPluginMetaDataCallback ,void*)) gmpc_provider_ht_backdrops_real_get_metadata;
469 }
470 
471 
gmpc_provider_ht_backdrops_instance_init(GmpcProviderHTBackdrops * self)472 static void gmpc_provider_ht_backdrops_instance_init (GmpcProviderHTBackdrops * self) {
473 }
474 
475 
gmpc_provider_ht_backdrops_get_type(void)476 GType gmpc_provider_ht_backdrops_get_type (void) {
477 	static volatile gsize gmpc_provider_ht_backdrops_type_id__volatile = 0;
478 	if (g_once_init_enter (&gmpc_provider_ht_backdrops_type_id__volatile)) {
479 		static const GTypeInfo g_define_type_info = { sizeof (GmpcProviderHTBackdropsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gmpc_provider_ht_backdrops_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GmpcProviderHTBackdrops), 0, (GInstanceInitFunc) gmpc_provider_ht_backdrops_instance_init, NULL };
480 		static const GInterfaceInfo gmpc_plugin_meta_data_iface_info = { (GInterfaceInitFunc) gmpc_provider_ht_backdrops_gmpc_plugin_meta_data_iface_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
481 		GType gmpc_provider_ht_backdrops_type_id;
482 		gmpc_provider_ht_backdrops_type_id = g_type_register_static (GMPC_PLUGIN_TYPE_BASE, "GmpcProviderHTBackdrops", &g_define_type_info, 0);
483 		g_type_add_interface_static (gmpc_provider_ht_backdrops_type_id, GMPC_PLUGIN_TYPE_META_DATA_IFACE, &gmpc_plugin_meta_data_iface_info);
484 		g_once_init_leave (&gmpc_provider_ht_backdrops_type_id__volatile, gmpc_provider_ht_backdrops_type_id);
485 	}
486 	return gmpc_provider_ht_backdrops_type_id__volatile;
487 }
488 
489 
490 
491