Unverified Commit ad7229f6 authored by Roman Sedaikin's avatar Roman Sedaikin Committed by GitHub

Added getting [windowHandle] and [contentHandle]. (#107)

* Added getting [windowHandle] and [contentHandle].

* Added getting windowHandle on Linux.
parent 97df35e3
......@@ -22,6 +22,12 @@ extern "C"
}
JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_HardwareLayer_getWindowHandle(JNIEnv *env, jobject canvas, jlong platformInfoPtr)
{
JAWT_X11DrawingSurfaceInfo *dsi_x11 = fromJavaPointer<JAWT_X11DrawingSurfaceInfo *>(platformInfoPtr);
return (jlong) dsi_x11->display;
}
JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_HardwareLayer_getContentHandle(JNIEnv *env, jobject canvas, jlong platformInfoPtr)
{
JAWT_X11DrawingSurfaceInfo *dsi_x11 = fromJavaPointer<JAWT_X11DrawingSurfaceInfo *>(platformInfoPtr);
return (jlong) dsi_x11->drawable;
......
......@@ -57,10 +57,10 @@ extern "C"
}
JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_redrawer_AngleRedrawer_createAngleDevice(
JNIEnv *env, jobject redrawer, jlong windowHandle)
JNIEnv *env, jobject redrawer, jlong contentHandle)
{
AngleDevice *angleDevice = new AngleDevice();
angleDevice->window = (HWND)windowHandle;
angleDevice->window = (HWND)contentHandle;
angleDevice->device = GetDC(angleDevice->window);
angleDevice->display = getAngleEGLDisplay(angleDevice->device);
if (EGL_NO_DISPLAY == angleDevice->display)
......
......@@ -281,7 +281,7 @@ extern "C"
}
JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_redrawer_Direct3DRedrawer_createDirectXDevice(
JNIEnv *env, jobject redrawer, jint adapterPriority, jlong windowHandle)
JNIEnv *env, jobject redrawer, jint adapterPriority, jlong contentHandle)
{
gr_cp<IDXGIFactory4> deviceFactory;
if (!SUCCEEDED(CreateDXGIFactory1(IID_PPV_ARGS(&deviceFactory))))
......@@ -319,7 +319,7 @@ extern "C"
d3dDevice->device = device;
d3dDevice->queue = queue;
d3dDevice->window = (HWND)windowHandle;
d3dDevice->window = (HWND)contentHandle;
return toJavaPointer(d3dDevice);
}
......
#define WIN32_LEAN_AND_MEAN
#include <jawt_md.h>
#include <Windows.h>
#include <cassert>
#include "jni_helpers.h"
extern "C"
......@@ -13,6 +15,14 @@ extern "C"
}
JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_HardwareLayer_getWindowHandle(JNIEnv *env, jobject canvas, jlong platformInfoPtr)
{
JAWT_Win32DrawingSurfaceInfo* dsi_win = fromJavaPointer<JAWT_Win32DrawingSurfaceInfo *>(platformInfoPtr);
HWND ancestor = GetAncestor(dsi_win->hwnd, GA_PARENT);
assert(ancestor != NULL);
return (jlong) ancestor;
}
JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_HardwareLayer_getContentHandle(JNIEnv *env, jobject canvas, jlong platformInfoPtr)
{
JAWT_Win32DrawingSurfaceInfo* dsi_win = fromJavaPointer<JAWT_Win32DrawingSurfaceInfo *>(platformInfoPtr);
return (jlong) dsi_win->hwnd;
......
......@@ -51,6 +51,9 @@ internal open class HardwareLayer : Canvas() {
return scale
}
val contentHandle: Long
get() = useDrawingSurfacePlatformInfo(::getContentHandle)
val windowHandle: Long
get() = useDrawingSurfacePlatformInfo(::getWindowHandle)
......@@ -61,5 +64,6 @@ internal open class HardwareLayer : Canvas() {
get() = platformOperations.isFullscreen(this)
set(value) = platformOperations.setFullscreen(this, value)
private external fun getContentHandle(platformInfo: Long): Long
private external fun getWindowHandle(platformInfo: Long): Long
}
\ No newline at end of file
......@@ -72,6 +72,9 @@ open class SkiaLayer(
val contentScale: Float
get() = backedLayer.contentScale
val contentHandle: Long
get() = backedLayer.contentHandle
val windowHandle: Long
get() = backedLayer.windowHandle
......@@ -94,6 +97,11 @@ open class SkiaLayer(
this.renderApi_ = value
notifyChange(PropertyKind.Renderer)
}
val renderInfo: String
get() = if (contextHandler?.context == null)
"ContextHandler hasn't been initialized yet."
else
contextHandler!!.rendererInfo()
@Volatile
private var picture: PictureHolder? = null
......
......@@ -55,8 +55,8 @@ internal abstract class ContextHandler(val layer: SkiaLayer) {
renderTarget?.close()
}
protected open fun rendererInfo(): String {
return "${layer.renderApi} rendering info:\n" +
open fun rendererInfo(): String {
return "GraphicsApi: ${layer.renderApi}\n" +
"OS: $hostFullName\n" +
"Java: $javaVendor\n" +
"Java location: $javaLocation\n"
......
......@@ -108,7 +108,7 @@ internal class Direct3DContextHandler(layer: SkiaLayer) : ContextHandler(layer)
}
}
protected override fun rendererInfo(): String {
override fun rendererInfo(): String {
return super.rendererInfo() +
"Video card: ${directXRedrawer.getAdapterName(device)}\n" +
"Total VRAM: ${directXRedrawer.getAdapterMemorySize(device) / 1024 / 1024} MB\n"
......
......@@ -47,7 +47,7 @@ internal class AngleRedrawer(
}
fun createDevice(): Long {
device = createAngleDevice(layer.windowHandle)
device = createAngleDevice(layer.contentHandle)
return device
}
......@@ -61,7 +61,7 @@ internal class AngleRedrawer(
fun finishFrame() = finishFrame(device, properties.isVsyncEnabled)
external fun createAngleDevice(windowHandle: Long): Long
external fun createAngleDevice(contentHandle: Long): Long
external fun makeAngleContext(device: Long): Long
external fun makeAngleRenderTarget(device: Long, width: Int, height: Int): Long
external fun resizeBuffers(device: Long, width: Int, height: Int)
......
......@@ -65,7 +65,7 @@ internal class Direct3DRedrawer(
makeDirectXSurface(device, context, width, height, index)
)
fun createDevice(): Long = createDirectXDevice(getAdapterPriority(), layer.windowHandle)
fun createDevice(): Long = createDirectXDevice(getAdapterPriority(), layer.contentHandle)
fun finishFrame(device: Long, context: Long, surface: Long) {
finishFrame(device, context, surface, properties.isVsyncEnabled)
......@@ -81,7 +81,7 @@ internal class Direct3DRedrawer(
}
}
external fun createDirectXDevice(adapterPriority: Int, windowHandle: Long): Long
external fun createDirectXDevice(adapterPriority: Int, contentHandle: Long): Long
external fun makeDirectXContext(device: Long): Long
external fun makeDirectXSurface(device: Long, context: Long, width: Int, height: Int, index: Int): Long
external fun resizeBuffers(device: Long, width: Int, height: Int)
......
......@@ -3,8 +3,6 @@
#define GL_SILENCE_DEPRECATION
#define kNullWindowHandle NULL
#import <Cocoa/Cocoa.h>
#import <QuartzCore/QuartzCore.h>
#import <Metal/Metal.h>
......@@ -173,6 +171,12 @@ JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_HardwareLayer_getWindowHandle(J
return (jlong)window;
}
JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_HardwareLayer_getContentHandle(JNIEnv *env, jobject canvas, jlong platformInfoPtr)
{
NSWindow* window = findWindow(platformInfoPtr);
return (jlong)window;
}
JNIEXPORT void JNICALL Java_org_jetbrains_skiko_PlatformOperationsKt_osxDisableTitleBar(JNIEnv *env, jobject properties, jlong platformInfoPtr)
{
NSWindow* window = findWindow(platformInfoPtr);
......
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