mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-18 07:47:17 +00:00
pluginfeature: improve version check
Also parse the nano of the version and assume that X.Y.Z-1.1 >= X.Y.Z With this change we can also check development versions against the version of the upcomming release.
This commit is contained in:
parent
a4d38192f1
commit
06e27c5209
1 changed files with 10 additions and 2 deletions
|
@ -290,12 +290,16 @@ gst_plugin_feature_check_version (GstPluginFeature * feature,
|
|||
|
||||
if (plugin) {
|
||||
const gchar *ver_str;
|
||||
guint major, minor, micro;
|
||||
guint major, minor, micro, nano;
|
||||
gint nscan;
|
||||
|
||||
ver_str = gst_plugin_get_version (plugin);
|
||||
g_return_val_if_fail (ver_str != NULL, FALSE);
|
||||
|
||||
if (sscanf (ver_str, "%u.%u.%u", &major, &minor, µ) == 3) {
|
||||
nscan = sscanf (ver_str, "%u.%u.%u.%u", &major, &minor, µ, &nano);
|
||||
GST_DEBUG ("version string '%s' parsed to %d values", ver_str, nscan);
|
||||
|
||||
if (nscan >= 3) {
|
||||
if (major > min_major)
|
||||
ret = TRUE;
|
||||
else if (major < min_major)
|
||||
|
@ -306,6 +310,10 @@ gst_plugin_feature_check_version (GstPluginFeature * feature,
|
|||
ret = FALSE;
|
||||
else if (micro > min_micro)
|
||||
ret = TRUE;
|
||||
/* micro is 1 smaller but we have a nano version, this is the upcomming
|
||||
* release of the requested version and we're ok then */
|
||||
else if (nscan == 4 && nano > 0 && (micro + 1 == min_micro))
|
||||
ret = TRUE;
|
||||
else
|
||||
ret = (micro == min_micro);
|
||||
|
||||
|
|
Loading…
Reference in a new issue