0

介绍

我正在使用 JNIWrapper,以及该库的 JAWT 子组件。

我正在尝试使用以下代码获取JAWT_DrawingSurface上的锁定:

JAWT_DrawingSurface *ds = NULL;
ds = awt.GetDrawingSurface(env, comp);
dsLocked = !(ds->Lock(ds) & JAWT_LOCK_ERROR)

但我一直在dsLocked说假话。

细节

comp通过以下方式从 Java 发送到此 JNIWrapper 代码:

Component panel = new VideoViewport().getDisplay();
panel.setBounds(150,150,150,150);
System.out.println("Handle: " + core.utils.X11.X11Utils.getDrawable(panel));

panel通过 runningVideoViewport()或 by都没有做太多事情getDisplay(),我不知道哪些细节是相关的。

问题

什么样的事情会导致获取表面上的锁失败?

4

1 回答 1

0

必须将组件添加到框架并使其可见。

当我将组件添加到 AWTFrame对象并使其在getDrawable(panel)调用之前可见时,它起作用了,并且我能够获取表面上的锁。

于 2020-07-02T15:04:29.773 回答