macos: Add wrapper API to run a NSApplication in the main thread
authorPiotr Brzeziński <piotr@centricular.com>
Tue, 13 Dec 2022 17:42:11 +0000 (18:42 +0100)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Tue, 13 Dec 2022 17:50:32 +0000 (17:50 +0000)
commit3bb8700577ab4f741db00831796c25ac4ea7d888
tree0995cdf8894e2abf0f6de5c63ebe3ff0f81576e8
parent9ca6b1196e31a4a483fdddad191221616e2c9c3d
macos: Add wrapper API to run a NSApplication in the main thread

On macOS, a Cocoa event loop is needed in the main thread to ensure
things like opening a GL window work correctly. In the past, this was
patched into glib via Cerbero, but that prevented us from updating it.
This workaround simply runs an NSApplication and then calls the
main function on a secondary thread, allowing GStreamer to correctly
display windows and/or system permission prompts, for example.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3532>
24 files changed:
subprojects/gst-docs/examples/tutorials/basic-tutorial-1.c
subprojects/gst-docs/examples/tutorials/basic-tutorial-12.c
subprojects/gst-docs/examples/tutorials/basic-tutorial-13.c
subprojects/gst-docs/examples/tutorials/basic-tutorial-15.c
subprojects/gst-docs/examples/tutorials/basic-tutorial-2.c
subprojects/gst-docs/examples/tutorials/basic-tutorial-3.c
subprojects/gst-docs/examples/tutorials/basic-tutorial-4.c
subprojects/gst-docs/examples/tutorials/basic-tutorial-5.c
subprojects/gst-docs/examples/tutorials/basic-tutorial-6.c
subprojects/gst-docs/examples/tutorials/basic-tutorial-7.c
subprojects/gst-docs/examples/tutorials/basic-tutorial-8.c
subprojects/gst-docs/examples/tutorials/basic-tutorial-9.c
subprojects/gst-docs/examples/tutorials/playback-tutorial-1.c
subprojects/gst-docs/examples/tutorials/playback-tutorial-2.c
subprojects/gst-docs/examples/tutorials/playback-tutorial-3.c
subprojects/gst-docs/examples/tutorials/playback-tutorial-4.c
subprojects/gst-docs/examples/tutorials/playback-tutorial-5.c
subprojects/gst-docs/examples/tutorials/playback-tutorial-6.c
subprojects/gst-docs/examples/tutorials/playback-tutorial-7.c
subprojects/gstreamer/gst/gst.h
subprojects/gstreamer/gst/gstmacos.h [new file with mode: 0644]
subprojects/gstreamer/gst/gstmacos.m [new file with mode: 0644]
subprojects/gstreamer/gst/meson.build
subprojects/gstreamer/meson.build