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

Reply via email to