| 252 | } |
| 253 | |
| 254 | std::optional<ContextUpdateId> Context::enqueueRenderRequest(const Ref<RenderRequest>& renderRequest) { |
| 255 | std::unique_lock<Mutex> guard(_mutex); |
| 256 | if (_destroyed) { |
| 257 | return std::optional<ContextUpdateId>(); |
| 258 | } |
| 259 | |
| 260 | auto updateId = lockFreeEnqueueUpdate(); |
| 261 | _pendingRenderRequests.emplace_back(updateId, renderRequest); |
| 262 | |
| 263 | if (!_deferRender) { |
| 264 | runNextPendingRenderRequest(guard); |
| 265 | return std::optional<ContextUpdateId>(); |
| 266 | } |
| 267 | |
| 268 | return updateId; |
| 269 | } |
| 270 | |
| 271 | bool Context::runRenderRequest(ContextUpdateId updateId) { |
| 272 | std::unique_lock<Mutex> guard(_mutex); |
no outgoing calls