[spotify] Use timespec_reltoabs instead of internal mk_reltime
This commit is contained in:
parent
6db4e40119
commit
6af8fa07b4
|
@ -36,7 +36,6 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/queue.h>
|
#include <sys/queue.h>
|
||||||
#include <time.h>
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#ifdef HAVE_PTHREAD_NP_H
|
#ifdef HAVE_PTHREAD_NP_H
|
||||||
# include <pthread_np.h>
|
# include <pthread_np.h>
|
||||||
|
@ -80,8 +79,6 @@
|
||||||
* then use our normal cleanup of stray files to tidy db and cache.
|
* then use our normal cleanup of stray files to tidy db and cache.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// How long to wait for audio (in sec) before giving up
|
|
||||||
#define SPOTIFY_TIMEOUT 20
|
|
||||||
// How long to wait for artwork (in sec) before giving up
|
// How long to wait for artwork (in sec) before giving up
|
||||||
#define SPOTIFY_ARTWORK_TIMEOUT 3
|
#define SPOTIFY_ARTWORK_TIMEOUT 3
|
||||||
// An upper limit on sequential requests to Spotify's web api
|
// An upper limit on sequential requests to Spotify's web api
|
||||||
|
@ -143,6 +140,9 @@ static int spotify_saved_plid;
|
||||||
// Flag to avoid triggering playlist change events while the (re)scan is running
|
// Flag to avoid triggering playlist change events while the (re)scan is running
|
||||||
static bool scanning;
|
static bool scanning;
|
||||||
|
|
||||||
|
// Timeout timespec
|
||||||
|
static struct timespec spotify_artwork_timeout = { SPOTIFY_ARTWORK_TIMEOUT, 0 };
|
||||||
|
|
||||||
// Audio buffer
|
// Audio buffer
|
||||||
static struct evbuffer *spotify_audio_buffer;
|
static struct evbuffer *spotify_audio_buffer;
|
||||||
|
|
||||||
|
@ -1146,19 +1146,6 @@ static sp_playlistcontainer_callbacks pc_callbacks = {
|
||||||
/* --------------------- INTERNAL PLAYBACK AND AUDIO ----------------------- */
|
/* --------------------- INTERNAL PLAYBACK AND AUDIO ----------------------- */
|
||||||
/* Should only be called from within the spotify thread */
|
/* Should only be called from within the spotify thread */
|
||||||
|
|
||||||
static void
|
|
||||||
mk_reltime(struct timespec *ts, time_t sec)
|
|
||||||
{
|
|
||||||
#if _POSIX_TIMERS > 0
|
|
||||||
clock_gettime(CLOCK_REALTIME, ts);
|
|
||||||
#else
|
|
||||||
struct timeval tv;
|
|
||||||
gettimeofday(&tv, NULL);
|
|
||||||
TIMEVAL_TO_TIMESPEC(&tv, ts);
|
|
||||||
#endif
|
|
||||||
ts->tv_sec += sec;
|
|
||||||
}
|
|
||||||
|
|
||||||
static enum command_state
|
static enum command_state
|
||||||
playback_setup(void *arg, int *retval)
|
playback_setup(void *arg, int *retval)
|
||||||
{
|
{
|
||||||
|
@ -1858,7 +1845,7 @@ spotify_artwork_get(struct evbuffer *evbuf, char *path, int max_w, int max_h)
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
CHECK_ERR(L_SPOTIFY, pthread_mutex_lock(&artwork.mutex));
|
CHECK_ERR(L_SPOTIFY, pthread_mutex_lock(&artwork.mutex));
|
||||||
mk_reltime(&ts, SPOTIFY_ARTWORK_TIMEOUT);
|
ts = timespec_reltoabs(spotify_artwork_timeout);
|
||||||
if (!artwork.is_loaded)
|
if (!artwork.is_loaded)
|
||||||
CHECK_ERR_EXCEPT(L_SPOTIFY, pthread_cond_timedwait(&artwork.cond, &artwork.mutex, &ts), err, ETIMEDOUT);
|
CHECK_ERR_EXCEPT(L_SPOTIFY, pthread_cond_timedwait(&artwork.cond, &artwork.mutex, &ts), err, ETIMEDOUT);
|
||||||
CHECK_ERR(L_SPOTIFY, pthread_mutex_unlock(&artwork.mutex));
|
CHECK_ERR(L_SPOTIFY, pthread_mutex_unlock(&artwork.mutex));
|
||||||
|
|
Loading…
Reference in New Issue