| 69 | } |
| 70 | |
| 71 | void HeadlessManager::start() |
| 72 | { |
| 73 | VitaMTP_Init(); |
| 74 | |
| 75 | if(VitaMTP_USB_Init() < 0) { |
| 76 | emit messageSent(tr("Cannot initialize VitaMTP USB library")); |
| 77 | return; |
| 78 | } |
| 79 | |
| 80 | if(QSettings().value("useMemoryStorage", true).toBool()) { |
| 81 | m_db = new QListDB(); |
| 82 | } else { |
| 83 | m_db = new SQLiteDB(); |
| 84 | } |
| 85 | |
| 86 | // initializing database for the first use |
| 87 | refreshDatabase(); |
| 88 | |
| 89 | // send a signal when the update is finished |
| 90 | connect(m_db, &QListDB::updated, this, &HeadlessManager::databaseUpdated); |
| 91 | |
| 92 | thread_count = 0; |
| 93 | qDebug("Starting cma threads"); |
| 94 | CmaClient *client; |
| 95 | QSettings settings; |
| 96 | |
| 97 | if(!settings.value("disableUSB", false).toBool()) { |
| 98 | usb_thread = new QThread(); |
| 99 | client = new CmaClient(m_db); |
| 100 | usb_thread->setObjectName("usb_thread"); |
| 101 | connect(usb_thread, &QThread::started, client, &CmaClient::connectUsb); |
| 102 | connect(client, &CmaClient::finished, usb_thread, &QThread::quit, Qt::DirectConnection); |
| 103 | connect(usb_thread, &QThread::finished, usb_thread, &QObject::deleteLater); |
| 104 | connect(usb_thread, &QThread::finished, this, &HeadlessManager::threadStopped); |
| 105 | connect(usb_thread, &QThread::finished, client, &QObject::deleteLater); |
| 106 | |
| 107 | connect(client, &CmaClient::refreshDatabase, this, &HeadlessManager::refreshDatabase); |
| 108 | |
| 109 | client->moveToThread(usb_thread); |
| 110 | usb_thread->start(); |
| 111 | thread_count++; |
| 112 | } |
| 113 | |
| 114 | if(!settings.value("disableWireless", false).toBool()) { |
| 115 | CmaBroadcast *broadcast = new CmaBroadcast(this); |
| 116 | wireless_thread = new QThread(); |
| 117 | client = new CmaClient(m_db, broadcast); |
| 118 | wireless_thread->setObjectName("wireless_thread"); |
| 119 | connect(wireless_thread, &QThread::started, client, &CmaClient::connectWireless); |
| 120 | connect(client, &CmaClient::finished, wireless_thread, &QThread::quit, Qt::DirectConnection); |
| 121 | connect(wireless_thread, &QThread::finished, wireless_thread, &QObject::deleteLater); |
| 122 | connect(wireless_thread, &QThread::finished, this, &HeadlessManager::threadStopped); |
| 123 | connect(wireless_thread, &QThread::finished, client, &QObject::deleteLater); |
| 124 | |
| 125 | connect(client, &CmaClient::refreshDatabase, this, &HeadlessManager::refreshDatabase); |
| 126 | |
| 127 | client->moveToThread(wireless_thread); |
| 128 | wireless_thread->start(); |
no test coverage detected