I want to play video in gtkmm3 in Gtk::DrawingArea widget. But I need to pass parameters to libvlc_media_player_set_xwindow. How can I get X window ID from Gtk::DrawingArea widget?
I am using gtkmm-3 and I don't want to use gtkmm-4, because I want compatibility with older systems.
I have class MyWindow which contains Gtk::DrawingArea * player instance loaded from Gtk::Builder.
class MyWindow : public Gtk::Window {
protected:
Glib::RefPtr<Gtk::Builder> builder;
Gtk::DrawingArea *player;
libvlc_instance_t *vlc_i;
public:
MyWindow(BaseObjectType *obj, Glib::RefPtr<Gtk::Builder> const &builder);
void on_player_realize();
};
void MyWindow::on_player_realize(){
// Gtk::Widget::on_realize();
XID win = /*Which code gets XID from this->player? */;
std::string url="http://livesim.dashif.org/livesim/ato_10/testpic_2s/Manifest.mpd";
const char * const vlc_args[] = {"--verbose=0" };
this->vlc_i = libvlc_new(sizeof(vlc_args) / sizeof(vlc_args[0]), vlc_args);
auto m = libvlc_media_new_location(vlc_i,url.c_str());
auto mp = libvlc_media_player_new_from_media(m);
libvlc_media_player_set_xwindow (mp, win); // here it wants XID
libvlc_media_player_play (mp);
}