Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
skiko
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liuqiang
skiko
Commits
b0bcda7b
Unverified
Commit
b0bcda7b
authored
Apr 01, 2021
by
Igor Demin
Committed by
GitHub
Apr 01, 2021
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #87 from JetBrains/fix_test
Fix "open windows stress test"
parents
4c99e1d3
8d9c9693
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
38 additions
and
50 deletions
+38
-50
render.cc
skiko/src/jvmMain/cpp/common/render.cc
+0
-6
RenderTargets.kt
...o/src/jvmMain/kotlin/org/jetbrains/skiko/RenderTargets.kt
+0
-2
SkiaLayer.kt
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/SkiaLayer.kt
+11
-3
ContextHandler.kt
...Main/kotlin/org/jetbrains/skiko/context/ContextHandler.kt
+7
-4
Direct3DContextHandler.kt
...lin/org/jetbrains/skiko/context/Direct3DContextHandler.kt
+4
-7
MetalContextHandler.kt
...kotlin/org/jetbrains/skiko/context/MetalContextHandler.kt
+3
-4
OpenGLContextHandler.kt
...otlin/org/jetbrains/skiko/context/OpenGLContextHandler.kt
+2
-4
SoftwareContextHandler.kt
...lin/org/jetbrains/skiko/context/SoftwareContextHandler.kt
+10
-14
Direct3DRedrawer.kt
...n/kotlin/org/jetbrains/skiko/redrawer/Direct3DRedrawer.kt
+1
-6
No files found.
skiko/src/jvmMain/cpp/common/render.cc
View file @
b0bcda7b
...
@@ -25,12 +25,6 @@ JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_RenderTargetsKt_makeGLContextNa
...
@@ -25,12 +25,6 @@ JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_RenderTargetsKt_makeGLContextNa
return
reinterpret_cast
<
jlong
>
(
GrDirectContext
::
MakeGL
().
release
());
return
reinterpret_cast
<
jlong
>
(
GrDirectContext
::
MakeGL
().
release
());
}
}
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skiko_RenderTargetsKt_destroyContext
(
JNIEnv
*
env
,
jobject
object
,
jlong
contextPtr
)
{
GrDirectContext
*
context
=
fromJavaPointer
<
GrDirectContext
*>
(
contextPtr
);
delete
context
;
}
extern
void
getMetalDeviceAndQueue
(
void
**
device
,
void
**
queue
);
extern
void
getMetalDeviceAndQueue
(
void
**
device
,
void
**
queue
);
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skiko_RenderTargetsKt_makeMetalRenderTargetNative
(
JNIEXPORT
jlong
JNICALL
Java_org_jetbrains_skiko_RenderTargetsKt_makeMetalRenderTargetNative
(
...
...
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/RenderTargets.kt
View file @
b0bcda7b
...
@@ -24,5 +24,3 @@ external private fun makeGLContextNative(): Long
...
@@ -24,5 +24,3 @@ external private fun makeGLContextNative(): Long
external
private
fun
makeMetalRenderTargetNative
(
width
:
Int
,
height
:
Int
,
sampleCnt
:
Int
):
Long
external
private
fun
makeMetalRenderTargetNative
(
width
:
Int
,
height
:
Int
,
sampleCnt
:
Int
):
Long
external
private
fun
makeMetalContextNative
():
Long
external
private
fun
makeMetalContextNative
():
Long
external
internal
fun
destroyContext
(
context
:
Long
)
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/SkiaLayer.kt
View file @
b0bcda7b
package
org.jetbrains.skiko
package
org.jetbrains.skiko
import
org.jetbrains.skija.*
import
org.jetbrains.skija.Canvas
import
org.jetbrains.skija.ClipMode
import
org.jetbrains.skija.Picture
import
org.jetbrains.skija.PictureRecorder
import
org.jetbrains.skija.Rect
import
org.jetbrains.skiko.context.ContextHandler
import
org.jetbrains.skiko.context.ContextHandler
import
org.jetbrains.skiko.context.createContextHandler
import
org.jetbrains.skiko.context.createContextHandler
import
org.jetbrains.skiko.redrawer.Redrawer
import
org.jetbrains.skiko.redrawer.Redrawer
import
java.awt.Graphics
import
java.awt.Graphics
import
java.awt.event.*
import
java.awt.event.HierarchyEvent
import
java.awt.event.InputMethodListener
import
java.awt.event.KeyListener
import
java.awt.event.MouseListener
import
java.awt.event.MouseMotionListener
import
java.awt.event.MouseWheelListener
import
javax.swing.JPanel
import
javax.swing.JPanel
import
javax.swing.SwingUtilities.isEventDispatchThread
import
javax.swing.SwingUtilities.isEventDispatchThread
...
@@ -99,7 +108,6 @@ open class SkiaLayer(
...
@@ -99,7 +108,6 @@ open class SkiaLayer(
if
(
isInited
)
{
if
(
isInited
)
{
redrawer
?.
dispose
()
// we should dispose redrawer first (to cancel `draw` in rendering thread)
redrawer
?.
dispose
()
// we should dispose redrawer first (to cancel `draw` in rendering thread)
contextHandler
?.
dispose
()
contextHandler
?.
dispose
()
contextHandler
?.
destroyContext
()
picture
?.
instance
?.
close
()
picture
?.
instance
?.
close
()
pictureRecorder
.
close
()
pictureRecorder
.
close
()
backedLayer
.
dispose
()
backedLayer
.
dispose
()
...
...
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/context/ContextHandler.kt
View file @
b0bcda7b
...
@@ -6,11 +6,9 @@ import org.jetbrains.skija.DirectContext
...
@@ -6,11 +6,9 @@ import org.jetbrains.skija.DirectContext
import
org.jetbrains.skija.Picture
import
org.jetbrains.skija.Picture
import
org.jetbrains.skija.Surface
import
org.jetbrains.skija.Surface
import
org.jetbrains.skiko.GraphicsApi
import
org.jetbrains.skiko.GraphicsApi
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.OS
import
org.jetbrains.skiko.OS
import
org.jetbrains.skiko.Ski
koProperties
import
org.jetbrains.skiko.Ski
aLayer
import
org.jetbrains.skiko.hostOs
import
org.jetbrains.skiko.hostOs
import
org.jetbrains.skiko.redrawer.Redrawer
internal
fun
createContextHandler
(
layer
:
SkiaLayer
,
renderApi
:
GraphicsApi
):
ContextHandler
{
internal
fun
createContextHandler
(
layer
:
SkiaLayer
,
renderApi
:
GraphicsApi
):
ContextHandler
{
return
when
(
renderApi
)
{
return
when
(
renderApi
)
{
...
@@ -45,9 +43,14 @@ internal abstract class ContextHandler(val layer: SkiaLayer) {
...
@@ -45,9 +43,14 @@ internal abstract class ContextHandler(val layer: SkiaLayer) {
}
}
fun
dispose
()
{
fun
dispose
()
{
disposeCanvas
()
destroyContext
()
}
fun
disposeCanvas
()
{
surface
?.
close
()
surface
?.
close
()
renderTarget
?.
close
()
renderTarget
?.
close
()
}
}
open
fun
destroyContext
()
=
Unit
protected
open
fun
destroyContext
()
=
Unit
}
}
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/context/Direct3DContextHandler.kt
View file @
b0bcda7b
package
org.jetbrains.skiko.context
package
org.jetbrains.skiko.context
import
java.lang.ref.Reference
import
org.jetbrains.skija.ColorSpace
import
org.jetbrains.skija.ColorSpace
import
org.jetbrains.skija.FramebufferFormat
import
org.jetbrains.skija.Picture
import
org.jetbrains.skija.Surface
import
org.jetbrains.skija.Surface
import
org.jetbrains.skija.SurfaceColorFormat
import
org.jetbrains.skija.SurfaceColorFormat
import
org.jetbrains.skija.SurfaceOrigin
import
org.jetbrains.skija.SurfaceOrigin
import
org.jetbrains.skija.impl.Native
import
org.jetbrains.skija.impl.Native
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.redrawer.Direct3DRedrawer
import
org.jetbrains.skiko.redrawer.Direct3DRedrawer
import
org.jetbrains.skiko.redrawer.Redrawer
import
java.lang.ref.Reference
import
org.jetbrains.skiko.destroyContext
internal
class
Direct3DContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
internal
class
Direct3DContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
val
directXRedrawer
:
Direct3DRedrawer
val
directXRedrawer
:
Direct3DRedrawer
...
@@ -35,7 +31,7 @@ internal class Direct3DContextHandler(layer: SkiaLayer) : ContextHandler(layer)
...
@@ -35,7 +31,7 @@ internal class Direct3DContextHandler(layer: SkiaLayer) : ContextHandler(layer)
}
}
override
fun
initCanvas
()
{
override
fun
initCanvas
()
{
dispose
()
dispose
Canvas
()
val
scale
=
layer
.
contentScale
val
scale
=
layer
.
contentScale
val
w
=
(
layer
.
width
*
scale
).
toInt
().
coerceAtLeast
(
0
)
val
w
=
(
layer
.
width
*
scale
).
toInt
().
coerceAtLeast
(
0
)
...
@@ -69,6 +65,7 @@ internal class Direct3DContextHandler(layer: SkiaLayer) : ContextHandler(layer)
...
@@ -69,6 +65,7 @@ internal class Direct3DContextHandler(layer: SkiaLayer) : ContextHandler(layer)
}
}
override
fun
destroyContext
()
{
override
fun
destroyContext
()
{
destroyContext
(
Native
.
getPtr
(
context
!!
))
context
?.
close
()
directXRedrawer
.
disposeDevice
(
device
)
}
}
}
}
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/context/MetalContextHandler.kt
View file @
b0bcda7b
...
@@ -4,10 +4,9 @@ import org.jetbrains.skija.ColorSpace
...
@@ -4,10 +4,9 @@ import org.jetbrains.skija.ColorSpace
import
org.jetbrains.skija.Surface
import
org.jetbrains.skija.Surface
import
org.jetbrains.skija.SurfaceColorFormat
import
org.jetbrains.skija.SurfaceColorFormat
import
org.jetbrains.skija.SurfaceOrigin
import
org.jetbrains.skija.SurfaceOrigin
import
org.jetbrains.skija.impl.Native
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.redrawer.MetalRedrawer
import
org.jetbrains.skiko.redrawer.MetalRedrawer
import
org.jetbrains.skija.impl.Native
import
org.jetbrains.skiko.destroyContext
internal
class
MetalContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
internal
class
MetalContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
val
metalRedrawer
:
MetalRedrawer
val
metalRedrawer
:
MetalRedrawer
...
@@ -26,7 +25,7 @@ internal class MetalContextHandler(layer: SkiaLayer) : ContextHandler(layer) {
...
@@ -26,7 +25,7 @@ internal class MetalContextHandler(layer: SkiaLayer) : ContextHandler(layer) {
}
}
override
fun
initCanvas
()
{
override
fun
initCanvas
()
{
dispose
()
dispose
Canvas
()
val
scale
=
layer
.
contentScale
val
scale
=
layer
.
contentScale
val
w
=
(
layer
.
width
*
scale
).
toInt
().
coerceAtLeast
(
0
)
val
w
=
(
layer
.
width
*
scale
).
toInt
().
coerceAtLeast
(
0
)
...
@@ -52,6 +51,6 @@ internal class MetalContextHandler(layer: SkiaLayer) : ContextHandler(layer) {
...
@@ -52,6 +51,6 @@ internal class MetalContextHandler(layer: SkiaLayer) : ContextHandler(layer) {
}
}
override
fun
destroyContext
()
{
override
fun
destroyContext
()
{
destroyContext
(
Native
.
getPtr
(
context
!!
)
)
context
?.
close
(
)
}
}
}
}
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/context/OpenGLContextHandler.kt
View file @
b0bcda7b
...
@@ -2,15 +2,13 @@ package org.jetbrains.skiko.context
...
@@ -2,15 +2,13 @@ package org.jetbrains.skiko.context
import
org.jetbrains.skija.ColorSpace
import
org.jetbrains.skija.ColorSpace
import
org.jetbrains.skija.FramebufferFormat
import
org.jetbrains.skija.FramebufferFormat
import
org.jetbrains.skija.Picture
import
org.jetbrains.skija.Surface
import
org.jetbrains.skija.Surface
import
org.jetbrains.skija.SurfaceColorFormat
import
org.jetbrains.skija.SurfaceColorFormat
import
org.jetbrains.skija.SurfaceOrigin
import
org.jetbrains.skija.SurfaceOrigin
import
org.jetbrains.skiko.OpenGLApi
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.makeGLContext
import
org.jetbrains.skiko.makeGLContext
import
org.jetbrains.skiko.makeGLRenderTarget
import
org.jetbrains.skiko.makeGLRenderTarget
import
org.jetbrains.skiko.OpenGLApi
import
org.jetbrains.skiko.redrawer.Redrawer
internal
class
OpenGLContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
internal
class
OpenGLContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
override
fun
initContext
():
Boolean
{
override
fun
initContext
():
Boolean
{
...
@@ -26,7 +24,7 @@ internal class OpenGLContextHandler(layer: SkiaLayer) : ContextHandler(layer) {
...
@@ -26,7 +24,7 @@ internal class OpenGLContextHandler(layer: SkiaLayer) : ContextHandler(layer) {
}
}
override
fun
initCanvas
()
{
override
fun
initCanvas
()
{
dispose
()
dispose
Canvas
()
val
scale
=
layer
.
contentScale
val
scale
=
layer
.
contentScale
val
w
=
(
layer
.
width
*
scale
).
toInt
().
coerceAtLeast
(
0
)
val
w
=
(
layer
.
width
*
scale
).
toInt
().
coerceAtLeast
(
0
)
...
...
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/context/SoftwareContextHandler.kt
View file @
b0bcda7b
package
org.jetbrains.skiko.context
package
org.jetbrains.skiko.context
import
java.awt.AlphaComposite
import
org.jetbrains.skija.Bitmap
import
java.awt.color.ColorSpace
import
org.jetbrains.skija.Canvas
import
java.awt.Color
import
org.jetbrains.skija.ColorAlphaType
import
java.awt.Graphics2D
import
org.jetbrains.skija.ImageInfo
import
org.jetbrains.skija.Picture
import
org.jetbrains.skiko.SkiaLayer
import
java.awt.Transparency
import
java.awt.Transparency
import
java.awt.
image.ComponentColorModel
import
java.awt.
color.ColorSpace
import
java.awt.image.BufferedImage
import
java.awt.image.BufferedImage
import
java.awt.image.ComponentColorModel
import
java.awt.image.DataBuffer
import
java.awt.image.DataBuffer
import
java.awt.image.DataBufferByte
import
java.awt.image.DataBufferByte
import
java.awt.image.WritableRaster
import
java.awt.image.Raster
import
java.awt.image.Raster
import
org.jetbrains.skija.Bitmap
import
java.awt.image.WritableRaster
import
org.jetbrains.skija.ColorAlphaType
import
org.jetbrains.skija.Canvas
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skija.ImageInfo
import
org.jetbrains.skija.Picture
import
org.jetbrains.skiko.redrawer.Redrawer
internal
class
SoftwareContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
internal
class
SoftwareContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
override
val
bleachConstant
=
-
1
// it looks like java.awt.Canvas doesn't support transparency
override
val
bleachConstant
=
-
1
// it looks like java.awt.Canvas doesn't support transparency
...
@@ -40,7 +36,7 @@ internal class SoftwareContextHandler(layer: SkiaLayer) : ContextHandler(layer)
...
@@ -40,7 +36,7 @@ internal class SoftwareContextHandler(layer: SkiaLayer) : ContextHandler(layer)
}
}
override
fun
initCanvas
()
{
override
fun
initCanvas
()
{
dispose
()
dispose
Canvas
()
val
scale
=
layer
.
contentScale
val
scale
=
layer
.
contentScale
val
w
=
(
layer
.
width
*
scale
).
toInt
().
coerceAtLeast
(
0
)
val
w
=
(
layer
.
width
*
scale
).
toInt
().
coerceAtLeast
(
0
)
...
...
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/redrawer/Direct3DRedrawer.kt
View file @
b0bcda7b
...
@@ -14,7 +14,6 @@ internal class Direct3DRedrawer(
...
@@ -14,7 +14,6 @@ internal class Direct3DRedrawer(
)
:
Redrawer
{
)
:
Redrawer
{
private
var
isDisposed
=
false
private
var
isDisposed
=
false
private
var
device
:
Long
=
0
private
val
frameDispatcher
=
FrameDispatcher
(
Dispatchers
.
Swing
)
{
private
val
frameDispatcher
=
FrameDispatcher
(
Dispatchers
.
Swing
)
{
update
(
System
.
nanoTime
())
update
(
System
.
nanoTime
())
...
@@ -23,7 +22,6 @@ internal class Direct3DRedrawer(
...
@@ -23,7 +22,6 @@ internal class Direct3DRedrawer(
override
fun
dispose
()
{
override
fun
dispose
()
{
frameDispatcher
.
cancel
()
frameDispatcher
.
cancel
()
disposeDevice
(
device
)
isDisposed
=
true
isDisposed
=
true
}
}
...
@@ -54,10 +52,7 @@ internal class Direct3DRedrawer(
...
@@ -54,10 +52,7 @@ internal class Direct3DRedrawer(
makeDirectXRenderTarget
(
device
,
width
,
height
)
makeDirectXRenderTarget
(
device
,
width
,
height
)
)
)
fun
createDevice
():
Long
{
fun
createDevice
():
Long
=
createDirectXDevice
(
layer
.
windowHandle
)
device
=
createDirectXDevice
(
layer
.
windowHandle
)
return
device
}
fun
finishFrame
(
device
:
Long
,
context
:
Long
,
surface
:
Long
)
{
fun
finishFrame
(
device
:
Long
,
context
:
Long
,
surface
:
Long
)
{
finishFrame
(
device
,
context
,
surface
,
properties
.
isVsyncEnabled
)
finishFrame
(
device
,
context
,
surface
,
properties
.
isVsyncEnabled
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment