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
a97f6e93
Unverified
Commit
a97f6e93
authored
Nov 16, 2021
by
Roman Sedaikin
Committed by
GitHub
Nov 16, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed getting surface in SOFTWARE_FAST renderer. (#388)
parent
8be256ce
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
16 additions
and
12 deletions
+16
-12
SoftwareRedrawer.cc
skiko/src/jvmMain/cpp/linux/SoftwareRedrawer.cc
+4
-4
SoftwareRedrawer.cc
skiko/src/jvmMain/cpp/windows/SoftwareRedrawer.cc
+2
-3
DirectSoftwareContextHandler.kt
...g/jetbrains/skiko/context/DirectSoftwareContextHandler.kt
+6
-1
AbstractDirectSoftwareRedrawer.kt
...etbrains/skiko/redrawer/AbstractDirectSoftwareRedrawer.kt
+2
-2
LinuxSoftwareRedrawer.kt
...lin/org/jetbrains/skiko/redrawer/LinuxSoftwareRedrawer.kt
+2
-2
No files found.
skiko/src/jvmMain/cpp/linux/SoftwareRedrawer.cc
View file @
a97f6e93
...
@@ -83,16 +83,16 @@ extern "C"
...
@@ -83,16 +83,16 @@ extern "C"
JNIEnv
*
env
,
jobject
redrawer
,
jlong
devicePtr
)
JNIEnv
*
env
,
jobject
redrawer
,
jlong
devicePtr
)
{
{
SoftwareDevice
*
device
=
fromJavaPointer
<
SoftwareDevice
*>
(
devicePtr
);
SoftwareDevice
*
device
=
fromJavaPointer
<
SoftwareDevice
*>
(
devicePtr
);
device
->
surface
.
get
()
->
ref
();
return
toJavaPointer
(
device
->
surface
.
release
());
return
toJavaPointer
(
device
->
surface
.
get
());
}
}
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skiko_redrawer_AbstractDirectSoftwareRedrawer_finishFrame
(
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skiko_redrawer_AbstractDirectSoftwareRedrawer_finishFrame
(
JNIEnv
*
env
,
jobject
redrawer
,
jlong
devicePtr
)
JNIEnv
*
env
,
jobject
redrawer
,
jlong
devicePtr
,
jlong
surfacePtr
)
{
{
SoftwareDevice
*
device
=
fromJavaPointer
<
SoftwareDevice
*>
(
devicePtr
);
SoftwareDevice
*
device
=
fromJavaPointer
<
SoftwareDevice
*>
(
devicePtr
);
SkSurface
*
surface
=
fromJavaPointer
<
SkSurface
*>
(
surfacePtr
);
SkPixmap
pm
;
SkPixmap
pm
;
if
(
!
device
->
surface
->
peekPixels
(
&
pm
))
{
if
(
!
surface
->
peekPixels
(
&
pm
))
{
return
;
return
;
}
}
int
bitsPerPixel
=
pm
.
info
().
bytesPerPixel
()
*
8
;
int
bitsPerPixel
=
pm
.
info
().
bytesPerPixel
()
*
8
;
...
...
skiko/src/jvmMain/cpp/windows/SoftwareRedrawer.cc
View file @
a97f6e93
...
@@ -68,12 +68,11 @@ extern "C"
...
@@ -68,12 +68,11 @@ extern "C"
JNIEnv
*
env
,
jobject
redrawer
,
jlong
devicePtr
)
JNIEnv
*
env
,
jobject
redrawer
,
jlong
devicePtr
)
{
{
SoftwareDevice
*
device
=
fromJavaPointer
<
SoftwareDevice
*>
(
devicePtr
);
SoftwareDevice
*
device
=
fromJavaPointer
<
SoftwareDevice
*>
(
devicePtr
);
device
->
surface
.
get
()
->
ref
();
return
toJavaPointer
(
device
->
surface
.
release
());
return
toJavaPointer
(
device
->
surface
.
get
());
}
}
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skiko_redrawer_AbstractDirectSoftwareRedrawer_finishFrame
(
JNIEXPORT
void
JNICALL
Java_org_jetbrains_skiko_redrawer_AbstractDirectSoftwareRedrawer_finishFrame
(
JNIEnv
*
env
,
jobject
redrawer
,
jlong
devicePtr
)
JNIEnv
*
env
,
jobject
redrawer
,
jlong
devicePtr
,
jlong
surfacePtr
)
{
{
__try
__try
{
{
...
...
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/context/DirectSoftwareContextHandler.kt
View file @
a97f6e93
...
@@ -5,6 +5,7 @@ import org.jetbrains.skia.impl.Native
...
@@ -5,6 +5,7 @@ import org.jetbrains.skia.impl.Native
import
org.jetbrains.skia.impl.getPtr
import
org.jetbrains.skia.impl.getPtr
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.SkiaLayer
import
org.jetbrains.skiko.redrawer.AbstractDirectSoftwareRedrawer
import
org.jetbrains.skiko.redrawer.AbstractDirectSoftwareRedrawer
import
java.lang.ref.Reference
internal
class
DirectSoftwareContextHandler
(
layer
:
SkiaLayer
)
:
JvmContextHandler
(
layer
)
{
internal
class
DirectSoftwareContextHandler
(
layer
:
SkiaLayer
)
:
JvmContextHandler
(
layer
)
{
var
isInited
=
false
var
isInited
=
false
...
@@ -46,6 +47,10 @@ internal class DirectSoftwareContextHandler(layer: SkiaLayer) : JvmContextHandle
...
@@ -46,6 +47,10 @@ internal class DirectSoftwareContextHandler(layer: SkiaLayer) : JvmContextHandle
}
}
override
fun
flush
()
{
override
fun
flush
()
{
softwareRedrawer
.
finishFrame
()
try
{
softwareRedrawer
.
finishFrame
(
getPtr
(
surface
!!
))
}
finally
{
Reference
.
reachabilityFence
(
surface
!!
)
}
}
}
}
}
\ No newline at end of file
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/redrawer/AbstractDirectSoftwareRedrawer.kt
View file @
a97f6e93
...
@@ -51,7 +51,7 @@ internal abstract class AbstractDirectSoftwareRedrawer(
...
@@ -51,7 +51,7 @@ internal abstract class AbstractDirectSoftwareRedrawer(
}
}
return
Surface
(
surface
)
return
Surface
(
surface
)
}
}
open
fun
finishFrame
(
)
=
finishFrame
(
devi
ce
)
open
fun
finishFrame
(
surface
:
Long
)
=
finishFrame
(
device
,
surfa
ce
)
override
fun
dispose
()
{
override
fun
dispose
()
{
frameDispatcher
.
cancel
()
frameDispatcher
.
cancel
()
contextHandler
.
dispose
()
contextHandler
.
dispose
()
...
@@ -63,6 +63,6 @@ internal abstract class AbstractDirectSoftwareRedrawer(
...
@@ -63,6 +63,6 @@ internal abstract class AbstractDirectSoftwareRedrawer(
private
external
fun
resize
(
devicePtr
:
Long
,
width
:
Int
,
height
:
Int
)
private
external
fun
resize
(
devicePtr
:
Long
,
width
:
Int
,
height
:
Int
)
private
external
fun
acquireSurface
(
devicePtr
:
Long
):
Long
private
external
fun
acquireSurface
(
devicePtr
:
Long
):
Long
private
external
fun
finishFrame
(
devicePtr
:
Long
)
private
external
fun
finishFrame
(
devicePtr
:
Long
,
surfacePtr
:
Long
)
private
external
fun
disposeDevice
(
devicePtr
:
Long
)
private
external
fun
disposeDevice
(
devicePtr
:
Long
)
}
}
\ No newline at end of file
skiko/src/jvmMain/kotlin/org/jetbrains/skiko/redrawer/LinuxSoftwareRedrawer.kt
View file @
a97f6e93
...
@@ -36,8 +36,8 @@ internal class LinuxSoftwareRedrawer(
...
@@ -36,8 +36,8 @@ internal class LinuxSoftwareRedrawer(
super
.
resize
(
width
,
height
)
super
.
resize
(
width
,
height
)
}
}
override
fun
finishFrame
()
=
layer
.
backedLayer
.
lockLinuxDrawingSurface
{
override
fun
finishFrame
(
surface
:
Long
)
=
layer
.
backedLayer
.
lockLinuxDrawingSurface
{
super
.
finishFrame
()
super
.
finishFrame
(
surface
)
}
}
private
external
fun
createDevice
(
display
:
Long
,
window
:
Long
,
width
:
Int
,
height
:
Int
):
Long
private
external
fun
createDevice
(
display
:
Long
,
window
:
Long
,
width
:
Int
,
height
:
Int
):
Long
...
...
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