diff options
Diffstat (limited to 'ext/wpe/wpe-extension/gstwpeextension.c')
-rw-r--r-- | ext/wpe/wpe-extension/gstwpeextension.c | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/ext/wpe/wpe-extension/gstwpeextension.c b/ext/wpe/wpe-extension/gstwpeextension.c new file mode 100644 index 000000000..f73a7e54e --- /dev/null +++ b/ext/wpe/wpe-extension/gstwpeextension.c @@ -0,0 +1,63 @@ +/* Copyright (C) <2021> Thibault Saunier <tsaunier@igalia.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include "gstwpeextension.h" + +#include <errno.h> +#include <fcntl.h> +#include <sys/socket.h> + +#include <gst/gst.h> +#include <gmodule.h> +#include <gio/gunixfdlist.h> +#include <wpe/webkit-web-extension.h> + +G_MODULE_EXPORT void webkit_web_extension_initialize (WebKitWebExtension * + extension); + +static WebKitWebExtension *global_extension = NULL; + +void +webkit_web_extension_initialize (WebKitWebExtension * extension) +{ + g_return_if_fail (!global_extension); + + gst_init (NULL, NULL); + + /* Register our own audio sink to */ + gst_element_register (NULL, "gstwpeaudiosink", GST_RANK_PRIMARY + 500, + gst_wpe_audio_sink_get_type ()); + + GST_INFO ("Mark processus as WebProcess"); + if (!g_setenv ("GST_WPE_ID", "1", TRUE)) + g_error ("Could not set GST_WPE_ID envvar\n"); + + global_extension = extension; + GST_INFO_OBJECT (global_extension, "Setting as global extension."); +} + +void +gst_wpe_extension_send_message (WebKitUserMessage * msg, + GCancellable * cancellable, GAsyncReadyCallback cb, gpointer udata) +{ + webkit_web_extension_send_message_to_context (global_extension, msg, + cancellable, cb, udata); +} |