Add more asserts around thread safety.

This commit is contained in:
Matthew Chen 2021-05-17 16:10:45 -03:00
parent 648ff09546
commit aece6832f4
3 changed files with 16 additions and 4 deletions

View File

@ -166,6 +166,7 @@ class GifPickerCell: UICollectionViewCell {
assetDescription: previewAssetDescription,
priority: .low,
success: { [weak self] assetRequest, asset in
AssertIsOnMainThread()
guard let self = self else { return }
guard assetRequest == self.previewAssetRequest else {
owsFailDebug("Obsolete request callback.")
@ -176,6 +177,7 @@ class GifPickerCell: UICollectionViewCell {
self.ensureViewState()
},
failure: { [weak self] assetRequest in
AssertIsOnMainThread()
guard let self = self else { return }
guard assetRequest == self.previewAssetRequest else {
owsFailDebug("Obsolete request callback.")
@ -187,6 +189,8 @@ class GifPickerCell: UICollectionViewCell {
}
private func ensureViewState() {
AssertIsOnMainThread()
guard isCellVisible, let asset = previewAsset else {
// Nothing to show,
clearViewState()
@ -216,6 +220,8 @@ class GifPickerCell: UICollectionViewCell {
}
private func clearViewState() {
AssertIsOnMainThread()
imageView.image = nil
imageView.isHidden = true
mp4View.video = nil

View File

@ -113,6 +113,8 @@ open class ManualLayoutView: UIView {
}
func viewSizeDidChange() {
AssertIsOnMainThread()
layoutSubviews()
}
@ -151,6 +153,8 @@ open class ManualLayoutView: UIView {
// MARK: - Reset
open func reset() {
AssertIsOnMainThread()
removeAllSubviews()
layoutBlocks.removeAll()

View File

@ -98,8 +98,10 @@ open class ManualStackView: ManualLayoutView {
// We cache the resolved layout of the subviews.
private var arrangement: Arrangement? {
didSet {
invalidateIntrinsicContentSize()
setNeedsLayout()
if arrangement != nil {
invalidateIntrinsicContentSize()
setNeedsLayout()
}
}
}
@ -111,8 +113,6 @@ open class ManualStackView: ManualLayoutView {
public func invalidateArrangement() {
arrangement = nil
invalidateIntrinsicContentSize()
setNeedsLayout()
}
public override func sizeThatFits(_ size: CGSize) -> CGSize {
@ -587,6 +587,8 @@ open class ManualStackView: ManualLayoutView {
}
open override func reset() {
AssertIsOnMainThread()
super.reset()
alignment = .fill