summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBenjamin Drung <bdrung@ubuntu.com>2010-09-03 19:20:19 +0200
committerBenjamin Drung <bdrung@ubuntu.com>2010-09-03 19:20:19 +0200
commit01b842c996bdca86fcaaf80812550ed83d646d9b (patch)
tree4c07b5e2f3acfedaf5c366ef8dbbff3c704b8967 /src
parent4d82ce30fdda4dd8376819a65893daf4781af4ad (diff)
Imported Upstream version 2.4.0
Diffstat (limited to 'src')
-rw-r--r--src/audacious/credits.c2
-rw-r--r--src/audacious/playlist-new.c1
-rw-r--r--src/audacious/ui_albumart.c12
-rw-r--r--src/audacious/ui_preferences.c6
-rw-r--r--src/libaudgui/libaudgui-gtk.h1
-rw-r--r--src/libaudgui/util.c30
-rw-r--r--src/libaudtag/id3/id3v22.c7
-rw-r--r--src/libaudtag/id3/id3v24.c8
8 files changed, 51 insertions, 16 deletions
diff --git a/src/audacious/credits.c b/src/audacious/credits.c
index dac9eed..b304f0d 100644
--- a/src/audacious/credits.c
+++ b/src/audacious/credits.c
@@ -260,6 +260,8 @@ static const gchar *translators_text[] = {
NULL,
N_("Polish:"),
"Wojciech Myrda",
+ "Michał Kiedrowicz",
+ "Szymon Weihs",
NULL,
N_("Portugese:"),
"Luís Picciochi Oliveira",
diff --git a/src/audacious/playlist-new.c b/src/audacious/playlist-new.c
index fd9c16f..f32ab85 100644
--- a/src/audacious/playlist-new.c
+++ b/src/audacious/playlist-new.c
@@ -1324,6 +1324,7 @@ void playlist_delete_selected(gint playlist_num)
playlist->entries = others;
number_entries(playlist, 0, index_count(playlist->entries));
+ playlist->selected_count = 0;
playlist->selected_length = 0;
if (stop && playback_get_playing ())
diff --git a/src/audacious/ui_albumart.c b/src/audacious/ui_albumart.c
index 2662d3e..6bbcb1e 100644
--- a/src/audacious/ui_albumart.c
+++ b/src/audacious/ui_albumart.c
@@ -123,9 +123,6 @@ static gchar * fileinfo_recursive_get_image (const gchar * path, const gchar *
if (cfg.recurse_for_cover && depth > cfg.recurse_for_cover_depth)
return NULL;
- if (str_has_prefix_nocase(path, "file://"))
- path += 7;
-
d = g_dir_open(path, 0, NULL);
if (d) {
@@ -194,10 +191,15 @@ static gchar * fileinfo_recursive_get_image (const gchar * path, const gchar *
gchar * get_associated_image_file (const gchar * filename)
{
- gchar * path = g_path_get_dirname (filename);
- gchar * base = g_path_get_basename (filename);
+ gchar * unesc = g_filename_from_uri (filename, NULL, NULL);
+ if (! unesc)
+ return NULL;
+
+ gchar * path = g_path_get_dirname (unesc);
+ gchar * base = g_path_get_basename (unesc);
gchar * image_file = fileinfo_recursive_get_image (path, base, 0);
+ g_free (unesc);
g_free (path);
g_free (base);
return image_file;
diff --git a/src/audacious/ui_preferences.c b/src/audacious/ui_preferences.c
index 45a4fdd..82c778e 100644
--- a/src/audacious/ui_preferences.c
+++ b/src/audacious/ui_preferences.c
@@ -720,6 +720,7 @@ create_plugin_preferences(PluginPreferences *settings)
g_signal_connect(G_OBJECT(ok), "clicked",
G_CALLBACK(plugin_preferences_ok), settings);
gtk_box_pack_start(GTK_BOX(bbox), ok, TRUE, TRUE, 0);
+ gtk_widget_set_can_default (ok, TRUE);
gtk_widget_grab_default(ok);
apply = gtk_button_new_from_stock(GTK_STOCK_APPLY);
@@ -1133,7 +1134,10 @@ on_cbox_changed_string(GtkComboBox * combobox, PreferencesWidget *widget)
gint position = 0;
position = gtk_combo_box_get_active(GTK_COMBO_BOX(combobox));
- *((gchar **)widget->cfg) = (gchar *)widget->data.combo.elements[position].value;
+
+ g_free(*((gchar **)widget->cfg));
+
+ *((gchar **)widget->cfg) = g_strdup(widget->data.combo.elements[position].value);
}
static void
diff --git a/src/libaudgui/libaudgui-gtk.h b/src/libaudgui/libaudgui-gtk.h
index 688a24f..f9316eb 100644
--- a/src/libaudgui/libaudgui-gtk.h
+++ b/src/libaudgui/libaudgui-gtk.h
@@ -54,6 +54,7 @@ void audgui_simple_message (GtkWidget * * widget, GtkMessageType type,
void audgui_connect_check_box (GtkWidget * box, gboolean * setting);
GdkPixbuf * audgui_pixbuf_from_data (void * data, gint size);
+GdkPixbuf * audgui_pixbuf_for_file (const gchar * filename);
void audgui_pixbuf_scale_within (GdkPixbuf * * pixbuf, gint size);
#endif
diff --git a/src/libaudgui/util.c b/src/libaudgui/util.c
index 87121a8..83e4ce2 100644
--- a/src/libaudgui/util.c
+++ b/src/libaudgui/util.c
@@ -19,12 +19,13 @@
* using our public API to be a derived work.
*/
-#define DEBUG
#include <gdk/gdkkeysyms.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gtk/gtk.h>
#include <audacious/debug.h>
+#include <audacious/plugin.h>
+#include <audacious/misc.h>
#include "libaudgui.h"
#include "libaudgui-gtk.h"
@@ -104,6 +105,33 @@ GdkPixbuf * audgui_pixbuf_from_data (void * data, gint size)
return pixbuf;
}
+GdkPixbuf * audgui_pixbuf_for_file (const gchar * name)
+{
+ InputPlugin * decoder = aud_file_find_decoder (name, FALSE);
+
+ if (! decoder)
+ return NULL;
+
+ void * data;
+ gint size;
+
+ if (aud_file_read_image (name, decoder, & data, & size))
+ {
+ GdkPixbuf * p = audgui_pixbuf_from_data (data, size);
+ g_free (data);
+ return p;
+ }
+
+ gchar * assoc = aud_get_associated_image_file (name);
+
+ if (! assoc)
+ return NULL;
+
+ GdkPixbuf * p = gdk_pixbuf_new_from_file (assoc, NULL);
+ g_free (assoc);
+ return p;
+}
+
void audgui_pixbuf_scale_within (GdkPixbuf * * pixbuf, gint size)
{
gint width = gdk_pixbuf_get_width (* pixbuf);
diff --git a/src/libaudtag/id3/id3v22.c b/src/libaudtag/id3/id3v22.c
index ceec8e2..331b366 100644
--- a/src/libaudtag/id3/id3v22.c
+++ b/src/libaudtag/id3/id3v22.c
@@ -138,7 +138,7 @@ static gboolean read_frame (VFSFile * handle, gint max_size, gint version,
gboolean syncsafe, gint * frame_size, gchar * key, guchar * * data, gint * size)
{
ID3v2FrameHeader header;
- gint skip = 0, i;
+ gint i;
guint32 hdrsz = 0;
if ((max_size -= sizeof (ID3v2FrameHeader)) < 0)
@@ -168,10 +168,7 @@ static gboolean read_frame (VFSFile * handle, gint max_size, gint version,
* frame_size = sizeof (ID3v2FrameHeader) + hdrsz;
sprintf (key, "%.3s", header.key);
- if (skip > 0 && vfs_fseek (handle, skip, SEEK_CUR))
- return FALSE;
-
- * size = hdrsz - skip;
+ * size = hdrsz;
* data = g_malloc (* size);
if (vfs_fread (* data, 1, * size, handle) != * size)
diff --git a/src/libaudtag/id3/id3v24.c b/src/libaudtag/id3/id3v24.c
index 5d59a69..9d9d482 100644
--- a/src/libaudtag/id3/id3v24.c
+++ b/src/libaudtag/id3/id3v24.c
@@ -300,7 +300,7 @@ static gboolean read_frame (VFSFile * handle, gint max_size, gint version,
(GUINT32_FROM_BE (header.size));
header.flags = GUINT16_FROM_BE (header.flags);
- if (header.size > max_size)
+ if (header.size > max_size || header.size == 0)
return FALSE;
AUDDBG ("Found frame:\n");
@@ -322,7 +322,7 @@ static gboolean read_frame (VFSFile * handle, gint max_size, gint version,
if (header.flags & ID3_FRAME_HAS_LENGTH)
skip += 4;
- if (skip > 0 && vfs_fseek (handle, skip, SEEK_CUR))
+ if ((skip > 0 && vfs_fseek (handle, skip, SEEK_CUR)) || skip >= header.size)
return FALSE;
* size = header.size - skip;
@@ -484,7 +484,7 @@ static void associate_string (Tuple * tuple, gint field, const gchar *
{
gchar * text = decode_text_frame (data, size);
- if (text == NULL)
+ if (text == NULL || ! text[0])
return;
if (customfield != NULL)
@@ -501,7 +501,7 @@ static void associate_int (Tuple * tuple, gint field, const gchar *
{
gchar * text = decode_text_frame (data, size);
- if (text == NULL)
+ if (text == NULL || ! text[0])
return;
if (customfield != NULL)