[vlc-commits] audioscrobbler: fix condition variable usage
Rémi Denis-Courmont
git at videolan.org
Tue Jul 7 22:04:00 CEST 2015
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Tue Jul 7 22:36:48 2015 +0300| [4b8e7b833b69e4ce9542c5b86ea9953943551431] | committer: Rémi Denis-Courmont
audioscrobbler: fix condition variable usage
Wait for the end of the pacing interval, then wait for the next song
(if it did not start in the mean time).
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4b8e7b833b69e4ce9542c5b86ea9953943551431
---
modules/misc/audioscrobbler.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/modules/misc/audioscrobbler.c b/modules/misc/audioscrobbler.c
index 4ec46d4..b463bff 100644
--- a/modules/misc/audioscrobbler.c
+++ b/modules/misc/audioscrobbler.c
@@ -685,7 +685,7 @@ static void *Run(void *data)
bool b_handshaked = false;
/* data about audioscrobbler session */
- mtime_t next_exchange = -1; /**< when can we send data */
+ mtime_t next_exchange = 0; /**< when can we send data */
unsigned int i_interval = 0; /**< waiting interval (secs)*/
intf_sys_t *p_sys = p_intf->p_sys;
@@ -694,14 +694,16 @@ static void *Run(void *data)
for (;;)
{
vlc_restorecancel(canc);
+ mwait(next_exchange);
+
vlc_mutex_lock(&p_sys->lock);
mutex_cleanup_push(&p_sys->lock);
- do
+ while (p_sys->i_songs == 0)
vlc_cond_wait(&p_sys->wait, &p_sys->lock);
- while (mdate() < next_exchange);
- vlc_cleanup_run();
+ vlc_cleanup_pop();
+ vlc_mutex_unlock(&p_sys->lock);
canc = vlc_savecancel();
/* handshake if needed */
@@ -727,7 +729,7 @@ static void *Run(void *data)
msg_Dbg(p_intf, "Handshake successful :)");
b_handshaked = true;
i_interval = 0;
- next_exchange = mdate();
+ next_exchange = 0;
break;
case VLC_AUDIOSCROBBLER_EFATAL:
@@ -870,7 +872,7 @@ static void *Run(void *data)
DeleteSong(&p_sys->p_queue[i]);
p_sys->i_songs = 0;
i_interval = 0;
- next_exchange = mdate();
+ next_exchange = 0;
msg_Dbg(p_intf, "Submission successful!");
}
else
More information about the vlc-commits
mailing list