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