diff --git a/hw/xfree86/compat/meson.build b/hw/xfree86/compat/meson.build index b3835efdc..ea64e7f0e 100644 --- a/hw/xfree86/compat/meson.build +++ b/hw/xfree86/compat/meson.build @@ -3,6 +3,7 @@ srcs_xorg_compat = [ 'log.c', 'nvidiabug.c', 'ones.c', + 'timercheck.c', 'xf86Helper.c', ] diff --git a/hw/xfree86/compat/timercheck.c b/hw/xfree86/compat/timercheck.c new file mode 100644 index 000000000..a434e5685 --- /dev/null +++ b/hw/xfree86/compat/timercheck.c @@ -0,0 +1,23 @@ +#include + +#include + +#include "os/osdep.h" + +#include "xf86_compat.h" + +/* + * needed for NVidia proprietary driver 570.x and 575.x version + * force the server to see if any timer callbacks should be called + * + * this function had been obsolete and removed long ago, but NVidia folks + * still didn't do basic maintenance and fixed their driver + */ + +_X_EXPORT void TimerCheck(void); + +void TimerCheck(void) { + xf86NVidiaBugObsoleteFunc("TimerCheck()"); + + DoTimers(GetTimeInMillis()); +} diff --git a/os/WaitFor.c b/os/WaitFor.c index 973a3495d..32b9b5b03 100644 --- a/os/WaitFor.c +++ b/os/WaitFor.c @@ -105,7 +105,6 @@ struct _OsTimerRec { }; static void DoTimer(OsTimerPtr timer, CARD32 now); -static void DoTimers(CARD32 now); static void CheckAllTimers(void); static volatile struct xorg_list timers; @@ -276,8 +275,7 @@ DoTimer(OsTimerPtr timer, CARD32 now) TimerSet(timer, 0, newTime, timer->callback, timer->arg); } -static void -DoTimers(CARD32 now) +void DoTimers(CARD32 now) { OsTimerPtr timer; diff --git a/os/osdep.h b/os/osdep.h index ff41f2482..bf3c00f3b 100644 --- a/os/osdep.h +++ b/os/osdep.h @@ -225,4 +225,7 @@ Ones(unsigned long mask) #define LIMITCLIENTS 256 /* Must be a power of 2 and <= MAXCLIENTS */ +/* run timers that are expired at timestamp `now` */ +void DoTimers(CARD32 now); + #endif /* _OSDEP_H_ */