improv: call malloc_trim after view and update calls
This commit is contained in:
parent
76348bb985
commit
1f826e38b9
2 changed files with 28 additions and 5 deletions
|
|
@ -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"))]
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue