summaryrefslogtreecommitdiff
path: root/shared-core/nouveau_fifo.c
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2007-03-21 17:57:47 +1100
committerBen Skeggs <skeggsb@gmail.com>2007-03-21 17:57:47 +1100
commite22225416a12c2beab7a5bcb866d214ee212cbc4 (patch)
tree8c8ec750fed8c21c1b0f8001c6101be4a485967b /shared-core/nouveau_fifo.c
parent209870a88262a4a27b36e5cc97f3b1e7021dbefd (diff)
nouveau: support multiple channels per client (breaks drm interface)
Diffstat (limited to 'shared-core/nouveau_fifo.c')
-rw-r--r--shared-core/nouveau_fifo.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/shared-core/nouveau_fifo.c b/shared-core/nouveau_fifo.c
index 3ffb0516..fd5e46ac 100644
--- a/shared-core/nouveau_fifo.c
+++ b/shared-core/nouveau_fifo.c
@@ -725,15 +725,16 @@ void nouveau_fifo_cleanup(drm_device_t* dev, DRMFILE filp)
nouveau_fifo_init(dev);*/
}
-int nouveau_fifo_id_get(drm_device_t* dev, DRMFILE filp)
+int
+nouveau_fifo_owner(drm_device_t *dev, DRMFILE filp, int channel)
{
- drm_nouveau_private_t *dev_priv=dev->dev_private;
- int i;
+ drm_nouveau_private_t *dev_priv = dev->dev_private;
- for(i=0;i<nouveau_fifo_number(dev);i++)
- if (dev_priv->fifos[i].used && dev_priv->fifos[i].filp == filp)
- return i;
- return -1;
+ if (channel >= nouveau_fifo_number(dev))
+ return 0;
+ if (dev_priv->fifos[channel].used == 0)
+ return 0;
+ return (dev_priv->fifos[channel].filp == filp);
}
/***********************************