mirror of
https://github.com/reactos/reactos.git
synced 2025-04-18 03:34:11 +00:00
- Repair GDI handle debugging functionality.
- Fix locking in NtGdiGetTextFace. svn path=/trunk/; revision=15834
This commit is contained in:
parent
7a4b2f8d8f
commit
7aea00d1d6
2 changed files with 20 additions and 1 deletions
|
@ -559,6 +559,9 @@ LockHandle:
|
|||
* The object is currently locked, so freeing is forbidden!
|
||||
*/
|
||||
DPRINT1("GdiHdr->Locks: %d\n", GdiHdr->Locks);
|
||||
#ifdef GDI_DEBUG
|
||||
DPRINT1("Locked from: %s:%d\n", GdiHdr->lockfile, GdiHdr->lockline);
|
||||
#endif
|
||||
ASSERT(FALSE);
|
||||
}
|
||||
}
|
||||
|
@ -781,6 +784,10 @@ GDIOBJ_LockObj (HGDIOBJ hObj, DWORD ObjectType)
|
|||
{
|
||||
GdiHdr->LockingThread = Thread;
|
||||
GdiHdr->Locks = 1;
|
||||
#ifdef GDI_DEBUG
|
||||
GdiHdr->lockfile = file;
|
||||
GdiHdr->lockline = line;
|
||||
#endif
|
||||
Object = HandleEntry->KernelData;
|
||||
}
|
||||
else
|
||||
|
@ -925,7 +932,15 @@ GDIOBJ_ShareLockObj (HGDIOBJ hObj, DWORD ObjectType)
|
|||
{
|
||||
PGDIOBJHDR GdiHdr = GDIBdyToHdr(HandleEntry->KernelData);
|
||||
|
||||
#ifdef GDI_DEBUG
|
||||
if (InterlockedIncrement(&GdiHdr->Locks) == 1)
|
||||
{
|
||||
GdiHdr->lockfile = file;
|
||||
GdiHdr->lockline = line;
|
||||
}
|
||||
#else
|
||||
InterlockedIncrement(&GdiHdr->Locks);
|
||||
#endif
|
||||
Object = HandleEntry->KernelData;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -2564,6 +2564,7 @@ INT STDCALL
|
|||
NtGdiGetTextFace(HDC hDC, INT Count, LPWSTR FaceName)
|
||||
{
|
||||
PDC Dc;
|
||||
HFONT hFont;
|
||||
PTEXTOBJ TextObj;
|
||||
NTSTATUS Status;
|
||||
|
||||
|
@ -2573,11 +2574,14 @@ NtGdiGetTextFace(HDC hDC, INT Count, LPWSTR FaceName)
|
|||
SetLastWin32Error(ERROR_INVALID_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
TextObj = TEXTOBJ_LockText(Dc->w.hFont);
|
||||
hFont = Dc->w.hFont;
|
||||
DC_UnlockDc(Dc);
|
||||
|
||||
TextObj = TEXTOBJ_LockText(Dc->w.hFont);
|
||||
ASSERT(TextObj != NULL);
|
||||
Count = min(Count, wcslen(TextObj->logfont.lfFaceName));
|
||||
Status = MmCopyToCaller(FaceName, TextObj->logfont.lfFaceName, Count * sizeof(WCHAR));
|
||||
TEXTOBJ_UnlockText(TextObj);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
SetLastNtError(Status);
|
||||
|
|
Loading…
Reference in a new issue