Re: [Rhythmbox-devel] Play queue patch #0

I got the following error when I applied the patch to a fresh checkout 11/8/05

 gcc -DHAVE_CONFIG_H -I. -I. -I.. -DGNOMELOCALEDIR=\"/usr/share/locale\" -DG_LOG_DOMAIN=\"Rhythmbox\" -I.. -I../lib -I../lib -I../corba -I../corba -I../rhythmdb -I../metadata -I../widgets -I../library -I../player -I../iradio -I../podcast -I../shell -I../daapsharing -I../metadata -DPIXMAP_DIR=\"/usr/share/pixmaps\" -DSHARE_DIR=\"/usr/share/rhythmbox\" -DDATADIR=\"/usr/share\" -pthread -DORBIT2=1 -I/usr/include/totem/1/plparser -I/usr/include/gtk-2.0 -I/usr/include/libxml2 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/gnome-vfs-module-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/bonobo-activation-2.0 -I/usr/include/libbonobo-2.0 -I/usr/include/gconf/2 -I/usr/include/orbit-2.0 -DDBUS_API_SUBJECT_TO_CHANGE -I/usr/include/hal -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/libnautilus-burn -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -DORBIT2=1 -pthread -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libgnomeui-2.0 -I/usr/include/libgnome-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/libart-2.0 -I/usr/include/gconf/2 -I/usr/include/libbonoboui-2.0 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/gnome-vfs-2.0/include -I/usr/include/gnome-keyring-1 -I/usr/include/orbit-2.0 -I/usr/include/libbonobo-2.0 -I/usr/include/bonobo-activation-2.0 -I/usr/include/freetype2 -I/usr/include/libxml2 -I/usr/include/libglade-2.0 -I/usr/include/gnome-vfs-module-2.0 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -pthread -DORBIT2=1 -I/usr/include/gstreamer-0.8 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 -I/usr/include/gconf/2 -I/usr/include/orbit-2.0 -I../sources/ipod -I/usr/include/gpod-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -g -O2 -Wcomment -Wformat -Wnonnull -Wimplicit-int -Wimplicit -Wmain -Wmissing-braces -Wparentheses -Wsequence-point -Wreturn-type -Wswitch -Wtrigraphs -Wunused-function -Wunused-label -Wunused-value -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align -Wall -Werror -std=gnu89 -MT rb-ipod-source.lo -MD -MP -MF .deps/rb-ipod-source.Tpo -c rb-ipod-source.c  -fPIC -DPIC -o .libs/rb-ipod-source.o
cc1: warnings being treated as errors
rb-ipod-source.c: In function 'add_rb_playlist':
rb-ipod-source.c:194: warning: implicit declaration of function 'rb_static_playlist_source_new'
rb-ipod-source.c:194: warning: nested extern declaration of 'rb_static_playlist_source_new'
rb-ipod-source.c:194: warning: assignment makes pointer from integer without a cast
rb-ipod-source.c:203: warning: implicit declaration of function 'rb_playlist_source_add_location'
rb-ipod-source.c:203: warning: nested extern declaration of 'rb_playlist_source_add_location'
make[2]: *** [rb-ipod-source.lo] Error 1
make[2]: Leaving directory `/home/jcotton/source/rhythmbox/sources'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/jcotton/source/rhythmbox'
make: *** [all] Error 2

running --without-ipod seems to fix the problem.  I tested it and managed to use the queue.  I'm not sure if I reproduced the other bug Viktor said though.  When I add something to the queue and start clicking next first it jumps to the queue, then jumps back to the main list, and then does play the next song w/o crashing.

It might be nice to have a different icon for the queue list when not in the sidebar (although I prefer the docked view) and maybe not be at the top of the list.  However, the (# left) is a really nice touch.

Anyway, thank you so much for porting this to CVS HEAD.  I've been waiting to update my HTPC rhythmbox :).


On 11/8/05, Viktor Kojouharov <vkojouharov gmail com > wrote:
A few bugs I noticed.

After finishing the last song from the queue, the focus does not return to the previous source (the library, for instance). It starts playing a song, from the source, but the interface reports as if nothing is played. After that song ends, rhythmbox crashes.

On 11/8/05, Jonathan Matthew < jonathan kaolin hn org> wrote:

So, at long last, here's a giant evil patch:

This is against current CVS and will probably break in some way with
each and every commit.  I imagine I'll be updating it frequently.
You don't need to specify any configure script options to enable it,
it's always compiled in.

This implements the queue as both a source and a sidebar, and allows you
to switch between them using a menu item (or Ctrl-K (shortcut picked at
random)).  While this adds what amounts to another preference, I don't
think there's much of an alternative in this case.

At the moment you can only add songs to the queue from library- and
playlist-based sources, which excludes iradio and podcasts.  I intend to
allow already-downloaded podcasts, but not radio streams in the next
iteration of this patch.  I don't think queueing radio streams makes any

There are still a few weird crashes in there (if you double-click a song
in the queue, for instance) but it should basically work.

According to the current Rhythmbox release theory, this won't be
committed to CVS until after 0.9.2 is released.  Until then, please test
it and tell me what I've broken and what could work better.  If anyone
wants to review the code, that'd be really helpful too.  I should be
able to break it down into three or four distinct more manageable
patches if needed.

In case anyone's wondering why it's so invasive:

- I split the playlist source into a base class and three subclasses
  (static playlists, smart playlists, and the play queue).  Having
  'if (objecttype == X) { stuff } else { otherstuff }' code in
  something that's already part of a class hierarchy is crazy.

- I removed a lot of stuff from RBEntryView to turn it into (mostly)
  just a widget.  Previously it was being used to iterate the query
  model and other such nonsense.  rb_entry_view_get_random_entry?

- I rewrote the play orders to work off the query model rather than the
  entry view.  Now the play order holds the knowledge of the current
  playing entry rather than the entry view.  This also simplifies some
  logic in RBShellPlayer.

- Same thing for the song info window.

- oh and I also added the actual play queue stuff.


rhythmbox-devel mailing list
rhythmbox-devel gnome org

rhythmbox-devel mailing list
rhythmbox-devel gnome org

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]