config: split option handling
This commit is contained in:
parent
ec9ce08c77
commit
32ad879a65
2 changed files with 132 additions and 117 deletions
|
|
@ -90,6 +90,7 @@ use {
|
|||
mod dispatch;
|
||||
mod input_devices;
|
||||
mod matchers;
|
||||
mod options;
|
||||
mod outputs;
|
||||
mod resources;
|
||||
mod seats;
|
||||
|
|
@ -399,123 +400,6 @@ impl ConfigProxyHandler {
|
|||
}
|
||||
}
|
||||
|
||||
fn handle_set_ei_socket_enabled(&self, enabled: bool) {
|
||||
self.state.set_ei_socket_enabled(enabled);
|
||||
}
|
||||
|
||||
fn handle_set_gfx_api(&self, device: Option<DrmDevice>, api: GfxApi) -> Result<(), CphError> {
|
||||
let Ok(api) = api.try_into() else {
|
||||
return Err(CphError::UnknownGfxApi(api));
|
||||
};
|
||||
match device {
|
||||
Some(dev) => self.get_drm_device(dev)?.dev.set_gfx_api(api),
|
||||
_ => self.state.default_gfx_api.set(api),
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn handle_set_flip_margin(&self, device: DrmDevice, margin: Duration) -> Result<(), CphError> {
|
||||
self.get_drm_device(device)?.set_flip_margin(
|
||||
&self.state,
|
||||
margin.as_nanos().try_into().unwrap_or(u64::MAX),
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn handle_set_x_scaling_mode(&self, mode: XScalingMode) -> Result<(), CphError> {
|
||||
let use_wire_scale = match mode {
|
||||
XScalingMode::DEFAULT => false,
|
||||
XScalingMode::DOWNSCALED => true,
|
||||
_ => return Err(CphError::UnknownXScalingMode(mode)),
|
||||
};
|
||||
self.state.set_xwayland_use_wire_scale(use_wire_scale);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn handle_set_x_wayland_enabled(&self, enabled: bool) -> Result<(), CphError> {
|
||||
self.state.set_xwayland_enabled(enabled);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn handle_set_ui_drag_enabled(&self, enabled: bool) {
|
||||
self.state.set_ui_drag_enabled(enabled);
|
||||
}
|
||||
|
||||
fn handle_set_ui_drag_threshold(&self, threshold: i32) {
|
||||
self.state.set_ui_drag_threshold(threshold.max(1));
|
||||
}
|
||||
|
||||
fn handle_set_animations_enabled(&self, enabled: bool) {
|
||||
self.state.set_animations_enabled(enabled);
|
||||
}
|
||||
|
||||
fn handle_set_animation_duration_ms(&self, duration_ms: u32) {
|
||||
self.state
|
||||
.set_animation_duration_ms(duration_ms.min(10_000));
|
||||
}
|
||||
|
||||
fn handle_set_animation_curve(&self, curve: u32) {
|
||||
self.state.set_animation_curve(curve);
|
||||
}
|
||||
|
||||
fn handle_set_animation_style(&self, style: u32) {
|
||||
if !self.state.set_animation_style(style) {
|
||||
log::warn!("Ignoring invalid animation style");
|
||||
}
|
||||
}
|
||||
|
||||
fn handle_set_animation_cubic_bezier(&self, x1: f32, y1: f32, x2: f32, y2: f32) {
|
||||
if !self.state.set_animation_cubic_bezier(x1, y1, x2, y2) {
|
||||
log::warn!("Ignoring invalid animation cubic-bezier curve");
|
||||
}
|
||||
}
|
||||
|
||||
fn handle_set_direct_scanout_enabled(
|
||||
&self,
|
||||
device: Option<DrmDevice>,
|
||||
enabled: bool,
|
||||
) -> Result<(), CphError> {
|
||||
match device {
|
||||
Some(dev) => self
|
||||
.get_drm_device(dev)?
|
||||
.set_direct_scanout_enabled(&self.state, enabled),
|
||||
_ => self.state.direct_scanout_enabled.set(enabled),
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn handle_set_double_click_interval_usec(&self, usec: u64) {
|
||||
self.state.double_click_interval_usec.set(usec);
|
||||
}
|
||||
|
||||
fn handle_set_double_click_distance(&self, dist: i32) {
|
||||
self.state.double_click_distance.set(dist);
|
||||
}
|
||||
|
||||
fn handle_set_idle(&self, timeout: Duration) {
|
||||
self.state.idle.set_timeout(&self.state, timeout);
|
||||
}
|
||||
|
||||
fn handle_set_key_press_enables_dpms(&self, enabled: bool) {
|
||||
self.state.idle.key_press_enables_dpms.set(enabled);
|
||||
}
|
||||
|
||||
fn handle_set_mouse_move_enables_dpms(&self, enabled: bool) {
|
||||
self.state.idle.mouse_move_enables_dpms.set(enabled);
|
||||
}
|
||||
|
||||
fn handle_set_idle_grace_period(&self, period: Duration) {
|
||||
self.state.idle.set_grace_period(&self.state, period);
|
||||
}
|
||||
|
||||
fn handle_set_explicit_sync_enabled(&self, enabled: bool) {
|
||||
self.state.set_explicit_sync_enabled(enabled);
|
||||
}
|
||||
|
||||
fn handle_set_color_management_enabled(&self, enabled: bool) {
|
||||
self.state.set_color_management_enabled(enabled);
|
||||
}
|
||||
|
||||
fn handle_run(
|
||||
&self,
|
||||
prog: &str,
|
||||
|
|
|
|||
131
src/config/handler/options.rs
Normal file
131
src/config/handler/options.rs
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
use super::*;
|
||||
|
||||
impl ConfigProxyHandler {
|
||||
pub(super) fn handle_set_ei_socket_enabled(&self, enabled: bool) {
|
||||
self.state.set_ei_socket_enabled(enabled);
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_gfx_api(
|
||||
&self,
|
||||
device: Option<DrmDevice>,
|
||||
api: GfxApi,
|
||||
) -> Result<(), CphError> {
|
||||
let Ok(api) = api.try_into() else {
|
||||
return Err(CphError::UnknownGfxApi(api));
|
||||
};
|
||||
match device {
|
||||
Some(dev) => self.get_drm_device(dev)?.dev.set_gfx_api(api),
|
||||
_ => self.state.default_gfx_api.set(api),
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_flip_margin(
|
||||
&self,
|
||||
device: DrmDevice,
|
||||
margin: Duration,
|
||||
) -> Result<(), CphError> {
|
||||
self.get_drm_device(device)?.set_flip_margin(
|
||||
&self.state,
|
||||
margin.as_nanos().try_into().unwrap_or(u64::MAX),
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_x_scaling_mode(
|
||||
&self,
|
||||
mode: XScalingMode,
|
||||
) -> Result<(), CphError> {
|
||||
let use_wire_scale = match mode {
|
||||
XScalingMode::DEFAULT => false,
|
||||
XScalingMode::DOWNSCALED => true,
|
||||
_ => return Err(CphError::UnknownXScalingMode(mode)),
|
||||
};
|
||||
self.state.set_xwayland_use_wire_scale(use_wire_scale);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_x_wayland_enabled(&self, enabled: bool) -> Result<(), CphError> {
|
||||
self.state.set_xwayland_enabled(enabled);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_ui_drag_enabled(&self, enabled: bool) {
|
||||
self.state.set_ui_drag_enabled(enabled);
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_ui_drag_threshold(&self, threshold: i32) {
|
||||
self.state.set_ui_drag_threshold(threshold.max(1));
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_animations_enabled(&self, enabled: bool) {
|
||||
self.state.set_animations_enabled(enabled);
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_animation_duration_ms(&self, duration_ms: u32) {
|
||||
self.state
|
||||
.set_animation_duration_ms(duration_ms.min(10_000));
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_animation_curve(&self, curve: u32) {
|
||||
self.state.set_animation_curve(curve);
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_animation_style(&self, style: u32) {
|
||||
if !self.state.set_animation_style(style) {
|
||||
log::warn!("Ignoring invalid animation style");
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_animation_cubic_bezier(&self, x1: f32, y1: f32, x2: f32, y2: f32) {
|
||||
if !self.state.set_animation_cubic_bezier(x1, y1, x2, y2) {
|
||||
log::warn!("Ignoring invalid animation cubic-bezier curve");
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_direct_scanout_enabled(
|
||||
&self,
|
||||
device: Option<DrmDevice>,
|
||||
enabled: bool,
|
||||
) -> Result<(), CphError> {
|
||||
match device {
|
||||
Some(dev) => self
|
||||
.get_drm_device(dev)?
|
||||
.set_direct_scanout_enabled(&self.state, enabled),
|
||||
_ => self.state.direct_scanout_enabled.set(enabled),
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_double_click_interval_usec(&self, usec: u64) {
|
||||
self.state.double_click_interval_usec.set(usec);
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_double_click_distance(&self, dist: i32) {
|
||||
self.state.double_click_distance.set(dist);
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_idle(&self, timeout: Duration) {
|
||||
self.state.idle.set_timeout(&self.state, timeout);
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_key_press_enables_dpms(&self, enabled: bool) {
|
||||
self.state.idle.key_press_enables_dpms.set(enabled);
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_mouse_move_enables_dpms(&self, enabled: bool) {
|
||||
self.state.idle.mouse_move_enables_dpms.set(enabled);
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_idle_grace_period(&self, period: Duration) {
|
||||
self.state.idle.set_grace_period(&self.state, period);
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_explicit_sync_enabled(&self, enabled: bool) {
|
||||
self.state.set_explicit_sync_enabled(enabled);
|
||||
}
|
||||
|
||||
pub(super) fn handle_set_color_management_enabled(&self, enabled: bool) {
|
||||
self.state.set_color_management_enabled(enabled);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue