| 279 | } |
| 280 | |
| 281 | void |
| 282 | ExecSystem::_InvalidateAttributeValues(TfSpan<const SdfPath> invalidAttributes) |
| 283 | { |
| 284 | TRACE_FUNCTION(); |
| 285 | |
| 286 | const Exec_AttributeValueInvalidationResult invalidationResult = |
| 287 | _program->InvalidateAttributeAuthoredValues(invalidAttributes); |
| 288 | |
| 289 | // Invalidate the executor and send request invalidation. |
| 290 | WorkWithScopedDispatcher( |
| 291 | [&runtime = _runtime, &invalidationResult, |
| 292 | &requestTracker = _requestTracker] |
| 293 | (WorkDispatcher &dispatcher){ |
| 294 | // If any of the inputs to exec changed to be time dependent when |
| 295 | // previously they were not (or vice versa), we need to invalidate the |
| 296 | // main executor's topological state, such that invalidation traversals |
| 297 | // pick up the new time dependency. |
| 298 | if (invalidationResult.isTimeDependencyChange) { |
| 299 | dispatcher.Run([&](){ |
| 300 | runtime->InvalidateTopologicalState(); |
| 301 | }); |
| 302 | } |
| 303 | |
| 304 | // Invalidate values in the page cache. |
| 305 | dispatcher.Run([&](){ |
| 306 | runtime->InvalidatePageCache( |
| 307 | invalidationResult.invalidationRequest, |
| 308 | invalidationResult.invalidInterval); |
| 309 | }); |
| 310 | |
| 311 | // Notify all the requests of computed value invalidation. Not all the |
| 312 | // requests will contain all the invalid leaf nodes or invalid |
| 313 | // attributes, and the request impls are responsible for filtering the |
| 314 | // provided information. |
| 315 | requestTracker->DidInvalidateComputedValues(invalidationResult); |
| 316 | }); |
| 317 | } |
| 318 | |
| 319 | void |
| 320 | ExecSystem::_InvalidateMetadataValues( |
no test coverage detected