bring DRM into conformance with normal poll().
13 files changed:
drm_device_t * dev);
extern int drm_fasync(int fd, struct file *filp, int on);
extern int drm_release(struct inode *inode, struct file *filp);
+unsigned int drm_poll(struct file *filp, struct poll_table_struct *wait);
/* Mapping support (drm_vm.h) */
extern void drm_vm_open(struct vm_area_struct *vma);
return retcode;
}
EXPORT_SYMBOL(drm_release);
+
+/** No-op. */
+/* This is to deal with older X servers that believe 0 means data is
+ * available which is not the correct return for a poll function.
+ * By alternating returns both interfaces are happy. This is fixed
+ * in newer X servers.
+ */
+unsigned int drm_poll(struct file *filp, struct poll_table_struct *wait)
+{
+ static int flip;
+ if ((flip = !flip))
+ return (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM);
+ return 0;
+}
+EXPORT_SYMBOL(drm_poll);
+
.ioctl = drm_ioctl,
.mmap = drm_mmap,
.fasync = drm_fasync,
+ .poll = drm_poll,
.get_unmapped_area = ffb_get_unmapped_area,
},
};
.release = drm_release,
.ioctl = drm_ioctl,
.mmap = i810_mmap_buffers,
+ .poll = drm_poll,
.fasync = drm_fasync,
},
.pci_driver = {
.release = drm_release,
.ioctl = drm_ioctl,
.mmap = i830_mmap_buffers,
+ .poll = drm_poll,
.fasync = drm_fasync,
},
.pci_driver = {
.release = drm_release,
.ioctl = drm_ioctl,
.mmap = drm_mmap,
+ .poll = drm_poll,
.fasync = drm_fasync,
},
.pci_driver = {
.release = drm_release,
.ioctl = drm_ioctl,
.mmap = drm_mmap,
+ .poll = drm_poll,
.fasync = drm_fasync,
},
.pci_driver = {
.release = drm_release,
.ioctl = drm_ioctl,
.mmap = drm_mmap,
+ .poll = drm_poll,
.fasync = drm_fasync,
},
.pci_driver = {
.release = drm_release,
.ioctl = drm_ioctl,
.mmap = drm_mmap,
+ .poll = drm_poll,
.fasync = drm_fasync,
},
.pci_driver = {
.release = drm_release,
.ioctl = drm_ioctl,
.mmap = drm_mmap,
+ .poll = drm_poll,
.fasync = drm_fasync,
},
.pci_driver = {
.release = drm_release,
.ioctl = drm_ioctl,
.mmap = drm_mmap,
+ .poll = drm_poll,
.fasync = drm_fasync,
},
.pci_driver = {
.release = drm_release,
.ioctl = drm_ioctl,
.mmap = drm_mmap,
+ .poll = drm_poll,
.fasync = drm_fasync,
},
.pci_driver = {
.release = drm_release,
.ioctl = drm_ioctl,
.mmap = drm_mmap,
+ .poll = drm_poll,
.fasync = drm_fasync,
},
.pci_driver = {