File 29a90f07-move-video-validation.patch of Package libvirt.9596

commit 29a90f071dd7c1764f82c7fcbfdded35d252b174
Author: Cole Robinson <crobinso@redhat.com>
Date:   Sun Aug 27 11:04:40 2017 -0400

    conf: domain: move video type validation to DeviceDefValidate
    
    This allows drivers to set their own default. But if a driver neglects
    to fill one in, we still error like we previously would at parse time.
    
    Signed-off-by: Cole Robinson <crobinso@redhat.com>

Index: libvirt-3.3.0/src/conf/domain_conf.c
===================================================================
--- libvirt-3.3.0.orig/src/conf/domain_conf.c
+++ libvirt-3.3.0/src/conf/domain_conf.c
@@ -4662,7 +4662,18 @@ virDomainVcpuDefPostParse(virDomainDefPt
             break;
         }
     }
+    return 0;
+}
+
 
+static int
+virDomainVideoDefValidate(const virDomainVideoDef *video)
+{
+    if (video->type == VIR_DOMAIN_VIDEO_TYPE_DEFAULT) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                       _("missing video model and cannot determine default"));
+        return -1;
+    }
     return 0;
 }
 
@@ -4952,11 +4963,13 @@ virDomainDeviceDefValidateInternal(const
     case VIR_DOMAIN_DEVICE_CONTROLLER:
         return virDomainControllerDefValidate(dev->data.controller);
 
+    case VIR_DOMAIN_DEVICE_VIDEO:
+        return virDomainVideoDefValidate(dev->data.video);
+
     case VIR_DOMAIN_DEVICE_LEASE:
     case VIR_DOMAIN_DEVICE_FS:
     case VIR_DOMAIN_DEVICE_INPUT:
     case VIR_DOMAIN_DEVICE_SOUND:
-    case VIR_DOMAIN_DEVICE_VIDEO:
     case VIR_DOMAIN_DEVICE_HOSTDEV:
     case VIR_DOMAIN_DEVICE_WATCHDOG:
     case VIR_DOMAIN_DEVICE_GRAPHICS:
@@ -13320,7 +13333,7 @@ virDomainVideoDefaultType(const virDomai
     case VIR_DOMAIN_VIRT_BHYVE:
         return VIR_DOMAIN_VIDEO_TYPE_GOP;
     default:
-        return -1;
+        return VIR_DOMAIN_VIDEO_TYPE_DEFAULT;
     }
 }
 
@@ -13424,11 +13437,7 @@ virDomainVideoDefParseXML(xmlNodePtr nod
             goto error;
         }
     } else {
-        if ((def->type = virDomainVideoDefaultType(dom)) < 0) {
-            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                           _("missing video model and cannot determine default"));
-            goto error;
-        }
+        def->type = virDomainVideoDefaultType(dom);
     }
 
     if (ram) {
@@ -20558,11 +20567,6 @@ virDomainDefAddImplicitVideo(virDomainDe
     if (VIR_ALLOC(video) < 0)
         goto cleanup;
     video->type = virDomainVideoDefaultType(def);
-    if (video->type < 0) {
-        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
-                       _("cannot determine default video type"));
-        goto cleanup;
-    }
     video->heads = 1;
     if (VIR_APPEND_ELEMENT(def->videos, def->nvideos, video) < 0)
         goto cleanup;
openSUSE Build Service is sponsored by