|
2518 | 2518 | <a href="#2517" id="2517">2517</a> |
2519 | 2519 | <a href="#2518" id="2518">2518</a> |
2520 | 2520 | <a href="#2519" id="2519">2519</a> |
| 2521 | +<a href="#2520" id="2520">2520</a> |
| 2522 | +<a href="#2521" id="2521">2521</a> |
| 2523 | +<a href="#2522" id="2522">2522</a> |
| 2524 | +<a href="#2523" id="2523">2523</a> |
2521 | 2525 | </pre></div><pre class="rust"><code><span class="doccomment">//! A cross-platform unsafe graphics abstraction. |
2522 | 2526 | //! |
2523 | 2527 | //! This crate defines a set of traits abstracting over modern graphics APIs, |
|
2825 | 2829 |
|
2826 | 2830 | <span class="doccomment">/// A callback to signal that wgpu is no longer using a resource. |
2827 | 2831 | </span><span class="attr">#[cfg(any(gles, vulkan))] |
2828 | | -</span><span class="kw">pub type </span>DropCallback = Box<<span class="kw">dyn </span>FnMut() + Send + Sync + <span class="lifetime">'static</span>>; |
| 2832 | +</span><span class="kw">pub type </span>DropCallback = Box<<span class="kw">dyn </span>FnOnce() + Send + Sync + <span class="lifetime">'static</span>>; |
2829 | 2833 |
|
2830 | 2834 | <span class="attr">#[cfg(any(gles, vulkan))] |
2831 | 2835 | </span><span class="kw">pub struct </span>DropGuard { |
2832 | | - callback: DropCallback, |
| 2836 | + callback: <span class="prelude-ty">Option</span><DropCallback>, |
2833 | 2837 | } |
2834 | 2838 |
|
2835 | 2839 | <span class="attr">#[cfg(all(any(gles, vulkan), any(native, Emscripten)))] |
2836 | 2840 | </span><span class="kw">impl </span>DropGuard { |
2837 | 2841 | <span class="kw">fn </span>from_option(callback: <span class="prelude-ty">Option</span><DropCallback>) -> <span class="prelude-ty">Option</span><<span class="self">Self</span>> { |
2838 | | - callback.map(|callback| <span class="self">Self </span>{ callback }) |
| 2842 | + callback.map(|callback| <span class="self">Self </span>{ |
| 2843 | + callback: <span class="prelude-val">Some</span>(callback), |
| 2844 | + }) |
2839 | 2845 | } |
2840 | 2846 | } |
2841 | 2847 |
|
2842 | 2848 | <span class="attr">#[cfg(any(gles, vulkan))] |
2843 | 2849 | </span><span class="kw">impl </span>Drop <span class="kw">for </span>DropGuard { |
2844 | 2850 | <span class="kw">fn </span>drop(<span class="kw-2">&mut </span><span class="self">self</span>) { |
2845 | | - (<span class="self">self</span>.callback)(); |
| 2851 | + <span class="kw">if let </span><span class="prelude-val">Some</span>(cb) = <span class="self">self</span>.callback.take() { |
| 2852 | + (cb)(); |
| 2853 | + } |
2846 | 2854 | } |
2847 | 2855 | } |
2848 | 2856 |
|
|
0 commit comments