Fix sync issues with CmaClient and commented out some logging.
This commit is contained in:
@@ -32,8 +32,10 @@
|
|||||||
|
|
||||||
QMutex CmaClient::mutex;
|
QMutex CmaClient::mutex;
|
||||||
QMutex CmaClient::runner;
|
QMutex CmaClient::runner;
|
||||||
|
QMutex CmaClient::eloop;
|
||||||
Database CmaClient::db;
|
Database CmaClient::db;
|
||||||
bool CmaClient::is_running = true;
|
bool CmaClient::is_running = true;
|
||||||
|
bool CmaClient::event_loop_enabled = true;
|
||||||
|
|
||||||
metadata_t CmaClient::g_thumbmeta = {0, 0, 0, NULL, NULL, 0, 0, 0, Thumbnail, {{18, 144, 80, 0, 1, 1.0f, 2}}, NULL};
|
metadata_t CmaClient::g_thumbmeta = {0, 0, 0, NULL, NULL, 0, 0, 0, Thumbnail, {{18, 144, 80, 0, 1, 1.0f, 2}}, NULL};
|
||||||
CmaClient *CmaClient::this_object = NULL;
|
CmaClient *CmaClient::this_object = NULL;
|
||||||
@@ -57,21 +59,37 @@ void CmaClient::setRunning(bool state)
|
|||||||
is_running = state;
|
is_running = state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CmaClient::isEventLoopEnabled()
|
||||||
|
{
|
||||||
|
QMutexLocker locker(&eloop);
|
||||||
|
return event_loop_enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CmaClient::setEventLoop(bool state)
|
||||||
|
{
|
||||||
|
QMutexLocker locker(&eloop);
|
||||||
|
event_loop_enabled = state;
|
||||||
|
}
|
||||||
|
|
||||||
void CmaClient::connectUsb()
|
void CmaClient::connectUsb()
|
||||||
{
|
{
|
||||||
vita_device_t *vita;
|
vita_device_t *vita;
|
||||||
int num_tries = 0;
|
//int num_tries = 0;
|
||||||
|
|
||||||
qDebug() << "Starting usb_thread:" << QThread::currentThreadId();
|
qDebug() << "Starting usb_thread:" << QThread::currentThreadId();
|
||||||
|
|
||||||
while(isRunning()) {
|
while(isRunning()) {
|
||||||
if((vita = VitaMTP_Get_First_USB_Vita()) !=NULL) {
|
if((vita = VitaMTP_Get_First_USB_Vita()) !=NULL) {
|
||||||
|
cancel_wireless = 1;
|
||||||
processNewConnection(vita);
|
processNewConnection(vita);
|
||||||
} else {
|
} else {
|
||||||
qDebug("No Vita detected via USB, attempt %i", ++num_tries);
|
//qDebug("No Vita detected via USB, attempt %i", +num_tries++);
|
||||||
if(mutex.tryLock()) {
|
if(mutex.tryLock()) {
|
||||||
mutex.unlock();
|
mutex.unlock();
|
||||||
Sleeper::msleep(2000);
|
Sleeper::msleep(2000);
|
||||||
|
} else {
|
||||||
|
mutex.lock();
|
||||||
|
mutex.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -86,16 +104,18 @@ void CmaClient::connectWireless()
|
|||||||
wireless_host_info_t host;
|
wireless_host_info_t host;
|
||||||
host.port = QCMA_REQUEST_PORT;
|
host.port = QCMA_REQUEST_PORT;
|
||||||
typedef CmaClient CC;
|
typedef CmaClient CC;
|
||||||
|
cancel_wireless = 0;
|
||||||
|
|
||||||
qDebug() << "Starting wireless_thread:" << QThread::currentThreadId();
|
qDebug() << "Starting wireless_thread:" << QThread::currentThreadId();
|
||||||
|
|
||||||
while(isRunning()) {
|
while(isRunning()) {
|
||||||
if((vita = VitaMTP_Get_First_Wireless_Vita(&host, 0, 2, CC::deviceRegistered, CC::generatePin)) != NULL) {
|
if((vita = VitaMTP_Get_First_Wireless_Vita(&host, 0, &cancel_wireless, CC::deviceRegistered, CC::generatePin)) != NULL) {
|
||||||
processNewConnection(vita);
|
processNewConnection(vita);
|
||||||
} else {
|
} else {
|
||||||
qDebug("Wireless listener was cancelled");
|
qDebug("Wireless listener was cancelled");
|
||||||
mutex.lock();
|
|
||||||
// wait until the event loop of the usb thread is finished
|
// wait until the event loop of the usb thread is finished
|
||||||
|
mutex.lock();
|
||||||
|
cancel_wireless = 0;
|
||||||
mutex.unlock();
|
mutex.unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -145,10 +165,11 @@ void CmaClient::enterEventLoop()
|
|||||||
|
|
||||||
qDebug("Starting event loop");
|
qDebug("Starting event loop");
|
||||||
|
|
||||||
while(isRunning()) {
|
setEventLoop(true);
|
||||||
|
while(isEventLoopEnabled()) {
|
||||||
if(VitaMTP_Read_Event(device, &event) < 0) {
|
if(VitaMTP_Read_Event(device, &event) < 0) {
|
||||||
qWarning("Error reading event from Vita.");
|
qWarning("Error reading event from Vita.");
|
||||||
setRunning(false);
|
setEventLoop(false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -397,7 +418,7 @@ void CmaClient::vitaEventRequestTerminate(vita_event_t *event, int eventId)
|
|||||||
{
|
{
|
||||||
qDebug("Event recieved in %s, code: 0x%x, id: %d", Q_FUNC_INFO, event->Code, eventId);
|
qDebug("Event recieved in %s, code: 0x%x, id: %d", Q_FUNC_INFO, event->Code, eventId);
|
||||||
//qWarning("Event 0x%x unimplemented!", event->Code);
|
//qWarning("Event 0x%x unimplemented!", event->Code);
|
||||||
setRunning(false);
|
setEventLoop(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CmaClient::vitaEventUnimplementated(vita_event_t *event, int eventId)
|
void CmaClient::vitaEventUnimplementated(vita_event_t *event, int eventId)
|
||||||
@@ -530,7 +551,7 @@ void CmaClient::vitaEventCancelTask(vita_event_t *event, int eventId)
|
|||||||
int eventIdToCancel = event->Param2;
|
int eventIdToCancel = event->Param2;
|
||||||
VitaMTP_CancelTask(device, eventIdToCancel);
|
VitaMTP_CancelTask(device, eventIdToCancel);
|
||||||
qWarning("Event CancelTask (0x%x) unimplemented!", event->Code);
|
qWarning("Event CancelTask (0x%x) unimplemented!", event->Code);
|
||||||
setRunning(false);
|
setEventLoop(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CmaClient::vitaEventSendHttpObjectFromURL(vita_event_t *event, int eventId)
|
void CmaClient::vitaEventSendHttpObjectFromURL(vita_event_t *event, int eventId)
|
||||||
@@ -986,6 +1007,7 @@ void CmaClient::close()
|
|||||||
void CmaClient::stop()
|
void CmaClient::stop()
|
||||||
{
|
{
|
||||||
CmaClient::setRunning(false);
|
CmaClient::setRunning(false);
|
||||||
|
CmaClient::setEventLoop(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
CmaClient::~CmaClient()
|
CmaClient::~CmaClient()
|
||||||
|
@@ -47,6 +47,8 @@ public:
|
|||||||
private:
|
private:
|
||||||
static bool isRunning();
|
static bool isRunning();
|
||||||
static void setRunning(bool state);
|
static void setRunning(bool state);
|
||||||
|
static bool isEventLoopEnabled();
|
||||||
|
static void setEventLoop(bool state);
|
||||||
void enterEventLoop();
|
void enterEventLoop();
|
||||||
|
|
||||||
void processNewConnection(vita_device_t *device);
|
void processNewConnection(vita_device_t *device);
|
||||||
@@ -77,13 +79,16 @@ private:
|
|||||||
static int deviceRegistered(const char *deviceid);
|
static int deviceRegistered(const char *deviceid);
|
||||||
static int generatePin(wireless_vita_info_t *info, int *p_err);
|
static int generatePin(wireless_vita_info_t *info, int *p_err);
|
||||||
|
|
||||||
|
int cancel_wireless;
|
||||||
CmaBroadcast broadcast;
|
CmaBroadcast broadcast;
|
||||||
vita_device_t *device;
|
vita_device_t *device;
|
||||||
|
static bool event_loop_enabled;
|
||||||
static bool is_running;
|
static bool is_running;
|
||||||
static metadata_t g_thumbmeta;
|
static metadata_t g_thumbmeta;
|
||||||
static CmaClient *this_object;
|
static CmaClient *this_object;
|
||||||
static QMutex mutex;
|
static QMutex mutex;
|
||||||
static QMutex runner;
|
static QMutex runner;
|
||||||
|
static QMutex eloop;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void receivedPin(int);
|
void receivedPin(int);
|
||||||
|
@@ -122,7 +122,7 @@ void CMARootObject::createFilter(metadata_t *filter, const char *name, int type)
|
|||||||
filter->size = 0;
|
filter->size = 0;
|
||||||
filter->dataType = static_cast<DataType>(Folder | Special);
|
filter->dataType = static_cast<DataType>(Folder | Special);
|
||||||
filter->next_metadata = NULL;
|
filter->next_metadata = NULL;
|
||||||
qDebug("Added filter %s to database with OHFI %d (%s)", name, filter->ohfi, metadata.name);
|
//qDebug("Added filter %s to database with OHFI %d (%s)", name, filter->ohfi, metadata.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
int CMARootObject::getFilters(metadata_t **p_head)
|
int CMARootObject::getFilters(metadata_t **p_head)
|
||||||
|
@@ -121,7 +121,7 @@ int Database::scanRootDirectory(root_list &list, int ohfi_type)
|
|||||||
|
|
||||||
CMAObject *obj = new CMAObject(getParent(last_dir, info.path()));
|
CMAObject *obj = new CMAObject(getParent(last_dir, info.path()));
|
||||||
obj->initObject(info);
|
obj->initObject(info);
|
||||||
qDebug("Added %s to database with OHFI %d", obj->metadata.name, obj->metadata.ohfi);
|
//qDebug("Added %s to database with OHFI %d", obj->metadata.name, obj->metadata.ohfi);
|
||||||
list << obj;
|
list << obj;
|
||||||
|
|
||||||
if(obj->metadata.dataType & Folder) {
|
if(obj->metadata.dataType & Folder) {
|
||||||
@@ -147,7 +147,7 @@ int Database::recursiveScanRootDirectory(root_list &list, CMAObject *parent, int
|
|||||||
} else {
|
} else {
|
||||||
CMAObject *obj = new CMAObject(parent);
|
CMAObject *obj = new CMAObject(parent);
|
||||||
obj->initObject(info);
|
obj->initObject(info);
|
||||||
qDebug("Added %s to database with OHFI %d", obj->metadata.name, obj->metadata.ohfi);
|
//qDebug("Added %s to database with OHFI %d", obj->metadata.name, obj->metadata.ohfi);
|
||||||
list << obj;
|
list << obj;
|
||||||
if(info.isDir()) {
|
if(info.isDir()) {
|
||||||
total_objects += recursiveScanRootDirectory(list, obj, ohfi_type);
|
total_objects += recursiveScanRootDirectory(list, obj, ohfi_type);
|
||||||
|
Reference in New Issue
Block a user