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
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
);
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
external
private
fun
makeMetalRenderTargetNative
(
width
:
Int
,
height
:
Int
,
sampleCnt
:
Int
):
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
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.createContextHandler
import
org.jetbrains.skiko.redrawer.Redrawer
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.SwingUtilities.isEventDispatchThread
...
...
@@ -99,7 +108,6 @@ open class SkiaLayer(
if
(
isInited
)
{
redrawer
?.
dispose
()
// we should dispose redrawer first (to cancel `draw` in rendering thread)
contextHandler
?.
dispose
()
contextHandler
?.
destroyContext
()
picture
?.
instance
?.
close
()
pictureRecorder
.
close
()
backedLayer
.
dispose
()
...
...
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/context/ContextHandler.kt
View file @
b0bcda7b
...
...
@@ -6,11 +6,9 @@ import org.jetbrains.skija.DirectContext
import
org.jetbrains.skija.Picture
import
org.jetbrains.skija.Surface
import
org.jetbrains.skiko.GraphicsApi
import
org.jetbrains.skiko.SkiaLayer
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.redrawer.Redrawer
internal
fun
createContextHandler
(
layer
:
SkiaLayer
,
renderApi
:
GraphicsApi
):
ContextHandler
{
return
when
(
renderApi
)
{
...
...
@@ -45,9 +43,14 @@ internal abstract class ContextHandler(val layer: SkiaLayer) {
}
fun
dispose
()
{
disposeCanvas
()
destroyContext
()
}
fun
disposeCanvas
()
{
surface
?.
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
import
java.lang.ref.Reference
import
org.jetbrains.skija.ColorSpace
import
org.jetbrains.skija.FramebufferFormat
import
org.jetbrains.skija.Picture
import
org.jetbrains.skija.Surface
import
org.jetbrains.skija.SurfaceColorFormat
import
org.jetbrains.skija.SurfaceOrigin
import
org.jetbrains.skija.impl.Native
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.redrawer.Direct3DRedrawer
import
org.jetbrains.skiko.redrawer.Redrawer
import
org.jetbrains.skiko.destroyContext
import
java.lang.ref.Reference
internal
class
Direct3DContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
val
directXRedrawer
:
Direct3DRedrawer
...
...
@@ -35,7 +31,7 @@ internal class Direct3DContextHandler(layer: SkiaLayer) : ContextHandler(layer)
}
override
fun
initCanvas
()
{
dispose
()
dispose
Canvas
()
val
scale
=
layer
.
contentScale
val
w
=
(
layer
.
width
*
scale
).
toInt
().
coerceAtLeast
(
0
)
...
...
@@ -69,6 +65,7 @@ internal class Direct3DContextHandler(layer: SkiaLayer) : ContextHandler(layer)
}
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
import
org.jetbrains.skija.Surface
import
org.jetbrains.skija.SurfaceColorFormat
import
org.jetbrains.skija.SurfaceOrigin
import
org.jetbrains.skija.impl.Native
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.redrawer.MetalRedrawer
import
org.jetbrains.skija.impl.Native
import
org.jetbrains.skiko.destroyContext
internal
class
MetalContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
val
metalRedrawer
:
MetalRedrawer
...
...
@@ -26,7 +25,7 @@ internal class MetalContextHandler(layer: SkiaLayer) : ContextHandler(layer) {
}
override
fun
initCanvas
()
{
dispose
()
dispose
Canvas
()
val
scale
=
layer
.
contentScale
val
w
=
(
layer
.
width
*
scale
).
toInt
().
coerceAtLeast
(
0
)
...
...
@@ -52,6 +51,6 @@ internal class MetalContextHandler(layer: SkiaLayer) : ContextHandler(layer) {
}
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
import
org.jetbrains.skija.ColorSpace
import
org.jetbrains.skija.FramebufferFormat
import
org.jetbrains.skija.Picture
import
org.jetbrains.skija.Surface
import
org.jetbrains.skija.SurfaceColorFormat
import
org.jetbrains.skija.SurfaceOrigin
import
org.jetbrains.skiko.OpenGLApi
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.makeGLContext
import
org.jetbrains.skiko.makeGLRenderTarget
import
org.jetbrains.skiko.OpenGLApi
import
org.jetbrains.skiko.redrawer.Redrawer
internal
class
OpenGLContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
override
fun
initContext
():
Boolean
{
...
...
@@ -26,7 +24,7 @@ internal class OpenGLContextHandler(layer: SkiaLayer) : ContextHandler(layer) {
}
override
fun
initCanvas
()
{
dispose
()
dispose
Canvas
()
val
scale
=
layer
.
contentScale
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
import
java.awt.AlphaComposite
import
java.awt.color.ColorSpace
import
java.awt.Color
import
java.awt.Graphics2D
import
org.jetbrains.skija.Bitmap
import
org.jetbrains.skija.Canvas
import
org.jetbrains.skija.ColorAlphaType
import
org.jetbrains.skija.ImageInfo
import
org.jetbrains.skija.Picture
import
org.jetbrains.skiko.SkiaLayer
import
java.awt.Transparency
import
java.awt.
image.ComponentColorModel
import
java.awt.
color.ColorSpace
import
java.awt.image.BufferedImage
import
java.awt.image.ComponentColorModel
import
java.awt.image.DataBuffer
import
java.awt.image.DataBufferByte
import
java.awt.image.WritableRaster
import
java.awt.image.Raster
import
org.jetbrains.skija.Bitmap
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
import
java.awt.image.WritableRaster
internal
class
SoftwareContextHandler
(
layer
:
SkiaLayer
)
:
ContextHandler
(
layer
)
{
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)
}
override
fun
initCanvas
()
{
dispose
()
dispose
Canvas
()
val
scale
=
layer
.
contentScale
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(
)
:
Redrawer
{
private
var
isDisposed
=
false
private
var
device
:
Long
=
0
private
val
frameDispatcher
=
FrameDispatcher
(
Dispatchers
.
Swing
)
{
update
(
System
.
nanoTime
())
...
...
@@ -23,7 +22,6 @@ internal class Direct3DRedrawer(
override
fun
dispose
()
{
frameDispatcher
.
cancel
()
disposeDevice
(
device
)
isDisposed
=
true
}
...
...
@@ -54,10 +52,7 @@ internal class Direct3DRedrawer(
makeDirectXRenderTarget
(
device
,
width
,
height
)
)
fun
createDevice
():
Long
{
device
=
createDirectXDevice
(
layer
.
windowHandle
)
return
device
}
fun
createDevice
():
Long
=
createDirectXDevice
(
layer
.
windowHandle
)
fun
finishFrame
(
device
:
Long
,
context
:
Long
,
surface
:
Long
)
{
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