Update of /cvsroot/gtkpod/gtkpod/src
In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv24439/src
Modified Files:
display_coverart.c fetchcover.c display_coverart.h
display_playlists.c context_menus.c
Log Message:
2007-05-13 P.G. Richardson <phantom_sf at users.sourceforge.net>
* context_menus.c
Fixed segfault in cad_context_menu_init() to avoid freeing
tracks unnecessarily.
* display_playlist.c
Coverart display will only be updated with a track change,
addition or deletion if it is visible and not minimized.
* display_coverart.h
display_coverart.c
New Album_Item structure introduced for storage of tracks in
coverart display. Replacement of displaytracks GList with a
key list related to an Album_Item hashmap. Track_changed
function changed to speed up changed, removal and addition
operations. Other functions updated to reflect introduction of
Album_Item and hashmap.
Index: display_coverart.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/display_coverart.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- display_coverart.c 6 May 2007 14:16:15 -0000 1.16
+++ display_coverart.c 13 May 2007 17:08:21 -0000 1.17
@@ -41,12 +41,15 @@
#include "fetchcover.h"
/* Declarations */
-static gint sort_tracks (Track *a, Track *b);
+static void free_album (Album_Item *album);
+ static void free_CDWidget ();
+static gint compare_album_keys (gchar *a, gchar *b);
static void set_display_dimensions ();
static GdkPixbuf *draw_blank_cdimage ();
static void set_highlight (Cover_Item *cover, gboolean ismain);
static void raise_cdimages (GPtrArray *cdcovers);
[...1494 lines suppressed...]
+ int i;
+ for (i = 0; i < g_list_length (tracks); ++i)
+ {
+ Track *trk = g_list_nth_data(tracks, i);
+ printf ("Track: %s-%s\n", trk->artist, trk->album);
+ }
+ */
+
+ /* Nullify and free the album art pixbuf so that it will pick it up
+ * from the art assigned to the tracks
+ */
+ if (cover->album->albumart)
+ {
+ gdk_pixbuf_unref (cover->album->albumart);
+ cover->album->albumart = NULL;
+ }
+
on_coverart_context_menu_click (tracks);
set_covers ();
Index: fetchcover.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/fetchcover.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- fetchcover.c 27 Apr 2007 15:50:44 -0000 1.6
+++ fetchcover.c 13 May 2007 17:08:21 -0000 1.7
@@ -655,7 +655,6 @@
imgbuf = gdk_pixbuf_new_from_file(etd->thumb_path_locale,
&error);
if (error != NULL)
{
- printf("Error occurred loading the image file - \nCode:
%d\nMessage: %s\n", error->code, error->message);
/* Artwork failed to load from file so try loading
default */
imgbuf = coverart_get_track_thumb (track, device);
g_error_free (error);
@@ -814,22 +813,27 @@
*/
void on_coverart_context_menu_click (GList *tracks)
{
- Track *track;
- gint result;
-
- track = tracks->data;
+ Track *track;
+ gint result;
- GtkDialog *dialog = fetchcover_display_dialog (track, track->itdb->device);
- g_return_if_fail (dialog);
+ track = tracks->data;
+ if (track == NULL)
+ {
+ g_fprintf (stderr, "Track was null so fetchcover dialog was not
displayed.\nLenght of glist was %d\n", g_list_length (tracks));
+ return;
+ }
+
+ GtkDialog *dialog = fetchcover_display_dialog (track, track->itdb->device);
+ g_return_if_fail (dialog);
- result = gtk_dialog_run (GTK_DIALOG (dialog));
+ result = gtk_dialog_run (GTK_DIALOG (dialog));
- #ifdef HAVE_CURL
- gchar *filename = NULL;
+ #ifdef HAVE_CURL
+ gchar *filename = NULL;
- switch (result)
- {
- case GTK_RESPONSE_ACCEPT:
+ switch (result)
+ {
+ case GTK_RESPONSE_ACCEPT:
filename = fetchcover_save ();
if (filename)
{
Index: display_coverart.h
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/display_coverart.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- display_coverart.h 22 Apr 2007 18:06:16 -0000 1.7
+++ display_coverart.h 13 May 2007 17:08:21 -0000 1.8
@@ -15,7 +15,14 @@
#define COVERART_CHANGE_SIGNAL 3
typedef struct {
- Itdb_Track *track;
+ GList *tracks;
+ gchar *albumname;
+ gchar *artist;
+ GdkPixbuf *albumart;
+} Album_Item;
+
+typedef struct {
+ Album_Item *album;
gdouble img_x;
gdouble img_y;
gdouble img_width;
@@ -37,12 +44,10 @@
GtkHScale *cdslider;
GtkButton *rightbutton;
GPtrArray *cdcovers;
- GList *displaytracks;
gint first_imgindex;
gboolean block_display_change;
} CD_Widget;
-
extern const gchar *DISPLAY_COVER_SHOW;
void coverart_display_big_artwork ();
Index: display_playlists.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/display_playlists.c,v
retrieving revision 1.104
retrieving revision 1.105
diff -u -d -r1.104 -r1.105
--- display_playlists.c 5 May 2007 17:07:43 -0000 1.104
+++ display_playlists.c 13 May 2007 17:08:21 -0000 1.105
@@ -1106,7 +1106,10 @@
if ((playlist == current_playlist) ||
itdb_playlist_is_mpl (current_playlist))
{
- coverart_track_changed (track, COVERART_REMOVE_SIGNAL);
+ if (prefs_get_int (KEY_DISPLAY_COVERART))
+ {
+ coverart_track_changed (track, COVERART_REMOVE_SIGNAL);
+ }
st_remove_track (track, 0);
}
}
@@ -1123,7 +1126,10 @@
st_add_track (track, TRUE, display, 0); /* Add to first sort tab */
/* As with add_track above, only add to the playlist if it is the
current one */
- coverart_track_changed (track, COVERART_CREATE_SIGNAL);
+ if (prefs_get_int (KEY_DISPLAY_COVERART))
+ {
+ coverart_track_changed (track, COVERART_CREATE_SIGNAL);
+ }
}
}
@@ -1153,11 +1159,13 @@
void pm_track_changed (Track *track)
{
if (!current_playlist) return;
+
+ if (prefs_get_int (KEY_DISPLAY_COVERART))
+ coverart_track_changed (track, COVERART_CHANGE_SIGNAL);
+
/* Check if track is member of current playlist */
if (g_list_find (current_playlist->members, track))
st_track_changed (track, FALSE, 0);
-
- coverart_track_changed (track, COVERART_CHANGE_SIGNAL);
}
/* Add playlist to the playlist model */
Index: context_menus.c
===================================================================
RCS file: /cvsroot/gtkpod/gtkpod/src/context_menus.c,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -d -r1.70 -r1.71
--- context_menus.c 21 Apr 2007 03:28:23 -0000 1.70
+++ context_menus.c 13 May 2007 17:08:22 -0000 1.71
@@ -1103,6 +1103,7 @@
create_context_menu (CM_TM);
}
}
+
/**
* cad_context_menu_init - initialize the right click menu for coverart
display
*/
@@ -1113,16 +1114,23 @@
selected_entry = NULL;
selected_playlist = NULL;
+ selected_tracks = NULL;
active_itdb = gp_get_selected_itdb ();
entry_inst = -1;
- if (selected_tracks) g_list_free (selected_tracks);
- selected_tracks = coverart_get_displayed_tracks();
-
- if(selected_tracks)
+ if (selected_tracks) g_list_free (selected_tracks);
+ selected_tracks = g_list_copy (coverart_get_displayed_tracks());
+ /*
+ int i;
+ for (i = 0; i < g_list_length(selected_tracks); ++i)
{
- create_context_menu (CM_CAD);
+ Track *track;
+ track = g_list_nth_data (selected_tracks, i);
+ printf ("context_menu_init - Artist:%s Album:%s Title:%s\n",
track->artist, track->album, track->title);
}
+ */
+ if(selected_tracks)
+ create_context_menu (CM_CAD);
}
/**
* pm_context_menu_init - initialize the right click menu for playlists
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2