Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wl_surface: fix sub-surface extents filter #331

Merged
merged 3 commits into from
Dec 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ ahash = "0.8.7"
log = { version = "0.4.20", features = ["std"] }
futures-util = "0.3.30"
num-traits = "0.2.17"
num-derive = "0.4.1"
num-derive = "0.4.2"
libloading = "0.8.1"
bstr = { version = "1.9.0", default-features = false, features = ["std"] }
isnt = "0.1.0"
Expand Down
2 changes: 1 addition & 1 deletion build/egl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ fn write_egl_procs<W: Write>(f: &mut W) -> anyhow::Result<()> {
for (name, _, _) in map.iter().copied() {
writeln!(
f,
" {}: unsafe {{ (egl.eglGetProcAddress)(\"{}\\0\".as_ptr() as _) }},",
" {}: unsafe {{ (egl.eglGetProcAddress)(c\"{}\".as_ptr() as _) }},",
name, name
)?;
}
Expand Down
1 change: 0 additions & 1 deletion src/cpu_worker/jobs/img_copy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ use {
std::ptr,
};

#[expect(clippy::manual_non_exhaustive)]
pub struct ImgCopyWork {
pub src: *mut u8,
pub dst: *mut u8,
Expand Down
11 changes: 6 additions & 5 deletions src/ifs/wl_surface.rs
Original file line number Diff line number Diff line change
Expand Up @@ -742,8 +742,7 @@ impl WlSurface {
if let Some(children) = self.children.borrow_mut().deref_mut() {
for ss in children.subsurfaces.values() {
let pos = ss.position.get();
ss.surface
.set_absolute_position(x1 + pos.x1(), y1 + pos.y1());
ss.surface.set_absolute_position(x1 + pos.0, y1 + pos.1);
}
}
for (_, con) in &self.text_input_connections {
Expand Down Expand Up @@ -878,7 +877,7 @@ impl WlSurface {
let ce = ss.surface.extents.get();
if !ce.is_empty() {
let cp = ss.position.get();
let ce = ce.move_(cp.x1(), cp.y1());
let ce = ce.move_(cp.0, cp.1);
extents = if extents.is_empty() {
ce
} else {
Expand Down Expand Up @@ -1516,8 +1515,10 @@ impl WlSurface {
continue;
}
let pos = child.sub_surface.position.get();
if pos.contains(x, y) {
let (x, y) = pos.translate(x, y);
let ext = child.sub_surface.surface.extents.get();
let ext = ext.move_(pos.0, pos.1);
if ext.contains(x, y) {
let (x, y) = ext.translate(x, y);
if let Some(res) = child.sub_surface.surface.find_surface_at(x, y) {
return Some(res);
}
Expand Down
6 changes: 2 additions & 4 deletions src/ifs/wl_surface/wl_subsurface.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ use {
},
leaks::Tracker,
object::{Object, Version},
rect::Rect,
utils::{
clonecell::CloneCell,
linkedlist::{LinkedNode, NodeRef},
Expand Down Expand Up @@ -36,7 +35,7 @@ pub struct WlSubsurface {
unique_id: SubsurfaceId,
pub surface: Rc<WlSurface>,
pub(super) parent: Rc<WlSurface>,
pub position: Cell<Rect>,
pub position: Cell<(i32, i32)>,
sync_requested: Cell<bool>,
sync_ancestor: Cell<bool>,
node: RefCell<Option<LinkedNode<StackElement>>>,
Expand Down Expand Up @@ -137,8 +136,7 @@ impl WlSubsurface {
}
if let Some((mut x, mut y)) = pending.position.take() {
client_wire_scale_to_logical!(self.surface.client, x, y);
self.position
.set(self.surface.buffer_abs_pos.get().at_point(x, y));
self.position.set((x, y));
let (parent_x, parent_y) = self.parent.buffer_abs_pos.get().position();
self.surface
.set_absolute_position(parent_x + x, parent_y + y);
Expand Down
4 changes: 2 additions & 2 deletions src/renderer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -389,12 +389,12 @@ impl Renderer<'_> {
continue;
}
let pos = child.sub_surface.position.get();
let (x1, y1) = self.base.scale_point(pos.x1(), pos.y1());
let (x1, y1) = self.base.scale_point(pos.0, pos.1);
self.render_surface_scaled(
&child.sub_surface.surface,
x + x1,
y + y1,
Some((pos.x1(), pos.y1())),
Some(pos),
bounds,
true,
);
Expand Down
2 changes: 1 addition & 1 deletion src/udev.rs
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ impl Udev {
}

pub fn create_monitor(self: &Rc<Self>) -> Result<UdevMonitor, UdevError> {
let res = unsafe { udev_monitor_new_from_netlink(self.udev, "udev\0".as_ptr() as _) };
let res = unsafe { udev_monitor_new_from_netlink(self.udev, c"udev".as_ptr() as _) };
if res.is_null() {
return Err(UdevError::NewMonitor(Errno::default().into()));
}
Expand Down
2 changes: 1 addition & 1 deletion toml-config/src/config/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ impl<'a> Context<'a> {
}
}

impl<'a> ErrorHandler for Context<'a> {
impl ErrorHandler for Context<'_> {
fn handle(&self, err: Spanned<ParserError>) {
log::warn!("{}", Report::new(self.error(err)));
}
Expand Down
4 changes: 2 additions & 2 deletions toml-config/src/config/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ pub struct SpannedError<'a, E> {
pub cause: Option<E>,
}

impl<'a, E: Error> Display for SpannedError<'a, E> {
impl<E: Error> Display for SpannedError<'_, E> {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let original = self.input.deref();
let span = self.span;
Expand Down Expand Up @@ -57,7 +57,7 @@ impl<'a, E: Error> Display for SpannedError<'a, E> {
}
}

impl<'a, E: Error> Error for SpannedError<'a, E> {}
impl<E: Error> Error for SpannedError<'_, E> {}

fn translate_position(input: &[u8], index: usize) -> (usize, usize) {
if input.is_empty() {
Expand Down
2 changes: 1 addition & 1 deletion toml-config/src/config/extractor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ impl<'v> Extractor<'v> {
}
}

impl<'v> Drop for Extractor<'v> {
impl Drop for Extractor<'_> {
fn drop(&mut self) {
if !self.log_unused {
return;
Expand Down
2 changes: 1 addition & 1 deletion toml-config/src/config/parsers/action.rs
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ impl ActionParser<'_> {
}
}

impl<'a> Parser for ActionParser<'a> {
impl Parser for ActionParser<'_> {
type Value = Action;
type Error = ActionParserError;
const EXPECTED: &'static [DataType] = &[DataType::String, DataType::Array, DataType::Table];
Expand Down
4 changes: 2 additions & 2 deletions toml-config/src/config/parsers/connector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ pub enum ConnectorParserError {

pub struct ConnectorParser<'a>(pub &'a Context<'a>);

impl<'a> Parser for ConnectorParser<'a> {
impl Parser for ConnectorParser<'_> {
type Value = ConfigConnector;
type Error = ConnectorParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table];
Expand All @@ -49,7 +49,7 @@ impl<'a> Parser for ConnectorParser<'a> {

pub struct ConnectorsParser<'a>(pub &'a Context<'a>);

impl<'a> Parser for ConnectorsParser<'a> {
impl Parser for ConnectorsParser<'_> {
type Value = Vec<ConfigConnector>;
type Error = ConnectorParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table, DataType::Array];
Expand Down
2 changes: 1 addition & 1 deletion toml-config/src/config/parsers/connector_match.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ pub enum ConnectorMatchParserError {

pub struct ConnectorMatchParser<'a>(pub &'a Context<'a>);

impl<'a> Parser for ConnectorMatchParser<'a> {
impl Parser for ConnectorMatchParser<'_> {
type Value = ConnectorMatch;
type Error = ConnectorMatchParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table, DataType::Array];
Expand Down
4 changes: 2 additions & 2 deletions toml-config/src/config/parsers/drm_device.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ pub struct DrmDeviceParser<'a> {
pub name_ok: bool,
}

impl<'a> Parser for DrmDeviceParser<'a> {
impl Parser for DrmDeviceParser<'_> {
type Value = ConfigDrmDevice;
type Error = DrmDeviceParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table];
Expand Down Expand Up @@ -89,7 +89,7 @@ impl<'a> Parser for DrmDeviceParser<'a> {

pub struct DrmDevicesParser<'a>(pub &'a Context<'a>);

impl<'a> Parser for DrmDevicesParser<'a> {
impl Parser for DrmDevicesParser<'_> {
type Value = Vec<ConfigDrmDevice>;
type Error = DrmDeviceParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table, DataType::Array];
Expand Down
4 changes: 2 additions & 2 deletions toml-config/src/config/parsers/input.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ pub struct InputParser<'a> {
pub is_inputs_array: bool,
}

impl<'a> Parser for InputParser<'a> {
impl Parser for InputParser<'_> {
type Value = Input;
type Error = InputParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table];
Expand Down Expand Up @@ -254,7 +254,7 @@ impl<'a> Parser for InputParser<'a> {

pub struct InputsParser<'a>(pub &'a Context<'a>);

impl<'a> Parser for InputsParser<'a> {
impl Parser for InputsParser<'_> {
type Value = Vec<Input>;
type Error = InputParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table, DataType::Array];
Expand Down
2 changes: 1 addition & 1 deletion toml-config/src/config/parsers/input_match.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ pub enum InputMatchParserError {

pub struct InputMatchParser<'a>(pub &'a Context<'a>);

impl<'a> Parser for InputMatchParser<'a> {
impl Parser for InputMatchParser<'_> {
type Value = InputMatch;
type Error = InputMatchParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table, DataType::Array];
Expand Down
2 changes: 1 addition & 1 deletion toml-config/src/config/parsers/mode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ pub enum ModeParserError {

pub struct ModeParser<'a>(pub &'a Context<'a>);

impl<'a> Parser for ModeParser<'a> {
impl Parser for ModeParser<'_> {
type Value = Mode;
type Error = ModeParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table];
Expand Down
4 changes: 2 additions & 2 deletions toml-config/src/config/parsers/output.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ pub struct OutputParser<'a> {
pub name_ok: bool,
}

impl<'a> Parser for OutputParser<'a> {
impl Parser for OutputParser<'_> {
type Value = Output;
type Error = OutputParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table];
Expand Down Expand Up @@ -150,7 +150,7 @@ impl<'a> Parser for OutputParser<'a> {

pub struct OutputsParser<'a>(pub &'a Context<'a>);

impl<'a> Parser for OutputsParser<'a> {
impl Parser for OutputsParser<'_> {
type Value = Vec<Output>;
type Error = OutputParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table, DataType::Array];
Expand Down
2 changes: 1 addition & 1 deletion toml-config/src/config/parsers/output_match.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ pub enum OutputMatchParserError {

pub struct OutputMatchParser<'a>(pub &'a Context<'a>);

impl<'a> Parser for OutputMatchParser<'a> {
impl Parser for OutputMatchParser<'_> {
type Value = OutputMatch;
type Error = OutputMatchParserError;
const EXPECTED: &'static [DataType] = &[DataType::Table, DataType::Table];
Expand Down
2 changes: 1 addition & 1 deletion toml-config/src/toml/toml_lexer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ pub enum Token<'a> {
Literal(&'a [u8]),
}

impl<'a> Token<'a> {
impl Token<'_> {
pub fn name(self, value_context: bool) -> &'static str {
match self {
Token::Dot => "`.`",
Expand Down
2 changes: 1 addition & 1 deletion toml-config/src/toml/toml_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ struct Parser<'a, 'b> {

type Key = VecDeque<Spanned<String>>;

impl<'a, 'b> Parser<'a, 'b> {
impl<'a> Parser<'a, '_> {
fn parse(mut self) -> Result<Spanned<Value>, Spanned<ParserError>> {
self.parse_document()
}
Expand Down
Loading