Beispiel #1
0
/**
 * Starts the synthesizer thread and music playback.
 */
static void startPlayer()
{
    if(DMFluid_Driver()) return;

    DENG_ASSERT(!worker);
    DENG_ASSERT(sfxBuf == NULL);

    // Create a sound buffer for playing the music.
    sfxBuf = DMFluid_Sfx()->Create(SFXBF_STREAM, 16, 44100);

    DSFLUIDSYNTH_TRACE("startPlayer: Created SFX buffer " << sfxBuf);

    // As a streaming buffer, the data will be read from here.
    // The length of the buffer is ignored, streaming buffers play indefinitely.
    memset(&streamSample, 0, sizeof(streamSample));
    streamSample.id = -1; // undefined sample
    streamSample.data = reinterpret_cast<void*>(streamOutSamples);
    streamSample.bytesPer = 2;
    streamSample.numSamples = MAX_BLOCKS * BLOCK_SAMPLES;
    streamSample.rate = 44100;

    DMFluid_Sfx()->Load(sfxBuf, &streamSample);

    startWorker();

    // Update the buffer's volume.
    DMFluid_Sfx()->Set(sfxBuf, SFXBP_VOLUME, musicVolume);

    DMFluid_Sfx()->Play(sfxBuf);
}
Matrix* balanceWork(Matrix* m1, Matrix* m2, int numThreads) {
	int i, amountOfWorkToEach = 0, workLeft = 0, aditionalWork = 0, start, end, lastStartIndex = 0;
	Matrix* result = (Matrix*) malloc(sizeof(Matrix));
	pthread_t* threads = (pthread_t*) calloc(numThreads, sizeof(pthread_t));
	
	result->data = initMatrix(m1->rows, m2->columns);
	result->rows = m1->rows;
	result->columns = m2->columns;

	amountOfWorkToEach = (m1->rows / numThreads);
	workLeft = m1->rows % numThreads;
	aditionalWork = (workLeft > 0) ? 1 : 0;
	workLeft--;
	
	for (i = 0; i < numThreads; i++) {
		start = lastStartIndex;
		end = start + amountOfWorkToEach + aditionalWork;
		lastStartIndex = end;
		threads[i] = startWorker(m1, m2, result, start, end);
		aditionalWork = (workLeft > 0) ? 1 : 0;
		workLeft--;		
	}
	wait_all(threads, numThreads);
		
	return result;
}
bool PedometerSensor::restartWorker(int64_t newDelay)
{
        {
                Mutex::Autolock _l(mDelayMutex);
                mCurrentDelay = newDelay;
        }
        stopWorker();
        return startWorker();
}
Beispiel #4
0
/*
    function load(script: Path, timeout: Number = 0): Void
 */
static EjsObj *workerLoad(Ejs *ejs, EjsWorker *worker, int argc, EjsObj **argv)
{
    int     timeout;

    assert(argc == 0 || ejsIs(ejs, argv[0], Path));

    worker->scriptFile = sclone(((EjsPath*) argv[0])->value);
    timeout = argc == 2 ? ejsGetInt(ejs, argv[1]): 0;
    return startWorker(ejs, worker, timeout);
}
Beispiel #5
0
/*
    function eval(script: String, timeout: Boolean = -1): Obj
 */
static EjsObj *workerEval(Ejs *ejs, EjsWorker *worker, int argc, EjsObj **argv)
{
    int     timeout;

    assert(ejsIs(ejs, argv[0], String));

    worker->scriptLiteral = (EjsString*) argv[0];
    timeout = argc == 2 ? ejsGetInt(ejs, argv[1]): MAXINT;
    return startWorker(ejs, worker, timeout);
}
Beispiel #6
0
/*
 *  function load(script: Path, timeout: Number = 0): Void
 */
static EjsVar *workerLoad(Ejs *ejs, EjsWorker *worker, int argc, EjsVar **argv)
{
    int     timeout;

    mprAssert(argc == 0 || ejsIsPath(argv[0]));

    worker->scriptFile = mprStrdup(worker, ((EjsPath*) argv[0])->path);
    timeout = argc == 2 ? ejsGetInt(argv[1]): 0;
    return startWorker(ejs, worker, timeout);
}
Beispiel #7
0
/*
 *  function eval(script: String, timeout: Boolean = -1): String
 */
static EjsVar *workerEval(Ejs *ejs, EjsWorker *worker, int argc, EjsVar **argv)
{
    int     timeout;

    mprAssert(ejsIsString(argv[0]));

    worker->scriptLiteral = mprStrdup(worker, ejsGetString(argv[0]));
    timeout = argc == 2 ? ejsGetInt(argv[1]): MAXINT;
    return startWorker(ejs, worker, timeout);
}
Master::Master()
{
    thread = new QThread();
    worker = new Worker();
    worker->moveToThread(thread);

    // connect the signal and slots
    connect(this,SIGNAL(startWorker()),worker,SLOT(start()));
    connect(worker,SIGNAL(WorkerFinished()),this,SLOT(onWorkerFinished()));

    // Start the thread
    thread->start();
}
void ControlWorker::beginWork(int interval,long timeout)
{
    if (!istarted)
    {
        if(wklist.isEmpty())
            return;
        istarted = true;
        context->setInterval(interval);
        context->setPollTimeOut(timeout);
        context->start();
        emit startWorker();
    }
}
Beispiel #10
0
void _startWorkerDeamon(struct START_WORKER_DELAYED * argument)
{
	startWorker(argument->coreWorker, argument->todoList, argument->status, argument->IDToPosition, argument->nbElemTotal, argument->quit, argument->mainTab, true);
	free(argument);
}
Beispiel #11
0
bool startMDL(char * state, PROJECT_DATA ** cache, THREAD_TYPE * coreWorker, DATA_LOADED **** todoList, int8_t *** status, uint ** IDToPosition, uint * nbElemTotal, bool * quit, void * mainTab)
{
    uint i;
	if(cache == NULL || coreWorker == NULL || todoList == NULL || status == NULL || nbElemTotal == NULL || quit == NULL)
		return false;
	
	if(*todoList == NULL || **todoList == NULL || *status == NULL)
	{
		*todoList = malloc(sizeof(DATA_LOADED **));
		
		if(*todoList == NULL)
			return false;
		
		/*Initialisation*/

		**todoList = MDLLoadDataFromState(cache, nbElemTotal, state);
		if(*nbElemTotal == 0)	//No data doesn't mean init failure
			return true;
		
		*status = malloc((*nbElemTotal+1) * sizeof(int8_t*));
		
		if(*status == NULL)
			return false;
		
		for(i = 0; i < *nbElemTotal; i++)
		{
			(*status)[i] = malloc(sizeof(int8_t));
			if((*status)[i] != NULL)
				*(*status)[i] = MDL_CODE_DEFAULT;
			else
			{
				while(i-- > 0)
					free((*status)[i]);
				free(*status);
				*status = NULL;
				
				for(i = 0; i < *nbElemTotal; i++)
					free((**todoList)[i]);
				free(*todoList);
				*todoList = NULL;
				
				*nbElemTotal = 0;
				
				return false;
			}
		}
		
		(*status)[i] = NULL;
	}
	
	if(*nbElemTotal != 0 && *IDToPosition == NULL)
	{
		*IDToPosition = malloc(*nbElemTotal * sizeof(uint));
		if(*IDToPosition != NULL)
		{
			i = 0;
			for(uint length = *nbElemTotal; i < length; i++)
				(*IDToPosition)[i] = i;
		}
	}

	return startWorker(coreWorker, todoList, status, IDToPosition, nbElemTotal, quit, mainTab, false);
}