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));