playlist/soundcloud: support libyajl2
[mk: backwars compatibility and autoconf check]
This commit is contained in:
parent
d5be3cce9c
commit
281b8714ef
@ -889,6 +889,7 @@ libplaylist_plugins_a_SOURCES = \
|
|||||||
src/playlist/embcue_playlist_plugin.h \
|
src/playlist/embcue_playlist_plugin.h \
|
||||||
src/playlist_list.c
|
src/playlist_list.c
|
||||||
libplaylist_plugins_a_CPPFLAGS = $(AM_CPPFLAGS) \
|
libplaylist_plugins_a_CPPFLAGS = $(AM_CPPFLAGS) \
|
||||||
|
$(YAJL_CFLAGS) \
|
||||||
$(patsubst -I%/FLAC,-I%,$(FLAC_CFLAGS))
|
$(patsubst -I%/FLAC,-I%,$(FLAC_CFLAGS))
|
||||||
|
|
||||||
PLAYLIST_LIBS = \
|
PLAYLIST_LIBS = \
|
||||||
|
@ -709,9 +709,11 @@ AM_CONDITIONAL(ENABLE_DESPOTIFY, test x$enable_despotify = xyes)
|
|||||||
|
|
||||||
dnl --------------------------------- Soundcloud ------------------------------
|
dnl --------------------------------- Soundcloud ------------------------------
|
||||||
if test x$enable_soundcloud != xno; then
|
if test x$enable_soundcloud != xno; then
|
||||||
AC_CHECK_LIB([yajl], [yajl_alloc],
|
PKG_CHECK_MODULES([YAJL], [yajl >= 2.0],
|
||||||
[found_soundcloud=yes YAJL_LIBS=-lyajl],
|
[found_soundcloud=yes],
|
||||||
[found_soundcloud=no])
|
AC_CHECK_LIB([yajl], [yajl_alloc],
|
||||||
|
[found_soundcloud=yes YAJL_CFLAGS=-DHAVE_YAJL1 YAJL_LIBS=-lyajl],
|
||||||
|
[found_soundcloud=no]))
|
||||||
fi
|
fi
|
||||||
MPD_AUTO_RESULT([soundcloud], [soundcloud.com support], [libyajl not found])
|
MPD_AUTO_RESULT([soundcloud], [soundcloud.com support], [libyajl not found])
|
||||||
if test x$enable_soundcloud = xyes; then
|
if test x$enable_soundcloud = xyes; then
|
||||||
|
@ -110,7 +110,12 @@ struct parse_data {
|
|||||||
GSList* songs;
|
GSList* songs;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int handle_integer(void *ctx, long intval)
|
static int handle_integer(void *ctx,
|
||||||
|
long
|
||||||
|
#ifndef HAVE_YAJL1
|
||||||
|
long
|
||||||
|
#endif
|
||||||
|
intval)
|
||||||
{
|
{
|
||||||
struct parse_data *data = (struct parse_data *) ctx;
|
struct parse_data *data = (struct parse_data *) ctx;
|
||||||
|
|
||||||
@ -269,13 +274,20 @@ soundcloud_parse_json(const char *url, yajl_handle hand, GMutex* mutex, GCond* c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (done)
|
if (done) {
|
||||||
|
#ifdef HAVE_YAJL1
|
||||||
stat = yajl_parse_complete(hand);
|
stat = yajl_parse_complete(hand);
|
||||||
else
|
#else
|
||||||
|
stat = yajl_complete_parse(hand);
|
||||||
|
#endif
|
||||||
|
} else
|
||||||
stat = yajl_parse(hand, ubuffer, nbytes);
|
stat = yajl_parse(hand, ubuffer, nbytes);
|
||||||
|
|
||||||
if (stat != yajl_status_ok &&
|
if (stat != yajl_status_ok
|
||||||
stat != yajl_status_insufficient_data)
|
#ifdef HAVE_YAJL1
|
||||||
|
&& stat != yajl_status_insufficient_data
|
||||||
|
#endif
|
||||||
|
)
|
||||||
{
|
{
|
||||||
unsigned char *str = yajl_get_error(hand, 1, ubuffer, nbytes);
|
unsigned char *str = yajl_get_error(hand, 1, ubuffer, nbytes);
|
||||||
g_warning("%s", str);
|
g_warning("%s", str);
|
||||||
@ -356,7 +368,11 @@ soundcloud_open_uri(const char *uri, GMutex *mutex, GCond *cond)
|
|||||||
data.songs = NULL;
|
data.songs = NULL;
|
||||||
data.title = NULL;
|
data.title = NULL;
|
||||||
data.stream_url = NULL;
|
data.stream_url = NULL;
|
||||||
|
#ifdef HAVE_YAJL1
|
||||||
hand = yajl_alloc(&parse_callbacks, NULL, NULL, (void *) &data);
|
hand = yajl_alloc(&parse_callbacks, NULL, NULL, (void *) &data);
|
||||||
|
#else
|
||||||
|
hand = yajl_alloc(&parse_callbacks, NULL, (void *) &data);
|
||||||
|
#endif
|
||||||
|
|
||||||
int ret = soundcloud_parse_json(u, hand, mutex, cond);
|
int ret = soundcloud_parse_json(u, hand, mutex, cond);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user