changeset 1279:01d2aa561b53 trunk

[svn] - libaac: use unified fileinfo requester, since functionality is adequate (cannot save data, only read it at present)
author nenolod
date Fri, 16 Jun 2006 20:55:52 -0700
parents 7baea4fb20a4
children 6ad7eb96dd26
files ChangeLog Plugins/Input/aac/src/Makefile.in Plugins/Input/aac/src/fileinfo.c Plugins/Input/aac/src/libmp4.c
diffstat 4 files changed, 12 insertions(+), 451 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Jun 16 06:13:21 2006 -0700
+++ b/ChangeLog	Fri Jun 16 20:55:52 2006 -0700
@@ -1,3 +1,13 @@
+2006-06-16 13:13:21 +0000  Yoshiki Yazawa <yaz@cc.rim.or.jp>
+  revision [1470]
+  - fix for alsa_mutex deadlock
+  - fix for alsa_mutex scope
+  
+
+  Changes:        Modified:
+  +3 -3           trunk/Plugins/Output/alsa/audio.c  
+
+
 2006-06-16 10:50:38 +0000  William Pitcock <nenolod@nenolod.net>
   revision [1468]
   - if entry->tuple == NULL, then probe the file for a decoder and build the appropriate tuple for that entry
--- a/Plugins/Input/aac/src/Makefile.in	Fri Jun 16 06:13:21 2006 -0700
+++ b/Plugins/Input/aac/src/Makefile.in	Fri Jun 16 20:55:52 2006 -0700
@@ -10,7 +10,7 @@
 
 LDFLAGS += ../libfaad2/libfaad.a ../mp4ff/libmp4ff.a -lstdc++
 
-SOURCES = libmp4.c mp4_utils.c aac_utils.c tagging_mp4.c fileinfo.c
+SOURCES = libmp4.c mp4_utils.c aac_utils.c tagging_mp4.c
 
 OBJECTS = ${SOURCES:.c=.o}
 
