2 * PROJECT: ReactOS Win32 Subsystem
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: subsystems/win32/win32k/ntddraw/dxeng.c
5 * PURPOSE: Implementation of DxEng functions
6 * PROGRAMMERS: Magnus Olsen (magnus@greatlord.com)
12 HSEMAPHORE ghsemShareDevLock
= NULL
;
14 ULONG gcEngFuncs
= DXENG_INDEX_DxEngLoadImage
+ 1;
18 {DXENG_INDEX_DxEngNUIsTermSrv
, (PFN
)DxEngNUIsTermSrv
},
19 {DXENG_INDEX_DxEngScreenAccessCheck
, (PFN
)DxEngScreenAccessCheck
},
20 {DXENG_INDEX_DxEngRedrawDesktop
, (PFN
)DxEngRedrawDesktop
},
21 {DXENG_INDEX_DxEngDispUniq
, (PFN
)DxEngDispUniq
},
22 {DXENG_INDEX_DxEngIncDispUniq
, (PFN
)DxEngIncDispUniq
},
23 {DXENG_INDEX_DxEngVisRgnUniq
, (PFN
)DxEngVisRgnUniq
},
24 {DXENG_INDEX_DxEngLockShareSem
, (PFN
)DxEngLockShareSem
},
25 {DXENG_INDEX_DxEngUnlockShareSem
, (PFN
)DxEngUnlockShareSem
},
26 {DXENG_INDEX_DxEngEnumerateHdev
, (PFN
)DxEngEnumerateHdev
},
27 {DXENG_INDEX_DxEngLockHdev
, (PFN
)DxEngLockHdev
},
28 {DXENG_INDEX_DxEngUnlockHdev
, (PFN
)DxEngUnlockHdev
},
29 {DXENG_INDEX_DxEngIsHdevLockedByCurrentThread
, (PFN
)DxEngIsHdevLockedByCurrentThread
},
30 {DXENG_INDEX_DxEngReferenceHdev
, (PFN
)DxEngReferenceHdev
},
31 {DXENG_INDEX_DxEngUnreferenceHdev
, (PFN
)DxEngUnreferenceHdev
},
32 {DXENG_INDEX_DxEngGetDeviceGammaRamp
, (PFN
)DxEngGetDeviceGammaRamp
},
33 {DXENG_INDEX_DxEngSetDeviceGammaRamp
, (PFN
)DxEngSetDeviceGammaRamp
},
34 {DXENG_INDEX_DxEngSpTearDownSprites
, (PFN
)DxEngSpTearDownSprites
},
35 {DXENG_INDEX_DxEngSpUnTearDownSprites
, (PFN
)DxEngSpUnTearDownSprites
},
36 {DXENG_INDEX_DxEngSpSpritesVisible
, (PFN
)DxEngSpSpritesVisible
},
37 {DXENG_INDEX_DxEngGetHdevData
, (PFN
)DxEngGetHdevData
},
38 {DXENG_INDEX_DxEngSetHdevData
, (PFN
)DxEngSetHdevData
},
39 {DXENG_INDEX_DxEngCreateMemoryDC
, (PFN
)DxEngCreateMemoryDC
},
40 {DXENG_INDEX_DxEngGetDesktopDC
, (PFN
)DxEngGetDesktopDC
},
41 {DXENG_INDEX_DxEngDeleteDC
, (PFN
)DxEngDeleteDC
},
42 {DXENG_INDEX_DxEngCleanDC
, (PFN
)DxEngCleanDC
},
43 {DXENG_INDEX_DxEngSetDCOwner
, (PFN
)DxEngSetDCOwner
},
44 {DXENG_INDEX_DxEngLockDC
, (PFN
)DxEngLockDC
},
45 {DXENG_INDEX_DxEngUnlockDC
, (PFN
)DxEngUnlockDC
},
46 {DXENG_INDEX_DxEngSetDCState
, (PFN
)DxEngSetDCState
},
47 {DXENG_INDEX_DxEngGetDCState
, (PFN
)DxEngGetDCState
},
48 {DXENG_INDEX_DxEngSelectBitmap
, (PFN
)DxEngSelectBitmap
},
49 {DXENG_INDEX_DxEngSetBitmapOwner
, (PFN
)DxEngSetBitmapOwner
},
50 {DXENG_INDEX_DxEngDeleteSurface
, (PFN
)DxEngDeleteSurface
},
51 {DXENG_INDEX_DxEngGetSurfaceData
, (PFN
)DxEngGetSurfaceData
},
52 {DXENG_INDEX_DxEngAltLockSurface
, (PFN
)DxEngAltLockSurface
},
53 {DXENG_INDEX_DxEngUploadPaletteEntryToSurface
, (PFN
)DxEngUploadPaletteEntryToSurface
},
54 {DXENG_INDEX_DxEngMarkSurfaceAsDirectDraw
, (PFN
)DxEngMarkSurfaceAsDirectDraw
},
55 {DXENG_INDEX_DxEngSelectPaletteToSurface
, (PFN
)DxEngSelectPaletteToSurface
},
56 {DXENG_INDEX_DxEngSyncPaletteTableWithDevice
, (PFN
)DxEngSyncPaletteTableWithDevice
},
57 {DXENG_INDEX_DxEngSetPaletteState
, (PFN
)DxEngSetPaletteState
},
58 {DXENG_INDEX_DxEngGetRedirectionBitmap
, (PFN
)DxEngGetRedirectionBitmap
},
59 {DXENG_INDEX_DxEngLoadImage
, (PFN
)DxEngLoadImage
}
67 * The function DxEngDispUniq returns the DisplayUniqVisrgn counter value from GDI shared memory
70 * Returns the DisplayUniqVisrgn counter value from GDI shared memory
80 DPRINT1("ReactX Calling : DxEngDispUniq\n");
81 return GdiHandleTable
->flDeviceUniq
;
85 * @name DxEngGetDeviceGammaRamp
88 * The function DxEngGetDeviceGammaRamp gets the gamma ramp to dxg.sys.
93 * @param PGAMMARAMP Ramp
94 * Pointer to store the gamma ramp value in.
97 *Returns TRUE for success, FALSE for failure
105 DxEngGetDeviceGammaRamp(HDEV hPDev
, PGAMMARAMP Ramp
)
107 DPRINT1("ReactX Calling : DxEngGetDeviceGammaRamp\n");
108 return IntGetDeviceGammaRamp(hPDev
, Ramp
);
116 * The function DxEngLockDC locks a hdc from dxg.sys
119 * The handle we want to lock
122 * Returns PDC if lock succeeded or NULL if it failed.
132 DPRINT1("ReactX Calling : DxEngLockDC\n");
133 return DC_LockDc(hDC
);
138 * @name DxEngUnlockDC
141 * The function DxEngUnlockDC unlocks a pDC (hdc) from dxg.sys.
144 * The handle we want to unlock.
147 * This function returns TRUE no matter what.
155 DxEngUnlockDC(PDC pDC
)
157 DPRINT1("ReactX Calling : DxEngUnlockDC\n");
163 * @name DxEngLockShareSem
166 * The function DxEngLockShareSem locks a struct of type ghsemShareDevLock that can be shared.
169 * This function returns TRUE for success and FALSE for failure.
170 * FALSE must mean the struct has already been locked.
173 * It is being used in various ntuser* functions and ntgdi*
174 * ReactOS specific: It is not in use yet?
181 DPRINT1("ReactX Calling : DxEngLockShareSem\n");
182 if(!ghsemShareDevLock
) ghsemShareDevLock
= EngCreateSemaphore(); // Hax, should be in dllmain.c
183 IntGdiAcquireSemaphore(ghsemShareDevLock
);
188 * @name DxEngUnlockShareSem
191 * The function DxEngUnlockShareSem unlocks the struct of type ghsemShareDevLock.
194 * This function returns TRUE no matter what.
197 * ReactOS specific: It is not in use yet?
202 DxEngUnlockShareSem()
204 DPRINT1("ReactX Calling : DxEngUnlockShareSem\n");
205 IntGdiReleaseSemaphore(ghsemShareDevLock
);
210 * @name DxEngSetDeviceGammaRamp
213 * The function DxEngSetDeviceGammaRamp sets gamma ramp from dxg.sys
218 * @param PGAMMARAMP Ramp
219 * Value to change gamma ramp to.
222 * Whether gamma should be tested. TRUE to test, FALSE to not test.
225 *Returns TRUE for success, FALSE for failure.
233 DxEngSetDeviceGammaRamp(HDEV hPDev
, PGAMMARAMP Ramp
, BOOL Test
)
235 DPRINT1("ReactX Calling : DxEngSetDeviceGammaRamp\n");
236 return IntSetDeviceGammaRamp(hPDev
, Ramp
, Test
);
240 * @name DxEngGetHdevData
243 * The function DxEngGetHdevData retrieves a value from the HDEV
248 * @param DXEGSHDEVDATA Type
249 * The following typs are supported
251 * DxEGShDevData_Surface Retrieve pointer to Surface handle.
252 * DxEGShDevData_hSpooler See if the device is a spooler driver.
253 * DxEGShDevData_DitherFmt Retrieve the device iDitherFormat
254 * DxEGShDevData_FxCaps Retrieve the device flGraphicsCaps
255 * DxEGShDevData_FxCaps2 Retrieve the device flGraphicsCaps2
256 * DxEGShDevData_DrvFuncs Retrieve the device DriverFunctions function table
257 * DxEGShDevData_dhpdev Retrieve the device hPDev, the real DHPDEV
258 * DxEGShDevData_eddg Retrieve the device pEDDgpl
259 * DxEGShDevData_dd_nCount Retrieve the device DxDd_nCount
260 * DxEGShDevData_dd_flags Retrieve the device DxDd_Flags
261 * DxEGShDevData_disable See if the device pdev is disabled
262 * DxEGShDevData_metadev See if the device pdev is a meta device
263 * DxEGShDevData_display See if the device is the primary display driver
264 * DxEGShDevData_Parent Retrieve the ppdevParent
265 * DxEGShDevData_OpenRefs Retrieve the pdevOpenRefs counter
266 * DxEGShDevData_palette See if the device RC_PALETTE is set
267 * DxEGShDevData_ldev ATM we do not support the Loader Device driver structure
268 * DxEGShDevData_GDev Retrieve the device pGraphicsDevice
269 * DxEGShDevData_clonedev Retrieve the device PDEV_CLONE_DEVICE flag is set or not
272 * Returns the data we requested
275 * ReactOS specific: Implementation is incomplete, I do not save the value into the hdev yet.
280 DxEngGetHdevData(HDEV hDev
,
283 DWORD_PTR retVal
= 0;
284 PPDEVOBJ PDev
= (PPDEVOBJ
)hDev
;
286 DPRINT1("ReactX Calling : DxEngGetHdevData DXEGSHDEVDATA : %ld\n", Type
);
289 DPRINT1("HDEV hDev %08lx\n", hDev
);
294 case DxEGShDevData_Surface
:
295 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_Surface\n");
296 retVal
= (DWORD_PTR
) PDev
->pSurface
; // ptr to Surface handle.
298 case DxEGShDevData_hSpooler
:
299 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_hSpooler\n");
300 // retVal = (DWORD_PTR) PDev->hSpooler; // If the device is a spooler driver.
301 retVal
= (DWORD_PTR
) PDev
->VideoFileObject
->DeviceObject
;
303 case DxEGShDevData_DitherFmt
:
304 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_DitherFmt\n");
305 retVal
= (DWORD_PTR
) PDev
->devinfo
.iDitherFormat
;
307 case DxEGShDevData_FxCaps
:
308 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_FxCaps\n");
309 retVal
= (DWORD_PTR
) PDev
->devinfo
.flGraphicsCaps
;
311 case DxEGShDevData_FxCaps2
:
312 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_FxCaps2\n");
313 retVal
= (DWORD_PTR
) PDev
->devinfo
.flGraphicsCaps2
;
315 case DxEGShDevData_DrvFuncs
:
316 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_DrvFuncs\n");
317 retVal
= (DWORD_PTR
) &PDev
->DriverFunctions
;
319 case DxEGShDevData_dhpdev
:
320 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_dhpdev\n");
321 retVal
= (DWORD_PTR
) PDev
->dhpdev
; // DHPDEV
323 case DxEGShDevData_eddg
:
324 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_eddg\n");
325 retVal
= (DWORD_PTR
) PDev
->pEDDgpl
;
327 case DxEGShDevData_dd_nCount
:
328 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_dd_nCount\n");
329 retVal
= (DWORD_PTR
) PDev
->DxDd_nCount
;
331 case DxEGShDevData_dd_flags
:
332 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_dd_flags\n");
333 retVal
= (DWORD_PTR
) PDev
->DxDd_Flags
;
335 case DxEGShDevData_disable
:
336 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_disable\n");
337 retVal
= (DWORD_PTR
) PDev
->flFlags
& PDEV_DISABLED
;
339 case DxEGShDevData_metadev
:
340 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_metadev\n");
341 retVal
= (DWORD_PTR
) PDev
->flFlags
& PDEV_META_DEVICE
;
343 case DxEGShDevData_display
:
344 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_display\n");
345 retVal
= (DWORD_PTR
) PDev
->flFlags
& PDEV_DISPLAY
;
347 case DxEGShDevData_Parent
:
348 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_Parent\n");
349 retVal
= (DWORD_PTR
) PDev
->ppdevParent
;
351 case DxEGShDevData_OpenRefs
:
352 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_OpenRefs\n");
353 retVal
= (DWORD_PTR
) PDev
->cPdevOpenRefs
!= 0;
355 case DxEGShDevData_palette
:
356 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_palette\n");
357 retVal
= (DWORD_PTR
) PDev
->gdiinfo
.flRaster
& RC_PALETTE
;
359 case DxEGShDevData_ldev
:
360 DPRINT1("DxEGShDevData_ldev not supported yet\n");
361 // ATM we do not support the Loader Device driver structure.
362 // retVal = (DWORD) PDev->pldev;
364 case DxEGShDevData_GDev
:
365 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_GDev\n");
366 retVal
= (DWORD_PTR
) PDev
->pGraphicsDevice
; // P"GRAPHICS_DEVICE"
368 case DxEGShDevData_clonedev
:
369 DPRINT1("requested DXEGSHDEVDATA DxEGShDevData_clonedev\n");
370 retVal
= (DWORD_PTR
) PDev
->flFlags
& PDEV_CLONE_DEVICE
;
378 DPRINT1("return value %08lx\n", retVal
);
386 * @name DxEngSetHdevData
389 * The function DxEngSetHdevData sets a value in hdev
394 * @param DXEGSHDEVDATA Type
395 * Supports only DxEGShDevData_dd_nCount. It is an internal counter on how many times hdev has been locked and unlocked
398 * The value to be saved to hdev's internal counter.
401 * Returns TRUE for success, FALSE for failure
409 DxEngSetHdevData(HDEV hDev
,
413 BOOLEAN retVal
= FALSE
; // Default, no set.
415 DPRINT1("ReactX Calling : DxEngSetHdevData DXEGSHDEVDATA : %ld\n", Type
);
417 if ( Type
== DxEGShDevData_dd_nCount
)
419 ((PPDEVOBJ
)hDev
)->DxDd_nCount
= Data
;
420 retVal
= TRUE
; // Set
426 * @name DxEngGetDCState
429 * The function DxEngGetDCState is capable of returning three
430 * DC states depending on what value is passed in its second parameter:
431 * 1. If the DC is full screen
432 * 2. Get Complexity of visible region
433 * 3. Get Driver hdev, which is ppdev
439 * value 1 = Is DC fullscreen
440 * value 2 = Get Complexity of visible region.
441 * value 3 = Get Driver hdev, which is a ppdev.
444 * Return one of the type values
447 * We do not have type 2 implemented yet
452 DxEngGetDCState(HDC hDC
,
455 PDC pDC
= DC_LockDc(hDC
);
456 DWORD_PTR retVal
= 0;
458 DPRINT1("ReactX Calling : DxEngGetDCState type : %ld\n", type
);
465 retVal
= (DWORD_PTR
) pDC
->fs
& DC_FLAG_FULLSCREEN
;
472 /* Return the HDEV of this DC. */
473 retVal
= (DWORD_PTR
) pDC
->ppdev
;
477 /* if a valid type is not found, zero is returned */
478 DPRINT1("Warning did not find type %d\n",type
);
488 * @name DxEngIncDispUniq
491 * The function DxEngIncDispUniq increments the DisplayUniqVisrgn counter from GDI shared memory.
494 * This function returns TRUE no matter what.
504 DPRINT1("ReactX Calling : DxEngIncDispUniq \n");
506 InterlockedIncrement((LONG
*)&GdiHandleTable
->flDeviceUniq
);
511 * @name DxEngLockHdev
514 * The function DxEngLockHdev lock the internal PDEV
517 * it is a pointer to win32k internal pdev struct known as PPDEVOBJ
520 * This function returns TRUE no matter what.
528 DxEngLockHdev(HDEV hDev
)
530 PPDEVOBJ ppdev
= (PPDEVOBJ
)hDev
;
533 DPRINT1("ReactX Calling : DxEngLockHdev \n");
535 DPRINT1("hDev : 0x%08lx\n",hDev
);
537 Resource
= ppdev
->hsemDevLock
;
541 KeEnterCriticalRegion();
542 ExAcquireResourceExclusiveLite( Resource
, TRUE
); // Lock monitor.
548 * @name DxEngUnlockHdev
551 * The function DxEngUnlockHdev unlock the internal PDEV
554 * it is a pointer to win32k internal pdev struct known as PPDEVOBJ
557 * This function returns TRUE no matter what.
565 DxEngUnlockHdev(HDEV hDev
)
567 PPDEVOBJ ppdev
= (PPDEVOBJ
)hDev
;
568 PERESOURCE Resource
= ppdev
->hsemDevLock
;
570 DPRINT1("ReactX Calling : DxEngUnlockHdev \n");
574 ExReleaseResourceLite( Resource
);
575 KeLeaveCriticalRegion();
581 /************************************************************************/
582 /* DxEngReferenceHdev */
583 /************************************************************************/
586 DxEngReferenceHdev(HDEV hDev
)
588 IntGdiReferencePdev((PPDEVOBJ
) hDev
);
589 /* ALWAYS return true */
593 /************************************************************************/
594 /* DxEngNUIsTermSrv */
595 /************************************************************************/
597 /* Notes : Check see if termal server got a connections or not */
602 /* FIXME ReactOS does not suport terminal server yet, we can not check if we got a connections or not */
607 /************************************************************************/
608 /* DxEngRedrawDesktop */
609 /************************************************************************/
611 /* Notes : it always returns TRUE, and it updates whole screen
612 (redraws current desktop) */
622 ULONG gulVisRgnUniqueness
; // Increase count everytime client region is updated.
624 /************************************************************************/
625 /* DxEngVisRgnUniq */
626 /************************************************************************/
627 /* Notes : returns the VisRgnUniq counter for win32k */
632 DPRINT1("ReactX Calling : DxEngVisRgnUniq \n");
634 return gulVisRgnUniqueness
;
637 /************************************************************************/
638 /* DxEngEnumerateHdev */
639 /************************************************************************/
640 /* Enumerate all drivers in win32k */
643 DxEngEnumerateHdev(HDEV
*hdev
)
645 /* FIXME Enumerate all drivers in win32k */
650 /************************************************************************/
651 /* DxEngCreateMemoryDC */
652 /************************************************************************/
655 DxEngCreateMemoryDC(HDEV hDev
)
657 return IntGdiCreateDisplayDC(hDev
, DC_TYPE_MEMORY
, FALSE
);
660 /************************************************************************/
661 /* DxEngScreenAccessCheck */
662 /************************************************************************/
663 DWORD APIENTRY
DxEngScreenAccessCheck()
667 /* we cheating here and tell dxg.sys it have always premitions to access the screen */
671 /************************************************************************/
672 /* DxEngIsHdevLockedByCurrentThread */
673 /************************************************************************/
676 DxEngIsHdevLockedByCurrentThread(HDEV hDev
)
677 { // base on EngIsSemaphoreOwnedByCurrentThread w/o the Ex call.
678 PERESOURCE pSem
= ((PPDEVOBJ
)hDev
)->hsemDevLock
;
679 return pSem
->OwnerEntry
.OwnerThread
== (ERESOURCE_THREAD
)PsGetCurrentThread();
683 /************************************************************************/
684 /* DxEngUnreferenceHdev */
685 /************************************************************************/
688 DxEngUnreferenceHdev(HDEV hDev
)
690 IntGdiUnreferencePdev((PPDEVOBJ
) hDev
, 0);
691 return TRUE
; // Always true.
694 /************************************************************************/
695 /* DxEngGetDesktopDC */
696 /************************************************************************/
699 DxEngGetDesktopDC(ULONG DcType
, BOOL EmptyDC
, BOOL ValidatehWnd
)
701 return UserGetDesktopDC(DcType
, EmptyDC
, ValidatehWnd
);
704 /************************************************************************/
706 /************************************************************************/
709 DxEngDeleteDC(HDC hdc
, BOOL Force
)
711 return IntGdiDeleteDC(hdc
, Force
);
714 /************************************************************************/
716 /************************************************************************/
719 DxEngCleanDC(HDC hdc
)
721 return IntGdiCleanDC(hdc
);
724 /************************************************************************/
725 /* DxEngSetDCOwner */
726 /************************************************************************/
727 BOOL APIENTRY
DxEngSetDCOwner(HGDIOBJ hObject
, DWORD OwnerMask
)
729 DPRINT1("ReactX Calling : DxEngSetDCOwner \n");
731 return IntGdiSetDCOwnerEx( hObject
, OwnerMask
, FALSE
);
734 /************************************************************************/
735 /* DxEngSetDCState */
736 /************************************************************************/
739 DxEngSetDCState(HDC hDC
, DWORD SetType
, DWORD Set
)
742 PDC pDC
= DC_LockDc(hDC
);
749 pDC
->fs
|= DC_FLAG_FULLSCREEN
;
751 pDC
->fs
&= ~DC_FLAG_FULLSCREEN
;
755 return Ret
; // Everything else returns FALSE.
760 /************************************************************************/
761 /* DxEngSelectBitmap */
762 /************************************************************************/
763 DWORD APIENTRY
DxEngSelectBitmap(DWORD x1
, DWORD x2
)
769 /************************************************************************/
770 /* DxEngSetBitmapOwner */
771 /************************************************************************/
772 DWORD APIENTRY
DxEngSetBitmapOwner(DWORD x1
, DWORD x2
)
778 /************************************************************************/
779 /* DxEngDeleteSurface */
780 /************************************************************************/
781 DWORD APIENTRY
DxEngDeleteSurface(DWORD x1
)
787 /************************************************************************/
788 /* DxEngGetSurfaceData */
789 /************************************************************************/
790 DWORD APIENTRY
DxEngGetSurfaceData(DWORD x1
, DWORD x2
)
796 /************************************************************************/
797 /* DxEngAltLockSurface */
798 /************************************************************************/
799 DWORD APIENTRY
DxEngAltLockSurface(DWORD x1
)
805 /************************************************************************/
806 /* DxEngUploadPaletteEntryToSurface */
807 /************************************************************************/
808 DWORD APIENTRY
DxEngUploadPaletteEntryToSurface(DWORD x1
, DWORD x2
,DWORD x3
, DWORD x4
)
814 /************************************************************************/
815 /* DxEngMarkSurfaceAsDirectDraw */
816 /************************************************************************/
817 DWORD APIENTRY
DxEngMarkSurfaceAsDirectDraw(DWORD x1
, DWORD x2
)
823 /************************************************************************/
824 /* DxEngSelectPaletteToSurface */
825 /************************************************************************/
826 DWORD APIENTRY
DxEngSelectPaletteToSurface(DWORD x1
, DWORD x2
)
832 /************************************************************************/
833 /* DxEngSyncPaletteTableWithDevice */
834 /************************************************************************/
835 DWORD APIENTRY
DxEngSyncPaletteTableWithDevice(DWORD x1
, DWORD x2
)
841 /************************************************************************/
842 /* DxEngSetPaletteState */
843 /************************************************************************/
844 DWORD APIENTRY
DxEngSetPaletteState(DWORD x1
, DWORD x2
, DWORD x3
)
850 /************************************************************************/
851 /* DxEngGetRedirectionBitmap */
852 /************************************************************************/
855 DxEngGetRedirectionBitmap(DWORD x1
)
857 return FALSE
; // Normal return.
860 /************************************************************************/
862 /************************************************************************/
863 DWORD APIENTRY
DxEngLoadImage(DWORD x1
,DWORD x2
)
869 /************************************************************************/
870 /* DxEngSpTearDownSprites */
871 /************************************************************************/
872 DWORD APIENTRY
DxEngSpTearDownSprites(DWORD x1
, DWORD x2
, DWORD x3
)
878 /************************************************************************/
879 /* DxEngSpUnTearDownSprites */
880 /************************************************************************/
881 DWORD APIENTRY
DxEngSpUnTearDownSprites(DWORD x1
, DWORD x2
, DWORD x3
)
887 /************************************************************************/
888 /* DxEngSpSpritesVisible */
889 /************************************************************************/
890 DWORD APIENTRY
DxEngSpSpritesVisible(DWORD x1
)