diff -r -u osdsh-0.7.0/src/osdsh/clockdisplay.c osdsh-0.7.0.patch/src/osdsh/clockdisplay.c --- osdsh-0.7.0/src/osdsh/clockdisplay.c 2003-03-24 01:45:52.000000000 +0100 +++ osdsh-0.7.0.patch/src/osdsh/clockdisplay.c 2004-07-21 19:59:44.000000000 +0200 @@ -81,20 +81,25 @@ void *osdsh_clock(void *arg) { - time_t currenttime; - char timestring[255]; + time_t currenttime, oldtime; + char timestring[255]; - clocksetts.myosd = xosd_create(1); - initialize_osd(&clocksetts); - clocksetts.displaying = 1; - - while (clocksetts.displaying) { - currenttime = time(0); - - strftime(timestring, 255, clockformat, localtime(¤ttime)); - - xosd_display(clocksetts.myosd, 0, XOSD_string, timestring); - } - xosd_destroy(clocksetts.myosd); - pthread_exit(0); + clocksetts.myosd = xosd_create(1); + initialize_osd(&clocksetts); + clocksetts.displaying = 1; + + while (clocksetts.displaying) { + currenttime = time(0); + + if (currenttime != oldtime) { + strftime(timestring, 255, clockformat, localtime(¤ttime)); + xosd_display(clocksetts.myosd, 0, XOSD_string, timestring); + } + + usleep(40000); + oldtime = currenttime; + } + xosd_destroy(clocksetts.myosd); + pthread_exit(0); } + diff -r -u osdsh-0.7.0/src/osdsh/mixerwatch.c osdsh-0.7.0.patch/src/osdsh/mixerwatch.c --- osdsh-0.7.0/src/osdsh/mixerwatch.c 2003-03-24 17:12:39.000000000 +0100 +++ osdsh-0.7.0.patch/src/osdsh/mixerwatch.c 2004-07-21 20:40:42.000000000 +0200 @@ -94,7 +94,9 @@ /* ============================ display_channel () ========================= */ void display_channel(int channel) { + static int is_mute = 0; char channel_name[BUFSIZ]; + if (!channel) sprintf(channel_name, "Master Volume"); else @@ -106,12 +108,16 @@ } /*if muted, we say it!!*/ if (!(vol[0] & 0xff || (vol[0] >> 8) & 0xff)) { - xosd_display(mixerset.myosd, mixerset.position, XOSD_bottom, "Muted"); - xosd_display(mixerset.myosd, !mixerset.position, XOSD_bottom, ""); + if (!is_mute || vol[channel] != old_vol[channel]) { + xosd_display(mixerset.myosd, mixerset.position, XOSD_bottom, "Muted"); + xosd_display(mixerset.myosd, !mixerset.position, XOSD_bottom, ""); + is_mute = 1; + } } /* not muted, so lets check if the vol changed, if so, display them, if not, just ignore it*/ else if (vol[channel] != old_vol[channel]) { + is_mute = 0; xosd_display(mixerset.myosd, 0, XOSD_string, channel_name); xosd_display(mixerset.myosd, 1, XOSD_percentage, (((vol[channel]>>8)&0xff)+vol[channel]&0xff)/2);