# HG changeset patch # User Cristi Magherusan # Date 1186666122 -10800 # Node ID d1b43bf0e67def4bc8993a227c8fe17109995a50 # Parent 7ac9c5c6b44e1c215838942e5136304a6c8b0e4a# Parent a97fb19a0148144741a4f337f8194ae4e5913084 merge diff -r 7ac9c5c6b44e -r d1b43bf0e67d .hgtags --- a/.hgtags Wed Aug 08 22:04:41 2007 +0300 +++ b/.hgtags Thu Aug 09 16:28:42 2007 +0300 @@ -1,2 +1,3 @@ 55a4a6da92a5e5bc68e352e47e0c9259818a1f92 audacious-1.4.0-dr1 40b4b64dfb42c81a6677532097c41037026b0b86 audacious-1.4.0-DR1 +91a5f34b07803a8bae1e162446e40c08ddf33273 audacious-1.4.0-dr2 diff -r 7ac9c5c6b44e -r d1b43bf0e67d src/audacious/Makefile --- a/src/audacious/Makefile Wed Aug 08 22:04:41 2007 +0300 +++ b/src/audacious/Makefile Thu Aug 09 16:28:42 2007 +0300 @@ -53,6 +53,7 @@ plugin.h \ strings.h \ titlestring.h \ + tuple.h \ ui_fileinfopopup.h \ ui_lastfm.h\ ui_preferences.h \ @@ -97,6 +98,8 @@ signals.c \ strings.c \ titlestring.c \ + tuple.c \ + tuple_formatter.c \ skin.c \ ui_about.c \ ui_albumart.c \ @@ -145,7 +148,7 @@ CFLAGS += -I../libaudclient DBUS_BINDINGS = dbus-server-bindings.h dbus-client-bindings.h OBJECTIVE_LIBS_NOINST += $(DBUS_BINDINGS) -LIBDEP += ../libaudclient/libaudclient.so +LIBDEP += ../libaudclient/libaudclient$(SHARED_SUFFIX) LDADD += -L../libaudclient -laudclient endif diff -r 7ac9c5c6b44e -r d1b43bf0e67d src/audacious/dbus-service.h --- a/src/audacious/dbus-service.h Wed Aug 08 22:04:41 2007 +0300 +++ b/src/audacious/dbus-service.h Thu Aug 09 16:28:42 2007 +0300 @@ -28,6 +28,7 @@ typedef struct { GObject parent; + DBusGProxy *proxy; } RemoteObject, MprisRoot, MprisPlayer, MprisTrackList; typedef struct { @@ -50,10 +51,13 @@ gboolean mpris_player_pause(MprisPlayer *obj, GError **error); gboolean mpris_player_stop(MprisPlayer *obj, GError **error); gboolean mpris_player_play(MprisPlayer *obj, GError **error); +gboolean mpris_player_repeat(MprisPlayer *obj, gboolean rpt, GError **error); gboolean mpris_player_quit(MprisPlayer *obj, GError **error); -gboolean mpris_player_repeat(MprisPlayer *obj, gboolean rpt, GError **error); +gboolean mpris_player_disconnect(MprisPlayer *obj, GError **error); gboolean mpris_player_get_status(MprisPlayer *obj, gint *status, GError **error); +gboolean mpris_player_get_metadata(MprisTrackList *obj, gint pos, + GHashTable *metadata, GError **error); gboolean mpris_player_get_caps(MprisPlayer *obj, gint *capabilities, GError **error); gboolean mpris_player_volume_set(MprisPlayer *obj, gint vol, GError **error); @@ -63,21 +67,23 @@ gboolean mpris_player_position_get(MprisPlayer *obj, gint *pos, GError **error); enum { - CAPS_CHANGE_SIG, TRACK_CHANGE_SIG, STATUS_CHANGE_SIG, + CAPS_CHANGE_SIG, + DISCONNECTED, LAST_SIG }; -gboolean mpris_player_emit_caps_change(MprisPlayer *obj, GError **error); gboolean mpris_player_emit_track_change(MprisPlayer *obj, GError **error); gboolean mpris_player_emit_status_change(MprisPlayer *obj, GError **error); +gboolean mpris_player_emit_caps_change(MprisPlayer *obj, GError **error); +gboolean mpris_player_emit_disconnected(MprisPlayer *obj, GError **error); // MPRIS /TrackList gboolean mpris_tracklist_get_metadata(MprisTrackList *obj, gint pos, GHashTable *metadata, GError **error); gboolean mpris_tracklist_get_current_track(MprisTrackList *obj, gint *pos, GError **error); -gboolean mpris_tracklist_get_length(MprisTrackList *obj, gint *pos, +gboolean mpris_tracklist_get_length(MprisTrackList *obj, gint *length, GError **error); gboolean mpris_tracklist_add_track(MprisTrackList *obj, gchar *uri, gboolean play, GError **error); diff -r 7ac9c5c6b44e -r d1b43bf0e67d src/audacious/dbus.c --- a/src/audacious/dbus.c Wed Aug 08 22:04:41 2007 +0300 +++ b/src/audacious/dbus.c Thu Aug 09 16:28:42 2007 +0300 @@ -175,32 +175,54 @@ // MPRIS /Player gboolean mpris_player_next(MprisPlayer *obj, GError **error) { - return audacious_rc_advance(obj, error); + playlist_next(playlist_get_active()); + return TRUE; } gboolean mpris_player_prev(MprisPlayer *obj, GError **error) { - return audacious_rc_reverse(obj, error); + playlist_prev(playlist_get_active()); + return TRUE; } gboolean mpris_player_pause(MprisPlayer *obj, GError **error) { - return audacious_rc_pause(obj, error); + playback_pause(); + return TRUE; } gboolean mpris_player_stop(MprisPlayer *obj, GError **error) { - return audacious_rc_stop(obj, error); + ip_data.stop = TRUE; + playback_stop(); + ip_data.stop = FALSE; + mainwin_clear_song_info(); + return TRUE; } gboolean mpris_player_play(MprisPlayer *obj, GError **error) { - return audacious_rc_play(obj, error); -} -gboolean mpris_player_quit(MprisPlayer *obj, GError **error) { - return audacious_rc_quit(obj, error); + if (playback_get_paused()) + playback_pause(); + else if (playlist_get_length(playlist_get_active())) + playback_initiate(); + else + mainwin_eject_pushed(); + return TRUE; } gboolean mpris_player_repeat(MprisPlayer *obj, gboolean rpt, GError **error) { mainwin_repeat_pushed(rpt); mainwin_set_noplaylistadvance(rpt); return TRUE; } +gboolean mpris_player_quit(MprisPlayer *obj, GError **error) { + // TODO: emit disconnected signal + mainwin_quit_cb(); + return TRUE; +} +gboolean mpris_player_disconnect(MprisPlayer *obj, GError **error) { + return FALSE; +} gboolean mpris_player_get_status(MprisPlayer *obj, gint *status, GError **error) { return FALSE; } +gboolean mpris_player_get_metadata(MprisTrackList *obj, gint pos, + GHashTable *metadata, GError **error) { + return FALSE; +} gboolean mpris_player_get_caps(MprisPlayer *obj, gint *capabilities, GError **error) { return FALSE; @@ -236,6 +258,11 @@ return TRUE; } +gboolean mpris_player_emit_disconnected(MprisPlayer *obj, GError **error) { + g_signal_emit(obj, signals[DISCONNECTED], 0, NULL); + return TRUE; +} + // MPRIS /TrackList gboolean mpris_tracklist_get_metadata(MprisTrackList *obj, gint pos, GHashTable *metadata, GError **error) { @@ -243,11 +270,13 @@ } gboolean mpris_tracklist_get_current_track(MprisTrackList *obj, gint *pos, GError **error) { - return audacious_rc_position(obj, pos, error); + *pos = playlist_get_position(playlist_get_active()); + return TRUE; } -gboolean mpris_tracklist_get_length(MprisTrackList *obj, gint *pos, +gboolean mpris_tracklist_get_length(MprisTrackList *obj, gint *length, GError **error) { - return FALSE; + *length = playlist_get_length(playlist_get_active()); + return TRUE; } gboolean mpris_tracklist_add_track(MprisTrackList *obj, gchar *uri, gboolean play, GError **error) { @@ -261,7 +290,8 @@ } gboolean mpris_tracklist_del_track(MprisTrackList *obj, gint pos, GError **error) { - return FALSE; + playlist_delete_index(playlist_get_active(), pos); + return TRUE; } gboolean mpris_tracklist_loop(MprisTrackList *obj, gboolean loop, GError **error) { @@ -269,7 +299,8 @@ } gboolean mpris_tracklist_random(MprisTrackList *obj, gboolean random, GError **error) { - return FALSE; + mainwin_shuffle_pushed(!cfg.shuffle); + return TRUE; } // Audacious General Information diff -r 7ac9c5c6b44e -r d1b43bf0e67d src/audacious/dbus.h --- a/src/audacious/dbus.h Wed Aug 08 22:04:41 2007 +0300 +++ b/src/audacious/dbus.h Thu Aug 09 16:28:42 2007 +0300 @@ -25,8 +25,20 @@ #define AUDACIOUS_DBUS_PATH "/org/atheme/audacious" #define AUDACIOUS_DBUS_INTERFACE "org.atheme.audacious" #define AUDACIOUS_DBUS_SERVICE_MPRIS "org.mpris.audacious" +#define AUDACIOUS_DBUS_INTERFACE_MPRIS "org.freedesktop.MediaPlayer" #define AUDACIOUS_DBUS_PATH_MPRIS_ROOT "/" #define AUDACIOUS_DBUS_PATH_MPRIS_PLAYER "/Player" #define AUDACIOUS_DBUS_PATH_MPRIS_TRACKLIST "/TrackList" +#define NONE = 0 +#define CAN_GO_NEXT = 1 << 0 +#define CAN_GO_PREV = 1 << 1 +#define CAN_PAUSE = 1 << 2 +#define CAN_PLAY = 1 << 3 +#define CAN_SEEK = 1 << 4 +#define CAN_RESTORE_CONTEXT = 1 << 5 +#define CAN_PROVIDE_METADATA = 1 << 6 +#define PROVIDES_TIMING = 1 << 7 + + #endif // !_AUDDBUS_H diff -r 7ac9c5c6b44e -r d1b43bf0e67d src/audacious/mpris_player.xml --- a/src/audacious/mpris_player.xml Wed Aug 08 22:04:41 2007 +0300 +++ b/src/audacious/mpris_player.xml Thu Aug 09 16:28:42 2007 +0300 @@ -3,6 +3,7 @@