mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-03 05:59:10 +00:00
gstreamer: pluginloader: Remove unnecessary Windows special cases
The Windows plugin loader is in a separate file. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4541>
This commit is contained in:
parent
7e12f8fb6a
commit
a79774be74
1 changed files with 22 additions and 54 deletions
|
@ -26,21 +26,11 @@
|
||||||
|
|
||||||
#include <gst/gst_private.h>
|
#include <gst/gst_private.h>
|
||||||
|
|
||||||
#ifndef G_OS_WIN32
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#else
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
|
||||||
|
|
||||||
#define fsync(fd) _commit(fd)
|
|
||||||
#include <io.h>
|
|
||||||
|
|
||||||
#include <windows.h>
|
|
||||||
extern HMODULE _priv_gst_dll_handle;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_SYS_UTSNAME_H
|
#ifdef HAVE_SYS_UTSNAME_H
|
||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
|
@ -487,12 +477,6 @@ gst_plugin_loader_spawn (GstPluginLoader * loader)
|
||||||
/* use the installed version */
|
/* use the installed version */
|
||||||
GST_LOG ("Trying installed plugin scanner");
|
GST_LOG ("Trying installed plugin scanner");
|
||||||
|
|
||||||
#ifdef G_OS_WIN32
|
|
||||||
#define EXESUFFIX ".exe"
|
|
||||||
#else
|
|
||||||
#define EXESUFFIX
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MAX_PATH_DEPTH 64
|
#define MAX_PATH_DEPTH 64
|
||||||
|
|
||||||
relocated_libgstreamer = priv_gst_get_relocated_libgstreamer ();
|
relocated_libgstreamer = priv_gst_get_relocated_libgstreamer ();
|
||||||
|
@ -511,7 +495,7 @@ gst_plugin_loader_spawn (GstPluginLoader * loader)
|
||||||
filenamev[i++] = "..";
|
filenamev[i++] = "..";
|
||||||
filenamev[i++] = GST_PLUGIN_SCANNER_SUBDIR;
|
filenamev[i++] = GST_PLUGIN_SCANNER_SUBDIR;
|
||||||
filenamev[i++] = "gstreamer-" GST_API_VERSION;
|
filenamev[i++] = "gstreamer-" GST_API_VERSION;
|
||||||
filenamev[i++] = "gst-plugin-scanner" EXESUFFIX;
|
filenamev[i++] = "gst-plugin-scanner";
|
||||||
filenamev[i++] = NULL;
|
filenamev[i++] = NULL;
|
||||||
g_assert (i <= MAX_PATH_DEPTH + 5);
|
g_assert (i <= MAX_PATH_DEPTH + 5);
|
||||||
|
|
||||||
|
@ -557,12 +541,8 @@ plugin_loader_cleanup_child (GstPluginLoader * l)
|
||||||
close (l->fd_w.fd);
|
close (l->fd_w.fd);
|
||||||
close (l->fd_r.fd);
|
close (l->fd_r.fd);
|
||||||
|
|
||||||
#ifndef G_OS_WIN32
|
|
||||||
GST_LOG ("waiting for child process to exit");
|
GST_LOG ("waiting for child process to exit");
|
||||||
waitpid (l->child_pid, NULL, 0);
|
waitpid (l->child_pid, NULL, 0);
|
||||||
#else
|
|
||||||
g_warning ("FIXME: Implement child process shutdown for Win32");
|
|
||||||
#endif
|
|
||||||
g_spawn_close_pid (l->child_pid);
|
g_spawn_close_pid (l->child_pid);
|
||||||
|
|
||||||
l->child_running = FALSE;
|
l->child_running = FALSE;
|
||||||
|
@ -573,6 +553,7 @@ _gst_plugin_loader_client_run (const gchar * pipe_name)
|
||||||
{
|
{
|
||||||
gboolean res = TRUE;
|
gboolean res = TRUE;
|
||||||
GstPluginLoader *l;
|
GstPluginLoader *l;
|
||||||
|
int dup_fd;
|
||||||
|
|
||||||
l = plugin_loader_new (NULL);
|
l = plugin_loader_new (NULL);
|
||||||
if (l == NULL)
|
if (l == NULL)
|
||||||
|
@ -581,37 +562,27 @@ _gst_plugin_loader_client_run (const gchar * pipe_name)
|
||||||
/* On entry, the inward pipe is STDIN, and outward is STDOUT.
|
/* On entry, the inward pipe is STDIN, and outward is STDOUT.
|
||||||
* Dup those somewhere better so that plugins printing things
|
* Dup those somewhere better so that plugins printing things
|
||||||
* won't interfere with anything */
|
* won't interfere with anything */
|
||||||
#ifndef G_OS_WIN32
|
dup_fd = dup (0); /* STDIN */
|
||||||
{
|
if (dup_fd == -1) {
|
||||||
int dup_fd;
|
GST_ERROR ("Failed to start. Could not dup STDIN, errno %d", errno);
|
||||||
|
res = FALSE;
|
||||||
dup_fd = dup (0); /* STDIN */
|
goto beach;
|
||||||
if (dup_fd == -1) {
|
|
||||||
GST_ERROR ("Failed to start. Could not dup STDIN, errno %d", errno);
|
|
||||||
res = FALSE;
|
|
||||||
goto beach;
|
|
||||||
}
|
|
||||||
l->fd_r.fd = dup_fd;
|
|
||||||
close (0);
|
|
||||||
|
|
||||||
dup_fd = dup (1); /* STDOUT */
|
|
||||||
if (dup_fd == -1) {
|
|
||||||
GST_ERROR ("Failed to start. Could not dup STDOUT, errno %d", errno);
|
|
||||||
res = FALSE;
|
|
||||||
goto beach;
|
|
||||||
}
|
|
||||||
l->fd_w.fd = dup_fd;
|
|
||||||
close (1);
|
|
||||||
|
|
||||||
/* Dup stderr down to stdout so things that plugins print are visible,
|
|
||||||
* but don't care if it fails */
|
|
||||||
dup2 (2, 1);
|
|
||||||
}
|
}
|
||||||
#else
|
l->fd_r.fd = dup_fd;
|
||||||
/* FIXME: Use DuplicateHandle and friends on win32 */
|
close (0);
|
||||||
l->fd_w.fd = 1; /* STDOUT */
|
|
||||||
l->fd_r.fd = 0; /* STDIN */
|
dup_fd = dup (1); /* STDOUT */
|
||||||
#endif
|
if (dup_fd == -1) {
|
||||||
|
GST_ERROR ("Failed to start. Could not dup STDOUT, errno %d", errno);
|
||||||
|
res = FALSE;
|
||||||
|
goto beach;
|
||||||
|
}
|
||||||
|
l->fd_w.fd = dup_fd;
|
||||||
|
close (1);
|
||||||
|
|
||||||
|
/* Dup stderr down to stdout so things that plugins print are visible,
|
||||||
|
* but don't care if it fails */
|
||||||
|
dup2 (2, 1);
|
||||||
|
|
||||||
gst_poll_add_fd (l->fdset, &l->fd_w);
|
gst_poll_add_fd (l->fdset, &l->fd_w);
|
||||||
gst_poll_add_fd (l->fdset, &l->fd_r);
|
gst_poll_add_fd (l->fdset, &l->fd_r);
|
||||||
|
@ -624,10 +595,7 @@ _gst_plugin_loader_client_run (const gchar * pipe_name)
|
||||||
/* Loop, listening for incoming packets on the fd and writing responses */
|
/* Loop, listening for incoming packets on the fd and writing responses */
|
||||||
while (!l->rx_done && exchange_packets (l));
|
while (!l->rx_done && exchange_packets (l));
|
||||||
|
|
||||||
#ifndef G_OS_WIN32
|
|
||||||
beach:
|
beach:
|
||||||
#endif
|
|
||||||
|
|
||||||
plugin_loader_free (l);
|
plugin_loader_free (l);
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
Loading…
Reference in a new issue