From b09bffa8b7f75071ebd9d06ad6c14da779a427fc Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 14 Dec 2025 20:37:20 +0100 Subject: [PATCH] drivers/graphics/graphics-ipc: Actually handle SET_CLIENT_CAP --- drivers/graphics/driver-graphics/src/lib.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/drivers/graphics/driver-graphics/src/lib.rs b/drivers/graphics/driver-graphics/src/lib.rs index 9077dba432..69d0b67481 100644 --- a/drivers/graphics/driver-graphics/src/lib.rs +++ b/drivers/graphics/driver-graphics/src/lib.rs @@ -460,9 +460,8 @@ impl SchemeSync for GraphicsScheme { payload.desc[..desc_len].copy_from_slice(&desc[..desc_len]); payload.desc_len = desc.len(); - Ok(size_of::()) + Ok(size_of::()) } - ipc::GET_CAP => { if payload.len() < size_of::() { return Err(Error::new(EINVAL)); @@ -473,9 +472,21 @@ impl SchemeSync for GraphicsScheme { ) }; payload.value = self.adapter.get_cap(payload.capability)?; - Ok(size_of::()) + Ok(size_of::()) + } + ipc::SET_CLIENT_CAP => { + if payload.len() < size_of::() { + return Err(Error::new(EINVAL)); + } + let payload = unsafe { + transmute::<&mut [u8; size_of::()], &mut ipc::SetClientCap>( + payload.as_mut_array().unwrap(), + ) + }; + self.adapter + .set_client_cap(payload.capability, payload.value)?; + Ok(size_of::()) } - ipc::DISPLAY_COUNT => { if payload.len() < size_of::() { return Err(Error::new(EINVAL));