Author: alexlan
Update of /cvs/free/rpms/xbmc/devel
In directory old02.ovh.rpmfusion.lan:/tmp/cvs-serv16836
Added Files:
xbmc-11.0-dteirney-myth-0.25.patch
xbmc-11.0-tsp-Eden-pvr.patch
Removed Files:
xbmc-10.1-libpng-1.5.patch
xbmc-11.0-libpng-1.5-fix-plt-trn-get.patch
Log Message:
Sync with git.
xbmc-11.0-dteirney-myth-0.25.patch:
include/cmyth/cmyth.h | 21 +++++++
libcmyth/bookmark.c | 19 +++++-
libcmyth/cmyth_local.h | 3 +
libcmyth/connection.c | 30 ++++++++--
libcmyth/file.c | 31 +++++++---
libcmyth/proginfo.c | 63 ++++++++++++++++++++-
libcmyth/proglist.c | 9 ++-
libcmyth/socket.c | 143 ++++++++++++++++++++++++++++++++++++++-----------
8 files changed, 267 insertions(+), 52 deletions(-)
--- NEW FILE xbmc-11.0-dteirney-myth-0.25.patch ---
diff --git a/lib/cmyth/include/cmyth/cmyth.h b/lib/cmyth/include/cmyth/cmyth.h
index 52f2f68..d8cb364 100644
--- a/lib/cmyth/include/cmyth/cmyth.h
+++ b/lib/cmyth/include/cmyth/cmyth.h
@@ -749,6 +749,20 @@ extern char *cmyth_proginfo_subtitle(cmyth_proginfo_t prog);
extern char *cmyth_proginfo_description(cmyth_proginfo_t prog);
/**
+ * Retrieve the season of a program.
+ * \param prog proginfo handle
+ * \return season
+ */
+extern unsigned short cmyth_proginfo_season(cmyth_proginfo_t prog);
+
+/**
+ * Retrieve the episode of a program.
+ * \param prog proginfo handle
+ * \return episode
+ */
+extern unsigned short cmyth_proginfo_episode(cmyth_proginfo_t prog);
+
+/**
* Retrieve the category of a program.
* \param prog proginfo handle
* \return null-terminated string
@@ -805,6 +819,13 @@ extern char *cmyth_proginfo_seriesid(cmyth_proginfo_t prog);
extern long cmyth_proginfo_priority(cmyth_proginfo_t prog);
/**
+ * Retrieve the inetref of a program.
+ * \param prog proginfo handle
+ * \return null-terminated string
+ */
+extern char *cmyth_proginfo_inetref(cmyth_proginfo_t prog);
+
+/**
* Retrieve the critics rating (number of stars) of a program.
* \param prog proginfo handle
* \return null-terminated string
diff --git a/lib/cmyth/libcmyth/bookmark.c b/lib/cmyth/libcmyth/bookmark.c
index af7580f..4681c21 100644
--- a/lib/cmyth/libcmyth/bookmark.c
+++ b/lib/cmyth/libcmyth/bookmark.c
@@ -20,6 +20,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <inttypes.h>
#include <errno.h>
#include <cmyth_local.h>
@@ -59,7 +60,7 @@ long long cmyth_get_bookmark(cmyth_conn_t conn, cmyth_proginfo_t prog)
}
if ((r=cmyth_rcv_long_long(conn, &err, &ll, count)) < 0) {
cmyth_dbg(CMYTH_DBG_ERROR,
- "%s: cmyth_rcv_longlong() failed (%d)\n",
+ "%s: cmyth_rcv_long_long() failed (%d)\n",
__FUNCTION__, r);
ret = err;
goto out;
@@ -74,7 +75,7 @@ long long cmyth_get_bookmark(cmyth_conn_t conn, cmyth_proginfo_t prog)
int cmyth_set_bookmark(cmyth_conn_t conn, cmyth_proginfo_t prog, long long bookmark)
{
char *buf;
- unsigned int len = CMYTH_TIMESTAMP_LEN + CMYTH_LONGLONG_LEN + 18;
+ unsigned int len = CMYTH_TIMESTAMP_LEN + CMYTH_LONGLONG_LEN * 2 + 18;
char resultstr[3];
int r,err;
int ret;
@@ -85,8 +86,18 @@ int cmyth_set_bookmark(cmyth_conn_t conn, cmyth_proginfo_t prog, long
long bookm
if (!buf) {
return -ENOMEM;
}
- sprintf(buf,"%s %ld %s %lld
%lld","SET_BOOKMARK",prog->proginfo_chanId,
- start_ts_dt, bookmark >> 32,(bookmark & 0xffffffff));
+ if (conn->conn_version >= 66) {
+ /*
+ * Since protocol 66 mythbackend expects a single 64 bit integer rather than two 32
bit
+ * hi and lo integers.
+ */
+ sprintf(buf, "SET_BOOKMARK %ld %s %"PRIu64, prog->proginfo_chanId,
+ start_ts_dt, (int64_t)bookmark);
+ }
+ else {
+ sprintf(buf, "SET_BOOKMARK %ld %s %d %d", prog->proginfo_chanId,
+ start_ts_dt, (int32_t)(bookmark >> 32), (int32_t)(bookmark & 0xffffffff));
+ }
pthread_mutex_lock(&mutex);
if ((err = cmyth_send_message(conn,buf)) < 0) {
cmyth_dbg(CMYTH_DBG_ERROR,
diff --git a/lib/cmyth/libcmyth/cmyth_local.h b/lib/cmyth/libcmyth/cmyth_local.h
index 40bed11..f7b85fb 100644
--- a/lib/cmyth/libcmyth/cmyth_local.h
+++ b/lib/cmyth/libcmyth/cmyth_local.h
@@ -224,6 +224,8 @@ struct cmyth_proginfo {
char *proginfo_title;
char *proginfo_subtitle;
char *proginfo_description;
+ unsigned short proginfo_season; /* new in V67 */
+ unsigned short proginfo_episode; /* new in V67 */
char *proginfo_category;
long proginfo_chanId;
char *proginfo_chanstr;
@@ -258,6 +260,7 @@ struct cmyth_proginfo {
char *proginfo_chan_output_filters; /* new in V8 */
char *proginfo_seriesid; /* new in V8 */
char *proginfo_programid; /* new in V12 */
+ char *proginfo_inetref; /* new in V67 */
cmyth_timestamp_t proginfo_lastmodified; /* new in V12 */
char *proginfo_stars; /* new in V12 */
cmyth_timestamp_t proginfo_originalairdate; /* new in V12 */
diff --git a/lib/cmyth/libcmyth/connection.c b/lib/cmyth/libcmyth/connection.c
index 9d5fb0d..9d13721 100644
--- a/lib/cmyth/libcmyth/connection.c
+++ b/lib/cmyth/libcmyth/connection.c
@@ -56,6 +56,15 @@ static myth_protomap_t protomap[] = {
{62, "78B5631E"},
{63, "3875641D"},
{64, "8675309J"},
+ {65, "D2BB94C2"},
+ {66, "0C0FFEE0"},
+ {67, "0G0G0G0"},
+ {68, "90094EAD"},
+ {69, "63835135"},
+ {70, "53153836"},
+ {71, "05e82186"},
+ {72, "D78EFD6F"},
+ {73, "D7FE8D6F"},
{0, 0}
};
@@ -527,7 +536,7 @@ cmyth_conn_connect_file(cmyth_proginfo_t prog, cmyth_conn_t control,
int err = 0;
int count = 0;
int r;
- int ann_size = sizeof("ANN FileTransfer []:[][]:[]");
+ int ann_size = sizeof("ANN FileTransfer 0[]:[][]:[]");
cmyth_file_t ret = NULL;
if (!prog) {
@@ -575,6 +584,12 @@ cmyth_conn_connect_file(cmyth_proginfo_t prog, cmyth_conn_t
control,
myth_host, prog->proginfo_port, buflen);
goto shut;
}
+ /*
+ * Explicitly set the conn version to the control version as cmyth_connect() doesn't
and some of
+ * the cmyth_rcv_* functions expect it to be the same as the protocol version used by
mythbackend.
+ */
+ conn->conn_version = control->conn_version;
+
ann_size += strlen(prog->proginfo_pathname) + strlen(my_hostname);
announcement = malloc(ann_size);
if (!announcement) {
@@ -584,7 +599,7 @@ cmyth_conn_connect_file(cmyth_proginfo_t prog, cmyth_conn_t control,
goto shut;
}
if (control->conn_version >= 44) {
- sprintf(announcement, "ANN FileTransfer %s[]:[]%s[]:[]",
+ sprintf(announcement, "ANN FileTransfer %s 0[]:[]%s[]:[]", // write = false
my_hostname, prog->proginfo_pathname);
}
else {
@@ -631,7 +646,7 @@ cmyth_conn_connect_file(cmyth_proginfo_t prog, cmyth_conn_t control,
r = cmyth_rcv_u_long_long(conn, &err, &ret->file_length, count);
if (err) {
cmyth_dbg(CMYTH_DBG_ERROR,
- "%s: (length) cmyth_rcv_longlong() failed (%d)\n",
+ "%s: (length) cmyth_rcv_u_long_long() failed (%d)\n",
__FUNCTION__, err);
goto shut;
}
@@ -683,7 +698,7 @@ cmyth_conn_connect_path(char* path, cmyth_conn_t control,
int err = 0;
int count = 0;
int r, port;
- int ann_size = sizeof("ANN FileTransfer []:[][]:[]");
+ int ann_size = sizeof("ANN FileTransfer 0[]:[][]:[]");
struct sockaddr_in addr;
socklen_t addr_size = sizeof(addr);
cmyth_file_t ret = NULL;
@@ -716,6 +731,11 @@ cmyth_conn_connect_path(char* path, cmyth_conn_t control,
__FUNCTION__, host, port, buflen);
goto shut;
}
+ /*
+ * Explicitly set the conn version to the control version as cmyth_connect() doesn't
and some of
+ * the cmyth_rcv_* functions expect it to be the same as the protocol version used by
mythbackend.
+ */
+ conn->conn_version = control->conn_version;
ann_size += strlen(path) + strlen(my_hostname) + strlen(sgToGetFrom) + 6;
announcement = malloc(ann_size);
@@ -771,7 +792,7 @@ cmyth_conn_connect_path(char* path, cmyth_conn_t control,
r = cmyth_rcv_u_long_long(conn, &err, &ret->file_length, count);
if (err) {
cmyth_dbg(CMYTH_DBG_ERROR,
- "%s: (length) cmyth_rcv_longlong() failed (%d)\n",
+ "%s: (length) cmyth_rcv_u_long_long() failed (%d)\n",
__FUNCTION__, err);
goto shut;
}
diff --git a/lib/cmyth/libcmyth/file.c b/lib/cmyth/libcmyth/file.c
index 74408ed..640f299 100644
--- a/lib/cmyth/libcmyth/file.c
+++ b/lib/cmyth/libcmyth/file.c
@@ -20,6 +20,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
+#include <inttypes.h>
#ifndef _MSC_VER
#include <sys/socket.h>
#endif
@@ -449,14 +450,28 @@ cmyth_file_seek(cmyth_file_t file, long long offset, int whence)
pthread_mutex_lock(&mutex);
- snprintf(msg, sizeof(msg),
- "QUERY_FILETRANSFER %ld[]:[]SEEK[]:[]%d[]:[]%d[]:[]%d[]:[]%d[]:[]%d",
- file->file_id,
- (int32_t)(offset >> 32),
- (int32_t)(offset & 0xffffffff),
- whence,
- (int32_t)(file->file_pos >> 32),
- (int32_t)(file->file_pos & 0xffffffff));
+ if (file->file_control->conn_version >= 66) {
+ /*
+ * Since protocol 66 mythbackend expects to receive a single 64 bit integer rather
than
+ * two 32 bit hi and lo integers.
+ */
+ snprintf(msg, sizeof(msg),
+ "QUERY_FILETRANSFER
%ld[]:[]SEEK[]:[]%"PRIu64"[]:[]%d[]:[]%"PRIu64,
+ file->file_id,
+ (int64_t)offset,
+ whence,
+ (int64_t)file->file_pos);
+ }
+ else {
+ snprintf(msg, sizeof(msg),
+ "QUERY_FILETRANSFER %ld[]:[]SEEK[]:[]%d[]:[]%d[]:[]%d[]:[]%d[]:[]%d",
+ file->file_id,
+ (int32_t)(offset >> 32),
+ (int32_t)(offset & 0xffffffff),
+ whence,
+ (int32_t)(file->file_pos >> 32),
+ (int32_t)(file->file_pos & 0xffffffff));
+ }
if ((err = cmyth_send_message(file->file_control, msg)) < 0) {
cmyth_dbg(CMYTH_DBG_ERROR,
diff --git a/lib/cmyth/libcmyth/proginfo.c b/lib/cmyth/libcmyth/proginfo.c
index b175637..f6f9347 100644
--- a/lib/cmyth/libcmyth/proginfo.c
+++ b/lib/cmyth/libcmyth/proginfo.c
@@ -116,6 +116,9 @@ cmyth_proginfo_destroy(cmyth_proginfo_t p)
if (p->proginfo_programid) {
ref_release(p->proginfo_programid);
}
+ if (p->proginfo_inetref) {
+ ref_release(p->proginfo_inetref);
+ }
if (p->proginfo_stars) {
ref_release(p->proginfo_stars);
}
@@ -217,6 +220,8 @@ cmyth_proginfo_create(void)
ret->proginfo_title = NULL;
ret->proginfo_subtitle = NULL;
ret->proginfo_description = NULL;
+ ret->proginfo_season = 0;
+ ret->proginfo_episode = 0;
ret->proginfo_category = NULL;
ret->proginfo_chanId = 0;
ret->proginfo_chanstr = NULL;
@@ -250,6 +255,7 @@ cmyth_proginfo_create(void)
ret->proginfo_chan_output_filters = NULL;
ret->proginfo_seriesid = NULL;
ret->proginfo_programid = NULL;
+ ret->proginfo_inetref = NULL;
ret->proginfo_stars = NULL;
ret->proginfo_version = 12;
ret->proginfo_hasairdate = 0;
@@ -307,6 +313,8 @@ cmyth_proginfo_dup(cmyth_proginfo_t p)
ret->proginfo_title = ref_hold(p->proginfo_title);
ret->proginfo_subtitle = ref_hold(p->proginfo_subtitle);
ret->proginfo_description = ref_hold(p->proginfo_description);
+ ret->proginfo_season = p->proginfo_season;
+ ret->proginfo_episode = p->proginfo_episode;
ret->proginfo_category = ref_hold(p->proginfo_category);
ret->proginfo_chanId = p->proginfo_chanId;
ret->proginfo_chanstr = ref_hold(p->proginfo_chanstr);
@@ -340,6 +348,7 @@ cmyth_proginfo_dup(cmyth_proginfo_t p)
ret->proginfo_chan_output_filters = ref_hold(p->proginfo_chan_output_filters);
ret->proginfo_seriesid = ref_hold(p->proginfo_seriesid);
ret->proginfo_programid = ref_hold(p->proginfo_programid);
+ ret->proginfo_inetref = ref_hold(p->proginfo_inetref);
ret->proginfo_stars = ref_hold(p->proginfo_stars);
ret->proginfo_version = p->proginfo_version;
ret->proginfo_hasairdate = p->proginfo_hasairdate;
@@ -386,7 +395,7 @@ delete_command(cmyth_conn_t control, cmyth_proginfo_t prog, char
*cmd)
char *buf;
unsigned int len = ((2 * CMYTH_LONGLONG_LEN) +
(6 * CMYTH_TIMESTAMP_LEN) +
- (14 * CMYTH_LONG_LEN));
+ (16 * CMYTH_LONG_LEN));
char start_ts[CMYTH_TIMESTAMP_LEN + 1];
char end_ts[CMYTH_TIMESTAMP_LEN + 1];
char rec_start_ts[CMYTH_TIMESTAMP_LEN + 1];
@@ -415,8 +424,12 @@ delete_command(cmyth_conn_t control, cmyth_proginfo_t prog, char
*cmd)
len += strlen(S(prog->proginfo_url));
len += strlen(S(prog->proginfo_hostname));
len += strlen(S(prog->proginfo_playgroup));
+ len += strlen(S(prog->proginfo_seriesid));
+ len += strlen(S(prog->proginfo_programid));
+ len += strlen(S(prog->proginfo_inetref));
len += strlen(S(prog->proginfo_recpriority_2));
len += strlen(S(prog->proginfo_storagegroup));
+ len += strlen(S(prog->proginfo_prodyear));
buf = alloca(len + 1+2048);
if (!buf) {
@@ -462,6 +475,10 @@ delete_command(cmyth_conn_t control, cmyth_proginfo_t prog, char
*cmd)
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_title));
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_subtitle));
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_description));
+ if (control->conn_version >= 67) {
+ sprintf(buf + strlen(buf), "%u[]:[]", prog->proginfo_season);
+ sprintf(buf + strlen(buf), "%u[]:[]", prog->proginfo_episode);
+ }
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_category));
sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_chanId);
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_chanstr));
@@ -504,6 +521,9 @@ delete_command(cmyth_conn_t control, cmyth_proginfo_t prog, char
*cmd)
sprintf(buf + strlen(buf), "%s[]:[]",
S(prog->proginfo_chan_output_filters));
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_seriesid));
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_programid));
+ if (control->conn_version >= 67) {
+ sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_inetref));
+ }
sprintf(buf + strlen(buf), "%s[]:[]", lastmodified);
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_stars));
sprintf(buf + strlen(buf), "%s[]:[]", originalairdate);
@@ -773,6 +793,24 @@ cmyth_proginfo_description(cmyth_proginfo_t prog)
return ref_hold(prog->proginfo_description);
}
+unsigned short
+cmyth_proginfo_season(cmyth_proginfo_t prog)
+{
+ if (!prog) {
+ return 0;
+ }
+ return prog->proginfo_season;
+}
+
+unsigned short
+cmyth_proginfo_episode(cmyth_proginfo_t prog)
+{
+ if (!prog) {
+ return 0;
+ }
+ return prog->proginfo_episode;
+}
+
/*
* cmyth_proginfo_category(cmyth_proginfo_t prog)
*
@@ -827,6 +865,17 @@ cmyth_proginfo_programid(cmyth_proginfo_t prog)
}
char *
+cmyth_proginfo_inetref(cmyth_proginfo_t prog)
+{
+ if (!prog) {
+ cmyth_dbg(CMYTH_DBG_ERROR, "%s: NULL inetref\n",
+ __FUNCTION__);
+ return NULL;
+ }
+ return ref_hold(prog->proginfo_inetref);
+}
+
+char *
cmyth_proginfo_stars(cmyth_proginfo_t prog)
{
if (!prog) {
@@ -1260,7 +1309,7 @@ fill_command(cmyth_conn_t control, cmyth_proginfo_t prog, char
*cmd)
char *buf;
unsigned int len = ((2 * CMYTH_LONGLONG_LEN) +
(6 * CMYTH_TIMESTAMP_LEN) +
- (14 * CMYTH_LONG_LEN));
+ (16 * CMYTH_LONG_LEN));
char start_ts[CMYTH_TIMESTAMP_LEN + 1];
char end_ts[CMYTH_TIMESTAMP_LEN + 1];
char rec_start_ts[CMYTH_TIMESTAMP_LEN + 1];
@@ -1288,6 +1337,9 @@ fill_command(cmyth_conn_t control, cmyth_proginfo_t prog, char
*cmd)
len += strlen(S(prog->proginfo_url));
len += strlen(S(prog->proginfo_hostname));
len += strlen(S(prog->proginfo_playgroup));
+ len += strlen(S(prog->proginfo_seriesid));
+ len += strlen(S(prog->proginfo_programid));
+ len += strlen(S(prog->proginfo_inetref));
len += strlen(S(prog->proginfo_recpriority_2));
len += strlen(S(prog->proginfo_storagegroup));
len += strlen(S(prog->proginfo_prodyear));
@@ -1336,6 +1388,10 @@ fill_command(cmyth_conn_t control, cmyth_proginfo_t prog, char
*cmd)
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_title));
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_subtitle));
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_description));
+ if (control->conn_version >= 67) {
+ sprintf(buf + strlen(buf), "%u[]:[]", prog->proginfo_season);
+ sprintf(buf + strlen(buf), "%u[]:[]", prog->proginfo_episode);
+ }
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_category));
sprintf(buf + strlen(buf), "%ld[]:[]", prog->proginfo_chanId);
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_chanstr));
@@ -1378,6 +1434,9 @@ fill_command(cmyth_conn_t control, cmyth_proginfo_t prog, char
*cmd)
sprintf(buf + strlen(buf), "%s[]:[]",
S(prog->proginfo_chan_output_filters));
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_seriesid));
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_programid));
+ if (control->conn_version >= 67) {
+ sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_inetref));
+ }
sprintf(buf + strlen(buf), "%s[]:[]", lastmodified);
sprintf(buf + strlen(buf), "%s[]:[]", S(prog->proginfo_stars));
sprintf(buf + strlen(buf), "%s[]:[]", originalairdate);
diff --git a/lib/cmyth/libcmyth/proglist.c b/lib/cmyth/libcmyth/proglist.c
index 28e742c..fe75577 100644
--- a/lib/cmyth/libcmyth/proglist.c
+++ b/lib/cmyth/libcmyth/proglist.c
@@ -315,6 +315,7 @@ cmyth_proglist_get_list(cmyth_conn_t conn,
cmyth_proglist_t
cmyth_proglist_get_all_recorded(cmyth_conn_t control)
{
+ char query[32];
cmyth_proglist_t proglist = cmyth_proglist_create();
if (proglist == NULL) {
@@ -324,8 +325,14 @@ cmyth_proglist_get_all_recorded(cmyth_conn_t control)
return NULL;
}
+ if (control->conn_version < 65) {
+ strcpy(query, "QUERY_RECORDINGS Play");
+ }
+ else {
+ strcpy(query, "QUERY_RECORDINGS Ascending");
+ }
if (cmyth_proglist_get_list(control, proglist,
- "QUERY_RECORDINGS Play",
+ query,
__FUNCTION__) < 0) {
cmyth_dbg(CMYTH_DBG_ERROR,
"%s: cmyth_proglist_get_list() failed\n",
diff --git a/lib/cmyth/libcmyth/socket.c b/lib/cmyth/libcmyth/socket.c
index f1f9a45..552b88d 100644
--- a/lib/cmyth/libcmyth/socket.c
+++ b/lib/cmyth/libcmyth/socket.c
@@ -882,23 +882,38 @@ cmyth_rcv_long_long(cmyth_conn_t conn, int *err, long long *buf, int
count)
*err = EINVAL;
return 0;
}
- consumed = cmyth_rcv_u_long(conn, err, &hi, count);
- if (*err) {
- cmyth_dbg(CMYTH_DBG_ERROR,
- "%s: cmyth_rcv_long_long() failed (%d)\n",
- __FUNCTION__, consumed);
- return consumed;
+
+ if (conn->conn_version >= 66) {
+ /*
+ * Since protocol 66 mythbackend now sends a single 64 bit integer rather than two hi
and lo
+ * 32 bit integers for ALL 64 bit values.
+ */
+ consumed = cmyth_rcv_int64(conn, err, &val, count);
+ if (*err) {
+ cmyth_dbg(CMYTH_DBG_ERROR,
+ "%s: cmyth_rcv_int64() failed (%d)\n",
+ __FUNCTION__, consumed);
+ return consumed;
+ }
}
- consumed += cmyth_rcv_u_long(conn, err, &lo, count-consumed);
- if (*err) {
- cmyth_dbg(CMYTH_DBG_ERROR,
- "%s: cmyth_rcv_long_long() failed (%d)\n",
- __FUNCTION__, consumed);
- return consumed;
+ else {
+ consumed = cmyth_rcv_u_long(conn, err, &hi, count);
+ if (*err) {
+ cmyth_dbg(CMYTH_DBG_ERROR,
+ "%s: cmyth_rcv_u_long_long() failed (%d)\n",
+ __FUNCTION__, consumed);
+ return consumed;
+ }
+ consumed += cmyth_rcv_u_long(conn, err, &lo, count-consumed);
+ if (*err) {
+ cmyth_dbg(CMYTH_DBG_ERROR,
+ "%s: cmyth_rcv_u_long_long() failed (%d)\n",
+ __FUNCTION__, consumed);
+ return consumed;
+ }
+ val = (((long long)hi) << 32) | ((long long)(lo & 0xFFFFFFFF));
}
- val = (((long long)hi) << 32) | ((long long)(lo & 0xFFFFFFFF));
-
*err = 0;
*buf = val;
@@ -1172,6 +1187,7 @@ cmyth_rcv_ulong_long(cmyth_conn_t conn, int *err,
unsigned long long *buf, int count)
{
unsigned long long val;
+ long long val64;
unsigned long hi, lo;
int consumed;
int tmp;
@@ -1186,23 +1202,45 @@ cmyth_rcv_ulong_long(cmyth_conn_t conn, int *err,
*err = EINVAL;
return 0;
}
- consumed = cmyth_rcv_u_long(conn, err, &hi, count);
- if (*err) {
- cmyth_dbg(CMYTH_DBG_ERROR,
- "%s: cmyth_rcv_ulong_long() failed (%d)\n",
- __FUNCTION__, consumed);
- return consumed;
+
+ if (conn->conn_version >= 66) {
+ /*
+ * Since protocol 66 mythbackend now sends a single 64 bit integer rather than two hi
and lo
+ * 32 bit integers for ALL 64 bit values.
+ */
+ consumed = cmyth_rcv_int64(conn, err, &val64, count);
+ if (*err) {
+ cmyth_dbg(CMYTH_DBG_ERROR,
+ "%s: cmyth_rcv_int64() failed (%d)\n",
+ __FUNCTION__, consumed);
+ return consumed;
+ }
+ if (val64 < 0) {
+ cmyth_dbg(CMYTH_DBG_ERROR,
+ "%s: cmyth_rcv_int64() failed as signed 64 bit integer received\n",
+ __FUNCTION__, consumed);
+ *err = EINVAL;
+ return consumed;
+ }
+ val = (unsigned long long)val64;
}
- consumed += cmyth_rcv_u_long(conn, err, &lo, count);
- if (*err) {
- cmyth_dbg(CMYTH_DBG_ERROR,
- "%s: cmyth_rcv_ulong_long() failed (%d)\n",
- __FUNCTION__, consumed);
- return consumed;
+ else {
+ consumed = cmyth_rcv_u_long(conn, err, &hi, count);
+ if (*err) {
+ cmyth_dbg(CMYTH_DBG_ERROR,
+ "%s: cmyth_rcv_u_long_long() failed (%d)\n",
+ __FUNCTION__, consumed);
+ return consumed;
+ }
+ consumed += cmyth_rcv_u_long(conn, err, &lo, count);
+ if (*err) {
+ cmyth_dbg(CMYTH_DBG_ERROR,
+ "%s: cmyth_rcv_u_long_long() failed (%d)\n",
+ __FUNCTION__, consumed);
+ return consumed;
+ }
+ val = (((unsigned long long)hi) << 32) | ((unsigned long long)(lo &
0xFFFFFFFF));
}
-
- val = (((unsigned long long)hi) << 32) | ((unsigned long long)(lo &
0xFFFFFFFF));
-
*err = 0;
*buf = val;
@@ -1485,7 +1523,8 @@ cmyth_rcv_proginfo(cmyth_conn_t conn, int *err, cmyth_proginfo_t
buf,
if (buf->proginfo_version >= 57) {
/*
- * Myth now sends a single 64bit int, rather than 2 32bit ints
+ * Since protocol 57 mythbackend now sends a single 64 bit integer rather than two 32
bit
+ * hi and lo integers for the proginfo length.
*/
rcv_64 = &cmyth_rcv_int64;
} else {
@@ -1536,6 +1575,29 @@ cmyth_rcv_proginfo(cmyth_conn_t conn, int *err, cmyth_proginfo_t
buf,
ref_release(buf->proginfo_description);
buf->proginfo_description = ref_strdup(tmp_str);
+ if (buf->proginfo_version >= 67) {
+ /*
+ * Get season and episode (unsigned int)
+ */
+ consumed = cmyth_rcv_ushort(conn, err,
+ &buf->proginfo_season, count);
+ count -= consumed;
+ total += consumed;
+ if (*err) {
+ failed = "cmyth_rcv_ushort";
+ goto fail;
+ }
+
+ consumed = cmyth_rcv_ushort(conn, err,
+ &buf->proginfo_episode, count);
+ count -= consumed;
+ total += consumed;
+ if (*err) {
+ failed = "cmyth_rcv_ushort";
+ goto fail;
+ }
+ }
+
/*
* Get proginfo_category (string)
*/
@@ -1649,7 +1711,7 @@ cmyth_rcv_proginfo(cmyth_conn_t conn, int *err, cmyth_proginfo_t
buf,
count -= consumed;
total += consumed;
if (*err) {
- failed = "cmyth_rcv_long_long";
+ failed = "rcv_64";
goto fail;
}
@@ -2013,7 +2075,7 @@ cmyth_rcv_proginfo(cmyth_conn_t conn, int *err, cmyth_proginfo_t
buf,
count -= consumed;
total += consumed;
if (*err) {
- failed = "cmyth_rcv_timestamp";
+ failed = "cmyth_rcv_string";
goto fail;
}
if (buf->proginfo_programid)
@@ -2021,6 +2083,23 @@ cmyth_rcv_proginfo(cmyth_conn_t conn, int *err, cmyth_proginfo_t
buf,
buf->proginfo_programid = ref_strdup(tmp_str);
}
+ if (buf->proginfo_version >= 67) {
+ /*
+ * Get inetref (string)
+ */
+ consumed = cmyth_rcv_string(conn, err, tmp_str,
+ sizeof(tmp_str) - 1, count);
+ count -= consumed;
+ total += consumed;
+ if (*err) {
+ failed = "cmyth_rcv_string";
+ goto fail;
+ }
+ if (buf->proginfo_inetref)
+ ref_release(buf->proginfo_inetref);
+ buf->proginfo_inetref = ref_strdup(tmp_str);
+ }
+
if (buf->proginfo_version >= 12) {
/*
* Get lastmodified (string)
xbmc-11.0-tsp-Eden-pvr.patch:
/dev/null
|binary
addons/skin.confluence/language/Portuguese
| 3
b/.gitattributes
| 1
b/.gitignore
| 56
b/Makefile.in
| 60
b/XBMC-ATV2.xcodeproj/project.pbxproj
|binary
b/XBMC-IOS.xcodeproj/project.pbxproj
|binary
b/XBMC.xcodeproj/project.pbxproj
|binary
b/addons/library.xbmc.addon/dlfcn-win32.cpp
| 263
b/addons/library.xbmc.addon/dlfcn-win32.h
| 46
b/addons/library.xbmc.addon/libXBMC_addon.h
| 192
b/addons/library.xbmc.gui/libXBMC_gui.h
| 352
b/addons/library.xbmc.pvr/libXBMC_pvr.h
| 170
b/addons/pvr.demo/addon.xml
| 19
b/addons/pvr.hts/addon.xml
| 22
b/addons/pvr.hts/icon.png
|binary
b/addons/pvr.hts/pthreadVC2.dll
|binary
b/addons/pvr.hts/pthreadVC2d.dll
|binary
b/addons/pvr.hts/resources/language/Dutch/strings.xml
| 15
b/addons/pvr.hts/resources/language/English/strings.xml
| 15
b/addons/pvr.hts/resources/language/Finnish/strings.xml
| 15
b/addons/pvr.hts/resources/language/German/strings.xml
| 16
b/addons/pvr.hts/resources/settings.xml
| 10
b/addons/pvr.mythtv.cmyth/Thumbs.db
|binary
b/addons/pvr.mythtv.cmyth/addon.xml
| 23
b/addons/pvr.mythtv.cmyth/icon.png
|binary
b/addons/pvr.mythtv.cmyth/pthreadVC2.dll
|binary
b/addons/pvr.mythtv.cmyth/pthreadVC2d.dll
|binary
b/addons/pvr.mythtv.cmyth/resources/language/Danish/strings.xml
| 11
b/addons/pvr.mythtv.cmyth/resources/language/English/strings.xml
| 18
b/addons/pvr.mythtv.cmyth/resources/language/German/strings.xml
| 14
b/addons/pvr.mythtv.cmyth/resources/settings.xml
| 14
b/addons/pvr.mythtv.cmyth/resources/skins/skin.confluence/720p/DialogRecordingRulesSettings.xml
| 155
b/addons/pvr.mythtv.cmyth/resources/skins/skin.confluence/720p/RecordingRules.xml
| 339
b/addons/pvr.mythtv/addon.xml
| 23
b/addons/pvr.mythtv/icon.png
|binary
b/addons/pvr.mythtv/resources/language/English/strings.xml
| 7
b/addons/pvr.mythtv/resources/language/Finnish/strings.xml
| 6
b/addons/pvr.mythtv/resources/language/German/strings.xml
| 7
b/addons/pvr.mythtv/resources/settings.xml
| 6
b/addons/pvr.team-mediaportal.tvserver/LICENSE.txt
| 282
b/addons/pvr.team-mediaportal.tvserver/addon.xml
| 23
b/addons/pvr.team-mediaportal.tvserver/changelog.txt
| 89
b/addons/pvr.team-mediaportal.tvserver/icon.png
|binary
b/addons/pvr.team-mediaportal.tvserver/resources/genre_translation.xml
| 128
b/addons/pvr.team-mediaportal.tvserver/resources/language/Dutch/strings.xml
| 44
b/addons/pvr.team-mediaportal.tvserver/resources/language/English/strings.xml
| 44
b/addons/pvr.team-mediaportal.tvserver/resources/language/Finnish/strings.xml
| 25
b/addons/pvr.team-mediaportal.tvserver/resources/language/German/strings.xml
| 21
b/addons/pvr.team-mediaportal.tvserver/resources/language/Italian/strings.xml
| 25
b/addons/pvr.team-mediaportal.tvserver/resources/settings.xml
| 22
b/addons/pvr.vdr.vnsi/addon.xml
| 23
b/addons/pvr.vdr.vnsi/icon.png
|binary
b/addons/pvr.vdr.vnsi/pthreadVC2.dll
|binary
b/addons/pvr.vdr.vnsi/pthreadVC2d.dll
|binary
b/addons/pvr.vdr.vnsi/resources/language/Dutch/strings.xml
| 48
b/addons/pvr.vdr.vnsi/resources/language/English/strings.xml
| 51
b/addons/pvr.vdr.vnsi/resources/language/Finnish/strings.xml
| 51
b/addons/pvr.vdr.vnsi/resources/language/German/strings.xml
| 51
b/addons/pvr.vdr.vnsi/resources/settings.xml
| 10
b/addons/pvr.vdr.vnsi/resources/skins/Confluence/720p/ChannelScan.xml
| 733 +
b/addons/skin.confluence/720p/DialogButtonMenu.xml
| 40
b/addons/skin.confluence/720p/DialogExtendedProgressBar.xml
| 48
b/addons/skin.confluence/720p/DialogPVRChannelManager.xml
| 539 +
b/addons/skin.confluence/720p/DialogPVRChannelsOSD.xml
| 296
b/addons/skin.confluence/720p/DialogPVRGroupManager.xml
| 433
b/addons/skin.confluence/720p/DialogPVRGuideInfo.xml
| 226
b/addons/skin.confluence/720p/DialogPVRGuideOSD.xml
| 253
b/addons/skin.confluence/720p/DialogPVRGuideSearch.xml
| 456 +
b/addons/skin.confluence/720p/DialogPVRRecordingInfo.xml
| 267
b/addons/skin.confluence/720p/DialogPVRTimerSettings.xml
| 155
b/addons/skin.confluence/720p/Home.xml
| 363
b/addons/skin.confluence/720p/IncludesBackgroundBuilding.xml
| 120
b/addons/skin.confluence/720p/IncludesHomeMenuItems.xml
| 44
b/addons/skin.confluence/720p/MusicOSD.xml
| 6
b/addons/skin.confluence/720p/MyPVR.xml
| 256
b/addons/skin.confluence/720p/PlayerControls.xml
| 148
b/addons/skin.confluence/720p/Settings.xml
| 18
b/addons/skin.confluence/720p/SettingsSystemInfo.xml
| 15
b/addons/skin.confluence/720p/VideoFullScreen.xml
| 324
b/addons/skin.confluence/720p/VideoOSD.xml
| 254
b/addons/skin.confluence/720p/ViewsPVR.xml
| 2378 +++++
b/addons/skin.confluence/720p/custom_SkinSetting_1111.xml
| 8
b/addons/skin.confluence/720p/defaults.xml
| 1
b/addons/skin.confluence/720p/includes.xml
| 132
b/addons/skin.confluence/backgrounds/tv.jpg
|binary
b/addons/skin.confluence/language/Czech/strings.xml
| 15
b/addons/skin.confluence/language/Dutch/strings.xml
| 11
b/addons/skin.confluence/language/English/strings.xml
| 15
b/addons/skin.confluence/language/Finnish/strings.xml
| 13
b/addons/skin.confluence/language/French/strings.xml
| 16
b/addons/skin.confluence/language/German/strings.xml
| 27
b/addons/skin.confluence/language/Greek/strings.xml
| 175
b/addons/skin.confluence/language/Japanese/strings.xml
| 264
b/addons/skin.confluence/language/Slovak/strings.xml
| 175
b/addons/skin.confluence/language/Slovenian/strings.xml
| 13
b/addons/skin.confluence/media/OSDChannelDownFO.png
|binary
b/addons/skin.confluence/media/OSDChannelDownNF.png
|binary
b/addons/skin.confluence/media/OSDChannelListFO.png
|binary
b/addons/skin.confluence/media/OSDChannelListNF.png
|binary
b/addons/skin.confluence/media/OSDChannelUPFO.png
|binary
b/addons/skin.confluence/media/OSDChannelUPNF.png
|binary
b/addons/skin.confluence/media/OSDRecordOffFO.png
|binary
b/addons/skin.confluence/media/OSDRecordOffNF.png
|binary
b/addons/skin.confluence/media/OSDRecordOnFO.png
|binary
b/addons/skin.confluence/media/OSDRecordOnNF.png
|binary
b/addons/skin.confluence/media/OSDTeleTextFO.png
|binary
b/addons/skin.confluence/media/OSDTeleTextNF.png
|binary
b/addons/skin.confluence/media/OSDepgFO.png
|binary
b/addons/skin.confluence/media/OSDepgNF.png
|binary
b/addons/skin.confluence/media/PVR-HasTimer.png
|binary
b/addons/skin.confluence/media/PVR-IsRecording.png
|binary
b/addons/skin.confluence/media/StackNF.png
|binary
b/addons/skin.confluence/media/epg-genres/0.png
|binary
b/addons/skin.confluence/media/epg-genres/112.png
|binary
b/addons/skin.confluence/media/epg-genres/128.png
|binary
b/addons/skin.confluence/media/epg-genres/144.png
|binary
b/addons/skin.confluence/media/epg-genres/16.png
|binary
b/addons/skin.confluence/media/epg-genres/160.png
|binary
b/addons/skin.confluence/media/epg-genres/176.png
|binary
b/addons/skin.confluence/media/epg-genres/192.png
|binary
b/addons/skin.confluence/media/epg-genres/208.png
|binary
b/addons/skin.confluence/media/epg-genres/224.png
|binary
b/addons/skin.confluence/media/epg-genres/240.png
|binary
b/addons/skin.confluence/media/epg-genres/32.png
|binary
b/addons/skin.confluence/media/epg-genres/48.png
|binary
b/addons/skin.confluence/media/epg-genres/64.png
|binary
b/addons/skin.confluence/media/epg-genres/80.png
|binary
b/addons/skin.confluence/media/epg-genres/96.png
|binary
b/addons/skin.confluence/media/epg-genres/genre-numbers.txt
| 18
b/addons/skin.confluence/media/gradient.png
|binary
b/addons/skin.confluence/media/home-power-inhibit-FO.png
|binary
b/addons/skin.confluence/media/home-power-inhibit.png
|binary
b/addons/webinterface.default/js/iscroll.js
| 709 +
b/configure.in
| 42
b/language/Czech/strings.xml
| 444 +
b/language/Dutch/strings.xml
| 552 +
b/language/English/strings.xml
| 463 +
b/language/Finnish/strings.xml
| 451 +
b/language/French/strings.xml
| 430
b/language/German/strings.xml
| 439 +
b/language/Greek/strings.xml
| 892 +-
b/language/Japanese/strings.xml
| 1867 +++-
b/language/Polish/strings.xml
| 249
b/language/Russian/langinfo.xml
| 22
b/language/Russian/strings.xml
| 455 +
b/language/Slovak/strings.xml
| 1738 +---
b/language/Slovenian/strings.xml
| 454 +
b/language/Swedish/strings.xml
| 434 +
b/lib/addons/library.xbmc.addon/Makefile.in
| 27
b/lib/addons/library.xbmc.addon/libXBMC_addon.cpp
| 152
b/lib/addons/library.xbmc.addon/project/VS2010Express/libXBMC_addon.vcxproj
| 89
b/lib/addons/library.xbmc.addon/project/VS2010Express/libXBMC_addon.vcxproj.filters
| 19
b/lib/addons/library.xbmc.gui/Makefile.in
| 27
b/lib/addons/library.xbmc.gui/libXBMC_gui.cpp
| 673 +
b/lib/addons/library.xbmc.gui/project/VS2010Express/libXBMC_gui.vcxproj
| 86
b/lib/addons/library.xbmc.gui/project/VS2010Express/libXBMC_gui.vcxproj.filters
| 14
b/lib/addons/library.xbmc.pvr/Makefile.in
| 27
b/lib/addons/library.xbmc.pvr/libXBMC_pvr.cpp
| 181
b/lib/addons/library.xbmc.pvr/project/VS2010Express/libXBMC_pvr.vcxproj
| 86
b/lib/addons/library.xbmc.pvr/project/VS2010Express/libXBMC_pvr.vcxproj.filters
| 18
b/lib/cmyth/Win32/libcmyth.def
| 67
b/lib/cmyth/Win32/libcmyth.vcxproj
| 6
b/lib/cmyth/include/cmyth/cmyth.h
| 156
b/lib/cmyth/include/refmem/atomic.h
| 2
b/lib/cmyth/libcmyth/cmyth_local.h
| 81
b/lib/cmyth/libcmyth/connection.c
| 175
b/lib/cmyth/libcmyth/event.c
| 22
b/lib/cmyth/libcmyth/file.c
| 133
b/lib/cmyth/libcmyth/livetv.c
| 42
b/lib/cmyth/libcmyth/mysql_query.c
| 1
b/lib/cmyth/libcmyth/mythtv_mysql.c
| 1182 ++
b/lib/cmyth/libcmyth/proginfo.c
| 28
b/lib/cmyth/libcmyth/proglist.c
| 350
b/lib/cmyth/libcmyth/socket.c
| 4
b/lib/platform/os.h
| 38
b/lib/platform/posix/os-socket.h
| 326
b/lib/platform/posix/os-threads.h
| 119
b/lib/platform/posix/os-types.h
| 54
b/lib/platform/posix/serialport.cpp
| 193
b/lib/platform/sockets/serialport.h
| 115
b/lib/platform/sockets/socket.h
| 228
b/lib/platform/sockets/tcp.h
| 130
b/lib/platform/threads/mutex.h
| 353
b/lib/platform/threads/threads.h
| 152
b/lib/platform/util/StdString.h
| 4337 ++++++++++
b/lib/platform/util/baudrate.h
| 211
b/lib/platform/util/buffer.h
| 98
b/lib/platform/util/timeutils.h
| 122
b/lib/platform/windows/dlfcn-win32.cpp
| 263
b/lib/platform/windows/dlfcn-win32.h
| 46
b/lib/platform/windows/os-socket.h
| 297
b/lib/platform/windows/os-threads.cpp
| 136
b/lib/platform/windows/os-threads.h
| 65
b/lib/platform/windows/os-types.h
| 80
b/lib/platform/windows/serialport.cpp
| 211
b/lib/platform/windows/stdint.h
| 247
b/project/VS2010Express/XBMC.vcxproj
| 122
b/project/VS2010Express/XBMC.vcxproj.filters
| 337
b/system/PVRDemoAddonSettings.xml
| 460 +
b/system/keymaps/keyboard.xml
| 56
b/system/keymaps/remote.xml
| 154
b/system/playercorefactory.xml
| 3
b/xbmc/Application.cpp
| 119
b/xbmc/Application.h
| 8
b/xbmc/ApplicationMessenger.cpp
| 29
b/xbmc/ApplicationMessenger.h
| 7
b/xbmc/FileItem.cpp
| 349
b/xbmc/FileItem.h
| 72
b/xbmc/GUIInfoManager.cpp
| 628 +
b/xbmc/GUIInfoManager.h
| 121
b/xbmc/GUIViewControl.cpp
| 5
b/xbmc/GUIViewState.cpp
| 5
b/xbmc/SortFileItem.cpp
| 18
b/xbmc/SortFileItem.h
| 2
b/xbmc/URL.cpp
| 3
b/xbmc/Util.cpp
| 36
b/xbmc/Util.h
| 4
b/xbmc/XBDateTime.cpp
| 39
b/xbmc/XBDateTime.h
| 3
b/xbmc/addons/Addon.cpp
| 6
b/xbmc/addons/Addon.h
| 5
b/xbmc/addons/AddonCallbacks.cpp
| 142
b/xbmc/addons/AddonCallbacks.h
| 292
b/xbmc/addons/AddonCallbacksAddon.cpp
| 359
b/xbmc/addons/AddonCallbacksAddon.h
| 109
b/xbmc/addons/AddonCallbacksGUI.cpp
| 1762 ++++
b/xbmc/addons/AddonCallbacksGUI.h
| 225
b/xbmc/addons/AddonCallbacksPVR.cpp
| 311
b/xbmc/addons/AddonCallbacksPVR.h
| 153
b/xbmc/addons/AddonDatabase.cpp
| 8
b/xbmc/addons/AddonDatabase.h
| 4
b/xbmc/addons/AddonDll.h
| 16
b/xbmc/addons/AddonManager.cpp
| 77
b/xbmc/addons/AddonManager.h
| 8
b/xbmc/addons/AddonStatusHandler.cpp
| 2
b/xbmc/addons/DllPVRClient.h
| 30
b/xbmc/addons/GUIDialogAddonInfo.cpp
| 17
b/xbmc/addons/Makefile
| 4
b/xbmc/addons/Skin.cpp
| 1
b/xbmc/addons/include/xbmc_pvr_dll.h
| 441 +
b/xbmc/addons/include/xbmc_pvr_types.h
| 412
b/xbmc/cores/DllLoader/DllLoaderContainer.cpp
| 2
b/xbmc/cores/DllLoader/Win32DllLoader.cpp
| 3
b/xbmc/cores/IPlayer.h
| 6
b/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
| 26
b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.h
| 14
b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
| 1
b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxHTSP.cpp
| 4
b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxPVRClient.cpp
| 317
b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxPVRClient.h
| 108
b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxPacket.h
| 37
b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxUtils.h
| 2
b/xbmc/cores/dvdplayer/DVDDemuxers/DVDFactoryDemuxer.cpp
| 36
b/xbmc/cores/dvdplayer/DVDDemuxers/Makefile.in
| 1
b/xbmc/cores/dvdplayer/DVDInputStreams/DVDFactoryInputStream.cpp
| 3
b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStream.h
| 14
b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHTSP.cpp
| 34
b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamHTSP.h
| 15
b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.cpp
| 294
b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamPVRManager.h
| 107
b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.cpp
| 9
b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamTV.h
| 7
b/xbmc/cores/dvdplayer/DVDInputStreams/Makefile
| 1
b/xbmc/cores/dvdplayer/DVDMessage.h
| 3
b/xbmc/cores/dvdplayer/DVDPlayer.cpp
| 324
b/xbmc/cores/dvdplayer/DVDPlayer.h
| 24
b/xbmc/cores/dvdplayer/DVDSubtitles/SamiTagConvertor.cpp
| 242
b/xbmc/cores/dvdplayer/DVDSubtitles/SamiTagConvertor.h
| 68
b/xbmc/cores/dvdplayer/Edl.cpp
| 5
b/xbmc/cores/paplayer/CodecFactory.cpp
| 3
b/xbmc/dialogs/GUIDialogContextMenu.h
| 20
b/xbmc/dialogs/GUIDialogExtendedProgressBar.cpp
| 103
b/xbmc/dialogs/GUIDialogExtendedProgressBar.h
| 44
b/xbmc/dialogs/GUIDialogMediaSource.cpp
| 10
b/xbmc/dialogs/GUIDialogNumeric.cpp
| 9
b/xbmc/dialogs/GUIDialogNumeric.h
| 2
b/xbmc/dialogs/GUIDialogSeekBar.cpp
| 2
b/xbmc/dialogs/Makefile
| 1
b/xbmc/epg/Epg.cpp
| 999 ++
b/xbmc/epg/Epg.h
| 367
b/xbmc/epg/EpgContainer.cpp
| 624 +
b/xbmc/epg/EpgContainer.h
| 296
b/xbmc/epg/EpgDatabase.cpp
| 449 +
b/xbmc/epg/EpgDatabase.h
| 163
b/xbmc/epg/EpgInfoTag.cpp
| 974 ++
b/xbmc/epg/EpgInfoTag.h
| 469 +
b/xbmc/epg/EpgSearchFilter.cpp
| 246
b/xbmc/epg/EpgSearchFilter.h
| 81
b/xbmc/epg/GUIEPGGridContainer.cpp
| 1915 ++++
b/xbmc/epg/GUIEPGGridContainer.h
| 223
b/xbmc/epg/Makefile
| 13
b/xbmc/filesystem/AddonsDirectory.cpp
| 7
b/xbmc/filesystem/DllLibCMyth.h
| 21
b/xbmc/filesystem/FactoryDirectory.cpp
| 6
b/xbmc/filesystem/FileFactory.cpp
| 6
b/xbmc/filesystem/ILiveTV.h
| 4
b/xbmc/filesystem/Makefile.in
| 2
b/xbmc/filesystem/MythFile.cpp
| 8
b/xbmc/filesystem/MythFile.h
| 4
b/xbmc/filesystem/PVRDirectory.cpp
| 126
b/xbmc/filesystem/PVRDirectory.h
| 46
b/xbmc/filesystem/PVRFile.cpp
| 324
b/xbmc/filesystem/PVRFile.h
| 81
b/xbmc/filesystem/Slingbox.cpp
| 4
b/xbmc/filesystem/Slingbox.h
| 4
b/xbmc/filesystem/VTPFile.cpp
| 4
b/xbmc/filesystem/VTPFile.h
| 4
b/xbmc/guilib/GUIControl.h
| 1
b/xbmc/guilib/GUIControlFactory.cpp
| 14
b/xbmc/guilib/GUIDialog.cpp
| 13
b/xbmc/guilib/GUIDialog.h
| 3
b/xbmc/guilib/GUIEditControl.cpp
| 16
b/xbmc/guilib/GUIEditControl.h
| 1
b/xbmc/guilib/GUILabelControl.cpp
| 7
b/xbmc/guilib/GUILabelControl.h
| 1
b/xbmc/guilib/GUIListGroup.cpp
| 44
b/xbmc/guilib/GUIListGroup.h
| 2
b/xbmc/guilib/GUIListItemLayout.cpp
| 14
b/xbmc/guilib/GUIListItemLayout.h
| 2
b/xbmc/guilib/GUIListLabel.cpp
| 12
b/xbmc/guilib/GUIListLabel.h
| 1
b/xbmc/guilib/GUIProgressControl.cpp
| 4
b/xbmc/guilib/GUIProgressControl.h
| 1
b/xbmc/guilib/GUIWindow.cpp
| 4
b/xbmc/guilib/GUIWindow.h
| 2
b/xbmc/guilib/Key.h
| 36
b/xbmc/input/ButtonTranslator.cpp
| 29
b/xbmc/input/XBIRRemote.h
| 5
b/xbmc/interfaces/Builtins.cpp
| 41
b/xbmc/interfaces/json-rpc/JSONServiceDescription.cpp
| 14
b/xbmc/interfaces/json-rpc/JSONUtils.h
| 26
b/xbmc/interfaces/json-rpc/Makefile
| 1
b/xbmc/interfaces/json-rpc/PVROperations.cpp
| 207
b/xbmc/interfaces/json-rpc/PVROperations.h
| 41
b/xbmc/interfaces/json-rpc/ServiceDescription.h
| 81
b/xbmc/interfaces/json-rpc/methods.json
| 81
b/xbmc/interfaces/python/xbmcmodule/xbmcmodule.cpp
| 55
b/xbmc/pvr/Makefile
| 8
b/xbmc/pvr/PVRDatabase.cpp
| 935 ++
b/xbmc/pvr/PVRDatabase.h
| 258
b/xbmc/pvr/PVRGUIInfo.cpp
| 864 +
b/xbmc/pvr/PVRGUIInfo.h
| 172
b/xbmc/pvr/PVRManager.cpp
| 1116 ++
b/xbmc/pvr/PVRManager.h
| 595 +
b/xbmc/pvr/addons/Makefile
| 7
b/xbmc/pvr/addons/PVRClient.cpp
| 1137 ++
b/xbmc/pvr/addons/PVRClient.h
| 499 +
b/xbmc/pvr/addons/PVRClients.cpp
| 1365 +++
b/xbmc/pvr/addons/PVRClients.h
| 681 +
b/xbmc/pvr/channels/Makefile
| 10
b/xbmc/pvr/channels/PVRChannel.cpp
| 797 +
b/xbmc/pvr/channels/PVRChannel.h
| 513 +
b/xbmc/pvr/channels/PVRChannelGroup.cpp
| 1073 ++
b/xbmc/pvr/channels/PVRChannelGroup.h
| 467 +
b/xbmc/pvr/channels/PVRChannelGroupInternal.cpp
| 398
b/xbmc/pvr/channels/PVRChannelGroupInternal.h
| 184
b/xbmc/pvr/channels/PVRChannelGroups.cpp
| 509 +
b/xbmc/pvr/channels/PVRChannelGroups.h
| 211
b/xbmc/pvr/channels/PVRChannelGroupsContainer.cpp
| 336
b/xbmc/pvr/channels/PVRChannelGroupsContainer.h
| 215
b/xbmc/pvr/dialogs/GUIDialogPVRChannelManager.cpp
| 839 +
b/xbmc/pvr/dialogs/GUIDialogPVRChannelManager.h
| 85
b/xbmc/pvr/dialogs/GUIDialogPVRChannelsOSD.cpp
| 239
b/xbmc/pvr/dialogs/GUIDialogPVRChannelsOSD.h
| 53
b/xbmc/pvr/dialogs/GUIDialogPVRCutterOSD.cpp
| 62
b/xbmc/pvr/dialogs/GUIDialogPVRCutterOSD.h
| 37
b/xbmc/pvr/dialogs/GUIDialogPVRDirectorOSD.cpp
| 68
b/xbmc/pvr/dialogs/GUIDialogPVRDirectorOSD.h
| 37
b/xbmc/pvr/dialogs/GUIDialogPVRGroupManager.cpp
| 388
b/xbmc/pvr/dialogs/GUIDialogPVRGroupManager.h
| 73
b/xbmc/pvr/dialogs/GUIDialogPVRGuideInfo.cpp
| 224
b/xbmc/pvr/dialogs/GUIDialogPVRGuideInfo.h
| 56
b/xbmc/pvr/dialogs/GUIDialogPVRGuideOSD.cpp
| 165
b/xbmc/pvr/dialogs/GUIDialogPVRGuideOSD.h
| 49
b/xbmc/pvr/dialogs/GUIDialogPVRGuideSearch.cpp
| 369
b/xbmc/pvr/dialogs/GUIDialogPVRGuideSearch.h
| 58
b/xbmc/pvr/dialogs/GUIDialogPVRRecordingInfo.cpp
| 61
b/xbmc/pvr/dialogs/GUIDialogPVRRecordingInfo.h
| 41
b/xbmc/pvr/dialogs/GUIDialogPVRTimerSettings.cpp
| 389
b/xbmc/pvr/dialogs/GUIDialogPVRTimerSettings.h
| 61
b/xbmc/pvr/dialogs/Makefile
| 15
b/xbmc/pvr/recordings/Makefile
| 7
b/xbmc/pvr/recordings/PVRRecording.cpp
| 210
b/xbmc/pvr/recordings/PVRRecording.h
| 107
b/xbmc/pvr/recordings/PVRRecordings.cpp
| 355
b/xbmc/pvr/recordings/PVRRecordings.h
| 70
b/xbmc/pvr/timers/Makefile
| 7
b/xbmc/pvr/timers/PVRTimerInfoTag.cpp
| 628 +
b/xbmc/pvr/timers/PVRTimerInfoTag.h
| 181
b/xbmc/pvr/timers/PVRTimers.cpp
| 755 +
b/xbmc/pvr/timers/PVRTimers.h
| 198
b/xbmc/pvr/windows/GUIViewStatePVR.cpp
| 69
b/xbmc/pvr/windows/GUIViewStatePVR.h
| 40
b/xbmc/pvr/windows/GUIWindowPVR.cpp
| 288
b/xbmc/pvr/windows/GUIWindowPVR.h
| 89
b/xbmc/pvr/windows/GUIWindowPVRChannels.cpp
| 581 +
b/xbmc/pvr/windows/GUIWindowPVRChannels.h
| 75
b/xbmc/pvr/windows/GUIWindowPVRCommon.cpp
| 826 +
b/xbmc/pvr/windows/GUIWindowPVRCommon.h
| 141
b/xbmc/pvr/windows/GUIWindowPVRGuide.cpp
| 456 +
b/xbmc/pvr/windows/GUIWindowPVRGuide.h
| 72
b/xbmc/pvr/windows/GUIWindowPVRRecordings.cpp
| 322
b/xbmc/pvr/windows/GUIWindowPVRRecordings.h
| 62
b/xbmc/pvr/windows/GUIWindowPVRSearch.cpp
| 288
b/xbmc/pvr/windows/GUIWindowPVRSearch.h
| 61
b/xbmc/pvr/windows/GUIWindowPVRTimers.cpp
| 284
b/xbmc/pvr/windows/GUIWindowPVRTimers.h
| 56
b/xbmc/pvr/windows/Makefile
| 13
b/xbmc/pvrclients/Makefile.include.in
| 29
b/xbmc/pvrclients/MediaPortal/Cards.cpp
| 81
b/xbmc/pvrclients/MediaPortal/Cards.h
| 63
b/xbmc/pvrclients/MediaPortal/FileUtils.h
| 10
b/xbmc/pvrclients/MediaPortal/GenreTable.cpp
| 143
b/xbmc/pvrclients/MediaPortal/GenreTable.h
| 45
b/xbmc/pvrclients/MediaPortal/Makefile.in
| 33
b/xbmc/pvrclients/MediaPortal/README
| 162
b/xbmc/pvrclients/MediaPortal/Socket.cpp
| 755 +
b/xbmc/pvrclients/MediaPortal/Socket.h
| 302
b/xbmc/pvrclients/MediaPortal/channels.cpp
| 74
b/xbmc/pvrclients/MediaPortal/channels.h
| 48
b/xbmc/pvrclients/MediaPortal/client.cpp
| 734 +
b/xbmc/pvrclients/MediaPortal/client.h
| 71
b/xbmc/pvrclients/MediaPortal/epg.cpp
| 149
b/xbmc/pvrclients/MediaPortal/epg.h
| 82
b/xbmc/pvrclients/MediaPortal/lib/tinyxml/Makefile
| 9
b/xbmc/pvrclients/MediaPortal/lib/tinyxml/readme.txt
| 8
b/xbmc/pvrclients/MediaPortal/lib/tinyxml/tinystr.cpp
| 111
b/xbmc/pvrclients/MediaPortal/lib/tinyxml/tinystr.h
| 305
b/xbmc/pvrclients/MediaPortal/lib/tinyxml/tinyxml.cpp
| 1886 ++++
b/xbmc/pvrclients/MediaPortal/lib/tinyxml/tinyxml.h
| 1807 ++++
b/xbmc/pvrclients/MediaPortal/lib/tinyxml/tinyxmlerror.cpp
| 52
b/xbmc/pvrclients/MediaPortal/lib/tinyxml/tinyxmlparser.cpp
| 1638 +++
b/xbmc/pvrclients/MediaPortal/os-dependent.h
| 37
b/xbmc/pvrclients/MediaPortal/posix/os_posix.h
| 30
b/xbmc/pvrclients/MediaPortal/project/VS2010Express/XBMC_MPTV.vcxproj
| 167
b/xbmc/pvrclients/MediaPortal/project/VS2010Express/XBMC_MPTV.vcxproj.filters
| 143
b/xbmc/pvrclients/MediaPortal/pvrclient-mediaportal.cpp
| 1452 +++
b/xbmc/pvrclients/MediaPortal/pvrclient-mediaportal.h
| 124
b/xbmc/pvrclients/MediaPortal/recordings.cpp
| 289
b/xbmc/pvrclients/MediaPortal/recordings.h
| 128
b/xbmc/pvrclients/MediaPortal/timers.cpp
| 506 +
b/xbmc/pvrclients/MediaPortal/timers.h
| 132
b/xbmc/pvrclients/MediaPortal/uri.cpp
| 221
b/xbmc/pvrclients/MediaPortal/uri.h
| 71
b/xbmc/pvrclients/MediaPortal/utils.cpp
| 133
b/xbmc/pvrclients/MediaPortal/utils.h
| 55
b/xbmc/pvrclients/MediaPortal/windows/FileUtils.cpp
| 91
b/xbmc/pvrclients/MediaPortal/windows/WindowsUtils.cpp
| 104
b/xbmc/pvrclients/MediaPortal/windows/WindowsUtils.h
| 27
b/xbmc/pvrclients/MediaPortal/windows/os_windows.h
| 30
b/xbmc/pvrclients/mythtv-cmyth/Makefile.in
| 34
b/xbmc/pvrclients/mythtv-cmyth/boost_d.txt
| 4
b/xbmc/pvrclients/mythtv-cmyth/boost_win32_dependency.bat
| 48
b/xbmc/pvrclients/mythtv-cmyth/client.cpp
| 743 +
b/xbmc/pvrclients/mythtv-cmyth/client.h
| 67
b/xbmc/pvrclients/mythtv-cmyth/cppmyth.h
| 12
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythChannel.cpp
| 79
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythChannel.h
| 26
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythConnection.cpp
| 317
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythConnection.h
| 51
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythDatabase.cpp
| 224
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythDatabase.h
| 45
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythEventHandler.cpp
| 258
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythEventHandler.h
| 26
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythFile.cpp
| 68
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythFile.h
| 24
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythPointer.h
| 48
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythProgramInfo.cpp
| 169
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythProgramInfo.h
| 37
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythRecorder.cpp
| 223
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythRecorder.h
| 35
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythSGFile.cpp
| 43
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythSGFile.h
| 21
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythSignal.cpp
| 14
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythSignal.h
| 21
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythTimer.cpp
| 378
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythTimer.h
| 138
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythTimestamp.cpp
| 88
b/xbmc/pvrclients/mythtv-cmyth/cppmyth/MythTimestamp.h
| 28
b/xbmc/pvrclients/mythtv-cmyth/fileOps.cpp
| 313
b/xbmc/pvrclients/mythtv-cmyth/fileOps.h
| 66
b/xbmc/pvrclients/mythtv-cmyth/libcmyth.h
| 1642 +++
b/xbmc/pvrclients/mythtv-cmyth/project/VS2010Express/XBMC_mythtc_cmyth.vcxproj
| 163
b/xbmc/pvrclients/mythtv-cmyth/project/VS2010Express/XBMC_mythtc_cmyth.vcxproj.filters
| 141
b/xbmc/pvrclients/mythtv-cmyth/pvrclient-mythtv.cpp
| 1291 ++
b/xbmc/pvrclients/mythtv-cmyth/pvrclient-mythtv.h
| 109
b/xbmc/pvrclients/mythtv-cmyth/recordingRules.cpp
| 312
b/xbmc/pvrclients/mythtv-cmyth/recordingRules.h
| 35
b/xbmc/pvrclients/mythtv-cmyth/tools.h
| 99
b/xbmc/pvrclients/mythtv/Makefile.in
| 25
b/xbmc/pvrclients/mythtv/MythXml.cpp
| 144
b/xbmc/pvrclients/mythtv/MythXml.h
| 34
b/xbmc/pvrclients/mythtv/client.cpp
| 482 +
b/xbmc/pvrclients/mythtv/client.h
| 48
b/xbmc/pvrclients/mythtv/libmythxml/GetChannelListCommand.h
| 25
b/xbmc/pvrclients/mythtv/libmythxml/GetChannelListParameters.h
| 19
b/xbmc/pvrclients/mythtv/libmythxml/GetChannelListResult.cpp
| 53
b/xbmc/pvrclients/mythtv/libmythxml/GetChannelListResult.h
| 17
b/xbmc/pvrclients/mythtv/libmythxml/GetNumChannelsCommand.h
| 24
b/xbmc/pvrclients/mythtv/libmythxml/GetNumChannelsParameters.h
| 19
b/xbmc/pvrclients/mythtv/libmythxml/GetNumChannelsResult.cpp
| 54
b/xbmc/pvrclients/mythtv/libmythxml/GetNumChannelsResult.h
| 23
b/xbmc/pvrclients/mythtv/libmythxml/GetProgramGuideCommand.h
| 18
b/xbmc/pvrclients/mythtv/libmythxml/GetProgramGuideParameters.cpp
| 43
b/xbmc/pvrclients/mythtv/libmythxml/GetProgramGuideParameters.h
| 38
b/xbmc/pvrclients/mythtv/libmythxml/GetProgramGuideResult.cpp
| 331
b/xbmc/pvrclients/mythtv/libmythxml/GetProgramGuideResult.h
| 25
b/xbmc/pvrclients/mythtv/libmythxml/Makefile
| 16
b/xbmc/pvrclients/mythtv/libmythxml/MythXmlCommand.cpp
| 42
b/xbmc/pvrclients/mythtv/libmythxml/MythXmlCommand.h
| 49
b/xbmc/pvrclients/mythtv/libmythxml/MythXmlCommandParameters.cpp
| 33
b/xbmc/pvrclients/mythtv/libmythxml/MythXmlCommandParameters.h
| 43
b/xbmc/pvrclients/mythtv/libmythxml/MythXmlCommandResult.h
| 35
b/xbmc/pvrclients/mythtv/libmythxml/SChannel.h
| 18
b/xbmc/pvrclients/mythtv/libmythxml/SEpg.h
| 29
b/xbmc/pvrclients/pvr-demo/Makefile.in
| 23
b/xbmc/pvrclients/pvr-demo/PVRDemoData.cpp
| 360
b/xbmc/pvrclients/pvr-demo/PVRDemoData.h
| 94
b/xbmc/pvrclients/pvr-demo/client.cpp
| 290
b/xbmc/pvrclients/pvr-demo/client.h
| 30
b/xbmc/pvrclients/tvheadend/HTSPConnection.cpp
| 364
b/xbmc/pvrclients/tvheadend/HTSPConnection.h
| 76
b/xbmc/pvrclients/tvheadend/HTSPData.cpp
| 1117 ++
b/xbmc/pvrclients/tvheadend/HTSPData.h
| 121
b/xbmc/pvrclients/tvheadend/HTSPDemux.cpp
| 539 +
b/xbmc/pvrclients/tvheadend/HTSPDemux.h
| 69
b/xbmc/pvrclients/tvheadend/HTSPTypes.h
| 234
b/xbmc/pvrclients/tvheadend/Makefile.in
| 25
b/xbmc/pvrclients/tvheadend/client.cpp
| 554 +
b/xbmc/pvrclients/tvheadend/client.h
| 46
b/xbmc/pvrclients/tvheadend/project/VS2010Express/XBMC_tvheadend.vcxproj
| 112
b/xbmc/pvrclients/tvheadend/project/VS2010Express/XBMC_tvheadend.vcxproj.filters
| 54
b/xbmc/pvrclients/vdr-vnsi/COPYING
| 340
b/xbmc/pvrclients/vdr-vnsi/Makefile.in
| 29
b/xbmc/pvrclients/vdr-vnsi/README
| 71
b/xbmc/pvrclients/vdr-vnsi/VNSIChannelScan.cpp
| 598 +
b/xbmc/pvrclients/vdr-vnsi/VNSIChannelScan.h
| 95
b/xbmc/pvrclients/vdr-vnsi/VNSIData.cpp
| 986 ++
b/xbmc/pvrclients/vdr-vnsi/VNSIData.h
| 94
b/xbmc/pvrclients/vdr-vnsi/VNSIDemux.cpp
| 487 +
b/xbmc/pvrclients/vdr-vnsi/VNSIDemux.h
| 66
b/xbmc/pvrclients/vdr-vnsi/VNSIRecording.cpp
| 180
b/xbmc/pvrclients/vdr-vnsi/VNSIRecording.h
| 51
b/xbmc/pvrclients/vdr-vnsi/VNSISession.cpp
| 371
b/xbmc/pvrclients/vdr-vnsi/VNSISession.h
| 100
b/xbmc/pvrclients/vdr-vnsi/client.cpp
| 642 +
b/xbmc/pvrclients/vdr-vnsi/client.h
| 45
b/xbmc/pvrclients/vdr-vnsi/project/VS2010Express/XBMC_VDR_vnsi.vcxproj
| 126
b/xbmc/pvrclients/vdr-vnsi/project/VS2010Express/XBMC_VDR_vnsi.vcxproj.filters
| 79
b/xbmc/pvrclients/vdr-vnsi/requestpacket.cpp
| 146
b/xbmc/pvrclients/vdr-vnsi/requestpacket.h
| 62
b/xbmc/pvrclients/vdr-vnsi/responsepacket.cpp
| 161
b/xbmc/pvrclients/vdr-vnsi/responsepacket.h
| 79
b/xbmc/pvrclients/vdr-vnsi/tools.cpp
| 52
b/xbmc/pvrclients/vdr-vnsi/tools.h
| 26
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/COPYING
| 340
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/HISTORY
| 6
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/Makefile
| 98
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/README
| 26
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/bitstream.c
| 131
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/bitstream.h
| 50
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/config.c
| 42
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/config.h
| 81
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/cxsocket.c
| 174
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/cxsocket.h
| 65
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer.c
| 362
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer.h
| 307
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_AAC.c
| 281
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_AAC.h
| 62
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_AC3.c
| 371
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_AC3.h
| 79
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_DTS.c
| 45
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_DTS.h
| 45
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_MPEGAudio.c
| 396
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_MPEGAudio.h
| 118
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_MPEGVideo.c
| 414
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_MPEGVideo.h
| 68
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_Subtitle.c
| 139
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_Subtitle.h
| 53
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_Teletext.c
| 113
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_Teletext.h
| 50
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_h264.c
| 455 +
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/demuxer_h264.h
| 99
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/hash.c
| 111
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/hash.h
| 37
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/patches/vdr-wirbelscan-0.0.5-pre11e-AddServiceInterface.diff
| 426
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/receiver.c
| 1212 ++
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/receiver.h
| 116
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/recordingscache.c
| 70
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/recordingscache.h
| 56
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/recplayer.c
| 295
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/recplayer.h
| 80
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/requestpacket.c
| 123
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/requestpacket.h
| 73
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/responsepacket.c
| 214
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/responsepacket.h
| 75
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/vnsi.c
| 138
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/vnsi.h
| 59
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/vnsiclient.c
| 1926 ++++
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/vnsiclient.h
| 168
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/vnsicommand.h
| 127
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/vnsiserver.c
| 271
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/vnsiserver.h
| 57
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/vnsiserver/allowed_hosts.conf
| 13
b/xbmc/pvrclients/vdr-vnsi/vdr-plugin-vnsiserver/wirbelscanservice.h
| 57
b/xbmc/pvrclients/vdr-vnsi/vnsicommand.h
| 122
b/xbmc/settings/AdvancedSettings.cpp
| 61
b/xbmc/settings/AdvancedSettings.h
| 18
b/xbmc/settings/GUIDialogSettings.cpp
| 130
b/xbmc/settings/GUIDialogSettings.h
| 10
b/xbmc/settings/GUISettings.cpp
| 90
b/xbmc/settings/GUISettings.h
| 12
b/xbmc/settings/GUIWindowSettingsCategory.cpp
| 89
b/xbmc/settings/GUIWindowSettingsCategory.h
| 2
b/xbmc/settings/Settings.cpp
| 2
b/xbmc/settings/VideoSettings.h
| 3
b/xbmc/system.h
| 1
b/xbmc/utils/Makefile
| 2
b/xbmc/utils/MathUtils.h
| 8
b/xbmc/utils/Observer.cpp
| 189
b/xbmc/utils/Observer.h
| 136
b/xbmc/utils/TextSearch.cpp
| 166
b/xbmc/utils/TextSearch.h
| 50
b/xbmc/utils/URIUtils.cpp
| 15
b/xbmc/utils/URIUtils.h
| 1
b/xbmc/utils/XMLUtils.cpp
| 8
b/xbmc/utils/XMLUtils.h
| 1
b/xbmc/utils/log.cpp
| 15
b/xbmc/video/GUIViewStateVideo.cpp
| 2
b/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.cpp
| 5
b/xbmc/video/dialogs/GUIDialogVideoOSD.cpp
| 12
b/xbmc/video/dialogs/GUIDialogVideoSettings.cpp
| 6
b/xbmc/video/windows/GUIWindowFullScreen.cpp
| 245
b/xbmc/video/windows/GUIWindowFullScreen.h
| 4
b/xbmc/video/windows/GUIWindowVideoBase.cpp
| 63
b/xbmc/win32/stdbool.h
| 53
b/xbmc/windowing/X11/WinSystemX11GLES.cpp
| 14
b/xbmc/windows/GUIMediaWindow.cpp
| 3
b/xbmc/windows/GUIWindowSystemInfo.cpp
| 19
lib/libhts/Win32/include/stdint.h
| 222
lib/libhts/Win32/libhts_2003.sln
| 21
lib/libhts/Win32/libhts_2003.vcproj
| 161
lib/libhts/Win32/libhts_2008.sln
| 20
lib/libhts/Win32/libhts_2008.vcproj
| 237
project/VS2010Express/XBMC
| 247
646 files changed, 110987 insertions(+), 3344 deletions(-)
--- NEW FILE xbmc-11.0-tsp-Eden-pvr.patch ---
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..ffc7f0e
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+*.pbxproj -crlf -diff
diff --git a/.gitignore b/.gitignore
index bcc3307..a82fba6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -42,6 +42,7 @@ config.log
*.vcxproj.*.user
*.vcxproj.user
*.obj
+*.idb
*ReSharper*
*.idb
@@ -62,16 +63,22 @@ config.log
.libs/
.deps/
+# Eclipse project files. Not needed as they are generated in two clicks if needed.
+.settings
+.project
+.cproject
+
# /
/.dummy
/.dummy.in
/Makefile
/Makefile.include
/aclocal.m4
-/autom4te.cache/
+autom4te.cache
/build-aux/config.guess
/build-aux/config.sub
/build-aux/install-sh
+/build-aux/ltmain.sh
/build-aux/missing
/build-aux/ltmain.sh
/autotools
@@ -110,6 +117,7 @@ config.log
/addons/visualization.waveform/Waveform_win32.vis
/addons/visualization.itunes/iTunes.mvis
/addons/script.module.pil/
+/addons/pvr.*/*.pvr
# /xbmc/guilib/
/xbmc/guilib/Makefile
@@ -145,6 +153,17 @@ config.log
/lib/asap/xbmc/xbmc_asap.res
+# /lib/addons/
+/lib/addons/library.xbmc.addon/Makefile
+/lib/addons/library.xbmc.gui/Makefile
+/lib/addons/library.xbmc.pvr/Makefile
+/lib/addons/library.xbmc.addon/project/VS2010Express/Release
+/lib/addons/library.xbmc.addon/project/VS2010Express/Debug
+/lib/addons/library.xbmc.gui/project/VS2010Express/Release
+/lib/addons/library.xbmc.gui/project/VS2010Express/Debug
+/lib/addons/library.xbmc.pvr/project/VS2010Express/Release
+/lib/addons/library.xbmc.pvr/project/VS2010Express/Debug
+
# /lib/cmyth/
lib/cmyth/Makefile
@@ -212,6 +231,11 @@ lib/cmyth/Makefile
/lib/libass/libass/Makefile.in
/lib/libass/libtool
/lib/libass/ltmain.sh
+/lib/libass/m4/libtool.m4
+/lib/libass/m4/ltoptions.m4
+/lib/libass/m4/ltsugar.m4
+/lib/libass/m4/ltversion.m4
+/lib/libass/m4/lt~obsolete.m4
/lib/libass/missing
/lib/libass/shave/libtool.m4
/lib/libass/shave/ltoptions.m4
@@ -295,6 +319,7 @@ lib/cmyth/Makefile
/lib/libapetag/config.h
/lib/libapetag/install-sh
/lib/libapetag/libtool
+/lib/libapetag/m4/lt~obsolete.m4
/lib/libapetag/stamp-h1
# /project
@@ -1123,6 +1148,17 @@ lib/cmyth/Makefile
/lib/libXDAAP/libXDAAP_win32/Debug
/lib/libXDAAP/libXDAAP_win32/Release
+# /xbmc/osx/
+/xbmc/osx/Makefile
+
+# /portable_data
+/portable_data
+
+# /xbmc/pvrclients
+/xbmc/pvrclients/Makefile.include
+/xbmc/pvrclients/*/.dependencies
+/xbmc/pvrclients/*/Makefile
+
/xbmc/screensavers/Makefile
/xbmc/screensavers/rsxs-0.9/Makefile
@@ -1220,3 +1256,21 @@ lib/cmyth/Makefile
/xbmc/visualizations/XBMCProjectM/libprojectM/config.inp
/xbmc/win32/git_rev.h
+
+/addons/library.xbmc.addon/libXBMC_addon.dll
+/addons/library.xbmc.addon/libXBMC_addon.lib
+/addons/library.xbmc.gui/libXBMC_gui.dll
+/addons/library.xbmc.gui/libXBMC_gui.lib
+/addons/library.xbmc.pvr/libXBMC_pvr.dll
+/addons/library.xbmc.pvr/libXBMC_pvr.lib
+
+/addons/pvr.team-mediaportal.tvserver/XBMC_MPTV.lib
+/addons/pvr.hts/XBMC_Tvheadend_win32.lib
+/addons/pvr.vdr.streamdev/XBMC_VDR_win32.lib
+
+/xbmc/pvrclients/MediaPortal/project/VS2010Express/Debug
+/xbmc/pvrclients/MediaPortal/project/VS2010Express/Release
+/xbmc/pvrclients/tvheadend/project/VS2010Express/Debug
+/xbmc/pvrclients/tvheadend/project/VS2010Express/Release
+/xbmc/pvrclients/vdr-streamdev/project/VS2010Express/Debug
+/xbmc/pvrclients/vdr-streamdev/project/VS2010Express/Release
diff --git a/Makefile.in b/Makefile.in
index 9d850e4..bfd10e0 100755
--- a/Makefile.in
+++ b/Makefile.in
@@ -42,6 +42,7 @@ DIRECTORY_ARCHIVES=$(DVDPLAYER_ARCHIVES) \
xbmc/cores/playercorefactory/playercorefactory.a \
xbmc/dbwrappers/dbwrappers.a \
xbmc/dialogs/dialogs.a \
+ xbmc/epg/epg.a \
xbmc/filesystem/MusicDatabaseDirectory/musicdatabasedirectory.a \
xbmc/filesystem/VideoDatabaseDirectory/videodatabasedirectory.a \
xbmc/filesystem/filesystem.a \
@@ -70,6 +71,13 @@ DIRECTORY_ARCHIVES=$(DVDPLAYER_ARCHIVES) \
xbmc/playlists/playlists.a \
xbmc/powermanagement/powermanagement.a \
xbmc/programs/programs.a \
+ xbmc/pvr/addons/pvraddons.a \
+ xbmc/pvr/channels/pvrchannels.a \
+ xbmc/pvr/dialogs/pvrdialogs.a \
+ xbmc/pvr/pvr.a \
+ xbmc/pvr/recordings/pvrrecordings.a \
+ xbmc/pvr/timers/pvrtimers.a \
+ xbmc/pvr/windows/pvrwindows.a \
xbmc/rendering/rendering.a \
xbmc/settings/settings.a \
xbmc/storage/storage.a \
@@ -157,6 +165,19 @@ ifneq (@DISABLE_GOOM@,1)
VIS_DIRS+=xbmc/visualizations/Goom
endif
+PVR_DIRS=\
+ xbmc/pvrclients/MediaPortal \
+ xbmc/pvrclients/mythtv \
+ xbmc/pvrclients/mythtv-cmyth \
+ xbmc/pvrclients/vdr-vnsi \
+ xbmc/pvrclients/tvheadend \
+ xbmc/pvrclients/pvr-demo
+
+LIBADDON_DIRS=\
+ lib/addons/library.xbmc.addon \
+ lib/addons/library.xbmc.pvr \
+ lib/addons/library.xbmc.gui \
+
CONFLUENCE_MEDIA=addons/skin.confluence/media
SKIN_DIRS=$(CONFLUENCE_MEDIA)
@@ -166,7 +187,7 @@ SKIN_DIRS+=$(TOUCHED_MEDIA)
endif
DIRS= $(BIN_DIRS) $(EC_DIRS) $(XBMCTEX_DIRS) $(DVDPCODECS_DIRS) $(PAPCODECS_DIRS) \
- $(LIB_DIRS) $(SS_DIRS) $(VIS_DIRS) $(SKIN_DIRS)
+ $(LIB_DIRS) $(SS_DIRS) $(VIS_DIRS) $(PVR_DIRS) $(LIBADDON_DIRS) $(SKIN_DIRS)
LIBS=@LIBS@
CFLAGS=@CFLAGS@
@@ -187,8 +208,8 @@ all : Makefile externals xbmc.bin xbmc-xrandr skins
include Makefile.include
-.PHONY : dllloader exports visualizations screensavers eventclients papcodecs \
- dvdpcodecs imagelib codecs externals force skins
+.PHONY : dllloader exports pvrclients visualizations screensavers eventclients \
+ papcodecs dvdpcodecs imagelib codecs externals force libaddon skins
# hack targets to keep build system up to date
Makefile : config.status $(addsuffix .in, $(AUTOGENERATED_MAKEFILES))
@@ -249,6 +270,17 @@ visualizations: $(VIS_DIRS)
screensavers: $(SS_DIRS)
[...126514 lines suppressed...]
+ if (item.GetPath().Left(17) == "pvr://recordings/")
+ {
+ if (!g_PVRManager.IsStarted())
+ return false;
+
+ /* For recordings we check here for a available stream URL */
+ CPVRRecording *tag = g_PVRRecordings->GetByPath(item.GetPath());
+ if (tag && !tag->m_strStreamURL.IsEmpty())
+ {
+ CStdString stream = tag->m_strStreamURL;
+
+ /* Isolate the folder from the filename */
+ size_t found = stream.find_last_of("/");
+ if (found == CStdString::npos)
+ found = stream.find_last_of("\\");
+
+ if (found != CStdString::npos)
+ {
+ /* Check here for asterix at the begin of the filename */
+ if (stream[found+1] == '*')
+ {
+ /* Create a "stack://" url with all files matching the extension */
+ CStdString ext = URIUtils::GetExtension(stream);
+ CStdString dir = stream.substr(0, found).c_str();
+
+ CFileItemList items;
+ CDirectory::GetDirectory(dir, items);
+ items.Sort(SORT_METHOD_FILE ,SORT_ORDER_ASC);
+
+ vector<int> stack;
+ for (int i = 0; i < items.Size(); ++i)
+ {
+ if (URIUtils::GetExtension(items[i]->GetPath()) == ext)
+ stack.push_back(i);
+ }
+
+ if (stack.size() > 0)
+ {
+ /* If we have a stack change the path of the item to it */
+ CStackDirectory dir;
+ CStdString stackPath = dir.ConstructStackPath(items, stack);
+ item.SetPath(stackPath);
+ }
+ }
+ else
+ {
+ /* If no asterix is present play only the given stream URL */
+ item.SetPath(stream);
+ }
+ }
+ else
+ {
+ CLog::Log(LOGERROR, "CGUIWindowTV: Can't open recording, no valid
filename!");
+ CGUIDialogOK::ShowAndGetInput(19033,0,19036,0);
+ return false;
+ }
+ }
+ }
+
PlayMovie(&item);
return true;
diff --git a/xbmc/win32/stdbool.h b/xbmc/win32/stdbool.h
new file mode 100644
index 0000000..87a5575
--- /dev/null
+++ b/xbmc/win32/stdbool.h
@@ -0,0 +1,53 @@
+/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING. If not, write to
+the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
+
+/* As a special exception, if you include this header file into source
+ files compiled by GCC, this header file does not by itself cause
+ the resulting executable to be covered by the GNU General Public
+ License. This exception does not however invalidate any other
+ reasons why the executable file might be covered by the GNU General
+ Public License. */
+
+/*
+* ISO C Standard: 7.16 Boolean type and values <stdbool.h>
+*/
+
+#ifndef _STDBOOL_H
+#define _STDBOOL_H
+
+#ifndef __cplusplus
+
+#define bool _Bool
+#define true 1
+#define false 0
+
+#else /* __cplusplus */
+
+/* Supporting <stdbool.h> in C++ is a GCC extension. */
+#define _Bool bool
+#define bool bool
+#define false false
+#define true true
+
+#endif /* __cplusplus */
+
+/* Signal that all the definitions are present. */
+#define __bool_true_false_are_defined 1
+
+#endif /* stdbool.h */
diff --git a/xbmc/windowing/X11/WinSystemX11GLES.cpp
b/xbmc/windowing/X11/WinSystemX11GLES.cpp
index a94906d..12fd010 100644
--- a/xbmc/windowing/X11/WinSystemX11GLES.cpp
+++ b/xbmc/windowing/X11/WinSystemX11GLES.cpp
@@ -135,20 +135,6 @@ bool CWinSystemX11GLES::DestroyWindowSystem()
m_eglSurface = NULL;
}
- // Needed???
- if (m_eglWindow)
- {
- XDestroyWindow(m_dpy, m_eglWindow);
- m_eglWindow = 0;
- }
-
- // Needed???
- if (m_wmWindow)
- {
- XDestroyWindow(m_dpy, m_wmWindow);
- m_wmWindow = 0;
- }
-
if (m_eglDisplay)
{
eglTerminate(m_eglDisplay);
diff --git a/xbmc/windows/GUIMediaWindow.cpp b/xbmc/windows/GUIMediaWindow.cpp
index 0af0748..3da19cd 100644
--- a/xbmc/windows/GUIMediaWindow.cpp
+++ b/xbmc/windows/GUIMediaWindow.cpp
@@ -825,7 +825,8 @@ bool CGUIMediaWindow::Update(const CStdString &strDirectory)
if (!bSelectedFound)
m_viewControl.SetSelectedItem(0);
- m_history.AddPath(m_vecItems->GetPath());
+ if (iWindow != WINDOW_PVR || (iWindow == WINDOW_PVR &&
m_vecItems->GetPath().Left(17) == "pvr://recordings/"))
+ m_history.AddPath(m_vecItems->GetPath());
//m_history.DumpPathHistory();
diff --git a/xbmc/windows/GUIWindowSystemInfo.cpp b/xbmc/windows/GUIWindowSystemInfo.cpp
index dcd1fef..b5d91f7 100644
--- a/xbmc/windows/GUIWindowSystemInfo.cpp
+++ b/xbmc/windows/GUIWindowSystemInfo.cpp
@@ -35,9 +35,10 @@
#define CONTROL_BT_NETWORK 96
#define CONTROL_BT_VIDEO 97
#define CONTROL_BT_HARDWARE 98
+#define CONTROL_BT_PVR 99
#define CONTROL_START CONTROL_BT_STORAGE
-#define CONTROL_END CONTROL_BT_HARDWARE
+#define CONTROL_END CONTROL_BT_PVR
CGUIWindowSystemInfo::CGUIWindowSystemInfo(void)
:CGUIWindow(WINDOW_SYSTEM_INFORMATION, "SettingsSystemInfo.xml")
@@ -151,6 +152,22 @@ void CGUIWindowSystemInfo::FrameMove()
SetControlLabel(i++, "%s: %s", 22012, SYSTEM_TOTAL_MEMORY);
SetControlLabel(i++, "%s: %s", 158, SYSTEM_FREE_MEMORY);
}
+ else if(m_section == CONTROL_BT_PVR)
+ {
+ SET_CONTROL_LABEL(40,g_localizeStrings.Get(19166));
+ int i = 2;
+
+ SetControlLabel(i++, "%s: %s", 19120, PVR_BACKEND_NUMBER);
+ i++; // empty line
+ SetControlLabel(i++, "%s: %s", 19012, PVR_BACKEND_NAME);
+ SetControlLabel(i++, "%s: %s", 19114, PVR_BACKEND_VERSION);
+ SetControlLabel(i++, "%s: %s", 19115, PVR_BACKEND_HOST);
+ SetControlLabel(i++, "%s: %s", 19116, PVR_BACKEND_DISKSPACE);
+ SetControlLabel(i++, "%s: %s", 19019, PVR_BACKEND_CHANNELS);
+ SetControlLabel(i++, "%s: %s", 19163, PVR_BACKEND_RECORDINGS);
+ SetControlLabel(i++, "%s: %s", 19025, PVR_BACKEND_TIMERS);
+ }
+
CGUIWindow::FrameMove();
}
--- xbmc-10.1-libpng-1.5.patch DELETED ---
--- xbmc-11.0-libpng-1.5-fix-plt-trn-get.patch DELETED ---