static void fluidbake_startjob(void *customdata, short *stop, short *do_update, float *progress) { FluidBakeJob *fb= (FluidBakeJob *)customdata; fb->stop= stop; fb->do_update = do_update; fb->progress = progress; G.is_break = false; /* XXX shared with render - replace with job 'stop' switch */ elbeemSimulate(); *do_update = true; *stop = 0; }
// run simulation in seperate thread static void *fluidsimSimulateThread(void *unused) { // *ptr) { //char* fnameCfgPath = (char*)(ptr); int ret=0; ret = elbeemSimulate(); BLI_lock_thread(LOCK_CUSTOM1); if(globalBakeState==0) { if(ret==0) { // if no error, set to normal exit globalBakeState = 1; } else { // simulation failed, display error globalBakeState = -2; } } BLI_unlock_thread(LOCK_CUSTOM1); return NULL; }