# HG changeset patch # User nhjm449 # Date 1150449453 25200 # Node ID 3b990c26fc46fad62811dd2569f840bed3942e88 # Parent 11785f0bf9677d8e334ba7ce2471d634bb77fb94 [svn] - Support for the buffer indicator in playpaus.png that was apparently ignored by XMMS devs. Supports mp3 streams only, at the moment. diff -r 11785f0bf967 -r 3b990c26fc46 ChangeLog --- a/ChangeLog Fri Jun 16 01:45:08 2006 -0700 +++ b/ChangeLog Fri Jun 16 02:17:33 2006 -0700 @@ -1,3 +1,12 @@ +2006-06-16 08:45:08 +0000 William Pitcock + revision [1458] + - fix ui_fileinfo problem + + + Changes: Modified: + +2 -2 trunk/audacious/glade/fileinfo.glade + + 2006-06-16 06:02:11 +0000 William Pitcock revision [1456] - remove file_info_box code, it sucked. diff -r 11785f0bf967 -r 3b990c26fc46 Plugins/Input/mpg123/http.c --- a/Plugins/Input/mpg123/http.c Fri Jun 16 01:45:08 2006 -0700 +++ b/Plugins/Input/mpg123/http.c Fri Jun 16 02:17:33 2006 -0700 @@ -655,8 +655,10 @@ while (going) { - if (!http_used() && !mpgdec_ip.output->buffer_playing()) + if (!http_used() && !mpgdec_ip.output->buffer_playing()) { prebuffering = TRUE; + mpgdec_ip.set_status_buffering(TRUE); + } if (http_free() > 0 && !eof) { if (http_check_for_data()) { cnt = min(http_free(), buffer_length - wr_index); @@ -667,6 +669,7 @@ eof = TRUE; if (prebuffering) { prebuffering = FALSE; + mpgdec_ip.set_status_buffering(FALSE); mpgdec_ip.set_info_text(NULL); } @@ -679,6 +682,7 @@ if (prebuffering) { if (http_used() > prebuffer_length) { prebuffering = FALSE; + mpgdec_ip.set_status_buffering(FALSE); mpgdec_ip.set_info_text(NULL); } else { @@ -733,6 +737,7 @@ buffer_read = 0; icy_metaint = 0; prebuffering = TRUE; + mpgdec_ip.set_status_buffering(TRUE); going = TRUE; eof = FALSE; buffer = g_malloc(buffer_length); diff -r 11785f0bf967 -r 3b990c26fc46 audacious/input.c --- a/audacious/input.c Fri Jun 16 01:45:08 2006 -0700 +++ b/audacious/input.c Fri Jun 16 02:17:33 2006 -0700 @@ -61,6 +61,7 @@ FALSE, FALSE, FALSE, + FALSE, NULL }; @@ -747,6 +748,22 @@ } void +input_set_status_buffering(gboolean status) +{ + if (!bmp_playback_get_playing()) + return; + + if (!get_current_input_plugin()) + return; + + ip_data.buffering = status; + + if (ip_data.buffering == TRUE && mainwin_playstatus->ps_status == STATUS_STOP) + mainwin_playstatus->ps_status = STATUS_PLAY; + playstatus_set_status_buffering(mainwin_playstatus, ip_data.buffering); +} + +void input_about(gint index) { InputPlugin *ip; diff -r 11785f0bf967 -r 3b990c26fc46 audacious/input.h --- a/audacious/input.h Fri Jun 16 01:45:08 2006 -0700 +++ b/audacious/input.h Fri Jun 16 02:17:33 2006 -0700 @@ -32,6 +32,7 @@ gboolean playing; gboolean paused; gboolean stop; + gboolean buffering; GMutex *playback_mutex; }; @@ -62,6 +63,7 @@ void input_update_vis(gint time); void input_set_info_text(const gchar * text); +void input_set_status_buffering(gboolean status); GList *input_scan_dir(const gchar * dir); void input_get_volume(gint * l, gint * r); diff -r 11785f0bf967 -r 3b990c26fc46 audacious/playback.c --- a/audacious/playback.c Fri Jun 16 01:45:08 2006 -0700 +++ b/audacious/playback.c Fri Jun 16 02:17:33 2006 -0700 @@ -157,6 +157,8 @@ } } + ip_data.buffering = FALSE; + playstatus_set_status_buffering(mainwin_playstatus, FALSE); ip_data.playing = FALSE; } @@ -179,6 +181,7 @@ } } + ip_data.buffering = FALSE; ip_data.playing = FALSE; } diff -r 11785f0bf967 -r 3b990c26fc46 audacious/playstatus.c --- a/audacious/playstatus.c Fri Jun 16 01:45:08 2006 -0700 +++ b/audacious/playstatus.c Fri Jun 16 02:17:33 2006 -0700 @@ -34,8 +34,13 @@ return; obj = ps->ps_widget.parent; - - if (ps->ps_status == STATUS_PLAY) + if (ps->ps_status == STATUS_STOP && ps->ps_status_buffering == TRUE) + ps->ps_status_buffering = FALSE; + if (ps->ps_status == STATUS_PLAY && ps->ps_status_buffering == TRUE) + skin_draw_pixmap(bmp_active_skin, obj, ps->ps_widget.gc, + SKIN_PLAYPAUSE, 39, 0, ps->ps_widget.x, + ps->ps_widget.y, 3, 9); + else if (ps->ps_status == STATUS_PLAY) skin_draw_pixmap(bmp_active_skin, obj, ps->ps_widget.gc, SKIN_PLAYPAUSE, 36, 0, ps->ps_widget.x, ps->ps_widget.y, 3, 9); @@ -72,6 +77,16 @@ widget_draw(WIDGET(ps)); } +void +playstatus_set_status_buffering(PlayStatus * ps, gboolean status) +{ + if (!ps) + return; + + ps->ps_status_buffering = status; + widget_draw(WIDGET(ps)); +} + PlayStatus * create_playstatus(GList ** wlist, GdkPixmap * parent, GdkGC * gc, gint x, gint y) diff -r 11785f0bf967 -r 3b990c26fc46 audacious/playstatus.h --- a/audacious/playstatus.h Fri Jun 16 01:45:08 2006 -0700 +++ b/audacious/playstatus.h Fri Jun 16 02:17:33 2006 -0700 @@ -28,11 +28,13 @@ struct _PlayStatus { Widget ps_widget; PStatus ps_status; + gboolean ps_status_buffering; }; typedef struct _PlayStatus PlayStatus; void playstatus_set_status(PlayStatus * ps, PStatus status); +void playstatus_set_status_buffering(PlayStatus * ps, gboolean status); PlayStatus *create_playstatus(GList ** wlist, GdkPixmap * parent, GdkGC * gc, gint x, gint y); diff -r 11785f0bf967 -r 3b990c26fc46 audacious/plugin.h --- a/audacious/plugin.h Fri Jun 16 01:45:08 2006 -0700 +++ b/audacious/plugin.h Fri Jun 16 02:17:33 2006 -0700 @@ -155,6 +155,7 @@ TitleInput *(*get_song_tuple) (gchar * filename); void (*set_song_tuple) (TitleInput * tuple); + void (*set_status_buffering) (gboolean status); }; struct _GeneralPlugin { diff -r 11785f0bf967 -r 3b990c26fc46 audacious/pluginenum.c --- a/audacious/pluginenum.c Fri Jun 16 01:45:08 2006 -0700 +++ b/audacious/pluginenum.c Fri Jun 16 02:17:33 2006 -0700 @@ -133,7 +133,8 @@ - descender */ p->set_info = (void (*)(gchar *, gint, gint, gint, gint)) playlist_set_info; p->set_info_text = (void (*)(gchar *)) input_set_info_text; - + p->set_status_buffering = (void (*)(gboolean)) input_set_status_buffering; + ip_data.input_list = g_list_append(ip_data.input_list, p); g_hash_table_replace(plugin_matrix, g_path_get_basename(p->filename), diff -r 11785f0bf967 -r 3b990c26fc46 skin/playpaus.png Binary file skin/playpaus.png has changed