QImageLoadThreadPool::PATH_STATUS QImageLoadThreadPool::load(QString path, int &bytesLoaded) { PATH_STATUS status = PATH_NULL; controlInternal.lock(); if (workers.length() < 3) { bool gtg = true; for (LoadThread < : workers) { if (lt.first == path) gtg = false; } if (gtg) { QImageReader imgTest(path); QSize tSize = imgTest.size(); if (tSize.isEmpty()) { status = PATH_FAILURE; } else { int bytesToLoad = tSize.width() * tSize.height() * 4; if (bytesLoaded + bytesToLoad > maxBytes) { status = PATH_INSUFFICIENT_MEMORY; } else { bytesLoaded += bytesToLoad; workers.append(LoadThread(path, new std::thread(std::bind(&QImageLoadThreadPool::internalThreadRun, this, path)))); status = PATH_SUCCESS; } } } else { status = PATH_ALREADY_LOADING; } } else { status = PATH_MAX_WORKERS; } controlInternal.unlock(); return status; }
void thread_load() { loading_init(); if(GetSelectedThread()->type == 1) { loading_set_text("Loading Image"); init_netimage(GetSelectedThreadID()); } else { loading_set_text("Loading Thread"); LoadThread(GetSelectedThreadID()); } }