Skip to content

Commit

Permalink
improv: call malloc_trim after view and update calls
Browse files Browse the repository at this point in the history
  • Loading branch information
mmstick committed Feb 19, 2025
1 parent 76348bb commit 1f826e3
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
25 changes: 20 additions & 5 deletions src/app/cosmic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,13 +117,18 @@ where
&mut self,
message: super::Message<T::Message>,
) -> iced::Task<super::Message<T::Message>> {
match message {
let message = match message {
super::Message::App(message) => self.app.update(message),
super::Message::Cosmic(message) => self.cosmic_update(message),
super::Message::None => iced::Task::none(),
#[cfg(feature = "single-instance")]
super::Message::DbusActivation(message) => self.app.dbus_activation(message),
}
};

#[cfg(target_env = "gnu")]
crate::malloc::trim(0);

message
}

#[cfg(not(feature = "multi-window"))]
Expand Down Expand Up @@ -291,16 +296,26 @@ where
return self.app.view_window(id).map(super::Message::App);
}

if self.app.core().window.use_template {
let view = if self.app.core().window.use_template {
self.app.view_main()
} else {
self.app.view().map(super::Message::App)
}
};

#[cfg(target_env = "gnu")]
crate::malloc::trim(0);

view
}

#[cfg(not(feature = "multi-window"))]
pub fn view(&self) -> Element<super::Message<T::Message>> {
self.app.view_main()
let view = self.app.view_main();

#[cfg(target_env = "gnu")]
crate::malloc::trim(0);

view
}
}

Expand Down
8 changes: 8 additions & 0 deletions src/malloc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,17 @@ use std::os::raw::c_int;
const M_MMAP_THRESHOLD: c_int = -3;

extern "C" {
fn malloc_trim(pad: usize);

fn mallopt(param: c_int, value: c_int) -> c_int;
}

pub fn trim(pad: usize) {
unsafe {
malloc_trim(pad);
}
}

/// Prevents glibc from hoarding memory via memory fragmentation.
pub fn limit_mmap_threshold(threshold: i32) {
unsafe {
Expand Down

0 comments on commit 1f826e3

Please sign in to comment.