Skip to content

Commit 641db1e

Browse files
committed
Ensure shaders are removed everywhere
1 parent f57b850 commit 641db1e

File tree

1 file changed

+11
-2
lines changed
  • sentry-android-replay/src/main/java/io/sentry/android/replay/screenshot

1 file changed

+11
-2
lines changed

sentry-android-replay/src/main/java/io/sentry/android/replay/screenshot/CanvasStrategy.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,10 @@ private class TextIgnoringDelegateCanvas : Canvas() {
283283

284284
@Deprecated("Deprecated in Java")
285285
override fun saveLayer(bounds: RectF?, paint: Paint?, saveFlags: Int): Int {
286-
return delegate.saveLayer(bounds, paint, saveFlags)
286+
val shader = removeBitmapShader(paint)
287+
val result = delegate.saveLayer(bounds, paint, saveFlags)
288+
shader.let { paint?.shader = it }
289+
return result
287290
}
288291

289292
override fun saveLayer(bounds: RectF?, paint: Paint?): Int {
@@ -302,7 +305,10 @@ private class TextIgnoringDelegateCanvas : Canvas() {
302305
paint: Paint?,
303306
saveFlags: Int,
304307
): Int {
305-
return delegate.saveLayer(left, top, right, bottom, paint, saveFlags)
308+
val shader = removeBitmapShader(paint)
309+
val result = delegate.saveLayer(left, top, right, bottom, paint, saveFlags)
310+
shader.let { paint?.shader = it }
311+
return result
306312
}
307313

308314
override fun saveLayer(left: Float, top: Float, right: Float, bottom: Float, paint: Paint?): Int {
@@ -691,7 +697,9 @@ private class TextIgnoringDelegateCanvas : Canvas() {
691697
}
692698

693699
override fun drawPaint(paint: Paint) {
700+
val shader = removeBitmapShader(paint)
694701
delegate.drawPaint(paint)
702+
shader.let { paint.shader = it }
695703
}
696704

697705
@RequiresApi(Build.VERSION_CODES.S)
@@ -993,6 +1001,7 @@ private class TextIgnoringDelegateCanvas : Canvas() {
9931001
)
9941002
}
9951003

1004+
/** Removes the bitmap shader from a paint, returning it so it can be restored later. */
9961005
private fun removeBitmapShader(paint: Paint?): BitmapShader? {
9971006
return if (paint == null) {
9981007
null

0 commit comments

Comments
 (0)