diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index a7ab3e26f1..8144f30b66 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -30933,3 +30933,46 @@ virDomainGraphicsDefHasOpenGL(const virDomainDef *def) return false; } + + +bool +virDomainGraphicsSupportsRenderNode(const virDomainGraphicsDef *graphics) +{ + return graphics->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE; +} + + +const char * +virDomainGraphicsGetRenderNode(const virDomainGraphicsDef *graphics) +{ + const char *ret = NULL; + + switch (graphics->type) { + case VIR_DOMAIN_GRAPHICS_TYPE_SPICE: + if (graphics->data.spice.gl == VIR_TRISTATE_BOOL_YES) + ret = graphics->data.spice.rendernode; + break; + case VIR_DOMAIN_GRAPHICS_TYPE_EGL_HEADLESS: + case VIR_DOMAIN_GRAPHICS_TYPE_SDL: + case VIR_DOMAIN_GRAPHICS_TYPE_VNC: + case VIR_DOMAIN_GRAPHICS_TYPE_RDP: + case VIR_DOMAIN_GRAPHICS_TYPE_DESKTOP: + case VIR_DOMAIN_GRAPHICS_TYPE_LAST: + break; + } + + return ret; +} + + +bool +virDomainGraphicsNeedsAutoRenderNode(const virDomainGraphicsDef *graphics) +{ + if (!virDomainGraphicsSupportsRenderNode(graphics)) + return false; + + if (virDomainGraphicsGetRenderNode(graphics)) + return false; + + return true; +} diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 7a724fbc6f..b50ff819fa 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3668,4 +3668,13 @@ virDomainDefHasManagedPR(const virDomainDef *def); bool virDomainGraphicsDefHasOpenGL(const virDomainDef *def); +bool +virDomainGraphicsSupportsRenderNode(const virDomainGraphicsDef *graphics); + +const char * +virDomainGraphicsGetRenderNode(const virDomainGraphicsDef *graphics); + +bool +virDomainGraphicsNeedsAutoRenderNode(const virDomainGraphicsDef *graphics); + #endif /* __DOMAIN_CONF_H */ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index c7f08f9620..fd63c9ca61 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -372,8 +372,10 @@ virDomainGraphicsAuthConnectedTypeToString; virDomainGraphicsDefFree; virDomainGraphicsDefHasOpenGL; virDomainGraphicsGetListen; +virDomainGraphicsGetRenderNode; virDomainGraphicsListenAppendAddress; virDomainGraphicsListenAppendSocket; +virDomainGraphicsNeedsAutoRenderNode; virDomainGraphicsSpiceChannelModeTypeFromString; virDomainGraphicsSpiceChannelModeTypeToString; virDomainGraphicsSpiceChannelNameTypeFromString; @@ -388,6 +390,7 @@ virDomainGraphicsSpiceStreamingModeTypeFromString; virDomainGraphicsSpiceStreamingModeTypeToString; virDomainGraphicsSpiceZlibCompressionTypeFromString; virDomainGraphicsSpiceZlibCompressionTypeToString; +virDomainGraphicsSupportsRenderNode; virDomainGraphicsTypeFromString; virDomainGraphicsTypeToString; virDomainGraphicsVNCSharePolicyTypeFromString;