text_view: Use weak references to the state in async task to avoid memory leaks. (#1311)
This commit is contained in:
parent
880c019fb8
commit
591cfc8dab
1 changed files with 14 additions and 9 deletions
|
|
@ -518,17 +518,22 @@ impl Element for TextView {
|
||||||
});
|
});
|
||||||
|
|
||||||
cx.spawn({
|
cx.spawn({
|
||||||
let state = self.state.clone();
|
let state = self.state.downgrade();
|
||||||
async move |cx| {
|
async move |cx| {
|
||||||
while let Ok(parsed_result) = rx_result.recv().await {
|
while let Ok(parsed_result) = rx_result.recv().await {
|
||||||
_ = state.update(cx, |state, cx| {
|
if let Some(state) = state.upgrade() {
|
||||||
state.parsed_result = Some(parsed_result);
|
_ = state.update(cx, |state, cx| {
|
||||||
if let Some(parent_entity) = state.parent_entity {
|
state.parsed_result = Some(parsed_result);
|
||||||
let app = &mut **cx;
|
if let Some(parent_entity) = state.parent_entity {
|
||||||
app.notify(parent_entity);
|
let app = &mut **cx;
|
||||||
}
|
app.notify(parent_entity);
|
||||||
state.clear_selection();
|
}
|
||||||
});
|
state.clear_selection();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// state released, stopping processing
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue