【问题标题】:How do I get the ID of the X Window created by DirectFB?如何获取 DirectFB 创建的 X Window 的 ID?
【发布时间】:2013-09-16 19:22:58
【问题描述】:

我正在开发一个使用 DirectFB 和 GStreamer-0.10 的程序。我正在使用 GStreamer 的 gstxoverlay 库中的 gst_x_overlay_set_xwindow_id() 来告诉 GStreamer 渲染到 DirectFB 创建的窗口。 gst_x_overlay_set_xwindow_id() 要求我给它我要渲染到的 X Window 的 ID,但我似乎找不到从 DirectFB 获取它的方法。

有什么方法可以获取 DirectFB 创建的窗口的 X Window ID?如果没有任何简单的方法,有没有办法用 DirectFB 的源文件做一些hacky 来完成这个?

【问题讨论】:

    标签: c++ c gstreamer directfb


    【解决方案1】:

    directfb 代码中的某处必须有类似 Window window; 的行。尝试将其暴露给 gstreamer 代码。

    从那里取出窗口句柄,然后你就可以使用下面的函数了

    gst_x_overlay_set_window_handle(GST_X_OVERLAY(yoursinkvariable), (guintptr) windowhandle);
    

    不完全按照您的要求,但这也可能解决问题。

    此外,gst_x_overlay_set_xwindow_id() 已弃用。

    从文档中,
    警告

    gst_x_overlay_set_xwindow_id 已弃用,不应在新编写的代码中使用。请改用gst_x_overlay_set_window_handle()

    【讨论】:

    • 感谢您提供有关已弃用功能的提示。至于如何在窗口上获取句柄,在我的 DirectFB 代码中没有像 Window window; 这样的东西。不过,我相信我可能已经找到了一种使用创建的IDirectFB 获取它的方法。它看起来有点像this。有了这个,我现在得到这个错误:X11/Core: Error! BadDrawable (invalid Pixmap or Window parameter)。这是否意味着我的句柄错误,还是因为 GStreamer 和 DirectFB 都试图同时渲染到同一个窗口?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    相关资源
    最近更新 更多