Index: esound/esd.c
===================================================================
RCS file: /export/cvs/gnome-2.0/esound/esd.c,v
retrieving revision 1.66
diff -p -u -5 -r1.66 esd.c
--- esound/esd.c	2002/08/21 19:54:50	1.66
+++ esound/esd.c	2002/08/27 12:02:45
@@ -844,11 +844,11 @@ int main ( int argc, char *argv[] )
 	/* mix new requests, and output to device */
 	refresh_mix_funcs(); /* TODO: set a flag to cue when to do this */
 	length = mix_players( output_buffer, esd_buf_size_octets );
 	
 	/* awaken if on autostandby and doing anything */
-	if ( esd_on_autostandby && length && !esd_forced_standby ) {
+	if ( (esd_on_autostandby || esd_forced_standby) && length  ) {
 	    ESDBG_TRACE( printf( "stuff to play, waking up.\n" ); );
 	    esd_server_resume();
 	}
 
 	/* we handle this even when length == 0 because a filter could have
Index: esound/proto.c
===================================================================
RCS file: /export/cvs/gnome-2.0/esound/proto.c,v
retrieving revision 1.44
diff -p -u -5 -r1.44 proto.c
--- esound/proto.c	2000/11/28 19:18:11	1.44
+++ esound/proto.c	2002/08/27 12:02:45
@@ -262,10 +262,11 @@ int esd_proto_standby( esd_client_t *cli
     int ok, client_ok, actual;
 
     ok = esd_validate_source( client, client->proto_data, 1 );
 
     if ( ok ) ok = esd_server_standby();
+    if (!esd_on_autostandby)
     esd_forced_standby = 1;
 
     client_ok = maybe_swap_32( client->swap_byte_order, ok );
     ESD_WRITE_INT( client->fd, &client_ok, sizeof(client_ok), 
 		   actual, "stdby ok" );
@@ -315,11 +316,11 @@ int esd_proto_stream_play( esd_client_t 
 int esd_proto_stream_recorder( esd_client_t *client )
 {
     esd_player_t *recorder = NULL;
     
     /* wake up if we're asleep */
-    if ( esd_on_autostandby  && !esd_forced_standby ) {
+    if ( esd_on_autostandby  || esd_forced_standby ) {
 	ESDBG_TRACE( printf( "stuff to record, waking up.\n" ); );
 	esd_server_resume();
     }
 
     /* if we're in standby mode, go away */
@@ -812,11 +813,11 @@ int esd_proto_sample_pan( esd_client_t *
 /* daemon rejects untrusted clients, return boolean ok */
 int esd_proto_standby_mode( esd_client_t *client )
 {
     int ok = 1, mode, client_mode, actual;
 
-    if ( esd_on_autostandby && !esd_forced_standby ) 
+    if ( esd_on_autostandby || esd_forced_standby ) 
 	mode = ESM_ON_AUTOSTANDBY;
     else if ( esd_on_standby )
 	mode = ESM_ON_STANDBY;
     else
 	mode = ESM_RUNNING;
