mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 11:41:09 +00:00
registrybinary: Fix compatibility with GLib 2.25 when using MSVC
Newer GLib uses a new type for g_stat() and friends to improve Windows compatibility. On POSIX this is a typedef to struct stat. Fixes bug #623875.
This commit is contained in:
parent
9d0e2e7252
commit
c53457976e
3 changed files with 31 additions and 4 deletions
|
@ -670,7 +670,11 @@ gst_plugin_load_file (const gchar * filename, GError ** error)
|
|||
GModule *module;
|
||||
gboolean ret;
|
||||
gpointer ptr;
|
||||
#if GLIB_CHECK_VERSION(2,25,0)
|
||||
GStatBuf file_status;
|
||||
#else
|
||||
struct stat file_status;
|
||||
#endif
|
||||
GstRegistry *registry;
|
||||
gboolean new_plugin = TRUE;
|
||||
|
||||
|
@ -1466,7 +1470,13 @@ gst_plugin_ext_dep_extract_env_vars_paths (GstPlugin * plugin,
|
|||
}
|
||||
|
||||
static guint
|
||||
gst_plugin_ext_dep_get_hash_from_stat_entry (struct stat *s)
|
||||
gst_plugin_ext_dep_get_hash_from_stat_entry (
|
||||
#if GLIB_CHECK_VERSION(2,25,0)
|
||||
GStatBuf * s
|
||||
#else
|
||||
struct stat *s
|
||||
#endif
|
||||
)
|
||||
{
|
||||
if (!(s->st_mode & (S_IFDIR | S_IFREG)))
|
||||
return (guint) - 1;
|
||||
|
@ -1510,7 +1520,7 @@ gst_plugin_ext_dep_scan_dir_and_match_names (GstPlugin * plugin,
|
|||
GDir *dir;
|
||||
guint hash = 0;
|
||||
|
||||
recurse_dirs = !!(flags & GST_PLUGIN_DEPENDENCY_FLAG_RECURSE);
|
||||
recurse_dirs = ! !(flags & GST_PLUGIN_DEPENDENCY_FLAG_RECURSE);
|
||||
|
||||
dir = g_dir_open (path, 0, &err);
|
||||
if (dir == NULL) {
|
||||
|
@ -1523,7 +1533,11 @@ gst_plugin_ext_dep_scan_dir_and_match_names (GstPlugin * plugin,
|
|||
* the same order, and not in a random order */
|
||||
while ((entry = g_dir_read_name (dir))) {
|
||||
gboolean have_match;
|
||||
#if GLIB_CHECK_VERSION(2,25,0)
|
||||
GStatBuf s;
|
||||
#else
|
||||
struct stat s;
|
||||
#endif
|
||||
gchar *full_path;
|
||||
guint fhash;
|
||||
|
||||
|
@ -1572,15 +1586,20 @@ gst_plugin_ext_dep_scan_path_with_filenames (GstPlugin * plugin,
|
|||
if (filenames == NULL || *filenames == NULL)
|
||||
filenames = empty_filenames;
|
||||
|
||||
recurse_into_dirs = !!(flags & GST_PLUGIN_DEPENDENCY_FLAG_RECURSE);
|
||||
partial_names = !!(flags & GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX);
|
||||
recurse_into_dirs = ! !(flags & GST_PLUGIN_DEPENDENCY_FLAG_RECURSE);
|
||||
partial_names = ! !(flags & GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX);
|
||||
|
||||
/* if we can construct the exact paths to check with the data we have, just
|
||||
* stat them one by one; this is more efficient than opening the directory
|
||||
* and going through each entry to see if it matches one of our filenames. */
|
||||
if (!recurse_into_dirs && !partial_names) {
|
||||
for (i = 0; filenames[i] != NULL; ++i) {
|
||||
#if GLIB_CHECK_VERSION(2,25,0)
|
||||
GStatBuf s;
|
||||
#else
|
||||
struct stat s;
|
||||
#endif
|
||||
|
||||
gchar *full_path;
|
||||
guint fhash;
|
||||
|
||||
|
|
|
@ -1106,7 +1106,11 @@ gst_registry_scan_path_level (GstRegistryScanContext * context,
|
|||
return FALSE;
|
||||
|
||||
while ((dirent = g_dir_read_name (dir))) {
|
||||
#if GLIB_CHECK_VERSION(2,25,0)
|
||||
GStatBuf file_status;
|
||||
#else
|
||||
struct stat file_status;
|
||||
#endif
|
||||
|
||||
filename = g_build_filename (path, dirent, NULL);
|
||||
if (g_stat (filename, &file_status) < 0) {
|
||||
|
|
|
@ -363,7 +363,11 @@ gst_registry_binary_write_cache (GstRegistry * registry, const char *location)
|
|||
continue;
|
||||
|
||||
if (plugin->flags & GST_PLUGIN_FLAG_CACHED) {
|
||||
#if GLIB_CHECK_VERSION(2,25,0)
|
||||
GStatBuf statbuf;
|
||||
#else
|
||||
struct stat statbuf;
|
||||
#endif
|
||||
|
||||
if (g_stat (plugin->filename, &statbuf) < 0 ||
|
||||
plugin->file_mtime != statbuf.st_mtime ||
|
||||
|
|
Loading…
Reference in a new issue