diff options
author | Dave Airlie <airlied@redhat.com> | 2012-07-05 15:29:57 +0100 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2012-07-05 15:29:57 +0100 |
commit | e4212ce1b2b5e47cdefb1ee2d725e6ef281945bd (patch) | |
tree | b1bbf93edbee853857d2577acb6df1170b63fff6 | |
parent | 1253bcf79cafd6dd61f211db604bf669f7b98196 (diff) |
xrandr: adapt to new protocolprime
have to use setprovideroutputsource and setprovideroffloadsink now instead
of setprovider roles
-rw-r--r-- | xrandr.c | 46 |
1 files changed, 34 insertions, 12 deletions
@@ -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); } } |