mirror of
https://github.com/reactos/reactos.git
synced 2025-06-05 17:30:32 +00:00
[Win32k]
- Implement FlashWindowEx without the state verification test via global atom and window properties list. Pass all but two in win:test_FlashWindowEx. - Add missing atom's and global thread information pointer, based on patch from bug 5655. svn path=/trunk/; revision=53385
This commit is contained in:
parent
b47bf7e4d5
commit
40fee2398a
3 changed files with 41 additions and 3 deletions
|
@ -10,6 +10,7 @@
|
||||||
#define UserLeaveCo UserLeave
|
#define UserLeaveCo UserLeave
|
||||||
|
|
||||||
extern PSERVERINFO gpsi;
|
extern PSERVERINFO gpsi;
|
||||||
|
extern PTHREADINFO gptiCurrent;
|
||||||
|
|
||||||
INIT_FUNCTION NTSTATUS NTAPI InitUserImpl(VOID);
|
INIT_FUNCTION NTSTATUS NTAPI InitUserImpl(VOID);
|
||||||
VOID FASTCALL CleanupUserImpl(VOID);
|
VOID FASTCALL CleanupUserImpl(VOID);
|
||||||
|
|
|
@ -1157,14 +1157,45 @@ NtUserFillWindow(HWND hWndPaint,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL APIENTRY
|
BOOL APIENTRY
|
||||||
NtUserFlashWindowEx(IN PFLASHWINFO pfwi)
|
NtUserFlashWindowEx(IN PFLASHWINFO pfwi)
|
||||||
{
|
{
|
||||||
STUB
|
PWND pWnd;
|
||||||
|
FLASHWINFO finfo = {0};
|
||||||
|
BOOL Ret = TRUE;
|
||||||
|
|
||||||
return 1;
|
UserEnterExclusive();
|
||||||
|
|
||||||
|
_SEH2_TRY
|
||||||
|
{
|
||||||
|
ProbeForRead(pfwi, sizeof(FLASHWINFO), sizeof(ULONG));
|
||||||
|
RtlCopyMemory(&finfo, pfwi, sizeof(FLASHWINFO));
|
||||||
|
}
|
||||||
|
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
SetLastNtError(_SEH2_GetExceptionCode());
|
||||||
|
Ret = FALSE;
|
||||||
|
}
|
||||||
|
_SEH2_END
|
||||||
|
|
||||||
|
if (!Ret) goto Exit;
|
||||||
|
|
||||||
|
if (!(pWnd = (PWND)UserGetObject(gHandleTable, finfo.hwnd, otWindow)) ||
|
||||||
|
finfo.cbSize != sizeof(FLASHWINFO) ||
|
||||||
|
finfo.dwFlags & ~(FLASHW_ALL|FLASHW_TIMER|FLASHW_TIMERNOFG) )
|
||||||
|
{
|
||||||
|
EngSetLastError(ERROR_INVALID_PARAMETER);
|
||||||
|
Ret = FALSE;
|
||||||
|
goto Exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Ret = IntFlashWindowEx(pWnd, &finfo);
|
||||||
|
|
||||||
|
Exit:
|
||||||
|
UserLeave();
|
||||||
|
return Ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -17,9 +17,12 @@ BOOL InitSysParams();
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
|
PTHREADINFO gptiCurrent = NULL;
|
||||||
ERESOURCE UserLock;
|
ERESOURCE UserLock;
|
||||||
ATOM AtomMessage; // Window Message atom.
|
ATOM AtomMessage; // Window Message atom.
|
||||||
ATOM AtomWndObj; // Window Object atom.
|
ATOM AtomWndObj; // Window Object atom.
|
||||||
|
ATOM AtomLayer; // Window Layer atom.
|
||||||
|
ATOM AtomFlashWndState; // Window Flash State atom.
|
||||||
BOOL gbInitialized;
|
BOOL gbInitialized;
|
||||||
HINSTANCE hModClient = NULL;
|
HINSTANCE hModClient = NULL;
|
||||||
BOOL ClientPfnInit = FALSE;
|
BOOL ClientPfnInit = FALSE;
|
||||||
|
@ -46,6 +49,8 @@ InitUserAtoms(VOID)
|
||||||
gpsi->atomContextHelpIdProp = IntAddGlobalAtom(L"SysCH", TRUE);
|
gpsi->atomContextHelpIdProp = IntAddGlobalAtom(L"SysCH", TRUE);
|
||||||
|
|
||||||
AtomWndObj = IntAddGlobalAtom(L"SysWNDO", TRUE);
|
AtomWndObj = IntAddGlobalAtom(L"SysWNDO", TRUE);
|
||||||
|
AtomLayer = IntAddGlobalAtom(L"SysLayer", TRUE);
|
||||||
|
AtomFlashWndState = IntAddGlobalAtom(L"FlashWState", TRUE);
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -222,6 +227,7 @@ VOID FASTCALL UserEnterExclusive(VOID)
|
||||||
ASSERT_NOGDILOCKS();
|
ASSERT_NOGDILOCKS();
|
||||||
KeEnterCriticalRegion();
|
KeEnterCriticalRegion();
|
||||||
ExAcquireResourceExclusiveLite(&UserLock, TRUE);
|
ExAcquireResourceExclusiveLite(&UserLock, TRUE);
|
||||||
|
gptiCurrent = PsGetCurrentThreadWin32Thread();
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID FASTCALL UserLeave(VOID)
|
VOID FASTCALL UserLeave(VOID)
|
||||||
|
|
Loading…
Reference in a new issue