Integrate native Rime and stabilize input, output, and rendering
- Add optional modifier-only Super binding whose tap is cancelled by other input, focus changes, grabs, locks, and session teardown. - Ship the native ferese-rime user service, Rime defaults, installer inventory, package dependencies, session environment, and docs. - Vendor Smithay 8a27023 with the SHM texture-cache format fix and add GPU regressions for format changes and resize snapshots. - Release reused CRTC owners before staging output modes, then restore changed outputs before former owners when a transaction fails. - Wait for resize-capture GPU completion, expand filtered surface damage, and preserve IME popup origin under fractional scaling. - Mark weekends like holidays in both calendar layouts.
This commit is contained in:
1 parent
a2be421974
commit
993bc0f88f
391 files changed
+130908
-76
No files matched your search
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
use criterion::{Criterion, criterion_group, criterion_main};
|
||||
use smithay::utils::user_data::UserDataMap;
|
||||
|
||||
fn criterion_benchmark(c: &mut Criterion) {
|
||||
c.bench_function("UserDataMap::get", |b| {
|
||||
let udata_map = UserDataMap::new();
|
||||
udata_map.insert_if_missing(|| 17i32);
|
||||
b.iter(|| udata_map.get::<i32>())
|
||||
});
|
||||
c.bench_function("UserDataMap::get threadsafe", |b| {
|
||||
let udata_map = UserDataMap::new();
|
||||
udata_map.insert_if_missing_threadsafe(|| 17i32);
|
||||
b.iter(|| udata_map.get::<i32>())
|
||||
});
|
||||
}
|
||||
|
||||
criterion_group!(benches, criterion_benchmark);
|
||||
criterion_main!(benches);
|
||||
Vendored
+50
@@ -0,0 +1,50 @@
|
||||
use criterion::{Criterion, criterion_group, criterion_main};
|
||||
use rand::RngExt;
|
||||
use smithay::utils::{Physical, Rectangle, Size};
|
||||
|
||||
fn element_visible_size(test_element: Rectangle<i32, Physical>, opaque_regions: &[Rectangle<i32, Physical>]) {
|
||||
let mut workhouse = Vec::with_capacity(2048 * 4);
|
||||
workhouse.push(test_element);
|
||||
workhouse = Rectangle::subtract_rects_many_in_place(workhouse, opaque_regions.iter().copied());
|
||||
workhouse
|
||||
.iter()
|
||||
.fold(0usize, |acc, item| acc + (item.size.w * item.size.h) as usize);
|
||||
}
|
||||
|
||||
fn criterion_benchmark(c: &mut Criterion) {
|
||||
let stage: Size<i32, Physical> = Size::from((800, 600));
|
||||
let element_size: Size<i32, Physical> = Size::from((200, 100));
|
||||
let max_x = stage.w - element_size.w;
|
||||
let max_y = stage.h - element_size.h;
|
||||
|
||||
let mut rand = rand::rng();
|
||||
let x = rand.random_range(0..max_x);
|
||||
let y = rand.random_range(0..max_y);
|
||||
let test_element = Rectangle::new((x, y).into(), element_size);
|
||||
|
||||
let x_min = (test_element.loc.x - element_size.w) + 1;
|
||||
let x_max = (test_element.loc.x + element_size.w) - 1;
|
||||
let y_min = (test_element.loc.y - element_size.h) + 1;
|
||||
let y_max = (test_element.loc.y + element_size.h) - 1;
|
||||
// let x_min = 0;
|
||||
// let x_max = stage.w - element_size.w;
|
||||
// let y_min = 0;
|
||||
// let y_max = stage.h - element_size.h;
|
||||
|
||||
let opaque_regions = (0..2048)
|
||||
.map(|_| {
|
||||
let x = rand.random_range(x_min..=x_max);
|
||||
let y = rand.random_range(y_min..=y_max);
|
||||
Rectangle::new((x, y).into(), element_size)
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
c.bench_function("element_visible_size", |b| {
|
||||
b.iter(|| {
|
||||
element_visible_size(test_element, &opaque_regions);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
criterion_group!(benches, criterion_benchmark);
|
||||
criterion_main!(benches);
|
||||
Reference in new issue
Block a user