Как получить идентификатор окна X, созданного DirectFB?

Я разрабатываю программу, использующую DirectFB и GStreamer-0.10. Я использую gst_x_overlay_set_xwindow_id() из библиотеки gstxoverlay GStreamer, чтобы указать GStreamer отображать окно, созданное DirectFB. gst_x_overlay_set_xwindow_id() требует, чтобы я дал ему идентификатор X Window, в котором я хочу отображать, но я не могу найти способ получить это из DirectFB.

Есть ли способ получить идентификатор окна X окна, созданного DirectFB? Если нет простого способа, есть ли способ взломать исходные файлы DirectFB для достижения этой цели?


person Alex    schedule 16.09.2013    source источник


Ответы (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().

person user2618142    schedule 19.09.2013
comment
Спасибо за подсказку с устаревшей функцией. Что касается того, как получить дескриптор окна, в моем коде DirectFB нет ничего похожего на Window window;. Я полагаю, что, возможно, нашел способ получить его, используя созданный IDirectFB. Это выглядит примерно так: это. Теперь я получаю эту ошибку: X11/Core: Error! BadDrawable (invalid Pixmap or Window parameter). Означает ли это, что у меня неправильный дескриптор, или это потому, что и GStreamer, и DirectFB пытаются одновременно отображать одно и то же окно? - person Alex; 21.09.2013