Unverified Commit bdd5d0b1 authored by Manuel Unterhofer's avatar Manuel Unterhofer Committed by GitHub

Avoid duplicated scale transform updates (#687)

parent 66c5e2bf
...@@ -75,6 +75,7 @@ actual open class SkiaLayer internal constructor( ...@@ -75,6 +75,7 @@ actual open class SkiaLayer internal constructor(
get() = backedLayer get() = backedLayer
private var peerBufferSizeFixJob: Job? = null private var peerBufferSizeFixJob: Job? = null
private var latestReceivedGraphicsContextScaleTransform: AffineTransform? = null
init { init {
isOpaque = false isOpaque = false
...@@ -123,8 +124,10 @@ actual open class SkiaLayer internal constructor( ...@@ -123,8 +124,10 @@ actual open class SkiaLayer internal constructor(
} }
} }
addPropertyChangeListener("graphicsContextScaleTransform") { addPropertyChangeListener("graphicsContextScaleTransform") {
Logger.debug { "graphicsContextScaleTransform changed for $this" } Logger.debug { "graphicsContextScaleTransform changed for $this" }
latestReceivedGraphicsContextScaleTransform = it.newValue as AffineTransform
redrawer?.syncSize() redrawer?.syncSize()
notifyChange(PropertyKind.ContentScale) notifyChange(PropertyKind.ContentScale)
...@@ -234,12 +237,15 @@ actual open class SkiaLayer internal constructor( ...@@ -234,12 +237,15 @@ actual open class SkiaLayer internal constructor(
override fun mousePressed(e: MouseEvent) { override fun mousePressed(e: MouseEvent) {
skikoView?.onPointerEvent(toSkikoEvent(e)) skikoView?.onPointerEvent(toSkikoEvent(e))
} }
override fun mouseReleased(e: MouseEvent) { override fun mouseReleased(e: MouseEvent) {
skikoView?.onPointerEvent(toSkikoEvent(e)) skikoView?.onPointerEvent(toSkikoEvent(e))
} }
override fun mouseEntered(e: MouseEvent) { override fun mouseEntered(e: MouseEvent) {
skikoView?.onPointerEvent(toSkikoEvent(e)) skikoView?.onPointerEvent(toSkikoEvent(e))
} }
override fun mouseExited(e: MouseEvent) { override fun mouseExited(e: MouseEvent) {
skikoView?.onPointerEvent(toSkikoEvent(e)) skikoView?.onPointerEvent(toSkikoEvent(e))
} }
...@@ -249,6 +255,7 @@ actual open class SkiaLayer internal constructor( ...@@ -249,6 +255,7 @@ actual open class SkiaLayer internal constructor(
override fun mouseDragged(e: MouseEvent) { override fun mouseDragged(e: MouseEvent) {
skikoView?.onPointerEvent(toSkikoEvent(e)) skikoView?.onPointerEvent(toSkikoEvent(e))
} }
override fun mouseMoved(e: MouseEvent) { override fun mouseMoved(e: MouseEvent) {
skikoView?.onPointerEvent(toSkikoEvent(e)) skikoView?.onPointerEvent(toSkikoEvent(e))
} }
...@@ -265,10 +272,12 @@ actual open class SkiaLayer internal constructor( ...@@ -265,10 +272,12 @@ actual open class SkiaLayer internal constructor(
keyEvent = e keyEvent = e
skikoView?.onKeyboardEvent(toSkikoEvent(e)) skikoView?.onKeyboardEvent(toSkikoEvent(e))
} }
override fun keyReleased(e: KeyEvent) { override fun keyReleased(e: KeyEvent) {
keyEvent = e keyEvent = e
skikoView?.onKeyboardEvent(toSkikoEvent(e)) skikoView?.onKeyboardEvent(toSkikoEvent(e))
} }
override fun keyTyped(e: KeyEvent) { override fun keyTyped(e: KeyEvent) {
skikoView?.onInputEvent(toSkikoTypeEvent(e, keyEvent)) skikoView?.onInputEvent(toSkikoTypeEvent(e, keyEvent))
} }
...@@ -278,6 +287,7 @@ actual open class SkiaLayer internal constructor( ...@@ -278,6 +287,7 @@ actual open class SkiaLayer internal constructor(
override fun caretPositionChanged(e: InputMethodEvent) { override fun caretPositionChanged(e: InputMethodEvent) {
skikoView?.onInputEvent(toSkikoTypeEvent(e, keyEvent)) skikoView?.onInputEvent(toSkikoTypeEvent(e, keyEvent))
} }
override fun inputMethodTextChanged(e: InputMethodEvent) { override fun inputMethodTextChanged(e: InputMethodEvent) {
skikoView?.onInputEvent(toSkikoTypeEvent(e, keyEvent)) skikoView?.onInputEvent(toSkikoTypeEvent(e, keyEvent))
} }
...@@ -393,15 +403,15 @@ actual open class SkiaLayer internal constructor( ...@@ -393,15 +403,15 @@ actual open class SkiaLayer internal constructor(
} }
} }
private var latestCheckedDefaultTransform: AffineTransform? = null
// Workaround for JBR-5274 and JBR-5305 // Workaround for JBR-5274 and JBR-5305
fun checkContentScale() { fun checkContentScale() {
graphicsConfiguration.defaultTransform.let { val currentGraphicsContextScaleTransform = graphicsConfiguration.defaultTransform
if (it != latestCheckedDefaultTransform) { if (currentGraphicsContextScaleTransform != latestReceivedGraphicsContextScaleTransform) {
firePropertyChange("graphicsContextScaleTransform", latestCheckedDefaultTransform, it) firePropertyChange(
latestCheckedDefaultTransform = it "graphicsContextScaleTransform",
} latestReceivedGraphicsContextScaleTransform,
currentGraphicsContextScaleTransform
)
} }
} }
...@@ -605,7 +615,8 @@ actual open class SkiaLayer internal constructor( ...@@ -605,7 +615,8 @@ actual open class SkiaLayer internal constructor(
return lockPicture { picture -> return lockPicture { picture ->
val store = Bitmap() val store = Bitmap()
val ci = ColorInfo( val ci = ColorInfo(
ColorType.BGRA_8888, ColorAlphaType.OPAQUE, ColorSpace.sRGB) ColorType.BGRA_8888, ColorAlphaType.OPAQUE, ColorSpace.sRGB
)
store.setImageInfo(ImageInfo(ci, picture.width, picture.height)) store.setImageInfo(ImageInfo(ci, picture.width, picture.height))
store.allocN32Pixels(picture.width, picture.height) store.allocN32Pixels(picture.width, picture.height)
val canvas = Canvas(store) val canvas = Canvas(store)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment