Fix music streaming.

This commit is contained in:
codestation
2013-08-31 00:06:55 -04:30
parent bc9e84ad13
commit 1e4a8348d4
4 changed files with 14 additions and 7 deletions

View File

@@ -22,7 +22,6 @@ official CMA and also offer some features missing in the original one.
#### TODO: #### TODO:
* Complete categories for music. * Complete categories for music.
* SQLite backend for database. * SQLite backend for database.
* Fix streaming for music.
## Planned features ## Planned features
* **UPNP bridge**: connect an existing UPNP server to interface with the Vita * **UPNP bridge**: connect an existing UPNP server to interface with the Vita

View File

@@ -348,7 +348,7 @@ void CmaEvent::vitaEventSendObjectMetadata(vita_event_t *event, int eventId)
QMutexLocker locker(&db->mutex); QMutexLocker locker(&db->mutex);
metadata_t *meta; metadata_t *meta;
int count = db->filterObjects(browse.ohfiParent, &meta); // if meta is null, will return empty XML int count = db->filterObjects(browse.ohfiParent, &meta, browse.index, browse.numObjects); // if meta is null, will return empty XML
qDebug("Sending %i metadata filtered objects for OHFI %d", count, browse.ohfiParent); qDebug("Sending %i metadata filtered objects for OHFI %d", count, browse.ohfiParent);
if(VitaMTP_SendObjectMetadata(device, eventId, meta) != PTP_RC_OK) { // send all objects with OHFI parent if(VitaMTP_SendObjectMetadata(device, eventId, meta) != PTP_RC_OK) { // send all objects with OHFI parent

View File

@@ -406,7 +406,7 @@ void Database::dumpMetadataList(const metadata_t *p_head)
} }
} }
int Database::filterObjects(int ohfiParent, metadata_t **p_head) int Database::filterObjects(int ohfiParent, metadata_t **p_head, int index, int max_number)
{ {
QMutexLocker locker(&mutex); QMutexLocker locker(&mutex);
CMARootObject *parent = static_cast<CMARootObject *>(ohfiToObject(ohfiParent)); CMARootObject *parent = static_cast<CMARootObject *>(ohfiToObject(ohfiParent));
@@ -430,6 +430,7 @@ int Database::filterObjects(int ohfiParent, metadata_t **p_head)
} }
} }
int offset = 0;
int numObjects = 0; int numObjects = 0;
metadata_t temp = metadata_t(); metadata_t temp = metadata_t();
metadata_t *tail = &temp; metadata_t *tail = &temp;
@@ -437,9 +438,16 @@ int Database::filterObjects(int ohfiParent, metadata_t **p_head)
for(map_list::iterator root = object_list.begin(); root != object_list.end(); ++root) { for(map_list::iterator root = object_list.begin(); root != object_list.end(); ++root) {
for(root_list::iterator object = (*root).begin(); object != (*root).end(); ++object) { for(root_list::iterator object = (*root).begin(); object != (*root).end(); ++object) {
if(acceptFilteredObject(parent, *object, type)) { if(acceptFilteredObject(parent, *object, type)) {
tail->next_metadata = &(*object)->metadata; if(offset++ >= index)
tail = tail->next_metadata; {
numObjects++; tail->next_metadata = &(*object)->metadata;
tail = tail->next_metadata;
numObjects++;
}
if(max_number > 0 && numObjects >= max_number) {
break;
}
} }
} }

View File

@@ -49,7 +49,7 @@ public:
bool find(int ohfi, find_data &data); bool find(int ohfi, find_data &data);
void append(int parent_ohfi, CMAObject *object); void append(int parent_ohfi, CMAObject *object);
bool remove(const CMAObject *obj, int ohfi_root = 0); bool remove(const CMAObject *obj, int ohfi_root = 0);
int filterObjects(int ohfiParent, metadata_t **p_head); int filterObjects(int ohfiParent, metadata_t **p_head, int index = 0, int max_number = 0);
CMAObject *pathToObject(const char *path, int ohfiRoot); CMAObject *pathToObject(const char *path, int ohfiRoot);
int acceptFilteredObject(const CMAObject *parent, const CMAObject *current, int type); int acceptFilteredObject(const CMAObject *parent, const CMAObject *current, int type);