- NtUserWaitForInputIdle: Call EngGetTickCount, removing duplicated code
[reactos.git] / reactos / subsystems / win32 / win32k / stubs / stubs.c
index 70f930c..96f0736 100644 (file)
@@ -4,7 +4,6 @@
 
 #include <w32k.h>
 
-#define STUB(x) void x(void) { DbgPrint("WIN32K: Stub for %s\n", #x); }
 #define UNIMPLEMENTED DbgPrint("(%s:%i) WIN32K: %s UNIMPLEMENTED\n", __FILE__, __LINE__, __FUNCTION__ )
 
 
@@ -737,52 +736,6 @@ PATHOBJ_vGetBounds(
   UNIMPLEMENTED;
 }
 
-BOOL
-APIENTRY
-XFORMOBJ_bApplyXform(
-       IN XFORMOBJ  *pxo,
-       IN ULONG  iMode,
-       IN ULONG  cPoints,
-       IN PVOID  pvIn,
-       OUT PVOID  pvOut
-       )
-{
-  // www.osr.com/ddk/graphics/gdifncs_027b.htm
-  UNIMPLEMENTED;
-  return FALSE;
-}
-
-ULONG
-APIENTRY
-XFORMOBJ_iGetFloatObjXform(
-       IN XFORMOBJ  *pxo,
-       OUT FLOATOBJ_XFORM  *pxfo
-       )
-{
-  // www.osr.com/ddk/graphics/gdifncs_5ig7.htm
-  UNIMPLEMENTED;
-  return 0;
-}
-
-ULONG
-APIENTRY
-XFORMOBJ_iGetXform(
-       IN XFORMOBJ  *pxo,
-       OUT XFORML  *pxform
-       )
-{
-  // www.osr.com/ddk/graphics/gdifncs_0s2v.htm
-  UNIMPLEMENTED;
-  return 0;
-}
-
-// below here aren't in DDK!!!
-
-STUB(FLOATOBJ_AddFloatObj)
-STUB(FLOATOBJ_DivFloatObj)
-STUB(FLOATOBJ_MulFloatObj)
-STUB(FLOATOBJ_SubFloatObj)
-
 /*
  * @unimplemented
  */
