Skip to content

Releases: JetBrains/skiko

Version 0.8.3

25 Apr 11:23
37ef84b
Compare
Choose a tag to compare
Option to not throw RenderException when use OpenGL on macOS (#915)

To allow using OpenGL on macOs, call:
```
System.setProperty("skiko.macos.opengl.enabled", "true")
```

By request from user in DM who uses LWJGL+Skiko on macOS.

Version 0.8.1

16 Apr 11:54
7a6f62b
Compare
Choose a tag to compare
Windows. Fix a crash on CI without `dcomp.dll` (#909)

## Issues fixed

Some CI don't have this library and when we run an application we have a
crash:
```
...\skiko-windows-x64.dll: Can't find dependent libraries
java.lang.UnsatisfiedLinkError: ...\skiko-windows-x64.dll: Can't find dependent libraries
	at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
	at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:388)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:232)
	at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:174)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2394)
	at java.base/java.lang.Runtime.load0(Runtime.java:755)
	at java.base/java.lang.System.load(System.java:1957)
	at org.jetbrains.skiko.Library.loadLibraryOrCopy(Library.kt:17)
	at org.jetbrains.skiko.Library.findAndLoad(Library.kt:111)
	at org.jetbrains.skiko.Library.load(Library.kt:56)
	at org.jetbrains.skia.impl.Library$Companion.staticLoad(Library.jvm.kt:12)
	at org.jetbrains.skia.Surface.<clinit>(Surface.kt:539)
	at androidx.compose.ui.test.SkikoComposeUiTest.<init>(ComposeUiTest.skikoMain.kt:172)
	at androidx.compose.ui.test.SkikoComposeUiTest.<init>(ComposeUiTest.skikoMain.kt:118)
	at androidx.compose.ui.test.SkikoComposeUiTest.<init>(ComposeUiTest.skikoMain.kt:139)
	at androidx.compose.ui.test.SkikoComposeUiTest.<init>(ComposeUiTest.skikoMain.kt:134)
	at androidx.compose.ui.test.junit4.DesktopComposeTestRule.<init>(DesktopComposeTestRule.desktop.kt:54)
	at androidx.compose.ui.test.junit4.DesktopComposeTestRule_desktopKt.createComposeRule(DesktopComposeTestRule.desktop.kt:41)
```

Reported in
https://jetbrains.slack.com/archives/C5VQN94SH/p1712564847131459?thread_ts=1712091431.760099&cid=C5VQN94SH

## Proposed changes
Load this library in runtime, and fallback to
`CreateSwapChainForComposition`

## Testing
1. Run Compose with transparent window:
```
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Surface
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Window
import androidx.compose.ui.window.application
import androidx.compose.material.Text
import androidx.compose.runtime.*

fun main() = application {
    var isOpen by remember { mutableStateOf(true) }
    if (isOpen) {
        Window(
            onCloseRequest = { isOpen = false },
            title = "Transparent Window Example",
            transparent = true,
            undecorated = true, //transparent window must be undecorated
        ) {
            Surface(
                modifier = Modifier.fillMaxSize().padding(5.dp).shadow(3.dp, RoundedCornerShape(20.dp)),
                color = Color(55, 55, 55),
                shape = RoundedCornerShape(20.dp) //window has round corners now
            ) {
                Text("Hello World!", color = Color.White)
            }
        }
    }
}
```
Transparency should work, there shouldn't be errors in the log.

2. change `transparent = false`

Transparency shouldn't work, there shouldn't be errors in the log.

This should be tested by QA.

---------

Co-authored-by: Ivan Matkov <[email protected]>

Version 0.8.0

04 Apr 18:25
1647328
Compare
Choose a tag to compare
Remove input handling (#893)

skiko is supposed to be a wrapper around skia, however it has unrelated
features like input. This PR removes it from this library - it's
supposed to be handled externally.

- Removed `SkikoInput`, `SkikoKey`, `SkikoPlatform*Event`
- Replaced `SkikoView` to `SkikoRenderDelegate` and related field in
`SkiaLayer`
- `SkiaLayer` on macOS native now receives `NSView` instead of creating
it internally and attaching it to the `NSWindow`. In theory, it allows
initializing non-full-window skia view there (not tested)
- Updated samples and readme

Version 0.7.99

22 Mar 00:27
4f22664
Compare
Choose a tag to compare
v0.7.99

Fix skiko.mjs import name (#895)

Version 0.7.98.1

14 Mar 17:33
4721587
Compare
Choose a tag to compare
Remove media events from Skiko completely (#892)

This is the skiko part of
https://youtrack.jetbrains.com/issue/COMPOSE-1149/wasm-js-Remove-media-events-from-Skiko

This commit introduces following changes:

 * CanvasRenderer is html-agnostic and deals with NativePointer
* SkiaLayer does not set any DOM dimensions of the canvas - it's up to
the user of the Skia to resolve this dimensions
 * Media event listeners are removed completely

Version 0.7.97

06 Mar 19:35
c3a9008
Compare
Choose a tag to compare
Windows. Fix a crash when we resize to zero and then to non-zero (#883)

Fixes https://github.com/JetBrains/compose-multiplatform/issues/4425

It is a regression after https://github.com/JetBrains/skiko/pull/858

The crash was because `d3dDevice->swapChain->GetBuffer` didn't return
the buffer to draw on if we reused the buffer from the previous frame
(we didn't change `surface` in case of zero size).

I am not completely sure why, but I exhausted my the investigation limit
and this fix is needed by other reasons (we need to wait for vsync).

## Testing
An additional check in the existed test (fails before the fix)

Version 0.7.96

01 Mar 19:45
2f711b7
Compare
Choose a tag to compare
Update skiko build for ICU renamed symbols (#881)

Now we build skia/icu with _skiko suffix to avoid clashes with Apple SDK

Corresponding skia change: https://github.com/JetBrains/skia/pull/3

Corresponding skia commit:
https://github.com/JetBrains/skia/commit/47d3027b8cbeea76135c0995d5886aa2e58e7512

Version 0.7.95.1

01 Mar 16:32
Compare
Choose a tag to compare
v0.7.95.1

Use CreateSwapChainForHwnd without transparency

Version 0.7.95

01 Mar 14:35
0f1775d
Compare
Choose a tag to compare
Add fallback to `CreateSwapChainForHwnd` (#856)

It adds a fallback to the old initialization method in case of any
problems.

Version 0.7.94

26 Feb 16:04
20f8941
Compare
Choose a tag to compare
Offscreen, Linux. Fix native crash when OpenGL isn't available (#877)

Instead, fallback to Software.

Discovered during https://github.com/JetBrains/skiko/issues/876
investigation

## Explanation

We throw RenderException, and Fallback mechanism catches it and switches
to Software

## Testing

1. Setup the system without OpenGL
2. Run SkiaSwingLayer
3. See the native crash