LINUX.ORG.RU

Вывод видео на gtk виджет и клиппинг его дочерним виджетом

 , , xvideo


0

1

Ковыряю свой собственный медиаплеер на gtkmm3 и gstreamer, и не могу заставить виджеты отображаться поверх видео, которое выводится в окно через xvideo.

Окно, на которое выводится видео - это виджет со своим собственным x11 окном, например, GtkEventBox, GtkWindow или самописный. На нем лежит дочерний GtkEventBox, и проблема в том, что когда видео воспроизводится, дочерний виджет не перекрывает часть видео, а само видео рисуется поверх него.

Написанная на голом XLib тестовая программа с родительским и дочерним окнами работает как и предполагается - дочернее окно перекрывает видео.

В чем разница? Почему GtkEventBox, имеющий собственное x11 window, работает не так, как дочернее окно в примере с XLib? Гуглинг и прочтение статьи GTK+ Drawing Model понимания не дали. Что такое очевидное я упускаю?

Понятно, что ответ скрыт в понимании X11 и тонкостей работы gtk, но хотелось бы услышать: в какую сторону копать?

Для тех, кому это может потребоваться: вот минимальный тестовый пример. Gtk вариант собирается по make app_gtk, X11 вариант - по make app_x11. Зависимости можно посмотреть в мейкфайле. Путь к медиафайлу захардкожен в дефайне FILE_PATH. Воспроизведение начинается по клику в окно.

★★★★

Посмотри и почитай про свойство colorkey у твоего sink для gstreamer.

Zubok ★★★★★
()

А, еще autopaint-colorkey в FALSE выставить, наверное. Если я правильно документацию понимаю. Вот это первым делом попробуй.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 1)

Тестовый пример не читал, меня всё равно наверняка вскоре забанят, но очевидно у тебя порядок обработки событий paint не такой, как тебе нужен. Давно не пользовал гтк, но вроде надо подключить обработку события after где следует.

yauzahvi
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.