output_configuration: Use unwrap in calls to Resource::data

Having if conditions for these is unnecessary when they should never be
reached. (This is commonly unwrapped in `smithay`.)

Some of these else conditions fail to call `data_init.init` with a new
id, so they'd result in a crash later anyway.
This commit is contained in:
Ian Douglas Scott 2024-12-10 14:53:34 -08:00 • committed by Victoria Brekenfeld
parent fdfc5cbeb4
commit 16a1214207
2 changed files with 69 additions and 85 deletions

View file

@ -99,11 +99,10 @@ where
} }
} }
zcosmic_output_manager_v1::Request::GetConfiguration { extended, config } => { zcosmic_output_manager_v1::Request::GetConfiguration { extended, config } => {
if let Some(pending) = config.data::<PendingConfiguration>() { let pending = config.data::<PendingConfiguration>().unwrap();
let obj = data_init.init(extended, config.downgrade()); let obj = data_init.init(extended, config.downgrade());
pending.lock().unwrap().extension_obj = Some(obj); pending.lock().unwrap().extension_obj = Some(obj);
} }
}
zcosmic_output_manager_v1::Request::GetConfigurationHead { zcosmic_output_manager_v1::Request::GetConfigurationHead {
extended, extended,
config_head, config_head,
@ -178,10 +177,8 @@ where
mirroring, mirroring,
} => { } => {
if let Ok(obj) = obj.upgrade() { if let Ok(obj) = obj.upgrade() {
if let Some(data) = obj.data::<PendingConfiguration>() { let data = obj.data::<PendingConfiguration>().unwrap();
if let Some(output) = if let Some(output) = mirroring.data::<WeakOutput>().unwrap().upgrade() {
mirroring.data::<WeakOutput>().and_then(|x| x.upgrade())
{
let mut pending = data.lock().unwrap(); let mut pending = data.lock().unwrap();
if pending.heads.iter().any(|(h, _)| *h == head) { if pending.heads.iter().any(|(h, _)| *h == head) {
obj.post_error( obj.post_error(
@ -194,17 +191,14 @@ where
if pending.heads.iter().any(|(h, c)| { if pending.heads.iter().any(|(h, c)| {
match c.as_ref() { match c.as_ref() {
Some(c) => { Some(c) => {
if let Some(conf) = c.data::<PendingOutputConfiguration>() { let conf = c.data::<PendingOutputConfiguration>().unwrap();
match conf.lock().unwrap().mirroring.as_ref() { match conf.lock().unwrap().mirroring.as_ref() {
Some(mirrored) => { Some(mirrored) => {
head.data::<WeakOutput>().is_some_and(|o| o == mirrored) // we are already a mirror target -> invalid head.data::<WeakOutput>().unwrap() == mirrored // we are already a mirror target -> invalid
|| *h == mirroring // our target already mirrors -> invalid || *h == mirroring // our target already mirrors -> invalid
} }
None => false, None => false,
} }
} else {
*h == mirroring // unknown state for our mirror target -> invalid
}
} }
None => *h == mirroring, // disabled state for our mirror target -> invalid None => *h == mirroring, // disabled state for our mirror target -> invalid
} }
@ -222,14 +216,12 @@ where
} }
} }
} }
}
zcosmic_output_configuration_v1::Request::Release => { zcosmic_output_configuration_v1::Request::Release => {
if let Ok(obj) = obj.upgrade() { if let Ok(obj) = obj.upgrade() {
if let Some(data) = obj.data::<PendingConfiguration>() { let data = obj.data::<PendingConfiguration>().unwrap();
data.lock().unwrap().extension_obj.take(); data.lock().unwrap().extension_obj.take();
} }
} }
}
_ => {} _ => {}
} }
} }
@ -259,7 +251,7 @@ where
match request { match request {
zcosmic_output_configuration_head_v1::Request::SetScale1000 { scale_1000 } => { zcosmic_output_configuration_head_v1::Request::SetScale1000 { scale_1000 } => {
if let Ok(obj) = obj.upgrade() { if let Ok(obj) = obj.upgrade() {
if let Some(data) = obj.data::<PendingOutputConfiguration>() { let data = obj.data::<PendingOutputConfiguration>().unwrap();
let mut pending = data.lock().unwrap(); let mut pending = data.lock().unwrap();
if pending.scale.is_some() { if pending.scale.is_some() {
obj.post_error( obj.post_error(
@ -271,10 +263,9 @@ where
pending.scale = Some((scale_1000 as f64) / 1000.0); pending.scale = Some((scale_1000 as f64) / 1000.0);
} }
} }
}
zcosmic_output_configuration_head_v1::Request::SetAdaptiveSyncExt { state } => { zcosmic_output_configuration_head_v1::Request::SetAdaptiveSyncExt { state } => {
if let Ok(obj) = obj.upgrade() { if let Ok(obj) = obj.upgrade() {
if let Some(data) = obj.data::<PendingOutputConfiguration>() { let data = obj.data::<PendingOutputConfiguration>().unwrap();
let mut pending = data.lock().unwrap(); let mut pending = data.lock().unwrap();
if pending.adaptive_sync.is_some() { if pending.adaptive_sync.is_some() {
obj.post_error( obj.post_error(
@ -294,7 +285,6 @@ where
}; };
} }
} }
}
_ => {} _ => {}
} }
} }

View file

@ -233,16 +233,10 @@ where
if pending.heads.iter().any(|(_, c)| match c { if pending.heads.iter().any(|(_, c)| match c {
Some(conf) => { Some(conf) => {
if let Some(output_conf) = conf.data::<PendingOutputConfiguration>() { let output_conf = conf.data::<PendingOutputConfiguration>().unwrap();
if let Some(output) = head.data::<WeakOutput>() { let output = head.data::<WeakOutput>().unwrap();
let pending_conf = output_conf.lock().unwrap(); let pending_conf = output_conf.lock().unwrap();
pending_conf.mirroring.as_ref().is_some_and(|o| o == output) pending_conf.mirroring.as_ref().is_some_and(|o| o == output)
} else {
false
}
} else {
false
}
} }
None => false, None => false,
}) { }) {