The tearing occurs in bypass (or overlays with android) because the implementation of post_renderables_if_optimizable in mesa and android keep a copy of the shared_ptr<Buffer> to guarantee it wouldn't be released to the client. This has changed now, as holding a reference to the buffer no longer implies the same behavior. Some rework is needed there (which I think it's good, because we should avoid nebulous ownership semantics)
=== other.release_ fn);
360 + release_fn = std::move(
===
This has a similar issue:
From http:// www.cplusplus. com/reference/ functional/ function/ operator= /
"
(2) move assignment
The object acquires the target of rhs.
rhs is left in an unspecified but valid state.
"
The tearing occurs in bypass (or overlays with android) because the implementation of post_renderable s_if_optimizabl e in mesa and android keep a copy of the shared_ptr<Buffer> to guarantee it wouldn't be released to the client. This has changed now, as holding a reference to the buffer no longer implies the same behavior. Some rework is needed there (which I think it's good, because we should avoid nebulous ownership semantics)