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