[PATCH 15/36] randr: expose unattached providers to the clients.

Dave Airlie airlied at gmail.com
Thu Jul 5 08:21:16 PDT 2012


From: Dave Airlie <airlied at redhat.com>

This provides the unattached provider list to the clients.

Signed-off-by: Dave Airlie <airlied at redhat.com>
---
 randr/rrprovider.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/randr/rrprovider.c b/randr/rrprovider.c
index b787b94..0a801d4 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) {
-- 
1.7.10.2



More information about the xorg-devel mailing list