mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 16:36:11 +00:00
Commit my autostart code for screen saver for now it is hardcode to 15 sec timeout
svn path=/trunk/; revision=22896
This commit is contained in:
parent
9135556ab7
commit
49ac5c3e0e
|
@ -3301,8 +3301,6 @@ CSR_API(CsrGetProcessList)
|
||||||
return Request->Status = STATUS_SUCCESS;
|
return Request->Status = STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL ScreenSaverRunning = FALSE;
|
|
||||||
|
|
||||||
CSR_API(CsrStartScreenSaver)
|
CSR_API(CsrStartScreenSaver)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -3337,8 +3335,6 @@ CSR_API(CsrStartScreenSaver)
|
||||||
add the code here as w3seek recomandete
|
add the code here as w3seek recomandete
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (ScreenSaverRunning == FALSE)
|
|
||||||
{
|
|
||||||
|
|
||||||
RegOpenKeyExW(HKEY_CURRENT_USER, L"Control Panel\\Desktop", 0, KEY_ALL_ACCESS, &hKey);
|
RegOpenKeyExW(HKEY_CURRENT_USER, L"Control Panel\\Desktop", 0, KEY_ALL_ACCESS, &hKey);
|
||||||
result = RegQueryValueExW(hKey, L"SCRNSAVE.EXE", 0, &varType, (LPBYTE)szBuffer, &bufferSize);
|
result = RegQueryValueExW(hKey, L"SCRNSAVE.EXE", 0, &varType, (LPBYTE)szBuffer, &bufferSize);
|
||||||
|
@ -3349,13 +3345,10 @@ CSR_API(CsrStartScreenSaver)
|
||||||
ZeroMemory( &si, sizeof(si) );
|
ZeroMemory( &si, sizeof(si) );
|
||||||
si.cb = sizeof(si);
|
si.cb = sizeof(si);
|
||||||
ZeroMemory( &pi, sizeof(pi) );
|
ZeroMemory( &pi, sizeof(pi) );
|
||||||
ScreenSaverRunning = TRUE;
|
|
||||||
if(CreateProcessW( NULL, szCmdline, NULL, NULL, FALSE, 0, NULL,NULL,&si, &pi ))
|
if(CreateProcessW( NULL, szCmdline, NULL, NULL, FALSE, 0, NULL,NULL,&si, &pi ))
|
||||||
{
|
{
|
||||||
|
|
||||||
CloseHandle( pi.hProcess );
|
CloseHandle( pi.hProcess );
|
||||||
CloseHandle( pi.hThread );
|
CloseHandle( pi.hThread );
|
||||||
ScreenSaverRunning = FALSE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -3364,7 +3357,6 @@ CSR_API(CsrStartScreenSaver)
|
||||||
}
|
}
|
||||||
RegCloseKey(hKey);
|
RegCloseKey(hKey);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return Request->Status = STATUS_SUCCESS;
|
return Request->Status = STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,9 @@ extern BYTE gQueueKeyStateTable[];
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
|
static HANDLE ScreenSaverThreadHandle;
|
||||||
|
static CLIENT_ID ScreenSaverThreadId;
|
||||||
|
|
||||||
static HANDLE MouseDeviceHandle;
|
static HANDLE MouseDeviceHandle;
|
||||||
static HANDLE MouseThreadHandle;
|
static HANDLE MouseThreadHandle;
|
||||||
static CLIENT_ID MouseThreadId;
|
static CLIENT_ID MouseThreadId;
|
||||||
|
@ -47,6 +50,7 @@ static CLIENT_ID KeyboardThreadId;
|
||||||
static HANDLE KeyboardDeviceHandle;
|
static HANDLE KeyboardDeviceHandle;
|
||||||
static KEVENT InputThreadsStart;
|
static KEVENT InputThreadsStart;
|
||||||
static BOOLEAN InputThreadsRunning = FALSE;
|
static BOOLEAN InputThreadsRunning = FALSE;
|
||||||
|
static BOOLEAN ScreenSaverRunning = FALSE;
|
||||||
PUSER_MESSAGE_QUEUE pmPrimitiveMessageQueue = 0;
|
PUSER_MESSAGE_QUEUE pmPrimitiveMessageQueue = 0;
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
@ -148,6 +152,65 @@ ProcessMouseInputData(PMOUSE_INPUT_DATA Data, ULONG InputCount)
|
||||||
SendMouseEvent(mi);
|
SendMouseEvent(mi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID STDCALL
|
||||||
|
ScreenSaverThreadMain(PVOID StartContext)
|
||||||
|
{
|
||||||
|
KEVENT Event;
|
||||||
|
LARGE_INTEGER Timeout;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
KeSetPriorityThread(&PsGetCurrentThread()->Tcb,
|
||||||
|
LOW_REALTIME_PRIORITY + 3);
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
DPRINT("Screen Saver auto start Thread Waiting for start event\n");
|
||||||
|
Status = KeWaitForSingleObject(&InputThreadsStart,
|
||||||
|
0,
|
||||||
|
KernelMode,
|
||||||
|
TRUE,
|
||||||
|
NULL);
|
||||||
|
DPRINT("Screen Saver auto start Thread Starting...\n");
|
||||||
|
while(InputThreadsRunning)
|
||||||
|
{
|
||||||
|
NTSTATUS OldStatus;
|
||||||
|
/* FIXME
|
||||||
|
1. read timeout value from reg
|
||||||
|
2. read timeout value from spi msg
|
||||||
|
*/
|
||||||
|
OldStatus = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
Timeout.QuadPart = -150000000LL; /* 15 second timeout */
|
||||||
|
KeInitializeEvent(&Event, NotificationEvent, FALSE);
|
||||||
|
Status = KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, &Timeout);
|
||||||
|
|
||||||
|
if(Status == STATUS_ALERTED && !InputThreadsRunning)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT1("Win32K: Failed to read from Screen Saver auto thread.\n");
|
||||||
|
return; //(Status);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ((Status == STATUS_TIMEOUT) && (ScreenSaverRunning == FALSE))
|
||||||
|
{
|
||||||
|
DPRINT1("Keyboard and Mouse TimeOut Starting Screen Saver...\n");
|
||||||
|
CSR_API_MESSAGE Request;
|
||||||
|
ScreenSaverRunning = TRUE;
|
||||||
|
CsrInit();
|
||||||
|
Request.Type = MAKE_CSR_API(START_SCREEN_SAVER, CSR_GUI);
|
||||||
|
Request.Data.StartScreenSaver.Start = TRUE;
|
||||||
|
co_CsrNotifyScreenSaver(&Request );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DPRINT("Screen Saver auto start Thread Stopped...\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
VOID STDCALL
|
VOID STDCALL
|
||||||
MouseThreadMain(PVOID StartContext)
|
MouseThreadMain(PVOID StartContext)
|
||||||
{
|
{
|
||||||
|
@ -223,6 +286,8 @@ MouseThreadMain(PVOID StartContext)
|
||||||
}
|
}
|
||||||
DPRINT("MouseEvent\n");
|
DPRINT("MouseEvent\n");
|
||||||
|
|
||||||
|
ScreenSaverRunning = FALSE;
|
||||||
|
|
||||||
UserEnterExclusive();
|
UserEnterExclusive();
|
||||||
|
|
||||||
ProcessMouseInputData(&MouseInput, Iosb.Information / sizeof(MOUSE_INPUT_DATA));
|
ProcessMouseInputData(&MouseInput, Iosb.Information / sizeof(MOUSE_INPUT_DATA));
|
||||||
|
@ -531,6 +596,8 @@ KeyboardThreadMain(PVOID StartContext)
|
||||||
return; //(Status);
|
return; //(Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ScreenSaverRunning = FALSE;
|
||||||
|
|
||||||
/* Update modifier state */
|
/* Update modifier state */
|
||||||
fsModifiers = IntKeyboardGetModifiers(&KeyInput);
|
fsModifiers = IntKeyboardGetModifiers(&KeyInput);
|
||||||
|
|
||||||
|
@ -809,6 +876,19 @@ InitInputImpl(VOID)
|
||||||
DPRINT1("Win32K: Failed to create mouse thread.\n");
|
DPRINT1("Win32K: Failed to create mouse thread.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Status = PsCreateSystemThread(&ScreenSaverThreadHandle,
|
||||||
|
THREAD_ALL_ACCESS,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
&ScreenSaverThreadId,
|
||||||
|
ScreenSaverThreadMain,
|
||||||
|
NULL);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT1("Win32K: Failed to create ScreenSaver auto start thread.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue