Commit 4bc1824a authored by Roman Sedaikin's avatar Roman Sedaikin

Added function getWindowHandle() for JCEF support.

parent 5c7a7ff6
...@@ -195,4 +195,42 @@ extern "C" ...@@ -195,4 +195,42 @@ extern "C"
{ {
return 1.0f; return 1.0f;
} }
JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_HardwareLayer_getWindowHandle(JNIEnv *env, jobject canvas)
{
JAWT awt;
JAWT_DrawingSurface *ds = NULL;
JAWT_DrawingSurfaceInfo *dsi = NULL;
jboolean result = JNI_FALSE;
jint lock = 0;
JAWT_X11DrawingSurfaceInfo *dsi_x11;
awt.version = (jint)JAWT_VERSION_9;
result = Skiko_GetAWT(env, &awt);
if (result == JNI_FALSE)
{
fprintf(stderr, "JAWT_GetAWT failed! Result is JNI_FALSE\n");
return;
}
if (jvm == NULL)
{
env->GetJavaVM(&jvm);
}
ds = awt.GetDrawingSurface(env, canvas);
lock = ds->Lock(ds);
dsi = ds->GetDrawingSurfaceInfo(ds);
dsi_x11 = (JAWT_X11DrawingSurfaceInfo *)dsi->platformInfo;
Window window = dsi_x11->drawable;
ds->FreeDrawingSurfaceInfo(dsi);
ds->Unlock(ds);
awt.FreeDrawingSurface(ds);
return (jlong)window;
}
} // extern "C" } // extern "C"
\ No newline at end of file
...@@ -194,4 +194,44 @@ extern "C" ...@@ -194,4 +194,44 @@ extern "C"
} }
return 1.0f; return 1.0f;
} }
JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_HardwareLayer_getWindowHandle(JNIEnv *env, jobject window)
{
JAWT awt;
JAWT_DrawingSurface *ds = NULL;
JAWT_DrawingSurfaceInfo *dsi = NULL;
PIXELFORMATDESCRIPTOR pixFormatDscr;
HGLRC context = NULL;
jboolean result = JNI_FALSE;
jint lock = 0;
JAWT_Win32DrawingSurfaceInfo *dsi_win;
awt.version = (jint)JAWT_VERSION_9;
result = Skiko_GetAWT(env, &awt);
if (result == JNI_FALSE)
{
fprintf(stderr, "JAWT_GetAWT failed! Result is JNI_FALSE\n");
return -1;
}
if (jvm == NULL)
{
env->GetJavaVM(&jvm);
}
ds = awt.GetDrawingSurface(env, window);
lock = ds->Lock(ds);
dsi = ds->GetDrawingSurfaceInfo(ds);
dsi_win = (JAWT_Win32DrawingSurfaceInfo *)dsi->platformInfo;
HWND hwnd = dsi_win->hwnd;
ds->FreeDrawingSurfaceInfo(dsi);
ds->Unlock(ds);
awt.FreeDrawingSurface(ds);
return (jlong)hwnd;
}
} // extern "C" } // extern "C"
\ No newline at end of file
...@@ -4,5 +4,6 @@ interface Drawable { ...@@ -4,5 +4,6 @@ interface Drawable {
fun redrawLayer() fun redrawLayer()
fun updateLayer() fun updateLayer()
fun disposeLayer() fun disposeLayer()
val windowHandle: Int
val contentScale: Float val contentScale: Float
} }
\ No newline at end of file
...@@ -15,6 +15,8 @@ open class HardwareLayer : Canvas(), Drawable { ...@@ -15,6 +15,8 @@ open class HardwareLayer : Canvas(), Drawable {
external override fun redrawLayer() external override fun redrawLayer()
external override fun updateLayer() external override fun updateLayer()
external override fun disposeLayer() external override fun disposeLayer()
override val windowHandle: Int
external get
override val contentScale: Float override val contentScale: Float
external get external get
} }
\ No newline at end of file
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
#define GL_SILENCE_DEPRECATION #define GL_SILENCE_DEPRECATION
#define kNullWindowHandle NULL
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#import <QuartzCore/QuartzCore.h> #import <QuartzCore/QuartzCore.h>
#import <OpenGL/gl3.h> #import <OpenGL/gl3.h>
...@@ -228,3 +230,7 @@ JNIEXPORT jfloat JNICALL Java_org_jetbrains_skiko_HardwareLayer_getContentScale( ...@@ -228,3 +230,7 @@ JNIEXPORT jfloat JNICALL Java_org_jetbrains_skiko_HardwareLayer_getContentScale(
} }
return 1.0f; return 1.0f;
} }
JNIEXPORT jlong JNICALL Java_org_jetbrains_skiko_HardwareLayer_getWindowHandle(JNIEnv *env, jobject window) {
return (jlong)kNullWindowHandle;
}
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