Ковыряю свой собственный медиаплеер на 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. Воспроизведение начинается по клику в окно.