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 "colormapst.h"
|
||||
#include "xace.h"
|
||||
#include "inputstr.h"
|
||||
#ifdef PANORAMIX
|
||||
#include "panoramiX.h"
|
||||
#include "panoramiXsrv.h"
|
||||
|
@ -388,8 +389,10 @@ ScreenSaverFreeSuspend(pointer value, XID id)
|
|||
if (screenIsSaved != SCREEN_SAVER_ON)
|
||||
#endif
|
||||
{
|
||||
DeviceIntPtr dev;
|
||||
UpdateCurrentTimeIf();
|
||||
lastDeviceEventTime = currentTime;
|
||||
nt_list_for_each_entry(dev, inputInfo.devices, next)
|
||||
lastDeviceEventTime[dev->id] = currentTime;
|
||||
SetScreenSaverTimer();
|
||||
}
|
||||
}
|
||||
|
@ -672,7 +675,7 @@ ProcScreenSaverQueryInfo(ClientPtr client)
|
|||
pPriv = GetScreenPrivate(pDraw->pScreen);
|
||||
|
||||
UpdateCurrentTime();
|
||||
lastInput = GetTimeInMillis() - lastDeviceEventTime.milliseconds;
|
||||
lastInput = GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds;
|
||||
|
||||
rep.type = X_Reply;
|
||||
rep.length = 0;
|
||||
|
|
|
@ -2599,7 +2599,7 @@ typedef struct {
|
|||
static void
|
||||
IdleTimeQueryValue(pointer pCounter, CARD64 * pValue_return)
|
||||
{
|
||||
CARD32 idle = GetTimeInMillis() - lastDeviceEventTime.milliseconds;
|
||||
CARD32 idle = GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds;
|
||||
|
||||
XSyncIntsToValue(pValue_return, idle, 0);
|
||||
}
|
||||
|
|
|
@ -1598,7 +1598,7 @@ ProcessDeviceEvent(InternalEvent *ev, DeviceIntPtr device)
|
|||
GetSpritePosition(device, &rootX, &rootY);
|
||||
event->root_x = rootX;
|
||||
event->root_y = rootY;
|
||||
NoticeEventTime((InternalEvent *) event);
|
||||
NoticeEventTime((InternalEvent *) event, device);
|
||||
event->corestate = corestate;
|
||||
key = event->detail.key;
|
||||
break;
|
||||
|
|
13
dix/events.c
13
dix/events.c
|
@ -1055,19 +1055,20 @@ MonthChangedOrBadTime(InternalEvent *ev)
|
|||
}
|
||||
|
||||
static void
|
||||
NoticeTime(InternalEvent *ev)
|
||||
NoticeTime(InternalEvent *ev, DeviceIntPtr dev)
|
||||
{
|
||||
if (ev->any.time < currentTime.milliseconds)
|
||||
MonthChangedOrBadTime(ev);
|
||||
currentTime.milliseconds = ev->any.time;
|
||||
lastDeviceEventTime = currentTime;
|
||||
lastDeviceEventTime[XIAllDevices] = currentTime;
|
||||
lastDeviceEventTime[dev->id] = currentTime;
|
||||
}
|
||||
|
||||
void
|
||||
NoticeEventTime(InternalEvent *ev)
|
||||
NoticeEventTime(InternalEvent *ev, DeviceIntPtr dev)
|
||||
{
|
||||
if (!syncEvents.playingEvents)
|
||||
NoticeTime(ev);
|
||||
NoticeTime(ev, dev);
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -1091,7 +1092,7 @@ EnqueueEvent(InternalEvent *ev, DeviceIntPtr device)
|
|||
if (!xorg_list_is_empty(&syncEvents.pending))
|
||||
tail = xorg_list_last_entry(&syncEvents.pending, QdEventRec, next);
|
||||
|
||||
NoticeTime((InternalEvent *) event);
|
||||
NoticeTime((InternalEvent *)event, device);
|
||||
|
||||
/* Fix for key repeating bug. */
|
||||
if (device->key != NULL && device->key->xkbInfo != NULL &&
|
||||
|
@ -5163,6 +5164,7 @@ InitEvents(void)
|
|||
|
||||
for (i = 0; i < MAXDEVICES; i++) {
|
||||
memcpy(&event_filters[i], default_filter, sizeof(default_filter));
|
||||
lastDeviceEventTime[i] = currentTime;
|
||||
}
|
||||
|
||||
syncEvents.replayDev = (DeviceIntPtr) NULL;
|
||||
|
@ -5176,7 +5178,6 @@ InitEvents(void)
|
|||
syncEvents.time.milliseconds = 0; /* hardly matters */
|
||||
currentTime.months = 0;
|
||||
currentTime.milliseconds = GetTimeInMillis();
|
||||
lastDeviceEventTime = currentTime;
|
||||
for (i = 0; i < DNPMCOUNT; i++) {
|
||||
DontPropagateMasks[i] = 0;
|
||||
DontPropagateRefCnts[i] = 0;
|
||||
|
|
|
@ -122,7 +122,7 @@ Bool party_like_its_1989 = FALSE;
|
|||
Bool whiteRoot = FALSE;
|
||||
|
||||
TimeStamp currentTime;
|
||||
TimeStamp lastDeviceEventTime;
|
||||
TimeStamp lastDeviceEventTime[MAXDEVICES];
|
||||
|
||||
int defaultColorVisualClass = -1;
|
||||
int monitorResolution = 0;
|
||||
|
|
|
@ -3134,8 +3134,10 @@ dixSaveScreens(ClientPtr client, int on, int mode)
|
|||
screenIsSaved = what;
|
||||
if (mode == ScreenSaverReset) {
|
||||
if (on == SCREEN_SAVER_FORCER) {
|
||||
DeviceIntPtr dev;
|
||||
UpdateCurrentTimeIf();
|
||||
lastDeviceEventTime = currentTime;
|
||||
nt_list_for_each_entry(dev, inputInfo.devices, next)
|
||||
lastDeviceEventTime[dev->id] = currentTime;
|
||||
}
|
||||
SetScreenSaverTimer();
|
||||
}
|
||||
|
|
|
@ -340,7 +340,8 @@ KdEnableInput(void)
|
|||
|
||||
/* reset screen saver */
|
||||
ev.any.time = GetTimeInMillis();
|
||||
NoticeEventTime(&ev);
|
||||
NoticeEventTime(&ev, pi->dixdev);
|
||||
NoticeEventTime(&ev, ki->dixdev);
|
||||
|
||||
KdUnblockSigio();
|
||||
}
|
||||
|
|
|
@ -313,7 +313,8 @@ extern _X_EXPORT WindowPtr
|
|||
GetSpriteWindow(DeviceIntPtr pDev);
|
||||
|
||||
extern _X_EXPORT void
|
||||
NoticeEventTime(InternalEvent *ev);
|
||||
NoticeEventTime(InternalEvent *ev,
|
||||
DeviceIntPtr dev);
|
||||
|
||||
extern void
|
||||
EnqueueEvent(InternalEvent * /* ev */ ,
|
||||
|
|
|
@ -156,7 +156,7 @@ typedef struct _WorkQueue {
|
|||
} WorkQueueRec;
|
||||
|
||||
extern _X_EXPORT TimeStamp currentTime;
|
||||
extern _X_EXPORT TimeStamp lastDeviceEventTime;
|
||||
extern _X_EXPORT TimeStamp lastDeviceEventTime[MAXDEVICES];
|
||||
|
||||
extern _X_EXPORT int
|
||||
CompareTimeStamps(TimeStamp /*a */ ,
|
||||
|
|
|
@ -547,7 +547,7 @@ NextDPMSTimeout(INT32 timeout)
|
|||
static CARD32
|
||||
ScreenSaverTimeoutExpire(OsTimerPtr timer, CARD32 now, pointer arg)
|
||||
{
|
||||
INT32 timeout = now - lastDeviceEventTime.milliseconds;
|
||||
INT32 timeout = now - lastDeviceEventTime[XIAllDevices].milliseconds;
|
||||
CARD32 nextTimeout = 0;
|
||||
|
||||
#ifdef DPMSExtension
|
||||
|
|
|
@ -1391,7 +1391,7 @@ recv_alive_msg(unsigned length)
|
|||
if (SessionRunning && AliveSessionID == SessionID) {
|
||||
/* backoff dormancy period */
|
||||
state = XDM_RUN_SESSION;
|
||||
if ((GetTimeInMillis() - lastDeviceEventTime.milliseconds) >
|
||||
if ((GetTimeInMillis() - lastDeviceEventTime[XIAllDevices].milliseconds) >
|
||||
keepaliveDormancy * 1000) {
|
||||
keepaliveDormancy <<= 1;
|
||||
if (keepaliveDormancy > XDM_MAX_DORMANCY)
|
||||
|
|
Loading…
Reference in New Issue