Skip to content

Commit befed87

Browse files
committed
Save drawing operations to a state holder object
This is to avoid throwing `TransactionTooLargeException` when there are a large number of operations
1 parent 0d24e8b commit befed87

File tree

2 files changed

+12
-52
lines changed

2 files changed

+12
-52
lines changed

app/src/main/kotlin/com/simplemobiletools/draw/pro/models/MyParcelable.kt

Lines changed: 0 additions & 40 deletions
This file was deleted.

app/src/main/kotlin/com/simplemobiletools/draw/pro/views/MyCanvas.kt

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import com.simplemobiletools.commons.helpers.ensureBackgroundThread
1818
import com.simplemobiletools.draw.pro.R
1919
import com.simplemobiletools.draw.pro.extensions.*
2020
import com.simplemobiletools.draw.pro.interfaces.CanvasListener
21-
import com.simplemobiletools.draw.pro.models.MyParcelable
2221
import com.simplemobiletools.draw.pro.models.MyPath
2322
import com.simplemobiletools.draw.pro.models.PaintOptions
2423
import java.util.concurrent.ExecutionException
@@ -86,21 +85,17 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) {
8685
updateUndoVisibility()
8786
}
8887

89-
public override fun onSaveInstanceState(): Parcelable {
90-
val superState = super.onSaveInstanceState()
91-
val savedState = MyParcelable(superState!!)
92-
savedState.operations = mOperations
93-
return savedState
88+
public override fun onSaveInstanceState(): Parcelable? {
89+
DrawingStateHolder.operations = mOperations
90+
return super.onSaveInstanceState()
9491
}
9592

9693
public override fun onRestoreInstanceState(state: Parcelable) {
97-
if (state !is MyParcelable) {
98-
super.onRestoreInstanceState(state)
99-
return
94+
val savedOperations = DrawingStateHolder.operations
95+
if (savedOperations != null) {
96+
mOperations = savedOperations
10097
}
101-
102-
super.onRestoreInstanceState(state.superState)
103-
mOperations = state.operations
98+
super.onRestoreInstanceState(state)
10499
updateUndoVisibility()
105100
}
106101

@@ -450,3 +445,8 @@ class MyCanvas(context: Context, attrs: AttributeSet) : View(context, attrs) {
450445
}
451446
}
452447
}
448+
449+
// since we don't use view models, this serves as a simple state holder to save drawing operations
450+
object DrawingStateHolder {
451+
var operations: LinkedHashMap<MyPath, PaintOptions>? = null
452+
}

0 commit comments

Comments
 (0)