Add a drm_poll function to the tdfx driver. This fixes the problem with
3.9.17 where the server hangs when the mouse is first moved.main
parent
e83ae7576b
commit
aa724a52b9
|
@ -25,7 +25,7 @@
|
|||
* DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h,v 1.58 1999/08/30 13:05:00 faith Exp $
|
||||
* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h,v 1.2 1999/12/14 01:33:56 robin Exp $
|
||||
* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h,v 1.1 1999/09/25 14:37:59 dawes Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -49,6 +49,10 @@
|
|||
#ifdef CONFIG_MTRR
|
||||
#include <asm/mtrr.h>
|
||||
#endif
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
|
||||
#include <asm/spinlock.h>
|
||||
#include <linux/poll.h>
|
||||
#endif
|
||||
#include "drm.h"
|
||||
|
||||
#define DRM_DEBUG_CODE 2 /* Include debugging code (if > 1, then
|
||||
|
@ -478,6 +482,7 @@ extern int drm_fasync(int fd, struct file *filp, int on);
|
|||
extern ssize_t drm_read(struct file *filp, char *buf, size_t count,
|
||||
loff_t *off);
|
||||
extern int drm_write_string(drm_device_t *dev, const char *s);
|
||||
extern unsigned int drm_poll(struct file *filp, struct poll_table_struct *wait);
|
||||
|
||||
/* Mapping support (vm.c) */
|
||||
#if LINUX_VERSION_CODE < 0x020317
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
* DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* $PI$
|
||||
* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.c,v 1.1 1999/12/14 01:49:22 robin Exp $
|
||||
* $XFree86$
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -53,6 +53,7 @@ static struct file_operations tdfx_fops = {
|
|||
mmap: drm_mmap,
|
||||
read: drm_read,
|
||||
fasync: drm_fasync,
|
||||
poll: drm_poll
|
||||
};
|
||||
|
||||
static struct miscdevice tdfx_misc = {
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
* DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h,v 1.58 1999/08/30 13:05:00 faith Exp $
|
||||
* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h,v 1.2 1999/12/14 01:33:56 robin Exp $
|
||||
* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/drmP.h,v 1.1 1999/09/25 14:37:59 dawes Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -49,6 +49,10 @@
|
|||
#ifdef CONFIG_MTRR
|
||||
#include <asm/mtrr.h>
|
||||
#endif
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,1,0)
|
||||
#include <asm/spinlock.h>
|
||||
#include <linux/poll.h>
|
||||
#endif
|
||||
#include "drm.h"
|
||||
|
||||
#define DRM_DEBUG_CODE 2 /* Include debugging code (if > 1, then
|
||||
|
@ -478,6 +482,7 @@ extern int drm_fasync(int fd, struct file *filp, int on);
|
|||
extern ssize_t drm_read(struct file *filp, char *buf, size_t count,
|
||||
loff_t *off);
|
||||
extern int drm_write_string(drm_device_t *dev, const char *s);
|
||||
extern unsigned int drm_poll(struct file *filp, struct poll_table_struct *wait);
|
||||
|
||||
/* Mapping support (vm.c) */
|
||||
#if LINUX_VERSION_CODE < 0x020317
|
||||
|
|
11
linux/fops.c
11
linux/fops.c
|
@ -25,7 +25,7 @@
|
|||
* DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* $PI: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/fops.c,v 1.3 1999/08/20 15:36:45 faith Exp $
|
||||
* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/fops.c,v 1.2 1999/12/14 01:33:56 robin Exp $
|
||||
* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/fops.c,v 1.1 1999/09/25 14:37:59 dawes Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -221,3 +221,12 @@ int drm_write_string(drm_device_t *dev, const char *s)
|
|||
wake_up_interruptible(&dev->buf_readers);
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned int drm_poll(struct file *filp, struct poll_table_struct *wait)
|
||||
{
|
||||
drm_file_t *priv = filp->private_data;
|
||||
drm_device_t *dev = priv->dev;
|
||||
poll_wait(filp, &dev->buf_readers, wait);
|
||||
if (dev->buf_wp != dev->buf_rp) return POLLIN | POLLRDNORM;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
* DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* $PI$
|
||||
* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/tdfx_drv.c,v 1.1 1999/12/14 01:49:22 robin Exp $
|
||||
* $XFree86$
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -53,6 +53,7 @@ static struct file_operations tdfx_fops = {
|
|||
mmap: drm_mmap,
|
||||
read: drm_read,
|
||||
fasync: drm_fasync,
|
||||
poll: drm_poll
|
||||
};
|
||||
|
||||
static struct miscdevice tdfx_misc = {
|
||||
|
|
Loading…
Reference in New Issue