compilation errors under MinGW
There's an extra parentheses in examples/media_player_gtkmm/player_window.cc:141 causing compilation error when building for MinGW (GDK_WINDOWING_WIN32
is defined):
make[2]: Entering directory '/builddir/build/BUILD/gstreamermm-1.10.0/build_win32/examples'
/bin/sh ../libtool --tag=CXX --mode=link i686-w64-mingw32-g++ -Wall -std=c++11 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -fstack-protector -lssp -o dynamic_changing_element/example.exe dynamic_changing_element/main.o -lgiomm-2.4 -lglibmm-2.4 -lsigc-2.0 -lgstcheck-1.0 -lgstcontroller-1.0 -lgstnet-1.0 -lgstallocators-1.0 -lgstapp-1.0 -lgstfft-1.0 -lgstpbutils-1.0 -lgstaudio-1.0 -lgstriff-1.0 -lgstrtp-1.0 -lgstrtsp-1.0 -lgio-2.0 -lgstsdp-1.0 -lgsttag-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -lintl ../gstreamer/gstreamermm/libgstreamermm-1.0.la
libtool: link: i686-w64-mingw32-g++ -Wall -std=c++11 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -fstack-protector -o dynamic_changing_element/.libs/example.exe dynamic_changing_element/main.o ../gstreamer/gstreamermm/.libs/libgstreamermm-1.0.dll.a -lssp -lgiomm-2.4 -lglibmm-2.4 -lsigc-2.0 -lgstcheck-1.0 -lgstcontroller-1.0 -lgstnet-1.0 -lgstallocators-1.0 -lgstapp-1.0 -lgstfft-1.0 -lgstpbutils-1.0 -lgstaudio-1.0 -lgstriff-1.0 -lgstrtp-1.0 -lgstrtsp-1.0 -lgio-2.0 -lgstsdp-1.0 -lgsttag-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 -lintl -L/usr/i686-w64-mingw32/sys-root/mingw/lib
libtool: error: Could not determine the host path corresponding to
libtool: error: '/builddir/build/BUILD/gstreamermm-1.10.0/build_win32/gstreamer/gstreamermm/.libs'
libtool: error: Continuing, but uninstalled executables may not work.
libtool: error: Could not determine the host path corresponding to
libtool: error: '/builddir/build/BUILD/gstreamermm-1.10.0/build_win32/gstreamer/gstreamermm/.libs:/usr/i686-w64-mingw32/sys-root/mingw/lib:/usr/i686-w64-mingw32/sys-root/mingw/bin'
libtool: error: Continuing, but uninstalled executables may not work.
make[2]: Leaving directory '/builddir/build/BUILD/gstreamermm-1.10.0/build_win32/examples'
make[2]: Entering directory '/builddir/build/BUILD/gstreamermm-1.10.0/build_win32/examples'
depbase=`echo media_player_gtkmm/player_window.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
i686-w64-mingw32-g++ -DHAVE_CONFIG_H -I.. -I../gstreamer -I../../gstreamer -I/usr/i686-w64-mingw32/sys-root/mingw/include/giomm-2.4 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/giomm-2.4/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/glibmm-2.4 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/glibmm-2.4/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/sigc++-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/sigc++-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/gstreamer-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/orc-0.4 -mms-bitfields -I/usr/i686-w64-mingw32/sys-root/mingw/include/giomm-2.4 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/giomm-2.4/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/glib-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/glib-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/glibmm-2.4 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/glibmm-2.4/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/sigc++-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/sigc++-2.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/gstreamer-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/orc-0.4 -I/usr/i686-w64-mingw32/sys-root/mingw/include/gtkmm-3.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/gtkmm-3.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/gtk-3.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/pango-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/harfbuzz -I/usr/i686-w64-mingw32/sys-root/mingw/include/freetype2 -I/usr/i686-w64-mingw32/sys-root/mingw/include/libpng16 -I/usr/i686-w64-mingw32/sys-root/mingw/include/fribidi -I/usr/i686-w64-mingw32/sys-root/mingw/include/cairo -I/usr/i686-w64-mingw32/sys-root/mingw/include/pixman-1 -I/usr/i686-w64-mingw32/sys-root/mingw/include/gdk-pixbuf-2.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/atk-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/include/cairomm-1.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/cairomm-1.0/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/pangomm-1.4 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/pangomm-1.4/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/atkmm-1.6 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/atkmm-1.6/include -I/usr/i686-w64-mingw32/sys-root/mingw/include/gdkmm-3.0 -I/usr/i686-w64-mingw32/sys-root/mingw/lib/gdkmm-3.0/include -mms-bitfields -Wall -std=c++11 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -MT media_player_gtkmm/player_window.o -MD -MP -MF $depbase.Tpo -c -o media_player_gtkmm/player_window.o ../../examples/media_player_gtkmm/player_window.cc &&\
mv -f $depbase.Tpo $depbase.Po
../../examples/media_player_gtkmm/player_window.cc:464:2: error: unterminated argument list invoking macro "GDK_WINDOW_HWND"
464 | }
| ^
../../examples/media_player_gtkmm/player_window.cc: In member function 'void PlayerWindow::on_video_area_realize()':
../../examples/media_player_gtkmm/player_window.cc:141:20: error: 'GDK_WINDOW_HWND' was not declared in this scope
141 | window_handler = GDK_WINDOW_HWND ((m_video_area.get_window()->gobj());
| ^~~~~~~~~~~~~~~
../../examples/media_player_gtkmm/player_window.cc:141:35: error: expected '}' at end of input
141 | window_handler = GDK_WINDOW_HWND ((m_video_area.get_window()->gobj());
| ^
../../examples/media_player_gtkmm/player_window.cc:133:1: note: to match this '{'
133 | {
| ^
make[2]: *** [Makefile:824: media_player_gtkmm/player_window.o] Error 1
make[2]: Leaving directory '/builddir/build/BUILD/gstreamermm-1.10.0/build_win32/examples'
Once that is fixed, we get another error:
In file included from /usr/i686-w64-mingw32/sys-root/mingw/include/gtk-3.0/gdk/gdkwin32.h:37,
from ../../examples/media_player_gtkmm/player_window.cc:26:
../../examples/media_player_gtkmm/player_window.cc: In member function 'void PlayerWindow::on_video_area_realize()':
/usr/i686-w64-mingw32/sys-root/mingw/include/gtk-3.0/gdk/win32/gdkwin32misc.h:50:57: error: invalid conversion from 'HGDIOBJ' {aka 'void*'} to 'gulong' {aka 'long unsigned int'} [-fpermissive]
50 | #define GDK_WINDOW_HWND(d) (gdk_win32_window_get_handle (d))
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
| |
| HGDIOBJ {aka void*}
../../examples/media_player_gtkmm/player_window.cc:141:20: note: in expansion of macro 'GDK_WINDOW_HWND'
141 | window_handler = GDK_WINDOW_HWND (m_video_area.get_window()->gobj());
| ^~~~~~~~~~~~~~~
I found a similar code example here: https://gstreamer.freedesktop.org/documentation/video/gstvideooverlay.html?gi-language=c#gstvideooverlay-and-gtk and I'll submit a PR based on that shortly.