尝试从JAWT_DrawingSurface获取锁时发生JAWT_LOCK_ERROR

时间:2020-07-01 17:24:05

标签: java java-native-interface awt x11 jniwrapper

简介

我正在使用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));

通过运行panelVideoViewport()getDisplay()并没有做太多事情,而且我不知道哪些细节是有意义的。

问题

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

1 个答案:

答案 0 :(得分:0)

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

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