kopia lustrzana https://github.com/Tldraw/Tldraw
This reverts commit 741ed00bda
.
### Change Type
- [x] `sdk` — Changes the tldraw SDK
- [x] `bugfix` — Bug fix
### Release Notes
This performance optimisation introduced a regression where sometimes
computed caches wouldn't get invalidated at the correct time, leading to
stale data causing crashes. We're reverting the change for now.
pull/3643/head
rodzic
63b78d2526
commit
d645b24ca7
|
@ -4,7 +4,7 @@ import { HistoryBuffer } from './HistoryBuffer'
|
||||||
import { maybeCaptureParent, startCapturingParents, stopCapturingParents } from './capture'
|
import { maybeCaptureParent, startCapturingParents, stopCapturingParents } from './capture'
|
||||||
import { GLOBAL_START_EPOCH } from './constants'
|
import { GLOBAL_START_EPOCH } from './constants'
|
||||||
import { EMPTY_ARRAY, equals, haveParentsChanged, singleton } from './helpers'
|
import { EMPTY_ARRAY, equals, haveParentsChanged, singleton } from './helpers'
|
||||||
import { getGlobalEpoch, getIsReacting } from './transactions'
|
import { getGlobalEpoch } from './transactions'
|
||||||
import { Child, ComputeDiff, RESET_VALUE, Signal } from './types'
|
import { Child, ComputeDiff, RESET_VALUE, Signal } from './types'
|
||||||
import { logComputedGetterWarning } from './warnings'
|
import { logComputedGetterWarning } from './warnings'
|
||||||
|
|
||||||
|
@ -189,15 +189,8 @@ class __UNSAFE__Computed<Value, Diff = unknown> implements Computed<Value, Diff>
|
||||||
__unsafe__getWithoutCapture(ignoreErrors?: boolean): Value {
|
__unsafe__getWithoutCapture(ignoreErrors?: boolean): Value {
|
||||||
const isNew = this.lastChangedEpoch === GLOBAL_START_EPOCH
|
const isNew = this.lastChangedEpoch === GLOBAL_START_EPOCH
|
||||||
|
|
||||||
const globalEpoch = getGlobalEpoch()
|
if (!isNew && (this.lastCheckedEpoch === getGlobalEpoch() || !haveParentsChanged(this))) {
|
||||||
|
this.lastCheckedEpoch = getGlobalEpoch()
|
||||||
if (
|
|
||||||
!isNew &&
|
|
||||||
(this.lastCheckedEpoch === globalEpoch ||
|
|
||||||
(this.isActivelyListening && getIsReacting() && this.lastTraversedEpoch < globalEpoch) ||
|
|
||||||
!haveParentsChanged(this))
|
|
||||||
) {
|
|
||||||
this.lastCheckedEpoch = globalEpoch
|
|
||||||
if (this.error) {
|
if (this.error) {
|
||||||
if (!ignoreErrors) {
|
if (!ignoreErrors) {
|
||||||
throw this.error.thrownValue
|
throw this.error.thrownValue
|
||||||
|
|
|
@ -70,10 +70,6 @@ export function getGlobalEpoch() {
|
||||||
return inst.globalEpoch
|
return inst.globalEpoch
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getIsReacting() {
|
|
||||||
return inst.globalIsReacting
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Collect all of the reactors that need to run for an atom and run them.
|
* Collect all of the reactors that need to run for an atom and run them.
|
||||||
*
|
*
|
||||||
|
|
Ładowanie…
Reference in New Issue