@ stdcall XFORMOBJ_iGetXform(ptr ptr) NtGdiXFORMOBJ_iGetXform
@ stdcall XLATEOBJ_cGetPalette(ptr long long ptr) NtGdiXLATEOBJ_cGetPalette
@ stdcall XLATEOBJ_hGetColorTransform(ptr) NtGdiXLATEOBJ_hGetColorTransform
-@ stdcall XLATEOBJ_iXlate(ptr long)
+@ stdcall XLATEOBJ_iXlate(ptr long) NtGdiXLATEOBJ_iXlate
@ stdcall XLATEOBJ_piVector(ptr)
@ stdcall bInitSystemAndFontsDirectoriesW(wstr wstr)
@ stdcall bMakePathNameW(wstr wstr wstr long)
}
/*
- * @unimplemented
+ * @implemented
*/
BOOL
WINAPI
GdiCleanCacheDC(HDC hdc)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ if (GDI_HANDLE_GET_TYPE(hdc) == GDILoObjType_LO_DC_TYPE)
+ return TRUE;
+ SetLastError(ERROR_INVALID_HANDLE);
+ return FALSE;
}
/*
*/
BOOL
WINAPI
-GdiDrawStream(HDC dc, ULONG l, VOID *v)
+GdiDrawStream(HDC dc, ULONG l, VOID *v) // See Bug 4784
{
UNIMPLEMENTED;
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
}
/*
- * @unimplemented
+ * @implemented
*/
BOOL
WINAPI
GdiValidateHandle(HGDIOBJ hobj)
{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
+ PGDI_TABLE_ENTRY Entry = GdiHandleTable + GDI_HANDLE_GET_INDEX(hobj);
+ if ( (Entry->Type & GDI_ENTRY_BASETYPE_MASK) != 0 &&
+ ( (Entry->Type << GDI_ENTRY_UPPER_SHIFT) & GDI_HANDLE_TYPE_MASK ) ==
+ GDI_HANDLE_GET_TYPE(hobj) )
+ {
+ HANDLE pid = (HANDLE)((ULONG_PTR)Entry->ProcessId & ~0x1);
+ if(pid == NULL || pid == CurrentProcessId)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+
}
/*
return 0;
}
-/*
- * @unimplemented
- */
-ULONG WINAPI
-XLATEOBJ_iXlate(XLATEOBJ *XlateObj,
- ULONG Color)
-{
- UNIMPLEMENTED;
- SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
- return 0;
-}
-
/*
* @unimplemented
*/
return 0;
}
-
-
/*
* @unimplemented
*/
return NtGdiGradientFill(hdc, pVertex, nVertex, pMesh, nMesh, ulMode);
}
-
/*
* @implemented
*/