Пример #1
0
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 &lt : 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;
}
Пример #2
0
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());
	}
}