63 if (!(node->fFlags & kObserverArray_Flag)) {
64 if (!node->fInvalObserver) {
65 node->fInvalObserver =
this;
69 auto observers =
new std::vector<Node*>();
70 observers->reserve(2);
71 observers->push_back(node->fInvalObserver);
73 node->fInvalObserverArray = observers;
74 node->fFlags |= kObserverArray_Flag;
78 SkASSERT(std::find(node->fInvalObserverArray->begin(),
79 node->fInvalObserverArray->end(),
this) == node->fInvalObserverArray->end());
81 node->fInvalObserverArray->push_back(
this);
86 if (!(node->fFlags & kObserverArray_Flag)) {
87 SkASSERT(node->fInvalObserver ==
this);
88 node->fInvalObserver =
nullptr;
92 SkDEBUGCODE(
const auto origSize = node->fInvalObserverArray->size());
93 node->fInvalObserverArray->erase(std::remove(node->fInvalObserverArray->begin(),
94 node->fInvalObserverArray->end(),
this),
95 node->fInvalObserverArray->end());
96 SkASSERT(node->fInvalObserverArray->size() == origSize - 1);