xf86-video-intel: tools/virtual.c

Chris Wilson ickle at kemper.freedesktop.org
Wed Jan 6 06:18:59 PST 2016


 tools/virtual.c |   36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

New commits:
commit 9083d2ed5876f1891727b512da57766d8d11af56
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Jan 6 14:09:40 2016 +0000

    intel-virtual-output: Print more helpful error when run on the wrong server
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/tools/virtual.c b/tools/virtual.c
index bcbcb42..6b6d977 100644
--- a/tools/virtual.c
+++ b/tools/virtual.c
@@ -977,6 +977,35 @@ out:
 	return rr_output;
 }
 
+static int check_virtual(struct display *display)
+{
+	XRRScreenResources *res;
+	int found = -ENOENT;
+	int i;
+
+	res = _XRRGetScreenResourcesCurrent(display->dpy, display->root);
+	if (res == NULL)
+		return -ENOMEM;
+
+	for (i = 0; found == -ENOENT && i < res->noutput; i++) {
+		XRROutputInfo *output;
+
+		output = XRRGetOutputInfo(display->dpy, res, res->outputs[i]);
+		if (output == NULL)
+			continue;
+
+		if (strcmp(output->name, "VIRTUAL0") == 0)
+			found = 0;
+
+		XRRFreeOutputInfo(output);
+	}
+	XRRFreeScreenResources(res);
+
+	DBG(XRR, ("%s(%s): has VIRTUAL0? %d\n",
+		  __func__, DisplayString(display->dpy), found));
+	return found;
+}
+
 static int stride_for_depth(int width, int depth)
 {
 	if (depth == 24)
@@ -3419,6 +3448,13 @@ int main(int argc, char **argv)
 		goto out;
 	}
 
+	ret = check_virtual(ctx.display);
+	if (ret) {
+		fprintf(stderr, "No VIRTUAL outputs on \"%s\".\n",
+			DisplayString(ctx.display->dpy));
+		goto out;
+	}
+
 	if (singleton) {
 		XSelectInput(ctx.display->dpy, ctx.display->root, PropertyChangeMask);
 		if (first_display_has_singleton(&ctx)) {


More information about the xorg-commit mailing list