Change lastDeviceIdleTime to be per-device
Preparation work for per-device idle counters. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> Reviewed-by: Jamey Sharp <jamey@minilop.net> Reviewed-by: James Jones <jajones@nvidia.com>
This commit is contained in:
parent
20cf0ef825
commit
6aef209ebc
|
@ -46,6 +46,7 @@ in this Software without prior written authorization from the X Consortium.
|
||||||
#include "cursorstr.h"
|
#include "cursorstr.h"
|
||||||
#include "colormapst.h"
|
#include "colormapst.h"
|
||||||
#include "xace.h"
|
#include "xace.h"
|
||||||
|
#include "inputstr.h"
|
||||||
#ifdef PANORAMIX
|
#ifdef PANORAMIX
|
||||||
#include "panoramiX.h"
|
#include "panoramiX.h"
|
||||||
#include "panoramiXsrv.h"
|
#include "panoramiXsrv.h"
|
||||||
|
@ -388,8 +389,10 @@ ScreenSaverFreeSuspend(pointer value, XID id)
|
||||||
if (screenIsSaved != SCREEN_SAVER_ON)
|
if (screenIsSaved != SCREEN_SAVER_ON)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
DeviceIntPtr dev;
|
||||||
UpdateCurrentTimeIf();
|
UpdateCurrentTimeIf();
|
||||||
lastDeviceEventTime = currentTime;
|
nt_list_for_each_entry(dev, inputInfo.devices, next)
|
||||||
|
lastDeviceEventTime[dev->id] = currentTime;
|
||||||
SetScreenSaverTimer();
|
SetScreenSaverTimer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -672,7 +675,7 @@ ProcScreenSaverQueryInfo(ClientPtr client)
|
||||||
pPriv = GetScreenPrivate(pDraw->pScreen);
|
pPriv = GetScreenPrivate(pDraw->pScreen);
|
||||||
|
|
||||||
UpdateCurrentTime();
|
UpdateCurrentTime();
|
||||||
lastInput = GetTimeInMillis() - lastDeviceEventTime.milliseconds;
|
lastInput = GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds;
|
||||||
|
|
||||||
rep.type = X_Reply;
|
rep.type = X_Reply;
|
||||||
rep.length = 0;
|
rep.length = 0;
|
||||||
|
|
|
@ -2599,7 +2599,7 @@ typedef struct {
|
||||||
static void
|
static void
|
||||||
IdleTimeQueryValue(pointer pCounter, CARD64 * pValue_return)
|
IdleTimeQueryValue(pointer pCounter, CARD64 * pValue_return)
|
||||||
{
|
{
|
||||||
CARD32 idle = GetTimeInMillis() - lastDeviceEventTime.milliseconds;
|
CARD32 idle = GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds;
|
||||||
|
|
||||||
XSyncIntsToValue(pValue_return, idle, 0);
|
XSyncIntsToValue(pValue_return, idle, 0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1598,7 +1598,7 @@ ProcessDeviceEvent(InternalEvent *ev, DeviceIntPtr device)
|
||||||
GetSpritePosition(device, &rootX, &rootY);
|
GetSpritePosition(device, &rootX, &rootY);
|
||||||
event->root_x = rootX;
|
event->root_x = rootX;
|
||||||
event->root_y = rootY;
|
event->root_y = rootY;
|
||||||
NoticeEventTime((InternalEvent *) event);
|
NoticeEventTime((InternalEvent *) event, device);
|
||||||
event->corestate = corestate;
|
event->corestate = corestate;
|
||||||
key = event->detail.key;
|
key = event->detail.key;
|
||||||
break;
|
break;
|
||||||
|
|
13
dix/events.c
13
dix/events.c
|
@ -1055,19 +1055,20 @@ MonthChangedOrBadTime(InternalEvent *ev)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
NoticeTime(InternalEvent *ev)
|
NoticeTime(InternalEvent *ev, DeviceIntPtr dev)
|
||||||
{
|
{
|
||||||
if (ev->any.time < currentTime.milliseconds)
|
if (ev->any.time < currentTime.milliseconds)
|
||||||
MonthChangedOrBadTime(ev);
|
MonthChangedOrBadTime(ev);
|
||||||
currentTime.milliseconds = ev->any.time;
|
currentTime.milliseconds = ev->any.time;
|
||||||
lastDeviceEventTime = currentTime;
|
lastDeviceEventTime[XIAllDevices] = currentTime;
|
||||||
|
lastDeviceEventTime[dev->id] = currentTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
NoticeEventTime(InternalEvent *ev)
|
NoticeEventTime(InternalEvent *ev, DeviceIntPtr dev)
|
||||||
{
|
{
|
||||||
if (!syncEvents.playingEvents)
|
if (!syncEvents.playingEvents)
|
||||||
NoticeTime(ev);
|
NoticeTime(ev, dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
@ -1091,7 +1092,7 @@ EnqueueEvent(InternalEvent *ev, DeviceIntPtr device)
|
||||||
if (!xorg_list_is_empty(&syncEvents.pending))
|
if (!xorg_list_is_empty(&syncEvents.pending))
|
||||||
tail = xorg_list_last_entry(&syncEvents.pending, QdEventRec, next);
|
tail = xorg_list_last_entry(&syncEvents.pending, QdEventRec, next);
|
||||||
|
|
||||||
NoticeTime((InternalEvent *) event);
|
NoticeTime((InternalEvent *)event, device);
|
||||||
|
|
||||||
/* Fix for key repeating bug. */
|
/* Fix for key repeating bug. */
|
||||||
if (device->key != NULL && device->key->xkbInfo != NULL &&
|
if (device->key != NULL && device->key->xkbInfo != NULL &&
|
||||||
|
@ -5163,6 +5164,7 @@ InitEvents(void)
|
||||||
|
|
||||||
for (i = 0; i < MAXDEVICES; i++) {
|
for (i = 0; i < MAXDEVICES; i++) {
|
||||||
memcpy(&event_filters[i], default_filter, sizeof(default_filter));
|
memcpy(&event_filters[i], default_filter, sizeof(default_filter));
|
||||||
|
lastDeviceEventTime[i] = currentTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
syncEvents.replayDev = (DeviceIntPtr) NULL;
|
syncEvents.replayDev = (DeviceIntPtr) NULL;
|
||||||
|
@ -5176,7 +5178,6 @@ InitEvents(void)
|
||||||
syncEvents.time.milliseconds = 0; /* hardly matters */
|
syncEvents.time.milliseconds = 0; /* hardly matters */
|
||||||
currentTime.months = 0;
|
currentTime.months = 0;
|
||||||
currentTime.milliseconds = GetTimeInMillis();
|
currentTime.milliseconds = GetTimeInMillis();
|
||||||
lastDeviceEventTime = currentTime;
|
|
||||||
for (i = 0; i < DNPMCOUNT; i++) {
|
for (i = 0; i < DNPMCOUNT; i++) {
|
||||||
DontPropagateMasks[i] = 0;
|
DontPropagateMasks[i] = 0;
|
||||||
DontPropagateRefCnts[i] = 0;
|
DontPropagateRefCnts[i] = 0;
|
||||||
|
|
|
@ -122,7 +122,7 @@ Bool party_like_its_1989 = FALSE;
|
||||||
Bool whiteRoot = FALSE;
|
Bool whiteRoot = FALSE;
|
||||||
|
|
||||||
TimeStamp currentTime;
|
TimeStamp currentTime;
|
||||||
TimeStamp lastDeviceEventTime;
|
TimeStamp lastDeviceEventTime[MAXDEVICES];
|
||||||
|
|
||||||
int defaultColorVisualClass = -1;
|
int defaultColorVisualClass = -1;
|
||||||
int monitorResolution = 0;
|
int monitorResolution = 0;
|
||||||
|
|
|
@ -3134,8 +3134,10 @@ dixSaveScreens(ClientPtr client, int on, int mode)
|
||||||
screenIsSaved = what;
|
screenIsSaved = what;
|
||||||
if (mode == ScreenSaverReset) {
|
if (mode == ScreenSaverReset) {
|
||||||
if (on == SCREEN_SAVER_FORCER) {
|
if (on == SCREEN_SAVER_FORCER) {
|
||||||
|
DeviceIntPtr dev;
|
||||||
UpdateCurrentTimeIf();
|
UpdateCurrentTimeIf();
|
||||||
lastDeviceEventTime = currentTime;
|
nt_list_for_each_entry(dev, inputInfo.devices, next)
|
||||||
|
lastDeviceEventTime[dev->id] = currentTime;
|
||||||
}
|
}
|
||||||
SetScreenSaverTimer();
|
SetScreenSaverTimer();
|
||||||
}
|
}
|
||||||
|
|
|
@ -340,7 +340,8 @@ KdEnableInput(void)
|
||||||
|
|
||||||
/* reset screen saver */
|
/* reset screen saver */
|
||||||
ev.any.time = GetTimeInMillis();
|
ev.any.time = GetTimeInMillis();
|
||||||
NoticeEventTime(&ev);
|
NoticeEventTime(&ev, pi->dixdev);
|
||||||
|
NoticeEventTime(&ev, ki->dixdev);
|
||||||
|
|
||||||
KdUnblockSigio();
|
KdUnblockSigio();
|
||||||
}
|
}
|
||||||
|
|
|
@ -313,7 +313,8 @@ extern _X_EXPORT WindowPtr
|
||||||
GetSpriteWindow(DeviceIntPtr pDev);
|
GetSpriteWindow(DeviceIntPtr pDev);
|
||||||
|
|
||||||
extern _X_EXPORT void
|
extern _X_EXPORT void
|
||||||
NoticeEventTime(InternalEvent *ev);
|
NoticeEventTime(InternalEvent *ev,
|
||||||
|
DeviceIntPtr dev);
|
||||||
|
|
||||||
extern void
|
extern void
|
||||||
EnqueueEvent(InternalEvent * /* ev */ ,
|
EnqueueEvent(InternalEvent * /* ev */ ,
|
||||||
|
|
|
@ -156,7 +156,7 @@ typedef struct _WorkQueue {
|
||||||
} WorkQueueRec;
|
} WorkQueueRec;
|
||||||
|
|
||||||
extern _X_EXPORT TimeStamp currentTime;
|
extern _X_EXPORT TimeStamp currentTime;
|
||||||
extern _X_EXPORT TimeStamp lastDeviceEventTime;
|
extern _X_EXPORT TimeStamp lastDeviceEventTime[MAXDEVICES];
|
||||||
|
|
||||||
extern _X_EXPORT int
|
extern _X_EXPORT int
|
||||||
CompareTimeStamps(TimeStamp /*a */ ,
|
CompareTimeStamps(TimeStamp /*a */ ,
|
||||||
|
|
|
@ -547,7 +547,7 @@ NextDPMSTimeout(INT32 timeout)
|
||||||
static CARD32
|
static CARD32
|
||||||
ScreenSaverTimeoutExpire(OsTimerPtr timer, CARD32 now, pointer arg)
|
ScreenSaverTimeoutExpire(OsTimerPtr timer, CARD32 now, pointer arg)
|
||||||
{
|
{
|
||||||
INT32 timeout = now - lastDeviceEventTime.milliseconds;
|
INT32 timeout = now - lastDeviceEventTime[XIAllDevices].milliseconds;
|
||||||
CARD32 nextTimeout = 0;
|
CARD32 nextTimeout = 0;
|
||||||
|
|
||||||
#ifdef DPMSExtension
|
#ifdef DPMSExtension
|
||||||
|
|
|
@ -1391,7 +1391,7 @@ recv_alive_msg(unsigned length)
|
||||||
if (SessionRunning && AliveSessionID == SessionID) {
|
if (SessionRunning && AliveSessionID == SessionID) {
|
||||||
/* backoff dormancy period */
|
/* backoff dormancy period */
|
||||||
state = XDM_RUN_SESSION;
|
state = XDM_RUN_SESSION;
|
||||||
if ((GetTimeInMillis() - lastDeviceEventTime.milliseconds) >
|
if ((GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds) >
|
||||||
keepaliveDormancy * 1000) {
|
keepaliveDormancy * 1000) {
|
||||||
keepaliveDormancy <<= 1;
|
keepaliveDormancy <<= 1;
|
||||||
if (keepaliveDormancy > XDM_MAX_DORMANCY)
|
if (keepaliveDormancy > XDM_MAX_DORMANCY)
|
||||||
|
|
Loading…
Reference in New Issue