summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2012-07-05 15:29:57 +0100
committerDave Airlie <airlied@redhat.com>2012-07-05 15:29:57 +0100
commite4212ce1b2b5e47cdefb1ee2d725e6ef281945bd (patch)
treeb1bbf93edbee853857d2577acb6df1170b63fff6
parent1253bcf79cafd6dd61f211db604bf669f7b98196 (diff)
xrandr: adapt to new protocolprime
have to use setprovideroutputsource and setprovideroffloadsink now instead of setprovider roles
-rw-r--r--xrandr.c46
1 files changed, 34 insertions, 12 deletions
diff --git a/xrandr.c b/xrandr.c
index c62e453..9fa19ef 100644
--- a/xrandr.c
+++ b/xrandr.c
@@ -145,7 +145,8 @@ usage(void)
fprintf(stderr, " --addmode <output> <name>\n");
fprintf(stderr, " --delmode <output> <name>\n");
fprintf(stderr, " --listproviders\n");
- fprintf(stderr, " --setproviderrole <prov-xid> [<role>]\n");
+ fprintf(stderr, " --setprovideroutputsource <prov-xid> <source-xid>\n");
+ fprintf(stderr, " --setprovideroffloadsink <prov-xid> <sink-xid>\n");
exit(1);
/*NOTREACHED*/
@@ -387,7 +388,7 @@ static Bool dryrun = False;
static int minWidth, maxWidth, minHeight, maxHeight;
static Bool has_1_2 = False;
static Bool has_1_3 = False;
-static int provider_xid, provider_role;
+static int provider_xid, output_source_provider_xid, offload_sink_provider_xid;
static int
mode_height (XRRModeInfo *mode_info, Rotation rotation)
@@ -2166,7 +2167,8 @@ main (int argc, char **argv)
Bool modeit = False;
Bool propit = False;
Bool query_1 = False;
- Bool provit = False;
+ Bool provsetoutsource = False;
+ Bool provsetoffsink = False;
int major, minor;
Bool current = False;
@@ -2664,21 +2666,37 @@ main (int argc, char **argv)
action_requested = True;
continue;
}
- if (!strcmp("--setproviderrole", argv[i]))
+ if (!strcmp("--setprovideroutputsource", argv[i]))
{
if (++i>=argc) usage ();
provider_xid = check_strtol(argv[i]);
if (++i>=argc)
- provider_role = 1;
+ output_source_provider_xid = 0;
else
- provider_role = check_strtol(argv[i]);
+ output_source_provider_xid = check_strtol(argv[i]);
- if (provider_xid == 0)
+ if (provider_xid == 0)
usage();
action_requested = True;
- provit = True;
+ provsetoutsource = True;
continue;
}
+ if (!strcmp("--setprovideroffloadsink", argv[i]))
+ {
+ if (++i>=argc) usage ();
+ provider_xid = check_strtol(argv[i]);
+ if (++i>=argc)
+ offload_sink_provider_xid = 0;
+ else
+ offload_sink_provider_xid = check_strtol(argv[i]);
+
+ if (provider_xid == 0)
+ usage();
+ action_requested = True;
+ provsetoffsink = True;
+ continue;
+ }
+
usage();
}
if (!action_requested)
@@ -2845,9 +2863,13 @@ main (int argc, char **argv)
exit (0);
}
}
- if (has_1_2 && provit)
+ if (has_1_2 && provsetoutsource)
+ {
+ XRRSetProviderOutputSource(dpy, provider_xid, output_source_provider_xid);
+ }
+ if (has_1_2 && provsetoffsink)
{
- XRRSetProviderRoles(dpy, 1, (XID *)&provider_xid, &provider_role);
+ XRRSetProviderOffloadSink(dpy, provider_xid, offload_sink_provider_xid);
}
if (setit_1_2)
{
@@ -3251,11 +3273,11 @@ main (int argc, char **argv)
XRRProviderResources *providers;
providers = XRRGetProviderResources(dpy, root);
if (providers) {
- printf("Providers: number : %d %d\n", providers->nproviders, providers->flags);
+ printf("Providers: number : %d\n", providers->nproviders);
for (j = 0; j < providers->nproviders; j++) {
XRRProviderInfo *info = XRRGetProviderInfo(dpy, res, providers->providers[j]);
- printf("Provider %d: %d %x %x %d %d %d %s\n", j, (int)providers->providers[j], info->current_role, info->allowed_roles, info->abilities, info->ncrtcs, info->noutputs, info->name);
+ printf("Provider %d: id: %d cap: %x nc: %d no: %d nap %d name:%s\n", j, (int)providers->providers[j], info->capabilities, info->ncrtcs, info->noutputs, info->nassociatedproviders, info->name);
XRRFreeProviderInfo(info);
}
}