Fix bug when transferring PSP savedatas.

This commit is contained in:
codestation
2014-05-04 11:16:36 -04:30
parent bc88e1404b
commit bd80842dd5
6 changed files with 29 additions and 1 deletions

View File

@@ -402,7 +402,7 @@ void CmaEvent::vitaEventSendObject(vita_event_t *event, int eventId)
qDebug("Searching object with OHFI %d", ohfi);
metadata_t *metadata = NULL;
if(!m_db->getObjectMetadatas(ohfi, &metadata)) {
if(!m_db->getObjectList(ohfi, &metadata)) {
qWarning("Failed to find OHFI %d", ohfi);
VitaMTP_ReportResult(device, eventId, PTP_RC_VITA_Invalid_OHFI);
return;

View File

@@ -71,6 +71,7 @@ public:
virtual bool deleteEntry(int ohfi, int root_ohfi = 0) = 0;
virtual QString getAbsolutePath(int ohfi) = 0;
virtual QString getRelativePath(int ohfi) = 0;
virtual bool getObjectList(int ohfi, metadata_t **metadata) = 0;
virtual bool getObjectMetadata(int ohfi, metadata_t &metadata) = 0;
virtual int getObjectMetadatas(int parent_ohfi, metadata_t **metadata, int index = 0, int max_number = 0) = 0;
virtual qint64 getObjectSize(int ohfi) = 0;

View File

@@ -390,6 +390,24 @@ bool QListDB::deleteEntry(int ohfi, int root_ohfi)
return false;
}
bool QListDB::getObjectList(int ohfi, metadata_t **metadata)
{
find_data iters;
if(find(ohfi, iters)) {
CMAObject *object;
do {
object = *iters.it;
*metadata = &object->metadata;
metadata = &(*metadata)->next_metadata;
*metadata = NULL;
object = *++iters.it;
} while(iters.it != iters.end && object->metadata.ohfiParent >= OHFI_OFFSET);
return true;
}
return false;
}
int QListDB::getObjectMetadatas(int parent_ohfi, metadata_t **metadata, int index, int max_number)
{
QMutexLocker locker(&mutex);

View File

@@ -49,6 +49,7 @@ public:
int childObjectCount(int parent_ohfi);
bool deleteEntry(int ohfi, int root_ohfi = 0);
QString getAbsolutePath(int ohfi);
bool getObjectList(int ohfi, metadata_t **metadata);
bool getObjectMetadata(int ohfi, metadata_t &metadata);
int getObjectMetadatas(int parent_ohfi, metadata_t **metadata, int index = 0, int max_number = 0);
qint64 getObjectSize(int ohfi);

View File

@@ -1309,3 +1309,10 @@ bool SQLiteDB::insertVirtualEntries()
return true;
}
bool SQLiteDB::getObjectList(int ohfi, metadata_t **metadata)
{
Q_UNUSED(ohfi);
Q_UNUSED(metadata);
return false;
}

View File

@@ -53,6 +53,7 @@ public:
int childObjectCount(int parent_ohfi);
bool deleteEntry(int ohfi, int root_ohfi = 0);
QString getAbsolutePath(int ohfi);
bool getObjectList(int ohfi, metadata_t **metadata);
bool getObjectMetadata(int ohfi, metadata_t &metadata);
int getObjectMetadatas(int parent_ohfi, metadata_t **metadata, int index = 0, int max_number = 0);
qint64 getObjectSize(int ohfi);