diff options
| author | Přemysl Eric Janouch <p@janouch.name> | 2020-10-18 05:57:44 +0200 | 
|---|---|---|
| committer | Přemysl Eric Janouch <p@janouch.name> | 2020-10-18 05:57:44 +0200 | 
| commit | b3579d11282ec055a42fff56a1adcc50357d46f5 (patch) | |
| tree | a4d96236412a559a877d46b3b3de2b99dffe64d9 | |
| parent | 525e952753cc218a2be15438689d8ed2f5d97b50 (diff) | |
| download | nncmpp-b3579d11282ec055a42fff56a1adcc50357d46f5.tar.gz nncmpp-b3579d11282ec055a42fff56a1adcc50357d46f5.tar.xz nncmpp-b3579d11282ec055a42fff56a1adcc50357d46f5.zip | |
Explain the ticking mechanism
Took time to read.  Also fix an invalid comment.
| -rw-r--r-- | nncmpp.c | 8 | 
1 files changed, 7 insertions, 1 deletions
| @@ -609,7 +609,7 @@ static struct app_context  	struct str_map playback_info;       ///< Current song info  	struct poller_timer elapsed_event;  ///< Seconds elapsed event -	int64_t elapsed_since;              ///< Time of the next tick +	int64_t elapsed_since;              ///< Time of the last tick  	// TODO: initialize these to -1  	int song;                           ///< Current song index @@ -3410,7 +3410,9 @@ mpd_update_playback_state (void)  	poller_timer_reset (&g.elapsed_event);  	if (g.state == PLAYER_PLAYING)  	{ +		// Set a timer for when the next round second of playback happens  		poller_timer_set (&g.elapsed_event, 1000 - msec_past_second); +		// Remember when the last round second was, relative to monotonic time  		g.elapsed_since = clock_msec (CLOCK_BEST) - msec_past_second;  	} @@ -3540,12 +3542,16 @@ static void  mpd_on_tick (void *user_data)  {  	(void) user_data; + +	// Compute how much time has elapsed since the last round second  	int64_t diff_msec = clock_msec (CLOCK_BEST) - g.elapsed_since;  	int elapsed_sec = diff_msec / 1000;  	int elapsed_msec = diff_msec % 1000;  	g.song_elapsed += elapsed_sec;  	g.elapsed_since += elapsed_sec * 1000; + +	// Try to get called on the next round second of playback  	poller_timer_set (&g.elapsed_event, 1000 - elapsed_msec);  	app_invalidate (); | 
