From 552aa5fc3d318fba4e9db49ce5fa67fc8c4ea5f2 Mon Sep 17 00:00:00 2001 From: HampusM Date: Mon, 21 Sep 2026 18:25:11 +0200 Subject: fix(engine): fix borrow compile error in gl rendering backend --- engine/src/rendering/backend/opengl.rs | 46 ++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 21 deletions(-) (limited to 'engine/src/rendering/backend') diff --git a/engine/src/rendering/backend/opengl.rs b/engine/src/rendering/backend/opengl.rs index 5b009ca..8b887b3 100644 --- a/engine/src/rendering/backend/opengl.rs +++ b/engine/src/rendering/backend/opengl.rs @@ -395,7 +395,7 @@ impl intmap::IntKey for ShaderBindingIndex } } -#[derive(Debug)] +#[derive(Debug, Clone)] enum BackendShaderBinding { Uniform(GlBuffer), @@ -1526,7 +1526,7 @@ fn set_shader_binding<'backend_resources>( shader_object_id: ObjectId, binding_location: &ShaderBindingLocation, binding_value: ShaderBindingValue, -) -> Option<&'backend_resources BackendShaderBinding> +) -> Option { if let ShaderBindingValue::Texture(texture_object_id, _) = &binding_value { let gl_texture = match backend_resources.get_resource( @@ -1562,7 +1562,8 @@ fn set_shader_binding<'backend_resources>( return Some( shader_bindings .entry(ShaderBindingIndex(binding_location.binding_index)) - .set_or_insert_with(|| BackendShaderBinding::Texture(gl_texture.clone())), + .set_or_insert_with(|| BackendShaderBinding::Texture(gl_texture.clone())) + .clone(), ); // if Some(shader_object_id) @@ -1587,27 +1588,30 @@ fn set_shader_binding<'backend_resources>( None => return None, }; - let binding = - match shader_bindings.get(ShaderBindingIndex(binding_location.binding_index)) { - Some(binding @ BackendShaderBinding::Uniform(_)) => binding, - Some(_) | None => { - let uniform_buf = GlBuffer::::new(gl_context); + let binding = match shader_bindings + .get(ShaderBindingIndex(binding_location.binding_index)) + .cloned() + { + Some(binding @ BackendShaderBinding::Uniform(_)) => binding, + Some(_) | None => { + let uniform_buf = GlBuffer::::new(gl_context); - uniform_buf - .init( - gl_context, - binding_location.binding_size, - opengl_bindings::buffer::Usage::Dynamic, - ) - .unwrap(); + uniform_buf + .init( + gl_context, + binding_location.binding_size, + opengl_bindings::buffer::Usage::Dynamic, + ) + .unwrap(); - shader_bindings - .entry(ShaderBindingIndex(binding_location.binding_index)) - .set_or_insert_with(|| BackendShaderBinding::Uniform(uniform_buf)) - } - }; + shader_bindings + .entry(ShaderBindingIndex(binding_location.binding_index)) + .set_or_insert_with(|| BackendShaderBinding::Uniform(uniform_buf)) + .clone() + } + }; - let BackendShaderBinding::Uniform(binding_uniform_buf) = binding else { + let BackendShaderBinding::Uniform(binding_uniform_buf) = &binding else { unreachable!(); }; -- cgit v1.2.3-18-g5258