JAWT_LOCK_ERROR 尝试从 JAWT_DrawingSurface 获取锁时

JAWT_LOCK_ERROR when trying to acquire lock from JAWT_DrawingSurface

简介

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

运行 VideoViewport()getDisplay()panel 所做的工作不多,我不知道相关细节。

问题

什么样的情况会导致获取surface的锁失败?

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

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