Commit 29d1fac3 authored by Roman Sedaikin's avatar Roman Sedaikin

Refactoring, added disposing redrawer when falling back to raster.

parent c02c672c
...@@ -33,7 +33,7 @@ open class SkiaPanel: JLayeredPane { ...@@ -33,7 +33,7 @@ open class SkiaPanel: JLayeredPane {
} }
override fun removeNotify() { override fun removeNotify() {
super.removeNotify()
layer.dispose() layer.dispose()
super.removeNotify()
} }
} }
...@@ -15,7 +15,7 @@ internal interface PlatformOperations { ...@@ -15,7 +15,7 @@ internal interface PlatformOperations {
fun isFullscreen(component: Component): Boolean fun isFullscreen(component: Component): Boolean
fun setFullscreen(component: Component, value: Boolean) fun setFullscreen(component: Component, value: Boolean)
fun getDpiScale(component: Component): Float fun getDpiScale(component: Component): Float
fun createHardwareRedrawer(layer: HardwareLayer): Redrawer fun createRedrawer(layer: HardwareLayer): Redrawer
} }
internal val platformOperations: PlatformOperations by lazy { internal val platformOperations: PlatformOperations by lazy {
...@@ -33,7 +33,7 @@ internal val platformOperations: PlatformOperations by lazy { ...@@ -33,7 +33,7 @@ internal val platformOperations: PlatformOperations by lazy {
return component.graphicsConfiguration.defaultTransform.scaleX.toFloat() return component.graphicsConfiguration.defaultTransform.scaleX.toFloat()
} }
override fun createHardwareRedrawer(layer: HardwareLayer) = when(renderApi) { override fun createRedrawer(layer: HardwareLayer) = when(renderApi) {
GraphicsApi.RASTER -> RasterRedrawer(layer) GraphicsApi.RASTER -> RasterRedrawer(layer)
else -> MacOsRedrawer(layer) else -> MacOsRedrawer(layer)
} }
...@@ -56,7 +56,7 @@ internal val platformOperations: PlatformOperations by lazy { ...@@ -56,7 +56,7 @@ internal val platformOperations: PlatformOperations by lazy {
return component.graphicsConfiguration.defaultTransform.scaleX.toFloat() return component.graphicsConfiguration.defaultTransform.scaleX.toFloat()
} }
override fun createHardwareRedrawer(layer: HardwareLayer) = when(renderApi) { override fun createRedrawer(layer: HardwareLayer) = when(renderApi) {
GraphicsApi.RASTER -> RasterRedrawer(layer) GraphicsApi.RASTER -> RasterRedrawer(layer)
else -> WindowsRedrawer(layer) else -> WindowsRedrawer(layer)
} }
...@@ -92,7 +92,7 @@ internal val platformOperations: PlatformOperations by lazy { ...@@ -92,7 +92,7 @@ internal val platformOperations: PlatformOperations by lazy {
// return linuxGetDpiScaleNative(component) // return linuxGetDpiScaleNative(component)
} }
override fun createHardwareRedrawer(layer: HardwareLayer) = when(renderApi) { override fun createRedrawer(layer: HardwareLayer) = when(renderApi) {
GraphicsApi.RASTER -> RasterRedrawer(layer) GraphicsApi.RASTER -> RasterRedrawer(layer)
else -> LinuxRedrawer(layer) else -> LinuxRedrawer(layer)
} }
......
...@@ -31,7 +31,7 @@ open class SkiaLayer : HardwareLayer() { ...@@ -31,7 +31,7 @@ open class SkiaLayer : HardwareLayer() {
override fun init() { override fun init() {
super.init() super.init()
redrawer = platformOperations.createHardwareRedrawer(this) redrawer = platformOperations.createRedrawer(this)
redrawer?.syncSize() redrawer?.syncSize()
needRedraw() needRedraw()
} }
...@@ -135,6 +135,7 @@ open class SkiaLayer : HardwareLayer() { ...@@ -135,6 +135,7 @@ open class SkiaLayer : HardwareLayer() {
private fun fallbackToRaster() { private fun fallbackToRaster() {
println("Falling back to software rendering...") println("Falling back to software rendering...")
redrawer?.dispose()
skijaState = RasterContextHandler(this) skijaState = RasterContextHandler(this)
redrawer = RasterRedrawer(this) redrawer = RasterRedrawer(this)
needRedraw() needRedraw()
......
...@@ -24,8 +24,6 @@ private fun parseRenderApi(text: String?): GraphicsApi { ...@@ -24,8 +24,6 @@ private fun parseRenderApi(text: String?): GraphicsApi {
when(text) { when(text) {
"RASTER" -> return GraphicsApi.RASTER "RASTER" -> return GraphicsApi.RASTER
"OPENGL" -> return GraphicsApi.OPENGL "OPENGL" -> return GraphicsApi.OPENGL
"VULKAN" -> return GraphicsApi.VULKAN
"METAL" -> return GraphicsApi.METAL
else -> return GraphicsApi.OPENGL else -> return GraphicsApi.OPENGL
} }
} }
...@@ -34,7 +32,6 @@ internal fun createContextHandler(layer: HardwareLayer): ContextHandler { ...@@ -34,7 +32,6 @@ internal fun createContextHandler(layer: HardwareLayer): ContextHandler {
return when (renderApi) { return when (renderApi) {
GraphicsApi.RASTER -> RasterContextHandler(layer) GraphicsApi.RASTER -> RasterContextHandler(layer)
GraphicsApi.OPENGL -> OpenGLContextHandler(layer) GraphicsApi.OPENGL -> OpenGLContextHandler(layer)
GraphicsApi.METAL -> MetalContextHandler(layer)
else -> TODO("Unsupported yet") else -> TODO("Unsupported yet")
} }
} }
......
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