diff options
-rw-r--r-- | randr/rrprovider.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/randr/rrprovider.c b/randr/rrprovider.c index db7074c40..aae309501 100644 --- a/randr/rrprovider.c +++ b/randr/rrprovider.c @@ -59,6 +59,7 @@ ProcRRGetProviders (ClientPtr client) unsigned int extraLen; RRProvider *providers; int total_providers = 0, count_providers = 0; + ScreenPtr iter; REQUEST_SIZE_MATCH(xRRGetProvidersReq); rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); @@ -71,6 +72,10 @@ ProcRRGetProviders (ClientPtr client) if (pScrPriv->provider) total_providers++; + xorg_list_for_each_entry(iter, &pScreen->unattached_list, unattached_head) { + pScrPriv = rrGetScrPriv(iter); + total_providers += pScrPriv->provider ? 1 : 0; + } pScrPriv = rrGetScrPriv(pScreen); rep.pad = 0; @@ -100,6 +105,9 @@ ProcRRGetProviders (ClientPtr client) providers = (RRProvider *)extra; ADD_PROVIDER(pScreen); + xorg_list_for_each_entry(iter, &pScreen->unattached_list, unattached_head) { + ADD_PROVIDER(iter); + } } if (client->swapped) { |