annotate src/dockalbumart/dockalbumart.c @ 2297:912ab17a4bcc

try to prevent 'Xlib: unexpected async reply' on errorbox show
author Tomasz Mon <desowin@gmail.com>
date Sat, 12 Jan 2008 12:14:58 +0100
parents 0803fba87da8
children 7b284f323ad8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1710
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
1 /*
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
2 * dockalbumart: An audacious plugin to change the MacOS dock tile to the
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
3 * album art.
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
4 * dockalbumart.c: Plugin implementation
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
5 *
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
6 * Copyright (c) 2007 William Pitcock <nenolod -at- sacredspiral.co.uk>
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
7 *
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
8 * Permission to use, copy, modify, and/or distribute this software for any
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
9 * purpose with or without fee is hereby granted, provided that the above
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
10 * copyright notice and this permission notice is present in all copies.
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
11 *
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
12 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
13 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
15 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
16 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
17 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
18 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
19 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
20 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
21 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
22 * POSSIBILITY OF SUCH DAMAGE.
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
23 */
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
24
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
25 #include <glib.h>
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
26 #include <audacious/i18n.h>
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
27
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
28 #include <Carbon/Carbon.h>
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
29
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
30 #include <audacious/plugin.h>
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
31 #include <audacious/util.h>
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
32 #include <audacious/playlist.h>
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
33
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
34 #include "audacious_player.xpm"
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
35
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
36 extern gchar *fileinfo_recursive_get_image(const gchar* path, const gchar* file_name, gint depth);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
37
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
38 /* utility functions */
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
39 static void
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
40 dock_set_icon_from_pixbuf(const GdkPixbuf *in)
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
41 {
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
42 GdkPixbuf *pixbuf;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
43 CGColorSpaceRef colorspace;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
44 CGDataProviderRef data_provider;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
45 CGImageRef image;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
46 gpointer data;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
47 gint rowstride, pixbuf_width, pixbuf_height;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
48 gboolean has_alpha;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
49
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
50 pixbuf = gdk_pixbuf_scale_simple(in, 128, 128, GDK_INTERP_BILINEAR);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
51
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
52 data = gdk_pixbuf_get_pixels(pixbuf);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
53 pixbuf_width = gdk_pixbuf_get_width(pixbuf);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
54 pixbuf_height = gdk_pixbuf_get_height(pixbuf);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
55 rowstride = gdk_pixbuf_get_rowstride(pixbuf);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
56 has_alpha = gdk_pixbuf_get_has_alpha(pixbuf);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
57
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
58 /* create the colourspace for the CGImage. */
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
59 colorspace = CGColorSpaceCreateDeviceRGB();
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
60 data_provider = CGDataProviderCreateWithData(NULL, data, pixbuf_height * rowstride, NULL);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
61 image = CGImageCreate(pixbuf_width, pixbuf_height, 8,
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
62 has_alpha ? 32 : 24, rowstride, colorspace,
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
63 has_alpha ? kCGImageAlphaLast : 0,
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
64 data_provider, NULL, FALSE,
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
65 kCGRenderingIntentDefault);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
66
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
67 /* release the colourspace and data provider, we have what we want. */
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
68 CGDataProviderRelease(data_provider);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
69 CGColorSpaceRelease(colorspace);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
70
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
71 /* set the dock tile images */
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
72 SetApplicationDockTileImage(image);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
73
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
74 /* and release */
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
75 CGImageRelease(image);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
76 g_object_unref(pixbuf);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
77 }
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
78
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
79 static void
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
80 pixbuf_find_and_load(Tuple *tuple)
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
81 {
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
82 GdkPixbuf *out;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
83 gchar *tmp;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
84 const gchar *file_path, *file_name;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
85
1976
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1961
diff changeset
86 file_name = aud_tuple_get_string(tuple, FIELD_FILE_NAME, NULL);
5fa26178eaef s/tuple_/aud_tuple_/g
William Pitcock <nenolod@atheme.org>
parents: 1961
diff changeset
87 file_path = aud_tuple_get_string(tuple, FIELD_FILE_PATH, NULL);
1710
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
88
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
89 if (file_name != NULL && file_path != NULL)
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
90 {
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
91 tmp = fileinfo_recursive_get_image(file_path, file_name, 0);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
92 if (tmp)
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
93 {
1715
bd269f6e26b2 remove caching code, it's pointless.
William Pitcock <nenolod@atheme.org>
parents: 1710
diff changeset
94 GdkPixbuf *new = gdk_pixbuf_new_from_file(tmp, NULL);
bd269f6e26b2 remove caching code, it's pointless.
William Pitcock <nenolod@atheme.org>
parents: 1710
diff changeset
95 dock_set_icon_from_pixbuf(new);
bd269f6e26b2 remove caching code, it's pointless.
William Pitcock <nenolod@atheme.org>
parents: 1710
diff changeset
96 g_object_unref(new);
1710
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
97 }
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
98 else
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
99 {
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
100 GdkPixbuf *new = gdk_pixbuf_new_from_xpm_data((const gchar **) audacious_player_xpm);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
101 dock_set_icon_from_pixbuf(new);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
102 g_object_unref(new);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
103 }
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
104 }
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
105 }
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
106
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
107 /* trigger functions */
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
108
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
109 static void
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
110 dockart_trigger_func_pb_start_cb(gpointer plentry_p, gpointer unused)
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
111 {
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
112 PlaylistEntry *entry = (PlaylistEntry *) plentry_p;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
113 Tuple *tuple;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
114
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
115 if (entry == NULL)
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
116 return;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
117
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
118 tuple = entry->tuple;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
119
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
120 if (tuple == NULL)
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
121 return;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
122
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
123 pixbuf_find_and_load(tuple);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
124 }
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
125
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
126 static void
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
127 dockart_trigger_func_pb_end_cb(gpointer plentry_p, gpointer unused)
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
128 {
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
129 GdkPixbuf *new;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
130
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
131 new = gdk_pixbuf_new_from_xpm_data((const gchar **) audacious_player_xpm);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
132 dock_set_icon_from_pixbuf(new);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
133 g_object_unref(new);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
134 }
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
135
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
136 static void
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
137 dockart_init(void)
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
138 {
2060
0803fba87da8 hook shit
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
139 aud_hook_associate("playback begin", dockart_trigger_func_pb_start_cb, NULL);
0803fba87da8 hook shit
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
140 aud_hook_associate("playback end", dockart_trigger_func_pb_end_cb, NULL);
1710
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
141 }
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
142
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
143 static void
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
144 dockart_cleanup(void)
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
145 {
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
146 GdkPixbuf *new;
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
147
2060
0803fba87da8 hook shit
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
148 aud_hook_dissociate("playback begin", dockart_trigger_func_pb_start_cb);
0803fba87da8 hook shit
William Pitcock <nenolod@atheme.org>
parents: 1976
diff changeset
149 aud_hook_dissociate("playback end", dockart_trigger_func_pb_end_cb);
1710
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
150
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
151 /* reset dock tile */
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
152 new = gdk_pixbuf_new_from_xpm_data((const gchar **) audacious_player_xpm);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
153 dock_set_icon_from_pixbuf(new);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
154 g_object_unref(new);
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
155 }
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
156
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
157 GeneralPlugin dockart_gp =
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
158 {
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
159 .description = "Dock Album Art",
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
160 .init = dockart_init,
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
161 .cleanup = dockart_cleanup
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
162 };
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
163
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
164 GeneralPlugin *dockart_gplist[] = { &dockart_gp, NULL };
5dfa4fc721b0 Add dockalbumart plugin for MacOS. (this could also be ported to GNOME's AWN too.)
William Pitcock <nenolod@atheme.org>
parents:
diff changeset
165 SIMPLE_GENERAL_PLUGIN(dockart, dockart_gplist);