randr: expose unattached providers to the clients.

This provides the unattached provider list to the clients.

Reviewed-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Dave Airlie 2012-06-13 14:35:49 +01:00
parent d0e138c3f3
commit 3cbc4c10b5

View File

@ -59,6 +59,7 @@ ProcRRGetProviders (ClientPtr client)
unsigned int extraLen; unsigned int extraLen;
RRProvider *providers; RRProvider *providers;
int total_providers = 0, count_providers = 0; int total_providers = 0, count_providers = 0;
ScreenPtr iter;
REQUEST_SIZE_MATCH(xRRGetProvidersReq); REQUEST_SIZE_MATCH(xRRGetProvidersReq);
rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess); rc = dixLookupWindow(&pWin, stuff->window, client, DixGetAttrAccess);
@ -71,6 +72,10 @@ ProcRRGetProviders (ClientPtr client)
if (pScrPriv->provider) if (pScrPriv->provider)
total_providers++; 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); pScrPriv = rrGetScrPriv(pScreen);
rep.pad = 0; rep.pad = 0;
@ -100,6 +105,9 @@ ProcRRGetProviders (ClientPtr client)
providers = (RRProvider *)extra; providers = (RRProvider *)extra;
ADD_PROVIDER(pScreen); ADD_PROVIDER(pScreen);
xorg_list_for_each_entry(iter, &pScreen->unattached_list, unattached_head) {
ADD_PROVIDER(iter);
}
} }
if (client->swapped) { if (client->swapped) {