only run RenderEffects when effects are enabled
This commit is contained in:
parent
8a8862be9e
commit
7f57b88e8d
|
@ -52,34 +52,39 @@ where
|
|||
sources: SourceSet::new(),
|
||||
}));
|
||||
|
||||
let initial_value = Some(owner.with(|| {
|
||||
inner
|
||||
.to_any_subscriber()
|
||||
.with_observer(|| fun(initial_value))
|
||||
}));
|
||||
let initial_value = cfg!(feature = "effects").then(|| {
|
||||
owner.with(|| {
|
||||
inner
|
||||
.to_any_subscriber()
|
||||
.with_observer(|| fun(initial_value))
|
||||
})
|
||||
});
|
||||
*value.write().or_poisoned() = initial_value;
|
||||
|
||||
Executor::spawn_local({
|
||||
let value = Arc::clone(&value);
|
||||
let subscriber = inner.to_any_subscriber();
|
||||
if cfg!(feature = "effects") {
|
||||
Executor::spawn_local({
|
||||
let value = Arc::clone(&value);
|
||||
let subscriber = inner.to_any_subscriber();
|
||||
|
||||
async move {
|
||||
while rx.next().await.is_some() {
|
||||
if subscriber
|
||||
.with_observer(|| subscriber.update_if_necessary())
|
||||
{
|
||||
subscriber.clear_sources(&subscriber);
|
||||
async move {
|
||||
while rx.next().await.is_some() {
|
||||
if subscriber
|
||||
.with_observer(|| subscriber.update_if_necessary())
|
||||
{
|
||||
subscriber.clear_sources(&subscriber);
|
||||
|
||||
let old_value =
|
||||
mem::take(&mut *value.write().or_poisoned());
|
||||
let new_value = owner.with_cleanup(|| {
|
||||
subscriber.with_observer(|| fun(old_value))
|
||||
});
|
||||
*value.write().or_poisoned() = Some(new_value);
|
||||
let old_value =
|
||||
mem::take(&mut *value.write().or_poisoned());
|
||||
let new_value = owner.with_cleanup(|| {
|
||||
subscriber.with_observer(|| fun(old_value))
|
||||
});
|
||||
*value.write().or_poisoned() = Some(new_value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
RenderEffect { value, inner }
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue