예제 #1
0
void *WM_jobs_customdata(wmWindowManager *wm, void *owner)
{
	wmJob *wm_job = wm_job_find(wm, owner, WM_JOB_TYPE_ANY);

	if (wm_job)
		return WM_jobs_customdata_get(wm_job);

	return NULL;
}
예제 #2
0
void *WM_jobs_customdata_from_type(wmWindowManager *wm, int job_type)
{
	wmJob *wm_job = wm_job_find(wm, NULL, job_type);

	if (wm_job)
		return WM_jobs_customdata_get(wm_job);

	return NULL;
}
예제 #3
0
/* time that job started */
double WM_jobs_starttime(wmWindowManager *wm, void *owner)
{
	wmJob *wm_job = wm_job_find(wm, owner, WM_JOB_TYPE_ANY);

	if (wm_job && wm_job->flag & WM_JOB_PROGRESS)
		return wm_job->start_time;

	return 0;
}
예제 #4
0
char *WM_jobs_name(wmWindowManager *wm, void *owner)
{
	wmJob *wm_job = wm_job_find(wm, owner, WM_JOB_TYPE_ANY);

	if (wm_job)
		return wm_job->name;

	return NULL;
}
예제 #5
0
float WM_jobs_progress(wmWindowManager *wm, void *owner)
{
	wmJob *wm_job = wm_job_find(wm, owner, WM_JOB_TYPE_ANY);

	if (wm_job && wm_job->flag & WM_JOB_PROGRESS)
		return wm_job->progress;

	return 0.0;
}
예제 #6
0
파일: wm_jobs.c 프로젝트: OldBrunet/BGERTPS
char *WM_jobs_name(wmWindowManager *wm, void *owner)
{
	wmJob *steve= wm_job_find(wm, owner, NULL);
	
	if (steve)
		return steve->name;
	
	return NULL;
}
예제 #7
0
파일: wm_jobs.c 프로젝트: OldBrunet/BGERTPS
float WM_jobs_progress(wmWindowManager *wm, void *owner)
{
	wmJob *steve= wm_job_find(wm, owner, NULL);
	
	if (steve && steve->flag & WM_JOB_PROGRESS)
		return steve->progress;
	
	return 0.0;
}
예제 #8
0
파일: wm_jobs.c 프로젝트: OldBrunet/BGERTPS
/* every owner only gets a single job, adding a new one will stop running stop and 
   when stopped it starts the new one */
wmJob *WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner, const char *name, int flag)
{
	wmJob *steve= wm_job_find(wm, owner, name);
	
	if(steve==NULL) {
		steve= MEM_callocN(sizeof(wmJob), "new job");
	
		BLI_addtail(&wm->jobs, steve);
		steve->win= win;
		steve->owner= owner;
		steve->flag= flag;
		BLI_strncpy(steve->name, name, sizeof(steve->name));
	}
	
	return steve;
}
예제 #9
0
/**
 * \return current job or adds new job, but doesn't run it.
 *
 * \note every owner only gets a single job,
 * adding a new one will stop running job and when stopped it starts the new one.
 */
wmJob *WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner, const char *name, int flag, int job_type)
{
	wmJob *wm_job = wm_job_find(wm, owner, job_type);

	if (wm_job == NULL) {
		wm_job = MEM_callocN(sizeof(wmJob), "new job");

		BLI_addtail(&wm->jobs, wm_job);
		wm_job->win = win;
		wm_job->owner = owner;
		wm_job->flag = flag;
		wm_job->job_type = job_type;
		BLI_strncpy(wm_job->name, name, sizeof(wm_job->name));

		wm_job->main_thread_mutex = BLI_ticket_mutex_alloc();
		WM_job_main_thread_lock_acquire(wm_job);
	}
	/* else: a running job, be careful */

	/* prevent creating a job with an invalid type */
	BLI_assert(wm_job->job_type != WM_JOB_TYPE_ANY);

	return wm_job;
}
예제 #10
0
bool WM_jobs_is_stopped(wmWindowManager *wm, void *owner)
{
	wmJob *wm_job = wm_job_find(wm, owner, WM_JOB_TYPE_ANY);
	return wm_job ? wm_job->stop : true; /* XXX to be redesigned properly. */
}