【问题标题】:JAWT_LOCK_ERROR when trying to acquire lock from JAWT_DrawingSurface尝试从 JAWT_DrawingSurface 获取锁定时出现 JAWT_LOCK_ERROR
【发布时间】:2020-10-22 05:14:03
【问题描述】:

简介

我正在使用 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 所做的工作并不多,我不知道哪些细节是相关的。

问题

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-04-05
      • 1970-01-01
      • 2013-07-18
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多