Avoid notifying views that have been removed

This commit is contained in:
Antonio Scandurra 2022-05-31 10:36:10 +02:00
parent e067212ad4
commit 34bf248614

View file

@ -2269,6 +2269,13 @@ impl MutableAppContext {
observed_window_id: usize, observed_window_id: usize,
observed_view_id: usize, observed_view_id: usize,
) { ) {
let callbacks = self.observations.lock().remove(&observed_view_id);
if self
.cx
.views
.contains_key(&(observed_window_id, observed_view_id))
{
if let Some(window) = self.cx.windows.get_mut(&observed_window_id) { if let Some(window) = self.cx.windows.get_mut(&observed_window_id) {
window window
.invalidation .invalidation
@ -2277,13 +2284,7 @@ impl MutableAppContext {
.insert(observed_view_id); .insert(observed_view_id);
} }
let callbacks = self.observations.lock().remove(&observed_view_id);
if let Some(callbacks) = callbacks { if let Some(callbacks) = callbacks {
if self
.cx
.views
.contains_key(&(observed_window_id, observed_view_id))
{
for (id, callback) in callbacks { for (id, callback) in callbacks {
if let Some(mut callback) = callback { if let Some(mut callback) = callback {
let alive = callback(self); let alive = callback(self);