@@ -797,21 +750,34 @@ EngDitherColor(
 }
 
 /*
- * @unimplemented
+ * @implemented
  */
 BOOL APIENTRY
 EngQuerySystemAttribute(
    IN ENG_SYSTEM_ATTRIBUTE CapNum,
    OUT PDWORD pCapability)
 {
+  SYSTEM_BASIC_INFORMATION sbi;
+  SYSTEM_PROCESSOR_INFORMATION spi;
+
    switch (CapNum)
    {
       case EngNumberOfProcessors:
-         *pCapability = 1;
+         NtQuerySystemInformation(
+                SystemBasicInformation,
+               &sbi,
+                sizeof(SYSTEM_BASIC_INFORMATION),
+                NULL);
+         *pCapability = sbi.NumberOfProcessors;
          return TRUE;
 
       case EngProcessorFeature:
-         *pCapability = 0;
+         NtQuerySystemInformation(
+                SystemProcessorInformation,
+               &spi,
+                sizeof(SYSTEM_PROCESSOR_INFORMATION),
+                NULL);
+         *pCapability = spi.ProcessorFeatureBits;
          return TRUE;
 
       default:
@@ -841,7 +807,8 @@ APIENTRY
 EngClearEvent(
    IN PEVENT Event)
 {
-   UNIMPLEMENTED;
+    /* Forward to the kernel */
+    KeClearEvent((PKEVENT)Event);
 }
 
 /*
@@ -948,6 +915,19 @@ EngQueryDeviceAttribute(
    return FALSE;
 }
 
+/*
+ * @unimplemented
+ */
+LARGE_INTEGER
+APIENTRY
+EngQueryFileTimeStamp(IN LPWSTR FileName)
+{
+   LARGE_INTEGER FileTime;
+   FileTime.QuadPart = 0;
+   UNIMPLEMENTED;
+   return FileTime;
+}
+
 /*
  * @unimplemented
  */
@@ -1614,6 +1594,7 @@ NtGdiRemoveMergeFont(
  * @unimplemented
  */
 BOOL
+APIENTRY
 NtGdiAddRemoteMMInstanceToDC(
     IN HDC hdc,
     IN DOWNLOADDESIGNVECTOR *pddv,
@@ -1654,37 +1635,6 @@ NtGdiCheckBitmapBits(
     return FALSE;
 }
 
- /*
- * @unimplemented
- */
-HANDLE
-APIENTRY
-NtGdiCreateServerMetaFile(
-    IN DWORD iType,
-    IN ULONG cjData,
-    IN LPBYTE pjData,
-    IN DWORD mm,
-    IN DWORD xExt,
-    IN DWORD yExt)
-{
-    UNIMPLEMENTED;
-    return NULL;
-}
-
-
- /*
- * @unimplemented
- */
-
-HDC
-APIENTRY
-NtGdiCreateMetafileDC(IN HDC hdc)
-{
-    UNIMPLEMENTED;
-    return NULL;
-}
-
-
  /*
  * @unimplemented
  */
@@ -1866,19 +1816,6 @@ NtGdiConsoleTextOut(
     return FALSE;
 }
 
- /*
- * @unimplemented
- */
-LONG
-APIENTRY
-NtGdiConvertMetafileRect(
-    IN HDC hdc,
-    IN OUT PRECTL prect)
-{
-    UNIMPLEMENTED;
-    return 0;
-}
-
  /*
  * @unimplemented
  */
@@ -2061,19 +1998,6 @@ NtGdiGetColorSpaceforBitmap(
  */
 BOOL
 APIENTRY
-NtGdiGetDeviceCapsAll (
-    IN HDC hdc,
-    OUT PDEVCAPS pDevCaps)
-{
-    UNIMPLEMENTED;
-    return FALSE;
-}
-
- /*
- * @unimplemented
- */
-BOOL
-APIENTRY
 NtGdiGetETM(
     IN HDC hdc,
     OUT EXTTEXTMETRIC *petm)
@@ -2200,19 +2124,6 @@ NtGdiGetMonitorID(
  * @unimplemented
  */
 BOOL
-NtGdiGetRealizationInfo(
-    IN HDC hdc,
-    OUT PREALIZATION_INFO pri,
-    IN HFONT hf)
-{
-    UNIMPLEMENTED;
-    return FALSE;
-}
-
- /*
- * @unimplemented
- */
-BOOL
 APIENTRY
 NtGdiDrawStream(
     IN HDC hdcDst,
@@ -2315,18 +2226,6 @@ NtGdiQueryFontAssocInfo(
     return 0;
 }
 
- /*
- * @unimplemented
- */
-DWORD
-NtGdiGetFontUnicodeRanges(
-    IN HDC hdc,
-    OUT OPTIONAL LPGLYPHSET pgs)
-{
-    UNIMPLEMENTED;
-    return 0;
-}
-
  /*
  * @unimplemented
  */
@@ -2455,24 +2354,6 @@ NtGdiPolyTextOutW(
     return FALSE;
 }
 
- /*
- * @unimplemented
- */
-ULONG
-APIENTRY
-NtGdiGetServerMetaFileBits(
-    IN HANDLE hmo,
-    IN ULONG cjData,
-    OUT OPTIONAL LPBYTE pjData,
-    OUT PDWORD piType,
-    OUT PDWORD pmm,
-    OUT PDWORD pxExt,
-    OUT PDWORD pyExt)
-{
-    UNIMPLEMENTED;
-    return 0;
-}
-
  /*
  * @unimplemented
  */
@@ -2798,19 +2679,6 @@ NtGdiMakeFontDir(
  */
 BOOL
 APIENTRY
-NtGdiMakeInfoDC(
-    IN HDC hdc,
-    IN BOOL bSet)
-{
-    UNIMPLEMENTED;
-    return FALSE;
-}
-
- /*
- * @unimplemented
- */
-BOOL
-APIENTRY
 NtGdiMonoBitmap(
     IN HBITMAP hbm)
 {
@@ -2818,21 +2686,6 @@ NtGdiMonoBitmap(
     return FALSE;
 }
 
- /*
- * @unimplemented
- */
-BOOL
-APIENTRY
-NtGdiMoveTo(
-    IN HDC hdc,
-    IN INT x,
-    IN INT y,
-    OUT OPTIONAL LPPOINT pptOut)
-{
-    UNIMPLEMENTED;
-    return FALSE;
-}
-
  /*
  * @unimplemented
  */
@@ -2914,19 +2767,18 @@ NtGdiUnloadPrinterDriver(
 }
 
  /*
- * @unimplemented
+ * @implemented
  */
 BOOL
 APIENTRY
 NtGdiUnmapMemFont(
     IN PVOID pvView)
 {
-    UNIMPLEMENTED;
-    return FALSE;
+    return TRUE;
 }
 
 BOOL
-STDCALL
+APIENTRY
 EngControlSprites(
   IN WNDOBJ  *pwo,
   IN FLONG  fl)
@@ -2934,3 +2786,148 @@ EngControlSprites(
   UNIMPLEMENTED;
   return FALSE;
 }
+
+PVOID
+APIENTRY
+EngFntCacheAlloc(IN ULONG FastCheckSum,
+                 IN ULONG ulSize)
+{
+    UNIMPLEMENTED;
+    return NULL;
+}
+VOID
+APIENTRY
+EngFntCacheFault(IN ULONG ulFastCheckSum,
+                 IN ULONG iFaultMode)
+{
+    UNIMPLEMENTED;
+}
+PVOID
+APIENTRY
+EngFntCacheLookUp(IN ULONG FastCheckSum,
+                  OUT PULONG pulSize)
+{
+    UNIMPLEMENTED;
+    return NULL;
+}
+
+VOID
+APIENTRY
+FLOATOBJ_AddFloatObj(PFLOATOBJ pFloatObj1,
+                     PFLOATOBJ pFloatObj2)
+{
+    UNIMPLEMENTED;
+}
+VOID
+APIENTRY
+FLOATOBJ_DivFloatObj(PFLOATOBJ pFloatObj1,
+                     PFLOATOBJ pFloatObj2)
+{
+    UNIMPLEMENTED;
+}
+VOID
+APIENTRY
+FLOATOBJ_MulFloatObj(PFLOATOBJ pFloatObj1,
+                     PFLOATOBJ pFloatObj2)
+{
+    UNIMPLEMENTED;
+}
+VOID
+APIENTRY
+FLOATOBJ_SubFloatObj(PFLOATOBJ pFloatObj1,
+                     PFLOATOBJ pFloatObj2)
+{
+    UNIMPLEMENTED;
+}
+PVOID
+APIENTRY
+EngAllocSectionMem(IN PVOID SectionObject,
+                   IN ULONG Flags,
+                   IN SIZE_T MemSize,
+                   IN ULONG Tag)
+{
+    UNIMPLEMENTED;
+    return NULL;
+}
+NTSTATUS
+APIENTRY
+EngFileIoControl(IN PFILE_OBJECT FileObject,
+                 IN ULONG IoControlCode,
+                 IN PVOID InputBuffer,
+                 IN SIZE_T InputBufferLength,
+                 OUT PVOID OutputBuffer,
+                 IN SIZE_T OutputBufferLength,
+                 OUT PULONG Information)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+VOID
+APIENTRY
+EngFileWrite(IN PFILE_OBJECT FileObject,
+             IN PVOID Buffer,
+             IN SIZE_T Length,
+             IN PSIZE_T BytesWritten)
+{
+    UNIMPLEMENTED;
+}
+BOOLEAN
+APIENTRY
+EngFreeSectionMem(IN PVOID SectionObject OPTIONAL,
+                  IN PVOID MappedBase)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+
+ULONGLONG
+APIENTRY
+EngGetTickCount(VOID)
+{
+    ULONG Multiplier;
+    LARGE_INTEGER TickCount;
+
+    /* Get the multiplier and current tick count */
+    KeQueryTickCount(&TickCount);
+    Multiplier = SharedUserData->TickCountMultiplier;
+
+    /* Convert to milliseconds and return */
+    return (Int64ShrlMod32(UInt32x32To64(Multiplier, TickCount.LowPart), 24) +
+            (Multiplier * (TickCount.HighPart << 8)));
+}
+BOOLEAN
+APIENTRY
+EngMapSection(IN PVOID Section,
+              IN BOOLEAN Map,
+              IN HANDLE Process,
+              IN PVOID* BaseAddress)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}
+BOOLEAN
+APIENTRY
+EngNineGrid(IN SURFOBJ* pDestSurfaceObj,
+            IN SURFOBJ* pSourceSurfaceObj,
+            IN CLIPOBJ* pClipObj,
+            IN XLATEOBJ* pXlateObj,
+            IN RECTL* prclSource,
+            IN RECTL* prclDest,
+            PVOID pvUnknown1,
+            PVOID pvUnknown2,
+            DWORD dwReserved)
+{
+    UNIMPLEMENTED;
+    return FALSE;
+}