--- a/Plugins/Input/aac/src/fileinfo.c	Fri Jun 16 06:13:21 2006 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,449 +0,0 @@
-/*  BMP - Cross-platform multimedia player
- *  Copyright (C) 2003-2004  BMP development team.
- *
- *  Based on XMMS:
- *  Copyright (C) 1998-2003  XMMS development team.
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-
-#include "audacious/util.h"
-#include <libaudacious/util.h>
-#include <libaudacious/vfs.h>
-#include <libaudacious/xentry.h>
-#include "mp4ff.h"
-#include "tagging.h"
-
-#include "m4a.xpm"
-
-static GtkWidget *window = NULL;
-static GtkWidget *filename_entry, *id3_frame;
-static GtkWidget *title_entry, *artist_entry, *album_entry, *year_entry,
-    *tracknum_entry, *comment_entry;
-static GtkWidget *genre_combo;
-
-GtkWidget *vbox, *hbox, *left_vbox, *table;
-GtkWidget *mpeg_frame, *mpeg_box;
-GtkWidget *label, *filename_vbox;
-GtkWidget *bbox;
-GtkWidget *remove_id3, *cancel, *save;
-GtkWidget *boxx;
-
-const gchar *emphasis[4];
-const gchar *bool_label[2];
-
-static GList *genre_list = NULL;
-static gchar *current_filename = NULL;
-
-#define MAX_STR_LEN 100
-
-static uint32_t mp4_read_callback(void *data, void *buffer, uint32_t len)
-{
-        if (data == NULL || buffer == NULL)
-                return -1;
-
-        return vfs_fread(buffer, 1, len, (VFSFile *) data);
-}
-
-static uint32_t mp4_seek_callback(void *data, uint64_t pos)
-{
-        if (data == NULL)
-                return -1;
-
-        return vfs_fseek((VFSFile *) data, pos, SEEK_SET);
-}
-
-#if 0
-static guint
-audmp4_strip_spaces(char *src, size_t n)
-{   
-    gchar *space = NULL,        /* last space in src */
-        *start = src;
-
-    while (n--)
-        switch (*src++) {
-        case '\0':
-            n = 0;              /* breaks out of while loop */
-
-            src--;
-            break;
-        case ' ':
-            if (space == NULL)
-                space = src - 1;
-            break;
-        default:
-            space = NULL;       /* don't terminate intermediate spaces */
-
-            break;
-        }
-    if (space != NULL) {
-        src = space;
-        *src = '\0';
-    }
-    return src - start;
-}
-
-static void
-set_entry_tag(GtkEntry * entry, gchar * tag, gint length)
-{
-    gint stripped_len;
-    gchar *text, *text_utf8;
-
-    stripped_len = audmp4_strip_spaces(tag, length);
-    text = g_strdup_printf(tag);
-
-    if ((text_utf8 = str_to_utf8(text))) {
-        gtk_entry_set_text(entry, text_utf8);
-        g_free(text_utf8);
-    }
-    else {
-        gtk_entry_set_text(entry, "");
-    }
-
-    g_free(text);
-}
-
-static void
-get_entry_tag(GtkEntry * entry, gchar * tag, gint length)
-{
-    gchar *text = str_to_utf8(gtk_entry_get_text(entry));
-    memset(tag, ' ', length);
-    memcpy(tag, text, strlen(text) > length ? length : strlen(text));
-}
-
-static void
-press_save(GtkWidget * w, gpointer data)
-{
-    gtk_button_clicked(GTK_BUTTON(save));
-}
-#endif
-
-static gint
-genre_comp_func(gconstpointer a, gconstpointer b)
-{
-    return strcasecmp(a, b);
-}
-
-static gboolean
-fileinfo_keypress_cb(GtkWidget * widget,
-                     GdkEventKey * event,
-                     gpointer data)
-{
-    if (!event)
-        return FALSE;
-
-    switch (event->keyval) {
-    case GDK_Escape:
-        gtk_widget_destroy(window);
-        break;
-    default:
-        return FALSE;
-    }
-
-    return TRUE;
-}
-
-#if 0
-static void
-label_set_text(GtkWidget * label, gchar * str, ...)
-{
-    va_list args;
-    gchar tempstr[MAX_STR_LEN];
-
-    va_start(args, str);
-    g_vsnprintf(tempstr, MAX_STR_LEN, str, args);
-    va_end(args);
-
-    gtk_label_set_text(GTK_LABEL(label), tempstr);
-}
-#endif
-
-static void
-change_buttons(GtkObject * object)
-{
-    gtk_widget_set_sensitive(GTK_WIDGET(object), TRUE);
-}
-
-void
-audmp4_file_info_box(gchar * filename)
-{
-    gint i;
-    gchar *title, *filename_utf8;
-    VFSFile *mp4fh;
-    mp4ff_callback_t *mp4cb;
-    mp4ff_t *mp4file;
-
-    emphasis[0] = _("None");
-    emphasis[1] = _("50/15 ms");
-    emphasis[2] = "";
-    emphasis[3] = _("CCIT J.17");
-    bool_label[0] = _("No");
-    bool_label[1] = _("Yes");
-
-    if (!window) {
-        GtkWidget *pixmapwid;
-        GdkPixbuf *pixbuf;
-        PangoAttrList *attrs;
-        PangoAttribute *attr;
-
-        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-        gtk_window_set_type_hint(GTK_WINDOW(window),
-                                 GDK_WINDOW_TYPE_HINT_DIALOG);
-        gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
-        gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
-        g_signal_connect(G_OBJECT(window), "destroy",
-                         G_CALLBACK(gtk_widget_destroyed), &window);
-        gtk_container_set_border_width(GTK_CONTAINER(window), 10);
-
-        vbox = gtk_vbox_new(FALSE, 10);
-        gtk_container_add(GTK_CONTAINER(window), vbox);
-
-
-        filename_vbox = gtk_hbox_new(FALSE, 5);
-        gtk_box_pack_start(GTK_BOX(vbox), filename_vbox, FALSE, TRUE, 0);
-
-        pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **)
-                                              m4a_xpm);
-        pixmapwid = gtk_image_new_from_pixbuf(pixbuf);
-        g_object_unref(pixbuf);
-        gtk_misc_set_alignment(GTK_MISC(pixmapwid), 0, 0);
-        gtk_box_pack_start(GTK_BOX(filename_vbox), pixmapwid, FALSE, FALSE,
-                           0);
-
-        label = gtk_label_new(NULL);
-
-        attrs = pango_attr_list_new();
-
-        attr = pango_attr_weight_new(PANGO_WEIGHT_BOLD);
-        attr->start_index = 0;
-        attr->end_index = -1;
-        pango_attr_list_insert(attrs, attr);
-
-        gtk_label_set_attributes(GTK_LABEL(label), attrs);
-        gtk_label_set_text(GTK_LABEL(label), _("Name:"));
-        gtk_box_pack_start(GTK_BOX(filename_vbox), label, FALSE, FALSE, 0);
-
-        filename_entry = gtk_entry_new();
-        gtk_editable_set_editable(GTK_EDITABLE(filename_entry), FALSE);
-        gtk_box_pack_start(GTK_BOX(filename_vbox), filename_entry, TRUE,
-                           TRUE, 0);
-
-        hbox = gtk_hbox_new(FALSE, 0);
-        gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
-
-        /* tagging information */
-        id3_frame = gtk_frame_new(_("Song Metadata"));
-        gtk_box_pack_start(GTK_BOX(vbox), id3_frame, FALSE, TRUE, 0);
-
-        table = gtk_table_new(7, 5, FALSE);
-        gtk_container_set_border_width(GTK_CONTAINER(table), 5);
-        gtk_container_add(GTK_CONTAINER(id3_frame), table);
-
-        label = gtk_label_new(_("Title:"));
-        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-        gtk_label_set_attributes(GTK_LABEL(label), attrs);
-        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL,
-                         GTK_FILL, 5, 5);
-
-        title_entry = gtk_entry_new();
-        gtk_table_attach(GTK_TABLE(table), title_entry, 1, 6, 0, 1,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
-
-        label = gtk_label_new(_("Artist:"));
-        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-        gtk_label_set_attributes(GTK_LABEL(label), attrs);
-        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL,
-                         GTK_FILL, 5, 5);
-
-        artist_entry = gtk_entry_new();
-        gtk_table_attach(GTK_TABLE(table), artist_entry, 1, 6, 1, 2,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
-
-        label = gtk_label_new(_("Album:"));
-        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-        gtk_label_set_attributes(GTK_LABEL(label), attrs);
-        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL,
-                         GTK_FILL, 5, 5);
-
-        album_entry = gtk_entry_new();
-        gtk_table_attach(GTK_TABLE(table), album_entry, 1, 6, 2, 3,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
-
-        label = gtk_label_new(_("Comment:"));
-        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-        gtk_label_set_attributes(GTK_LABEL(label), attrs);
-        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4, GTK_FILL,
-                         GTK_FILL, 5, 5);
-
-        comment_entry = gtk_entry_new();
-        gtk_table_attach(GTK_TABLE(table), comment_entry, 1, 6, 3, 4,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
-
-        label = gtk_label_new(_("Year:"));
-        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-        gtk_label_set_attributes(GTK_LABEL(label), attrs);
-        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, GTK_FILL,
-                         GTK_FILL, 5, 5);
-
-        year_entry = gtk_entry_new();
-        gtk_entry_set_width_chars(GTK_ENTRY(year_entry),4);
-        gtk_table_attach(GTK_TABLE(table), year_entry, 1, 2, 4, 5,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
-
-        label = gtk_label_new(_("Track number:"));
-        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-        gtk_label_set_attributes(GTK_LABEL(label), attrs);
-        gtk_table_attach(GTK_TABLE(table), label, 2, 3, 4, 5, GTK_FILL,
-                         GTK_FILL, 5, 5);
-
-        tracknum_entry = gtk_entry_new();
-        gtk_widget_set_usize(tracknum_entry, 40, -1);
-        gtk_table_attach(GTK_TABLE(table), tracknum_entry, 3, 4, 4, 5,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
-
-        pango_attr_list_unref(attrs);
-
-        label = gtk_label_new(_("Genre:"));
-        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
-        gtk_label_set_attributes(GTK_LABEL(label), attrs);
-        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6, GTK_FILL,
-                         GTK_FILL, 5, 5);
-
-        genre_combo = gtk_combo_new();
-        gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(genre_combo)->entry),
-                               FALSE);
-        if (!genre_list) {
-            for (i = 0; i < GENRE_MAX; i++)
-                genre_list =
-                    g_list_prepend(genre_list,
-                                   (gchar *) audmp4_id3_genres[i]);
-            genre_list = g_list_prepend(genre_list, "");
-            genre_list = g_list_sort(genre_list, genre_comp_func);
-        }
-        gtk_combo_set_popdown_strings(GTK_COMBO(genre_combo), genre_list);
-
-        gtk_table_attach(GTK_TABLE(table), genre_combo, 1, 6, 5, 6,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK,
-                         GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);
-
-        boxx = gtk_hbutton_box_new();
-        gtk_hbutton_box_set_layout_default(GTK_BUTTONBOX_SPREAD);
-
-        bbox = gtk_hbutton_box_new();
-        gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END);
-        gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5);
-        gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
-
-        cancel = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
-        g_signal_connect_swapped(G_OBJECT(cancel), "clicked",
-                                 G_CALLBACK(gtk_widget_destroy),
-                                 G_OBJECT(window));
-        GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT);
-        gtk_box_pack_start(GTK_BOX(bbox), cancel, FALSE, FALSE, 0);
-        gtk_widget_grab_default(cancel);
-
-
-        gtk_table_set_col_spacing(GTK_TABLE(left_vbox), 1, 10);
-
-
-        g_signal_connect_swapped(G_OBJECT(title_entry), "changed",
-                                 G_CALLBACK(change_buttons), save);
-        g_signal_connect_swapped(G_OBJECT(artist_entry), "changed",
-                                 G_CALLBACK(change_buttons), save);
-        g_signal_connect_swapped(G_OBJECT(album_entry), "changed",
-                                 G_CALLBACK(change_buttons), save);
-        g_signal_connect_swapped(G_OBJECT(year_entry), "changed",
-                                 G_CALLBACK(change_buttons), save);
-        g_signal_connect_swapped(G_OBJECT(comment_entry), "changed",
-                                 G_CALLBACK(change_buttons), save);
-        g_signal_connect_swapped(G_OBJECT(tracknum_entry), "changed",
-                                 G_CALLBACK(change_buttons), save);
-        g_signal_connect_swapped(G_OBJECT(GTK_COMBO(genre_combo)->entry), "changed",
-                                 G_CALLBACK(change_buttons), save);
-        g_signal_connect(G_OBJECT(window), "key_press_event",
-                         G_CALLBACK(fileinfo_keypress_cb), NULL);
-    }
-
-    g_free(current_filename);
-    current_filename = g_strdup(filename);
-
-    filename_utf8 = filename_to_utf8(filename);
-
-    title = g_strdup_printf(_("%s - Audacious"), g_basename(filename_utf8));
-    gtk_window_set_title(GTK_WINDOW(window), title);
-    g_free(title);
-
-    gtk_entry_set_text(GTK_ENTRY(filename_entry), filename_utf8);
-    g_free(filename_utf8);
-
-    gtk_editable_set_position(GTK_EDITABLE(filename_entry), -1);
-
-    gtk_entry_set_text(GTK_ENTRY(artist_entry), "");
-    gtk_entry_set_text(GTK_ENTRY(album_entry), "");
-    gtk_entry_set_text(GTK_ENTRY(year_entry), "");
-    gtk_entry_set_text(GTK_ENTRY(tracknum_entry), "");
-    gtk_entry_set_text(GTK_ENTRY(comment_entry), "");
-
-    gtk_list_select_item(GTK_LIST(GTK_COMBO(genre_combo)->list),
-                         g_list_index(genre_list, ""));
-
-    gtk_widget_set_sensitive(id3_frame,
-                             vfs_is_writeable(filename));
-
-    gtk_widget_set_sensitive(GTK_WIDGET(save), FALSE);
-
-    /* Ok! Lets set the information now. */
-
-    if ((mp4fh = vfs_fopen(filename, "rb")) != NULL)
-    {
-	mp4cb = g_malloc0(sizeof(mp4ff_callback_t));
-	mp4cb->read = mp4_read_callback;
-	mp4cb->seek = mp4_seek_callback;
-	mp4cb->user_data = mp4fh;
-
-	if ((mp4file = mp4ff_open_read(mp4cb)) != NULL)
-	{
-	    gtk_entry_set_text(GTK_ENTRY(artist_entry), audmp4_get_artist(mp4file));
- 	    gtk_entry_set_text(GTK_ENTRY(title_entry), audmp4_get_title(mp4file));
-	    gtk_entry_set_text(GTK_ENTRY(year_entry), g_strdup_printf("%d", audmp4_get_year(mp4file)));
-	    gtk_entry_set_text(GTK_ENTRY(album_entry), audmp4_get_album(mp4file));
-	    mp4ff_close(mp4file);
-	}
-
-	g_free(mp4cb);
-	vfs_fclose(mp4fh);
-    }
-
-    gtk_widget_show_all(window);
-}
--- a/Plugins/Input/aac/src/libmp4.c	Fri Jun 16 06:13:21 2006 -0700
+++ b/Plugins/Input/aac/src/libmp4.c	Fri Jun 16 20:55:52 2006 -0700
@@ -104,7 +104,7 @@
     0,	// set player window info
     0,	// set song title text
     mp4_getSongTitle,	// get song title text
-    audmp4_file_info_box, // info box
+    0,  // info box
     0,	// to output plugin
     mp4_get_song_tuple,
   };