138 |
|
cookedCall = cb; |
139 |
|
ccData = cb ? cd : NULL; |
140 |
|
} |
141 |
< |
/// Set/change trace callback (before threading) |
141 |
> |
/// Set/change trace callback |
142 |
|
void SetTraceCall(RayReportCall *cb, void *cd = NULL) { |
143 |
+ |
if ((cb == traceCall) & (cd == tcData)) return; |
144 |
+ |
int nt = NThreads(); |
145 |
+ |
if (nt > 1) SetThreadCount(1); |
146 |
|
traceCall = cb; |
147 |
|
tcData = cb ? cd : NULL; |
148 |
< |
} |
149 |
< |
/// Are we ready? |
147 |
< |
bool Ready() const { |
148 |
< |
return (cookedCall != NULL) | (traceCall != NULL) && |
149 |
< |
RadSimulManager::Ready(); |
148 |
> |
UpdateMode(); |
149 |
> |
if (nt > 1) SetThreadCount(nt); |
150 |
|
} |
151 |
|
/// Finish pending rays and complete callbacks (return #sent) |
152 |
|
int FlushQueue(); |