sync with trunk r46493
authorJérôme Gardou <jerome.gardou@reactos.org>
Sat, 27 Mar 2010 20:19:56 +0000 (20:19 +0000)
committerJérôme Gardou <jerome.gardou@reactos.org>
Sat, 27 Mar 2010 20:19:56 +0000 (20:19 +0000)
svn path=/branches/reactos-yarotows/; revision=46494

323 files changed:
1  2 
ReactOS-amd64.rbuild
ReactOS-i386.rbuild
base/applications/paint/rsrc.rc
base/applications/rapps/rapps/firefox3.txt
base/applications/rapps/rapps/mirandaim.txt
base/applications/rapps/rapps/openttd.txt
base/applications/rapps/rapps/opera.txt
base/applications/rapps/rapps/sambatng.txt
base/applications/rapps/rapps/seamonkey.txt
base/applications/rapps/rapps/smplayer.txt
base/applications/rapps/rapps/thunderbird.txt
base/applications/sndrec32/audio_wavein.hpp
base/applications/sndrec32/audio_waveout.hpp
base/setup/usetup/partlist.c
base/shell/cmd/cmd.c
baseaddress.rbuild
boot/bootdata/bootcd/bootcd.rbuild
boot/bootdata/livecd/livecd.rbuild
boot/bootdata/packages/reactos.dff
boot/freeldr/freeldr/debug.c
dll/cpl/sysdm/general.c
dll/cpl/usrmgr/lang/de-DE.rc
dll/directx/bdaplgin/controlnode.cpp
dll/directx/bdaplgin/devicecontrol.cpp
dll/directx/bdaplgin/digitaldemo.cpp
dll/directx/bdaplgin/frequencyfilter.cpp
dll/directx/bdaplgin/lnbinfo.cpp
dll/directx/bdaplgin/pincontrol.cpp
dll/directx/bdaplgin/precomp.h
dll/directx/bdaplgin/signalstatistics.cpp
dll/directx/ksproxy/allocator.cpp
dll/directx/ksproxy/basicaudio.cpp
dll/directx/ksproxy/clockforward.cpp
dll/directx/ksproxy/cvpconfig.cpp
dll/directx/ksproxy/cvpvbiconfig.cpp
dll/directx/ksproxy/datatype.cpp
dll/directx/ksproxy/enum_mediatypes.cpp
dll/directx/ksproxy/enumpins.cpp
dll/directx/ksproxy/input_pin.cpp
dll/directx/ksproxy/interface.cpp
dll/directx/ksproxy/ksproxy.cpp
dll/directx/ksproxy/ksproxy.rbuild
dll/directx/ksproxy/node.cpp
dll/directx/ksproxy/output_pin.cpp
dll/directx/ksproxy/precomp.h
dll/directx/ksproxy/proxy.cpp
dll/directx/ksproxy/qualityforward.cpp
dll/directx/msdvbnp/msdvbnp.cpp
dll/directx/msdvbnp/networkprovider.cpp
dll/directx/msdvbnp/pin.cpp
dll/directx/msdvbnp/precomp.h
dll/directx/msdvbnp/scanningtuner.cpp
dll/directx/qedit/samplegrabber.c
dll/directx/quartz/filtermapper.c
dll/nls/idndl/idndl.rbuild
dll/ntdll/dbg/dbgui.c
dll/ntdll/dispatch/dispatch.c
dll/ntdll/ldr/startup.c
dll/ntdll/ldr/utils.c
dll/ntdll/rtl/libsupp.c
dll/win32/acledit/acledit.c
dll/win32/acledit/stubs.c
dll/win32/advapi32/reg/reg.c
dll/win32/advapi32/sec/misc.c
dll/win32/avicap32/avicap32.c
dll/win32/avifil32/api.c
dll/win32/batt/batt.c
dll/win32/batt/batt.rbuild
dll/win32/batt/batt.rc
dll/win32/batt/batt.spec
dll/win32/batt/resource.h
dll/win32/batt/resources/battery.ico
dll/win32/beepmidi/beepmidi.c
dll/win32/browseui/internettoolbar.cpp
dll/win32/crypt32/chain.c
dll/win32/crypt32/main.c
dll/win32/crypt32/oid.c
dll/win32/dbghelp/dbghelp_private.h
dll/win32/dbghelp/dwarf.c
dll/win32/dbghelp/elf_module.c
dll/win32/dbghelp/macho_module.c
dll/win32/dbghelp/module.c
dll/win32/dbghelp/pe_module.c
dll/win32/dbghelp/symbol.c
dll/win32/fusion/fusion.c
dll/win32/fusion/fusion.spec
dll/win32/gdiplus/brush.c
dll/win32/gdiplus/image.c
dll/win32/hlink/browse_ctx.c
dll/win32/hlink/hlink_main.c
dll/win32/hlink/link.c
dll/win32/iphlpapi/iphlpapi_private.h
dll/win32/iphlpapi/resinfo_reactos.c
dll/win32/kernel32/misc/dllmain.c
dll/win32/kernel32/misc/toolhelp.c
dll/win32/kernel32/synch/critical.c
dll/win32/kernel32/thread/fiber.c
dll/win32/mshtml/De.rc
dll/win32/mshtml/Fr.rc
dll/win32/mshtml/It.rc
dll/win32/mshtml/Ja.rc
dll/win32/mshtml/Lt.rc
dll/win32/mshtml/No.rc
dll/win32/mshtml/Si.rc
dll/win32/mshtml/htmldoc.c
dll/win32/mshtml/htmldoc3.c
dll/win32/mshtml/htmlelem2.c
dll/win32/mshtml/htmlevent.c
dll/win32/mshtml/htmlevent.h
dll/win32/mshtml/htmlimg.c
dll/win32/mshtml/htmlwindow.c
dll/win32/mshtml/mshtml_private.h
dll/win32/mshtml/mutation.c
dll/win32/mshtml/navigate.c
dll/win32/mshtml/nsevents.c
dll/win32/mshtml/nsio.c
dll/win32/mshtml/omnavigator.c
dll/win32/mshtml/persist.c
dll/win32/msi/database.c
dll/win32/msi/msi_De.rc
dll/win32/msi/msi_Fr.rc
dll/win32/msi/msi_It.rc
dll/win32/msi/msi_Lt.rc
dll/win32/msi/msi_Ro.rc
dll/win32/msi/msi_Ru.rc
dll/win32/msi/msi_Si.rc
dll/win32/msi/msiquery.c
dll/win32/msi/msiserver.idl
dll/win32/msvcrt/msvcrt.def
dll/win32/msxml3/domdoc.c
dll/win32/ole32/compobj.c
dll/win32/ole32/stg_bigblockfile.c
dll/win32/ole32/stg_prop.c
dll/win32/ole32/storage32.c
dll/win32/ole32/storage32.h
dll/win32/oleaut32/typelib.c
dll/win32/oleaut32/typelib2.c
dll/win32/oledlg/oledlg_De.rc
dll/win32/oledlg/oledlg_Fr.rc
dll/win32/oledlg/oledlg_Ja.rc
dll/win32/oledlg/oledlg_Lt.rc
dll/win32/oledlg/oledlg_Si.rc
dll/win32/riched20/caret.c
dll/win32/riched20/clipboard.c
dll/win32/riched20/editor.c
dll/win32/riched20/editor.h
dll/win32/riched20/editstr.h
dll/win32/riched20/list.c
dll/win32/riched20/paint.c
dll/win32/riched20/para.c
dll/win32/riched20/reader.c
dll/win32/riched20/richole.c
dll/win32/riched20/rtf.h
dll/win32/riched20/run.c
dll/win32/riched20/style.c
dll/win32/riched20/table.c
dll/win32/riched20/txthost.c
dll/win32/riched20/txtsrv.c
dll/win32/riched20/undo.c
dll/win32/riched20/wrap.c
dll/win32/riched20/writer.c
dll/win32/rpcrt4/cproxy.c
dll/win32/rpcrt4/cpsf.c
dll/win32/rpcrt4/cpsf.h
dll/win32/rpcrt4/cstub.c
dll/win32/rpcrt4/ndr_contexthandle.c
dll/win32/rpcrt4/ndr_fullpointer.c
dll/win32/rpcrt4/ndr_marshall.c
dll/win32/rpcrt4/ndr_misc.h
dll/win32/rpcrt4/ndr_ole.c
dll/win32/rpcrt4/rpc_transport.c
dll/win32/rsaenh/implglue.c
dll/win32/rsaenh/implglue.h
dll/win32/rsaenh/rsaenh.c
dll/win32/rsaenh/rsaenh.rbuild
dll/win32/shdocvw/dochost.c
dll/win32/shdocvw/iexplore.c
dll/win32/shdocvw/navigate.c
dll/win32/shdocvw/oleobject.c
dll/win32/shdocvw/shdocvw.h
dll/win32/shdocvw/webbrowser.c
dll/win32/shell32/autocomplete.c
dll/win32/shlwapi/ordinal.c
dll/win32/shlwapi/shlwapi.spec
dll/win32/shlwapi/string.c
dll/win32/shlwapi/url.c
dll/win32/syssetup/install.c
dll/win32/urlmon/internet.c
dll/win32/urlmon/sec_mgr.c
dll/win32/urlmon/uri.c
dll/win32/urlmon/urlmon.spec
dll/win32/user32/controls/scrollbar.c
dll/win32/user32/include/dde_private.h
dll/win32/user32/include/user32.h
dll/win32/user32/misc/dllmain.c
dll/win32/user32/windows/defwnd.c
dll/win32/user32/windows/draw.c
dll/win32/user32/windows/menu.c
dll/win32/user32/windows/message.c
dll/win32/usp10/usp10.c
dll/win32/version/info.c
dll/win32/version/resource.c
dll/win32/win32.rbuild
dll/win32/windowscodecs/info.c
dll/win32/windowscodecs/jpegformat.c
dll/win32/windowscodecs/pngformat.c
dll/win32/wininet/http.c
dll/win32/wininet/internet.c
dll/win32/wininet/internet.h
dll/win32/ws2_32/misc/stubs.c
drivers/base/bootvid/bootvid.rbuild
drivers/base/bootvid/i386/bootvid.c
drivers/base/bootvid/i386/vga.c
drivers/battery/battc/battc.c
drivers/bus/acpi/acpi.rbuild
drivers/bus/acpi/busmgr/bus.c
drivers/bus/acpi/busmgr/button.c
drivers/bus/acpi/buspdo.c
drivers/bus/acpi/cmbatt/cmbatt.c
drivers/bus/acpi/cmbatt/cmbatt.h
drivers/bus/acpi/cmbatt/cmbatt.rbuild
drivers/bus/acpi/cmbatt/cmbpnp.c
drivers/bus/acpi/cmbatt/cmbwmi.c
drivers/bus/acpi/cmbatt/cmexec.c
drivers/bus/acpi/compbatt/compbatt.c
drivers/bus/acpi/compbatt/compbatt.h
drivers/bus/acpi/compbatt/compbatt.rbuild
drivers/bus/acpi/compbatt/compbatt.rc
drivers/bus/acpi/compbatt/compmisc.c
drivers/bus/acpi/compbatt/comppnp.c
drivers/bus/acpi/include/acpi_bus.h
drivers/bus/acpi/include/acpisys.h
drivers/bus/acpi/main.c
drivers/bus/acpi/osl.c
drivers/bus/isapnp/isapnp.c
drivers/directx/dxg/ddhmg.c
drivers/filesystems/ntfs/attrib.c
drivers/input/i8042prt/keyboard.c
drivers/network/afd/afd/connect.c
drivers/network/afd/afd/write.c
drivers/network/dd/ne2000/include/ne2000.h
drivers/network/dd/ne2000/ne2000/8390.c
drivers/network/ndis/include/ndissys.h
drivers/network/ndis/ndis/io.c
drivers/network/ndis/ndis/miniport.c
drivers/network/ndis/ndis/misc.c
drivers/network/tcpip/datalink/lan.c
drivers/network/tcpip/tcpip/dispatch.c
drivers/serial/serenum/detect.c
drivers/serial/serial/devctrl.c
drivers/storage/class/class2/class2.c
drivers/storage/floppy/floppy.c
drivers/storage/ide/atapi/atapi.c
drivers/storage/scsiport/scsiport.c
drivers/storage/scsiport/scsiport.rbuild
drivers/video/displays/framebuf_new/framebuf_new.rbuild
drivers/video/displays/vga/main/enable.c
drivers/video/font/bmfd/font.c
drivers/video/font/bmfd/glyph.c
drivers/video/videoprt/agp.c
drivers/video/videoprt/int10.c
drivers/video/videoprt/interrupt.c
drivers/video/videoprt/resource.c
drivers/video/videoprt/services.c
drivers/video/videoprt/videoprt.c
drivers/wdm/audio/legacy/wdmaud/interface.h
hal/hal.rbuild
hal/halx86/generic/amd64/systimer.S
hal/halx86/generic/amd64/x86bios.c
hal/halx86/generic/cmos.c
hal/halx86/generic/i386/portio.c
hal/halx86/generic/i386/systimer.S
hal/halx86/generic/i386/trap.S
hal/halx86/generic/misc.c
hal/halx86/generic/spinlock.c
hal/halx86/hal_generic.rbuild
hal/halx86/hal_generic_mp.rbuild
hal/halx86/hal_generic_up.rbuild
hal/halx86/halamd64.rbuild
hal/halx86/halmps.rbuild
hal/halx86/include/halp.h
hal/halx86/mp/amd64/mps.S
hal/halx86/mp/i386/mps.S
hal/halx86/mp/i386/mpsboot.asm
hal/halx86/mp/i386/mpsirql.c
include/ddk/acpiioct.h
include/ddk/wdm.h
include/dxsdk/dxsdk.rbuild
include/ndk/pstypes.h
include/ndk/rtlfuncs.h
include/ndk/rtltypes.h
include/ndk/umtypes.h
include/psdk/ntstatus.h
include/psdk/urlmon.idl
include/psdk/wincodec.idl
include/psdk/wincrypt.h
include/reactos/win32k/ntuser.h
include/reactos/wine/config.h
include/reactos/wine/port.h
lib/sdk/crt/math/i386/pow_asm.s
media/doc/README.WINE
media/inf/battery.inf
media/inf/cpu.inf
media/inf/inf.rbuild
ntoskrnl/config/cmalloc.c
ntoskrnl/dbgk/dbgkutil.c
ntoskrnl/include/internal/cm_x.h
ntoskrnl/io/pnpmgr/pnpmgr.c
ntoskrnl/ke/i386/usercall.c
ntoskrnl/mm/ARM3/procsup.c
ntoskrnl/po/events.c
ntoskrnl/po/power.c
ntoskrnl/rtl/libsupp.c
ntoskrnl/se/semgr.c
ntoskrnl/se/token.c
subsystems/subsystems.rbuild
subsystems/win32/win32k/include/menu.h
subsystems/win32/win32k/include/msgqueue.h
subsystems/win32/win32k/ntuser/keyboard.c
subsystems/win32/win32k/ntuser/menu.c
subsystems/win32/win32k/ntuser/message.c
subsystems/win32/win32k/ntuser/windc.c
subsystems/win32/win32k/objects/gdibatch.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 71f53de,0000000..1a37bcc
mode 100644,000000..100644
--- /dev/null
@@@ -1,813 -1,0 +1,814 @@@
 +; Main ReactOS package
 +
 +.Set DiskLabelTemplate="ReactOS"                ; Label of disk
 +.Set CabinetNameTemplate="reactos.cab"          ; reactos.cab
 +.Set InfFileName="reactos.inf"                  ; reactos.inf
 +
 +
 +;.Set Cabinet=on
 +;.Set Compress=on
 +
 +.InfBegin
 +[Version]
 +Signature = "$ReactOS$"
 +
 +[Directories]
 +1 = system32
 +2 = system32\drivers
 +3 = Fonts
 +4 =
 +5 = system32\drivers\etc
 +6 = inf
 +7 = bin
 +8 = media
 +
 +.InfEnd
 +
 +; Contents of disk
 +.InfBegin
 +[SourceFiles]
 +.InfEnd
 +
 +
 +; Base files
 +base\applications\cacls\cacls.exe                       1
 +base\applications\calc\calc.exe                         1
 +base\applications\charmap\charmap.exe                   1
 +base\applications\cmdutils\dbgprint\dbgprint.exe        1
 +base\applications\cmdutils\doskey\doskey.exe            1
 +base\applications\cmdutils\find\find.exe                1
 +base\applications\cmdutils\hostname\hostname.exe        1
 +base\applications\cmdutils\lodctr\lodctr.exe            1
 +base\applications\cmdutils\more\more.exe                1
 +base\applications\cmdutils\reg\reg.exe                  1
 +base\applications\cmdutils\xcopy\xcopy.exe              1
 +base\applications\control\control.exe                   1
 +base\applications\dxdiag\dxdiag.exe                     1
 +base\applications\fontview\fontview.exe                 1
 +base\applications\mscutils\devmgmt\devmgmt.exe          1
 +base\applications\mscutils\eventvwr\eventvwr.exe        1
 +base\applications\games\solitaire\sol.exe               1
 +base\applications\games\spider\spider.exe               1
 +base\applications\games\winemine\winemine.exe           1
 +base\applications\hh\hh.exe                             4
 +base\applications\kbswitch\kbswitch.exe                 1
 +base\applications\kbswitch\kbsdll\kbsdll.dll            1
 +base\applications\logoff\logoff.exe                     1
 +base\applications\magnify\magnify.exe                   1
 +base\applications\mplay32\mplay32.exe                   1
 +base\applications\msconfig\msconfig.exe                 1
 +base\applications\mstsc\mstsc.exe                       1
 +base\applications\network\arp\arp.exe                   1
 +base\applications\network\dwnl\dwnl.exe                 1
 +base\applications\network\route\route.exe               1
 +base\applications\network\finger\finger.exe             1
 +base\applications\network\ftp\ftp.exe                   1
 +base\applications\network\ipconfig\ipconfig.exe         1
 +base\applications\network\netstat\netstat.exe           1
 +base\applications\network\nslookup\nslookup.exe         1
 +base\applications\network\ping\ping.exe                 1
 +base\applications\network\telnet\telnet.exe             1
 +base\applications\network\tracert\tracert.exe           1
 +base\applications\network\whois\whois.exe               1
 +base\applications\notepad\notepad.exe                   1
 +base\applications\paint\paint.exe                       1
 +base\applications\rapps\rapps.exe                       1
 +base\applications\regedit\regedit.exe                   4
 +base\applications\regedit\clb\clb.dll                   1
 +base\applications\regedt32\regedt32.exe                 1
 +base\applications\sc\sc.exe                             1
 +base\applications\screensavers\3dtext\3dtext.scr        1
 +base\applications\screensavers\logon\logon.scr          1
 +base\applications\mscutils\servman\servman.exe          1
 +base\applications\shutdown\shutdown.exe                 1
 +base\applications\sndrec32\sndrec32.exe                 1
 +base\applications\sndvol32\sndvol32.exe                 1
 +base\applications\taskmgr\taskmgr.exe                   1
 +base\applications\winhlp32\winhlp32.exe                 4
 +base\applications\winver\winver.exe                     1
 +base\applications\wordpad\wordpad.exe                   1
 +base\applications\write\write.exe                       1
 +
 +base\services\audiosrv\audiosrv.exe                 1
 +base\services\dhcp\dhcp.exe                         1
 +base\services\eventlog\eventlog.exe                 1
 +base\services\rpcss\rpcss.exe                       1
 +base\services\spoolsv\spoolsv.exe                   1
 +base\services\tcpsvcs\tcpsvcs.exe                   1
 +base\services\telnetd\telnetd.exe                   1
 +base\services\tcpsvcs\quotes                        5
 +base\services\umpnpmgr\umpnpmgr.exe                 1
 +base\services\wlansvc\wlansvc.exe                   1
 +base\services\svchost\svchost.exe                   1
 +
 +base\setup\setup\setup.exe                          1
 +base\setup\vmwinst\vmwinst.exe                      1
 +
 +base\shell\cmd\cmd.exe                              1
 +base\shell\explorer\explorer.exe                    4
 +base\shell\explorer\explorer-cfg-template.xml       4
 +base\shell\explorer\notifyhook\notifyhook.dll       1
 +base\shell\explorer-new\explorer_new.exe            4   optional
 +
 +base\system\autochk\autochk.exe                     1
 +base\system\bootok\bootok.exe                       1
 +base\system\format\format.exe                       1
 +base\system\lsass\lsass.exe                         1
 +base\system\msiexec\msiexec.exe                     1
 +base\system\regsvr32\regsvr32.exe                   1
 +base\system\rundll32\rundll32.exe                   1
 +base\system\runonce\runonce.exe                     1
 +base\system\services\services.exe                   1
 +base\system\userinit\userinit.exe                   1
 +base\system\winlogon\winlogon.exe                   1
 +base\system\expand\expand.exe                       1
 +base\system\smss\smss.exe                           1
 +
 +
 +; Dynamic Link Libraries
 +dll\3rdparty\mesa32\mesa32.dll                      1
 +dll\3rdparty\libjpeg\libjpeg.dll                    1
 +dll\3rdparty\libxslt\libxslt.dll                    1
 +dll\3rdparty\dxtn\dxtn.dll                          1   optional
 +
 +dll\cpl\access\access.cpl                           1
 +dll\cpl\appwiz\appwiz.cpl                           1
 +dll\cpl\console\console.dll                         1
 +dll\cpl\desk\desk.cpl                               1
 +dll\cpl\hdwwiz\hdwwiz.cpl                           1
 +dll\cpl\input\input.dll                             1
 +dll\cpl\intl\intl.cpl                               1
 +dll\cpl\joy\joy.cpl                                 1
 +;dll\cpl\liccpa\liccpa.cpl                          1
 +dll\cpl\main\main.cpl                               1
 +dll\cpl\mmsys\mmsys.cpl                             1
 +dll\cpl\ncpa\ncpa.cpl                               1
 +;dll\cpl\odbccp32\odbccp32.cpl                      1
 +dll\cpl\powercfg\powercfg.cpl                       1
 +dll\cpl\sysdm\sysdm.cpl                             1
 +;dll\cpl\telephon\telephon.cpl                      1
 +dll\cpl\timedate\timedate.cpl                       1
 +;dll\cpl\usrmgr\usrmgr.cpl                          1
 +
 +dll\directx\amstream\amstream.dll                   1
 +dll\directx\dinput\dinput.dll                       1
 +dll\directx\dinput8\dinput8.dll                     1
 +dll\directx\dmusic\dmusic.dll                       1
 +dll\directx\dplay\dplay.dll                         1
 +dll\directx\dplayx\dplayx.dll                       1
 +dll\directx\dsound\dsound.dll                       1
 +dll\directx\dxdiagn\dxdiagn.dll                     1
 +dll\directx\wine\ddraw\ddraw.dll                    1
 +dll\directx\d3d8thk\d3d8thk.dll                     1
 +dll\directx\devenum\devenum.dll                     1
 +dll\directx\ksproxy\ksproxy.ax                      1
 +dll\directx\ksuser\ksuser.dll                       1
 +dll\directx\msdmo\msdmo.dll                         1
 +dll\directx\quartz\quartz.dll                       1
 +dll\directx\qedit\qedit.dll                         1
 +dll\directx\wine\d3d8\d3d8.dll                      1
 +dll\directx\wine\wined3d\wined3d.dll                1
 +dll\directx\wine\d3d9\d3d9.dll                      1
 +
 +dll\keyboard\kbda1\kbda1.dll                        1
 +dll\keyboard\kbda2\kbda2.dll                        1
 +dll\keyboard\kbda3\kbda3.dll                        1
 +dll\keyboard\kbdal\kbdal.dll                        1
 +dll\keyboard\kbdarme\kbdarme.dll                    1
 +dll\keyboard\kbdarmw\kbdarmw.dll                    1
 +dll\keyboard\kbdaze\kbdaze.dll                      1
 +dll\keyboard\kbdazel\kbdazel.dll                    1
 +dll\keyboard\kbdbgm\kbdbgm.dll                      1
 +dll\keyboard\kbdbgt\kbdbgt.dll                      1
 +dll\keyboard\kbdblr\kbdblr.dll                      1
 +dll\keyboard\kbdbr\kbdbr.dll                        1
 +dll\keyboard\kbdbga\kbdbga.dll                      1
 +dll\keyboard\kbdbe\kbdbe.dll                        1
 +dll\keyboard\kbdbur\kbdbur.dll                      1
 +dll\keyboard\kbdcan\kbdcan.dll                      1
 +dll\keyboard\kbdcr\kbdcr.dll                        1
 +dll\keyboard\kbdcz\kbdcz.dll                        1
 +dll\keyboard\kbdcz1\kbdcz1.dll                      1
 +dll\keyboard\kbdda\kbdda.dll                        1
 +dll\keyboard\kbddv\kbddv.dll                        1
 +dll\keyboard\kbdes\kbdes.dll                        1
 +dll\keyboard\kbdest\kbdest.dll                      1
 +dll\keyboard\kbdfc\kbdfc.dll                        1
 +dll\keyboard\kbdfi\kbdfi.dll                        1
 +dll\keyboard\kbdfr\kbdfr.dll                        1
 +dll\keyboard\kbdgeo\kbdgeo.dll                      1
 +dll\keyboard\kbdgerg\kbdgerg.dll                    1
 +dll\keyboard\kbdgneo\kbdgneo.dll                    1
 +dll\keyboard\kbdgrist\kbdgrist.dll                  1
 +dll\keyboard\kbdgr\kbdgr.dll                        1
 +dll\keyboard\kbdhe\kbdhe.dll                        1
 +dll\keyboard\kbdheb\kbdheb.dll                      1
 +dll\keyboard\kbdhu\kbdhu.dll                        1
 +dll\keyboard\kbdic\kbdic.dll                        1
 +dll\keyboard\kbdinasa\kbdinasa.dll                  1
 +dll\keyboard\kbdinben\kbdinben.dll                  1
 +dll\keyboard\kbdindev\kbdindev.dll                  1
 +dll\keyboard\kbdinguj\kbdinguj.dll                  1
 +dll\keyboard\kbdinmal\kbdinmal.dll                  1
 +dll\keyboard\kbdir\kbdir.dll                        1
 +dll\keyboard\kbdit\kbdit.dll                        1
 +dll\keyboard\kbdja\kbdja.dll                        1
 +dll\keyboard\kbdkaz\kbdkaz.dll                      1
 +dll\keyboard\kbdla\kbdla.dll                        1
 +dll\keyboard\kbdlt1\kbdlt1.dll                      1
 +dll\keyboard\kbdlv\kbdlv.dll                        1
 +dll\keyboard\kbdmac\kbdmac.dll                      1
 +dll\keyboard\kbdne\kbdne.dll                        1
 +dll\keyboard\kbdno\kbdno.dll                        1
 +dll\keyboard\kbdpl1\kbdpl1.dll                      1
 +dll\keyboard\kbdpo\kbdpo.dll                        1
 +dll\keyboard\kbdro\kbdro.dll                        1
 +dll\keyboard\kbdru\kbdru.dll                        1
 +dll\keyboard\kbdru1\kbdru1.dll                      1
 +dll\keyboard\kbdsg\kbdsg.dll                        1
 +dll\keyboard\kbdsk\kbdsk.dll                        1
 +dll\keyboard\kbdsk1\kbdsk1.dll                      1
 +dll\keyboard\kbdsw\kbdsw.dll                        1
 +dll\keyboard\kbdtat\kbdtat.dll                      1
 +dll\keyboard\kbdth0\kbdth0.dll                      1
 +dll\keyboard\kbdth1\kbdth1.dll                      1
 +dll\keyboard\kbdth2\kbdth2.dll                      1
 +dll\keyboard\kbdth3\kbdth3.dll                      1
 +dll\keyboard\kbdtuf\kbdtuf.dll                      1
 +dll\keyboard\kbdtuq\kbdtuq.dll                      1
 +dll\keyboard\kbduk\kbduk.dll                        1
 +dll\keyboard\kbdur\kbdur.dll                        1
 +dll\keyboard\kbdurs\kbdurs.dll                      1
 +dll\keyboard\kbdus\kbdus.dll                        1
 +dll\keyboard\kbdusa\kbdusa.dll                      1
 +dll\keyboard\kbdusl\kbdusl.dll                      1
 +dll\keyboard\kbdusr\kbdusr.dll                      1
 +dll\keyboard\kbdusx\kbdusx.dll                      1
 +dll\keyboard\kbduzb\kbduzb.dll                      1
 +dll\keyboard\kbdvntc\kbdvntc.dll                    1
 +dll\keyboard\kbdycc\kbdycc.dll                      1
 +dll\keyboard\kbdycl\kbdycl.dll                      1
 +dll\keyboard\kbdko\kbdko.dll                        1
 +
 +dll\ntdll\ntdll.dll                                 1
 +
 +dll\win32\acledit\acledit.dll                       1
 +dll\win32\aclui\aclui.dll                           1
 +dll\win32\activeds\activeds.dll                     1
 +dll\win32\advapi32\advapi32.dll                     1
 +dll\win32\advpack\advpack.dll                       1
 +dll\win32\actxprxy\actxprxy.dll                     1
 +dll\win32\atl\atl.dll                               1
 +dll\win32\authz\authz.dll                           1
 +dll\win32\avicap32\avicap32.dll                     1
 +dll\win32\avifil32\avifil32.dll                     1
++dll\win32\batt\batt.dll                             1
 +dll\win32\bcrypt\bcrypt.dll                         1
 +dll\win32\beepmidi\beepmidi.dll                     1
 +dll\win32\browseui\browseui.dll                     1
 +dll\win32\cabinet\cabinet.dll                       1
 +dll\win32\cards\cards.dll                           1
 +dll\win32\cfgmgr32\cfgmgr32.dll                     1
 +dll\win32\clusapi\clusapi.dll                       1
 +dll\win32\comcat\comcat.dll                         1
 +dll\win32\comctl32\comctl32.dll                     1
 +dll\win32\comdlg32\comdlg32.dll                     1
 +dll\win32\compstui\compstui.dll                     1
 +dll\win32\credui\credui.dll                         1
 +dll\win32\crtdll\crtdll.dll                         1
 +dll\win32\crypt32\crypt32.dll                       1
 +dll\win32\cryptdlg\cryptdlg.dll                     1
 +dll\win32\cryptdll\cryptdll.dll                     1
 +dll\win32\cryptnet\cryptnet.dll                     1
 +dll\win32\cryptui\cryptui.dll                       1
 +dll\win32\dbghelp\dbghelp.dll                       1
 +dll\win32\dciman32\dciman32.dll                     1
 +dll\win32\dwmapi\dwmapi.dll                         1
 +dll\win32\devmgr\devmgr.dll                         1
 +dll\win32\dhcpcsvc\dhcpcsvc.dll                     1
 +dll\win32\dnsapi\dnsapi.dll                         1
 +dll\win32\faultrep\faultrep.dll                     1
 +dll\win32\fmifs\fmifs.dll                           1
 +dll\win32\fusion\fusion.dll                         1
 +dll\win32\gdi32\gdi32.dll                           1
 +dll\win32\gdiplus\gdiplus.dll                       1
 +dll\win32\getuname\getuname.dll                     1
 +dll\win32\glu32\glu32.dll                           1
 +dll\win32\hhctrl.ocx\hhctrl.ocx                     1
 +dll\win32\hid\hid.dll                               1
 +dll\win32\hlink\hlink.dll                           1
 +dll\win32\hnetcfg\hnetcfg.dll                       1
 +dll\win32\httpapi\httpapi.dll                       1
 +dll\win32\iccvid\iccvid.dll                         1
 +dll\win32\icmp\icmp.dll                             1
 +dll\win32\imaadp32.acm\imaadp32.acm                 1
 +dll\win32\imagehlp\imagehlp.dll                     1
 +dll\win32\imm32\imm32.dll                           1
 +dll\win32\inetcomm\inetcomm.dll                     1
 +dll\win32\inetmib1\inetmib1.dll                     1
 +dll\win32\initpki\initpki.dll                       1
 +dll\win32\inseng\inseng.dll                         1
 +dll\win32\iphlpapi\iphlpapi.dll                     1
 +dll\win32\itircl\itircl.dll                         1
 +dll\win32\itss\itss.dll                             1
 +dll\win32\jscript\jscript.dll                       1
 +dll\win32\kernel32\kernel32.dll                     1
 +dll\win32\loadperf\loadperf.dll                     1
 +dll\win32\localspl\localspl.dll                     1
 +dll\win32\localui\localui.dll                       1
 +dll\win32\lsasrv\lsasrv.dll                         1
 +dll\win32\lz32\lz32.dll                             1
 +dll\win32\mapi32\mapi32.dll                         1
 +dll\win32\mciavi32\mciavi32.dll                     1
 +dll\win32\mcicda\mcicda.dll                         1
 +dll\win32\mciqtz32\mciqtz32.dll                     1
 +dll\win32\mciseq\mciseq.dll                         1
 +dll\win32\mciwave\mciwave.dll                       1
 +dll\win32\mlang\mlang.dll                           1
 +dll\win32\mmdrv\mmdrv.dll                           1
 +dll\win32\modemui\modemui.dll                       1
 +dll\win32\mpr\mpr.dll                               1
 +dll\win32\mprapi\mprapi.dll                         1
 +dll\win32\msacm32\msacm32.dll                       1
 +dll\win32\msacm32\msacm32.drv\msacm32.drv           1
 +dll\win32\msadp32.acm\msadp32.acm                   1
 +dll\win32\msafd\msafd.dll                           1
 +dll\win32\mscat32\mscat32.dll                       1
 +dll\win32\mscms\mscms.dll                           1
 +dll\win32\mscoree\mscoree.dll                       1
 +dll\win32\msctf\msctf.dll                           1
 +dll\win32\msftedit\msftedit.dll                     1
 +dll\win32\msg711.acm\msg711.acm                     1
 +dll\win32\msgina\msgina.dll                         1
 +dll\win32\msgsm32.acm\msgsm32.acm                   1
 +dll\win32\mshtml\mshtml.dll                         1
 +dll\win32\mshtml.tlb\mshtml.tlb                     1
 +dll\win32\msi\msi.dll                               1
 +dll\win32\msimg32\msimg32.dll                       1
 +dll\win32\msimtf\msimtf.dll                         1
 +dll\win32\msisip\msisip.dll                         1
 +dll\win32\msisys.ocx\msisys.ocx                     1
 +dll\win32\msnet32\msnet32.dll                       1
 +dll\win32\msrle32\msrle32.dll                       1
 +dll\win32\mssign32\mssign32.dll                     1
 +dll\win32\mssip32\mssip32.dll                       1
 +dll\win32\mstask\mstask.dll                         1
 +dll\win32\msvcrt\msvcrt.dll                         1
 +dll\win32\msvcrt20\msvcrt20.dll                     1
 +dll\win32\msvcrt40\msvcrt40.dll                     1
 +dll\win32\msvfw32\msvfw32.dll                       1
 +dll\win32\msvidc32\msvidc32.dll                     1
 +dll\win32\mswsock\mswsock.dll                       1
 +dll\win32\msxml3\msxml3.dll                         1
 +dll\win32\nddeapi\nddeapi.dll                       1
 +dll\win32\netapi32\netapi32.dll                     1
 +dll\win32\netcfgx\netcfgx.dll                       1
 +dll\win32\netid\netid.dll                           1
 +dll\win32\netshell\netshell.dll                     1
 +dll\win32\newdev\newdev.dll                         1
 +dll\win32\ntdsapi\ntdsapi.dll                       1
 +dll\win32\ntlanman\ntlanman.dll                     1
 +dll\win32\ntmarta\ntmarta.dll                       1
 +dll\win32\ntprint\ntprint.dll                       1
 +dll\win32\objsel\objsel.dll                         1
 +dll\win32\odbc32\odbc32.dll                         1
 +dll\win32\odbccp32\odbccp32.dll                     1
 +dll\win32\ole32\ole32.dll                           1
 +dll\win32\oleacc\oleacc.dll                         1
 +dll\win32\oleaut32\oleaut32.dll                     1
 +dll\win32\olecli32\olecli32.dll                     1
 +dll\win32\oledlg\oledlg.dll                         1
 +dll\win32\olepro32\olepro32.dll                     1
 +dll\win32\olesvr32\olesvr32.dll                     1
 +dll\win32\olethk32\olethk32.dll                     1
 +dll\win32\opengl32\opengl32.dll                     1
 +dll\win32\pdh\pdh.dll                               1
 +dll\win32\pidgen\pidgen.dll                         1
 +dll\win32\powrprof\powrprof.dll                     1
 +dll\win32\printui\printui.dll                       1
 +dll\win32\psapi\psapi.dll                           1
 +dll\win32\pstorec\pstorec.dll                       1
 +dll\win32\qmgr\qmgr.dll                             1
 +dll\win32\qmgrprxy\qmgrprxy.dll                     1
 +dll\win32\query\query.dll                           1
 +dll\win32\rasadhlp\rasadhlp.dll                     1
 +dll\win32\rasapi32\rasapi32.dll                     1
 +dll\win32\rasdlg\rasdlg.dll                         1
 +dll\win32\resutils\resutils.dll                     1
 +dll\win32\rasman\rasman.dll                         1
 +dll\win32\riched20\riched20.dll                     1
 +dll\win32\riched32\riched32.dll                     1
 +dll\win32\rpcrt4\rpcrt4.dll                         1
 +dll\win32\rsabase\rsabase.dll                       1
 +dll\win32\rsaenh\rsaenh.dll                         1
 +dll\win32\samlib\samlib.dll                         1
 +dll\win32\samsrv\samsrv.dll                         1
 +dll\win32\sccbase\sccbase.dll                       1
 +dll\win32\schannel\schannel.dll                     1
 +dll\win32\secur32\secur32.dll                       1
 +dll\win32\security\security.dll                     1
 +dll\win32\sensapi\sensapi.dll                       1
 +dll\win32\serialui\serialui.dll                     1
 +dll\win32\setupapi\setupapi.dll                     1
 +dll\win32\sfc\sfc.dll                               1
 +dll\win32\sfc_os\sfc_os.dll                         1
 +dll\win32\shdoclc\shdoclc.dll                       1
 +dll\win32\shdocvw\shdocvw.dll                       1
 +dll\win32\shell32\shell32.dll                       1
 +dll\win32\shfolder\shfolder.dll                     1
 +dll\win32\shimgvw\shimgvw.dll                       1
 +dll\win32\shlwapi\shlwapi.dll                       1
 +dll\win32\slbcsp\slbcsp.dll                         1
 +dll\win32\smdll\smdll.dll                           1
 +dll\win32\snmpapi\snmpapi.dll                       1
 +dll\win32\softpub\softpub.dll                       1
 +dll\win32\spoolss\spoolss.dll                       1
 +dll\win32\srclient\srclient.dll                     1
 +dll\win32\stdole2.tlb\stdole2.tlb                   1
 +dll\win32\stdole32.tlb\stdole32.tlb                 1
 +dll\win32\sti\sti.dll                               1
 +dll\win32\sxs\sxs.dll                               1
 +dll\win32\syssetup\syssetup.dll                     1
 +dll\win32\t2embed\t2embed.dll                       1
 +dll\win32\tapi32\tapi32.dll                         1
 +dll\win32\tapiui\tapiui.dll                         1
 +dll\win32\traffic\traffic.dll                       1
 +dll\win32\twain_32\twain_32.dll                     1
 +dll\win32\uext2\uext2.dll                           1
 +dll\win32\ufat\ufat.dll                             1
 +dll\win32\ufatx\ufatx.dll                           1   optional
 +dll\win32\untfs\untfs.dll                           1
 +dll\win32\updspapi\updspapi.dll                     1
 +dll\win32\url\url.dll                               1
 +dll\win32\urlmon\urlmon.dll                         1
 +dll\win32\user32\user32.dll                         1
 +dll\win32\userenv\userenv.dll                       1
 +dll\win32\usp10\usp10.dll                           1
 +dll\win32\uxtheme\uxtheme.dll                       1
 +dll\win32\vdmdbg\vdmdbg.dll                         1
 +dll\win32\version\version.dll                       1
 +dll\win32\windowscodecs\windowscodecs.dll           1
 +dll\win32\winemp3.acm\winemp3.acm                   1
 +dll\win32\winfax\winfax.dll                         1
 +dll\win32\winhttp\winhttp.dll                       1
 +dll\win32\wininet\wininet.dll                       1
 +dll\win32\winmm\winmm.dll                           1
 +dll\win32\winspool\winspool.drv                     1
 +dll\win32\winsta\winsta.dll                         1
 +dll\win32\wlanapi\wlanapi.dll                       1
 +dll\win32\wintrust\wintrust.dll                     1
 +dll\win32\wldap32\wldap32.dll                       1
 +dll\win32\wmi\wmi.dll                               1
 +dll\win32\ws2_32\ws2_32.dll                         1
 +dll\win32\ws2help\ws2help.dll                       1
 +dll\win32\wshirda\wshirda.dll                       1
 +dll\win32\wshtcpip\wshtcpip.dll                     1
 +dll\win32\wsock32\wsock32.dll                       1
 +dll\win32\wtsapi32\wtsapi32.dll                     1
 +dll\win32\wuapi\wuapi.dll                           1
 +dll\win32\xinput1_1\xinput1_1.dll                   1
 +dll\win32\xinput1_2\xinput1_2.dll                   1
 +dll\win32\xinput1_3\xinput1_3.dll                   1
 +dll\win32\xinput9_1_0\xinput9_1_0.dll               1
 +dll\win32\xmllite\xmllite.dll                       1
 +dll\win32\winmm\midimap\midimap.dll                 1
 +dll\win32\wdmaud.drv\wdmaud.drv                     1
 +
 +; Shell Extensions
 +dll\shellext\deskadp\deskadp.dll                    1
 +dll\shellext\deskmon\deskmon.dll                    1
 +
 +; Drivers
 +drivers\base\bootvid\bootvid.dll                    1
 +drivers\base\beep\beep.sys                          2
 +drivers\base\null\null.sys                          2
 +drivers\base\nmidebug\nmidebug.sys                  2
 +
 +drivers\battery\cmbatt\cmbatt.sys                   2
 +drivers\battery\battc\battc.sys                     2
 +
 +drivers\bus\isapnp\isapnp.sys                       2
 +
 +drivers\directx\dxapi\dxapi.sys                     2
 +drivers\directx\dxg\dxg.sys                         2
 +drivers\directx\dxgthk\dxgthk.sys                   2
 +
 +drivers\filesystems\fs_rec\fs_rec.sys               2
 +drivers\filesystems\msfs\msfs.sys                   2
 +drivers\filesystems\mup\mup.sys                     2
 +drivers\filesystems\npfs\npfs.sys                   2
 +
 +drivers\input\mouclass\mouclass.sys                 2
 +drivers\input\sermouse\sermouse.sys                 2
 +
 +drivers\ksfilter\ks\ks.sys                          2
 +
 +drivers\network\afd\afd.sys                         2
 +drivers\network\ndis\ndis.sys                       2
 +drivers\network\tcpip\tcpip.sys                     2
 +drivers\network\tdi\tdi.sys                         2
 +drivers\network\dd\ne2000\ne2000.sys                2
 +drivers\network\dd\pcnet\pcnet.sys                  2
 +
 +drivers\serial\serenum\serenum.sys                  2
 +drivers\serial\serial\serial.sys                    2
 +
 +drivers\storage\ide\pciide\pciide.sys               2
 +drivers\storage\ide\pciidex\pciidex.sys             2
 +
 +;drivers\usb\miniport\usbohci\usbohci.sys           2
 +;drivers\usb\miniport\usbuhci\usbuhci.sys           2
 +;drivers\usb\usbhub\usbhub.sys                      2
 +;drivers\usb\usbport\usbport.sys                    2
 +drivers\usb\nt4compat\usbdriver\usbdriver.sys       2
 +
 +drivers\video\displays\vga\vgaddi.dll               1
 +drivers\video\displays\framebuf\framebuf.dll        1
 +drivers\video\miniport\vga\vgamp.sys                2
 +drivers\video\miniport\vbe\vbemp.sys                2
 +drivers\video\videoprt\videoprt.sys                 2
 +drivers\video\font\ftfd\ftfd.dll                   1
 +
 +drivers\wdm\audio\filters\kmixer\kmixer.sys         2
 +drivers\wdm\audio\sysaudio\sysaudio.sys             2
 +drivers\wdm\audio\legacy\wdmaud\wdmaud.sys          2
 +drivers\wdm\audio\backpln\portcls\portcls.sys       2
 +drivers\wdm\audio\drm\drmk\drmk.sys                 2
 +drivers\wmi\wmilib.sys                              2
 +
 +; Media
 +media\fonts\DejaVuSans.ttf                          3
 +media\fonts\DejaVuSans-Bold.ttf                     3
 +media\fonts\DejaVuSans-BoldOblique.ttf              3
 +media\fonts\DejaVuSansMono.ttf                      3
 +media\fonts\DejaVuSansMono-Bold.ttf                 3
 +media\fonts\DejaVuSansMono-BoldOblique.ttf          3
 +media\fonts\DejaVuSansMono-Oblique.ttf              3
 +media\fonts\DejaVuSans-Oblique.ttf                  3
 +media\fonts\DejaVuSerif.ttf                         3
 +media\fonts\DejaVuSerif-Bold.ttf                    3
 +media\fonts\DejaVuSerif-BoldItalic.ttf              3
 +media\fonts\DejaVuSerif-Italic.ttf                  3
 +
 +media\fonts\FreeMono.ttf                            3
 +media\fonts\FreeMonoBold.ttf                        3
 +media\fonts\FreeMonoBoldOblique.ttf                 3
 +media\fonts\FreeMonoOblique.ttf                     3
 +
 +media\fonts\LiberationMono-Bold.ttf                 3
 +media\fonts\LiberationMono-BoldItalic.ttf           3
 +media\fonts\LiberationMono-Italic.ttf               3
 +media\fonts\LiberationMono-Regular.ttf              3
 +media\fonts\LiberationSans-Bold.ttf                 3
 +media\fonts\LiberationSans-BoldItalic.ttf           3
 +media\fonts\LiberationSans-Italic.ttf               3
 +media\fonts\LiberationSans-Regular.ttf              3
 +media\fonts\LiberationSerif-Bold.ttf                3
 +media\fonts\LiberationSerif-BoldItalic.ttf          3
 +media\fonts\LiberationSerif-Italic.ttf              3
 +media\fonts\LiberationSerif-Regular.ttf             3
 +
 +media\fonts\Marlett.ttf                             3
 +media\fonts\symbol.ttf                              3
 +media\fonts\tahoma.ttf                              3
 +media\fonts\tahomabd.ttf                            3
 +
 +media\vgafonts\vgafonts.cab                         4
 +
 +media\nls\c_037.nls                                 1
 +media\nls\c_424.nls                                 1
 +media\nls\c_500.nls                                 1
 +media\nls\c_737.nls                                 1
 +media\nls\c_775.nls                                 1
 +media\nls\c_850.nls                                 1
 +media\nls\c_852.nls                                 1
 +media\nls\c_855.nls                                 1
 +media\nls\c_856.nls                                 1
 +media\nls\c_857.nls                                 1
 +media\nls\c_860.nls                                 1
 +media\nls\c_861.nls                                 1
 +media\nls\c_862.nls                                 1
 +media\nls\c_863.nls                                 1
 +media\nls\c_864.nls                                 1
 +media\nls\c_865.nls                                 1
 +media\nls\c_866.nls                                 1
 +media\nls\c_869.nls                                 1
 +media\nls\c_874.nls                                 1
 +media\nls\c_875.nls                                 1
 +media\nls\c_878.nls                                 1
 +media\nls\c_932.nls                                 1
 +media\nls\c_936.nls                                 1
 +media\nls\c_949.nls                                 1
 +media\nls\c_950.nls                                 1
 +media\nls\c_1006.nls                                1
 +media\nls\c_1026.nls                                1
 +media\nls\c_1250.nls                                1
 +media\nls\c_1251.nls                                1
 +media\nls\c_1253.nls                                1
 +media\nls\c_1254.nls                                1
 +media\nls\c_1255.nls                                1
 +media\nls\c_1256.nls                                1
 +media\nls\c_1257.nls                                1
 +media\nls\c_1258.nls                                1
 +media\nls\c_10000.nls                               1
 +media\nls\c_10006.nls                               1
 +media\nls\c_10007.nls                               1
 +media\nls\c_10029.nls                               1
 +media\nls\c_10079.nls                               1
 +media\nls\c_10081.nls                               1
 +media\nls\c_20866.nls                               1
 +media\nls\c_21866.nls                               1
 +media\nls\c_28591.nls                               1
 +media\nls\c_28592.nls                               1
 +media\nls\c_28593.nls                               1
 +media\nls\c_28594.nls                               1
 +media\nls\c_28595.nls                               1
 +media\nls\c_28596.nls                               1
 +media\nls\c_28597.nls                               1
 +media\nls\c_28598.nls                               1
 +media\nls\c_28599.nls                               1
 +media\nls\c_28600.nls                               1
 +media\nls\c_28603.nls                               1
 +media\nls\c_28604.nls                               1
 +media\nls\c_28605.nls                               1
 +media\nls\c_28606.nls                               1
 +media\drivers\etc\services                          5
 +media\inf\audio.inf                                 6
 +media\inf\acpi.inf                                  6
 +media\inf\battery.inf                               6
 +media\inf\cdrom.inf                                 6
 +media\inf\cpu.inf                                   6
 +media\inf\display.inf                               6
 +media\inf\font.inf                                  6
 +media\inf\fdc.inf                                   6
 +media\inf\hdc.inf                                   6
 +media\inf\intl.inf                                  6
 +media\inf\layout.inf                                6
 +media\inf\machine.inf                               6
 +media\inf\msmouse.inf                               6
 +media\inf\keyboard.inf                              6
 +media\inf\ks.inf                                    6
 +media\inf\NET_NIC.inf                               6
 +media\inf\netamd.inf                                6
 +media\inf\netisa.inf                                6
 +media\inf\netrtpnt.inf                              6
 +media\inf\nettcpip.inf                              6
 +media\inf\ports.inf                                 6
 +media\inf\scsi.inf                                  6
 +media\inf\syssetup.inf                              6
 +media\inf\usbport.inf                               6
 +media\inf\usb.inf                                   6
 +media\inf\usbstor.inf                               6
 +media\inf\xboxdisp.inf                              6
 +
 +
 +; Media Files
 +media\sounds\ReactOS_LogOn.wav                      8
 +
 +; Ini Files
 +boot\bootdata\system.ini                            4
 +
 +; Regression Testing
 +boot\bootdata\bootcdregtest\regtest.cmd             7   optional
 +
 +; Subsystems
 +subsystems\win32\csrss\csrss.exe                    1
 +subsystems\win32\csrss\win32csr\win32csr.dll        1
 +subsystems\win32\csrss\csrsrv\csrsrv.dll            1
 +subsystems\ntvdm\ntvdm.exe                          1
 +subsystems\win32\win32k\win32k.sys                  1
 +
 +; Optional/proprietary files
 +modules\optional\DroidSansFallback.ttf              3  optional
 +modules\optional\NOTICE_for_Droid_Font.txt          4  optional
 +modules\optional\netkvm2k.inf                       6  optional
 +modules\optional\netkvm2k.cat                       6  optional
 +modules\optional\netkvm.sys                         2  optional
 +modules\optional\alcxwdm.inf                        6  optional
 +modules\optional\alcxwdm.sys                        2  optional
 +modules\optional\mfc42.dll                          1  optional
 +modules\optional\mfc42u.dll                         1  optional
 +modules\optional\mfc71.dll                          1  optional
 +modules\optional\mfc71u.dll                         1  optional
 +modules\optional\msvbvm50.dll                       1  optional
 +modules\optional\msvbvm60.dll                       1  optional
 +modules\optional\msvcirt.dll                        1  optional
 +modules\optional\msvcp71.dll                        1  optional
 +modules\optional\msvcr71.dll                        1  optional
 +modules\optional\vmx_fb.dll                         1  optional
 +modules\optional\vmx_mode.dll                       1  optional
 +modules\optional\vmx_svga.inf                       6  optional
 +modules\optional\vmx_svga.sys                       2  optional
 +modules\optional\wine_gecko-1.0.0-x86.cab           4  optional
 +
 +; Rosapps
 +modules\rosapps\applications\screensavers\cylfrac\cylfrac.scr              1   optional
 +modules\rosapps\applications\screensavers\matrix\matrix.scr                1   optional
 +modules\rosapps\applications\screensavers\blankscr\scrnsave.scr            1   optional
 +modules\rosapps\applications\screensavers\starfield\starfield.scr          1   optional
 +modules\rosapps\applications\screensavers\mazescr\mazescr.scr              1   optional
 +modules\rosapps\applications\screensavers\butterflies\butterflies.scr      1   optional
 +modules\rosapps\applications\cmdutils\comp\comp.exe                                     1   optional
 +modules\rosapps\applications\cmdutils\mode\mode.exe                                     1   optional
 +modules\rosapps\applications\cmdutils\sort\sort.exe                                     1   optional
 +modules\rosapps\applications\cmdutils\tee\tee.exe                                       1   optional
 +modules\rosapps\applications\cmdutils\touch\touch.exe                                   1   optional
 +modules\rosapps\applications\cmdutils\uptime\uptime.exe                                 1   optional
 +modules\rosapps\applications\cmdutils\y\y.exe                                           1   optional
 +modules\rosapps\applications\devutils\gdb2\gdb2.exe                                     1   optional
 +modules\rosapps\applications\devutils\gdihv\gdihv.exe                                   1   optional
 +modules\rosapps\applications\devutils\genguid\genguid.exe                               1   optional
 +modules\rosapps\applications\sysutils\gettype\gettype.exe                               1   optional
 +modules\rosapps\applications\net\ncftp\ncftp.exe                                        1   optional
 +modules\rosapps\applications\net\netreg\netreg.exe                                      1   optional
 +modules\rosapps\applications\net\niclist\niclist.exe                                    1   optional
 +modules\rosapps\applications\net\roshttpd\roshttpd.exe                                  1   optional
 +modules\rosapps\applications\notevil\notevil.exe                                        1   optional
 +modules\rosapps\applications\sysutils\chkdsk\chkdsk.exe                                 1   optional
 +modules\rosapps\applications\sysutils\systeminfo\systeminfo.exe                         1   optional
 +modules\rosapps\applications\sysutils\chklib\chklib.exe                                 1   optional
 +modules\rosapps\applications\sysutils\ctm\ctm.exe                                       1   optional
 +modules\rosapps\applications\sysutils\kill\kill.exe                                     1   optional
 +modules\rosapps\applications\sysutils\lsdd\lsdd.exe                                     1   optional
 +modules\rosapps\applications\sysutils\man\man.exe                                       1   optional
 +modules\rosapps\applications\sysutils\pedump\pedump.exe                                 1   optional
 +modules\rosapps\applications\sysutils\regexpl\regexpl.exe                               1   optional
 +modules\rosapps\applications\sysutils\tcat\tcat.exe                                     1   optional
 +modules\rosapps\applications\sysutils\tlist\tlist.exe                                   1   optional
 +modules\rosapps\applications\sysutils\screenshot\screenshot.exe                         1   optional
 +modules\rosapps\applications\sysutils\utils\binpatch\binpatch.exe                       1   optional
 +modules\rosapps\applications\sysutils\utils\cat\cat.exe                                 1   optional
 +modules\rosapps\applications\sysutils\utils\driver\load\load.exe                        1   optional
 +modules\rosapps\applications\sysutils\utils\driver\unload\unload.exe                    1   optional
 +modules\rosapps\applications\sysutils\utils\infinst\infinst.exe                         1   optional
 +modules\rosapps\applications\sysutils\utils\nts2w32err\nts2w32err.exe                   1   optional
 +modules\rosapps\applications\sysutils\utils\objdir\objdir.exe                           1   optional
 +modules\rosapps\applications\sysutils\utils\partinfo\partinfo.exe                       1   optional
 +modules\rosapps\applications\sysutils\utils\ps\ps.exe                                   1   optional
 +modules\rosapps\applications\sysutils\utils\rosperf\rosperf.exe                         1   optional
 +modules\rosapps\applications\sysutils\utils\stats\stats.exe                             1   optional
 +modules\rosapps\applications\sysutils\utils\tickcount\tickcount.exe                     1   optional
 +modules\rosapps\applications\winfile\winfile.exe                                        1   optional
 +modules\rosapps\demos\maze\maze.exe                                        1   optional
 +modules\rosapps\drivers\green\green.sys                                    2   optional
 +
 +; Rostests
 +modules\rostests\rosautotest\rosautotest.exe                               1   optional
 +modules\rostests\tests\pseh2\pseh2_test.exe                                7   optional
 +modules\rostests\winetests\advapi32\advapi32_winetest.exe                  7   optional
 +modules\rostests\winetests\advpack\advpack_winetest.exe                    7   optional
 +modules\rostests\winetests\browseui\browseui_winetest.exe                  7   optional
 +modules\rostests\winetests\cabinet\cabinet_winetest.exe                    7   optional
 +modules\rostests\winetests\comcat\comcat_winetest.exe                      7   optional
 +modules\rostests\winetests\comctl32\comctl32_winetest.exe                  7   optional
 +modules\rostests\winetests\comdlg32\comdlg32_winetest.exe                  7   optional
 +modules\rostests\winetests\crypt32\crypt32_winetest.exe                    7   optional
 +modules\rostests\winetests\cryptnet\cryptnet_winetest.exe                  7   optional
 +modules\rostests\winetests\dsound\dsound_winetest.exe                      7   optional
 +modules\rostests\winetests\gdi32\gdi32_winetest.exe                        7   optional
 +modules\rostests\winetests\gdiplus\gdiplus_winetest.exe                    7   optional
 +modules\rostests\winetests\hlink\hlink_winetest.exe                        7   optional
 +modules\rostests\winetests\icmp\icmp_winetest.exe                          7   optional
 +modules\rostests\winetests\iphlpapi\iphlpapi_winetest.exe                  7   optional
 +modules\rostests\winetests\jscript\jscript_winetest.exe                    7   optional
 +modules\rostests\winetests\kernel32\kernel32_winetest.exe                  7   optional
 +modules\rostests\winetests\lz32\lz32_winetest.exe                          7   optional
 +modules\rostests\winetests\mapi32\mapi32_winetest.exe                      7   optional
 +modules\rostests\winetests\mlang\mlang_winetest.exe                        7   optional
 +modules\rostests\winetests\mshtml\mshtml_winetest.exe                      7   optional
 +modules\rostests\winetests\msi\msi_winetest.exe                            7   optional
 +modules\rostests\winetests\mstask\mstask_winetest.exe                      7   optional
 +modules\rostests\winetests\msvcrt\msvcrt_winetest.exe                      7   optional
 +modules\rostests\winetests\msxml3\msxml3_winetest.exe                      7   optional
 +modules\rostests\winetests\netapi32\netapi32_winetest.exe                  7   optional
 +modules\rostests\winetests\ntdll\ntdll_winetest.exe                        7   optional
 +modules\rostests\winetests\odbccp32\odbccp32_winetest.exe                  7   optional
 +modules\rostests\winetests\ole32\ole32_winetest.exe                        7   optional
 +modules\rostests\winetests\oleaut32\oleaut32_winetest.exe                  7   optional
 +modules\rostests\winetests\powrprof\powrprof_winetest.exe                  7   optional
 +modules\rostests\winetests\psapi\psapi_winetest.exe                        7   optional
 +modules\rostests\winetests\riched20\riched20_winetest.exe                  7   optional
 +modules\rostests\winetests\rpcrt4\rpcrt4_winetest.exe                      7   optional
 +modules\rostests\winetests\rsabase\rsabase_winetest.exe                    7   optional
 +modules\rostests\winetests\rsaenh\rsaenh_winetest.exe                      7   optional
 +modules\rostests\winetests\schannel\schannel_winetest.exe                  7   optional
 +modules\rostests\winetests\secur32\secur32_winetest.exe                    7   optional
 +modules\rostests\winetests\setupapi\setupapi_winetest.exe                  7   optional
 +modules\rostests\winetests\shdocvw\shdocvw_winetest.exe                    7   optional
 +modules\rostests\winetests\shell32\shell32_winetest.exe                    7   optional
 +modules\rostests\winetests\shlwapi\shlwapi_winetest.exe                    7   optional
 +modules\rostests\winetests\urlmon\urlmon_winetest.exe                      7   optional
 +modules\rostests\winetests\user32\user32_winetest.exe                      7   optional
 +modules\rostests\winetests\usp10\usp10_winetest.exe                        7   optional
 +modules\rostests\winetests\uxtheme\uxtheme_winetest.exe                    7   optional
 +modules\rostests\winetests\version\version_winetest.exe                    7   optional
 +modules\rostests\winetests\winhttp\winhttp_winetest.exe                    7   optional
 +modules\rostests\winetests\wininet\wininet_winetest.exe                    7   optional
 +modules\rostests\winetests\winmm\winmm_winetest.exe                        7   optional
 +modules\rostests\winetests\wintrust\wintrust_winetest.exe                  7   optional
 +modules\rostests\winetests\wlanapi\wlanapi_winetest.exe                    7   optional
 +modules\rostests\winetests\ws2_32\ws2_32_winetest.exe                      7   optional
 +modules\rostests\winetests\xmllite\xmllite_winetest.exe                    7   optional
 +
 +
 +modules\wallpaper\Angelus_02_ROSWP.bmp                                     4   optional
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 0000000,0a46a39..0a46a39
mode 000000,100644..100644
--- /dev/null
index 0000000,221bc3d..221bc3d
mode 000000,100644..100644
--- /dev/null
index 0000000,5d3f1c7..5d3f1c7
mode 000000,100644..100644
--- /dev/null
index 0000000,efb53f5..efb53f5
mode 000000,100644..100644
--- /dev/null
index 0000000,d506679..d506679
mode 000000,100644..100644
--- /dev/null
index 0000000,fae1017..fae1017
mode 000000,100644..100644
Binary files differ
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc hal/hal.rbuild
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 0000000,3543652..3543652
mode 000000,100644..100644
--- /dev/null
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 33a8fb8,70583c1..70583c1
Binary files differ
index 12416a0,bc2517d..bc2517d
Binary files differ
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 608ba2f,0000000..b870b49
mode 100644,000000..100644
--- /dev/null
@@@ -1,1075 -1,0 +1,1080 @@@
 +/*
 + * PROJECT:         ReactOS Kernel
 + * LICENSE:         GPL - See COPYING in the top level directory
 + * FILE:            subsystems/win32/win32k/ntuser/windc.c
 + * PURPOSE:         Window DC management
 + * COPYRIGHT:       Copyright 2007 ReactOS
 + *
 + */
 +
 +/* INCLUDES ******************************************************************/
 +
 +#include <w32k.h>
 +
 +#define NDEBUG
 +#include <debug.h>
 +
 +int FASTCALL CLIPPING_UpdateGCRegion(DC* Dc);
 +
 +/* GLOBALS *******************************************************************/
 +
 +/* NOTE - I think we should store this per window station (including gdi objects) */
 +/* Answer: No, use the DCE pMonitor to compare with! */
 +
 +static LIST_ENTRY LEDce;
 +static INT DCECount = 0; // Count of DCE in system.
 +
 +#define DCX_CACHECOMPAREMASK (DCX_CLIPSIBLINGS | DCX_CLIPCHILDREN | \
 +                              DCX_NORESETATTRS | DCX_LOCKWINDOWUPDATE | \
 +                              DCX_LAYEREDWIN | DCX_CACHE | DCX_WINDOW | \
 +                              DCX_PARENTCLIP)
 +
 +/* FUNCTIONS *****************************************************************/
 +
 +//
 +// This should be moved to dc.c or dcutil.c.
 +//
 +HDC FASTCALL
 +DceCreateDisplayDC(VOID)
 +{
 +  HDC hDC;
 +  UNICODE_STRING DriverName;
 +  RtlInitUnicodeString(&DriverName, L"DISPLAY");
 +  hDC = IntGdiCreateDC(&DriverName, NULL, NULL, NULL, FALSE);
 +
 +  co_IntGraphicsCheck(TRUE);
 +
 +//
 +// If NULL, first time through! Build the default window dc!
 +//
 +  if (hDC && !defaultDCstate) // Ultra HAX! Dedicated to GvG!
 +  { // This is a cheesy way to do this.
 +      PDC dc = DC_LockDc ( hDC );
 +      defaultDCstate = ExAllocatePoolWithTag(PagedPool, sizeof(DC), TAG_DC);
 +      RtlZeroMemory(defaultDCstate, sizeof(DC));
 +      defaultDCstate->pdcattr = &defaultDCstate->dcattr;
 +      DC_vCopyState(dc, defaultDCstate, TRUE);
 +      DC_UnlockDc( dc );
 +      InitializeListHead(&LEDce);
 +  }
 +  return hDC;
 +}
 +
 +static
 +HRGN FASTCALL
 +DceGetVisRgn(PWINDOW_OBJECT Window, ULONG Flags, HWND hWndChild, ULONG CFlags)
 +{
 +  HRGN VisRgn;
 +
 +  VisRgn = VIS_ComputeVisibleRegion( Window,
 +                                     0 == (Flags & DCX_WINDOW),
 +                                     0 != (Flags & DCX_CLIPCHILDREN),
 +                                     0 != (Flags & DCX_CLIPSIBLINGS));
 +
 +  if (VisRgn == NULL)
 +      VisRgn = IntSysCreateRectRgn(0, 0, 0, 0);
 +
 +  return VisRgn;
 +}
 +
 +PDCE FASTCALL
 +DceAllocDCE(PWINDOW_OBJECT Window OPTIONAL, DCE_TYPE Type)
 +{
 +  PDCE pDce;
 +  PWND Wnd = NULL;
 +
 +  if (Window) Wnd = Window->Wnd;
 +
 +  pDce = ExAllocatePoolWithTag(PagedPool, sizeof(DCE), TAG_PDCE);
 +  if(!pDce)
 +        return NULL;
 +
 +  pDce->hDC = DceCreateDisplayDC();
 +  if (!pDce->hDC)
 +  {
 +      ExFreePoolWithTag(pDce, TAG_PDCE);
 +      return NULL;
 +  }
 +  DCECount++;
 +  DPRINT("Alloc DCE's! %d\n",DCECount);
 +  pDce->hwndCurrent = (Window ? Window->hSelf : NULL);
 +  pDce->pwndOrg  = Wnd;
 +  pDce->pwndClip = Wnd;
 +  pDce->hrgnClip = NULL;
 +  pDce->hrgnClipPublic = NULL;
 +  pDce->hrgnSavedVis = NULL;
 +  pDce->ppiOwner = NULL;
 +
 +  InsertTailList(&LEDce, &pDce->List);
 +
 +  DCU_SetDcUndeletable(pDce->hDC);
 +
 +  if (Type == DCE_WINDOW_DC || Type == DCE_CLASS_DC) //Window DCE have ownership.
 +  {
 +     pDce->ptiOwner = GetW32ThreadInfo();
 +  }
 +  else
 +  {
 +     DPRINT("FREE DCATTR!!!! NOT DCE_WINDOW_DC!!!!! hDC-> %x\n", pDce->hDC);
 +     IntGdiSetDCOwnerEx( pDce->hDC, GDI_OBJ_HMGR_NONE, FALSE);
 +     pDce->ptiOwner = NULL;
 +  }
 +
 +  if (Type == DCE_CACHE_DC)
 +  {
 +     pDce->DCXFlags = DCX_CACHE | DCX_DCEEMPTY;
 +  }
 +  else
 +  {
 +     pDce->DCXFlags = DCX_DCEBUSY;
 +     if (Wnd)
 +     {
 +        if (Type == DCE_WINDOW_DC)
 +        {
 +          if (Wnd->style & WS_CLIPCHILDREN) pDce->DCXFlags |= DCX_CLIPCHILDREN;
 +          if (Wnd->style & WS_CLIPSIBLINGS) pDce->DCXFlags |= DCX_CLIPSIBLINGS;
 +        }
 +     }
 +  }
 +  return(pDce);
 +}
 +
 +static VOID APIENTRY
 +DceSetDrawable( PWINDOW_OBJECT Window OPTIONAL,
 +                HDC hDC,
 +                ULONG Flags,
 +                BOOL SetClipOrigin)
 +{
 +  PWND Wnd;
 +  DC *dc = DC_LockDc(hDC);
 +  if(!dc)
 +      return;
 +
 +  if (Window == NULL)
 +  {
 +      dc->ptlDCOrig.x = 0;
 +      dc->ptlDCOrig.y = 0;
 +  }
 +  else
 +  {
 +      Wnd = Window->Wnd;
 +      if (Flags & DCX_WINDOW)
 +      {
 +         dc->ptlDCOrig.x = Wnd->rcWindow.left;
 +         dc->ptlDCOrig.y = Wnd->rcWindow.top;
 +      }
 +      else
 +      {
 +         dc->ptlDCOrig.x = Wnd->rcClient.left;
 +         dc->ptlDCOrig.y = Wnd->rcClient.top;
 +      }
 +  }
 +  DC_UnlockDc(dc);
 +}
 +
 +
 +static VOID FASTCALL
 +DceDeleteClipRgn(DCE* Dce)
 +{
 +   Dce->DCXFlags &= ~(DCX_EXCLUDERGN | DCX_INTERSECTRGN);
 +
 +   if (Dce->DCXFlags & DCX_KEEPCLIPRGN )
 +   {
 +      Dce->DCXFlags &= ~DCX_KEEPCLIPRGN;
 +   }
 +   else if (Dce->hrgnClip != NULL)
 +   {
 +      GDIOBJ_FreeObjByHandle(Dce->hrgnClip, GDI_OBJECT_TYPE_REGION|GDI_OBJECT_TYPE_SILENT);
 +   }
 +
 +   Dce->hrgnClip = NULL;
 +
 +   /* make it dirty so that the vis rgn gets recomputed next time */
 +   Dce->DCXFlags |= DCX_DCEDIRTY;
 +}
 +
 +static INT FASTCALL
 +DceReleaseDC(DCE* dce, BOOL EndPaint)
 +{
 +   if (DCX_DCEBUSY != (dce->DCXFlags & (DCX_INDESTROY | DCX_DCEEMPTY | DCX_DCEBUSY)))
 +   {
 +      return 0;
 +   }
 +
 +   /* restore previous visible region */
 +   if ((dce->DCXFlags & (DCX_INTERSECTRGN | DCX_EXCLUDERGN)) &&
 +         ((dce->DCXFlags & DCX_CACHE) || EndPaint))
 +   {
 +      DceDeleteClipRgn(dce);
 +   }
 +
 +   if (dce->DCXFlags & DCX_CACHE)
 +   {
 +      if (!(dce->DCXFlags & DCX_NORESETATTRS))
 +      {
 +         /* make the DC clean so that SetDCState doesn't try to update the vis rgn */
 +         IntGdiSetHookFlags(dce->hDC, DCHF_VALIDATEVISRGN);
 +
 +         // Clean the DC
 +         if (!IntGdiCleanDC(dce->hDC)) return 0;
 +
 +         if (dce->DCXFlags & DCX_DCEDIRTY)
 +         {
 +           /* don't keep around invalidated entries
 +            * because SetDCState() disables hVisRgn updates
 +            * by removing dirty bit. */
 +           dce->hwndCurrent = 0;
 +           dce->DCXFlags &= DCX_CACHE;
 +           dce->DCXFlags |= DCX_DCEEMPTY;
 +         }
 +      }
 +      dce->DCXFlags &= ~DCX_DCEBUSY;
 +      DPRINT("Exit!!!!! DCX_CACHE!!!!!!   hDC-> %x \n", dce->hDC);
 +      if (!IntGdiSetDCOwnerEx( dce->hDC, GDI_OBJ_HMGR_NONE, FALSE))
 +         return 0;
 +      dce->ptiOwner = NULL; // Reset ownership.
 +      dce->ppiOwner = NULL;
 +
 +#if 0 // Need to research and fix before this is a "growing" issue.
 +      if (++DCECache > 32)
 +      {
 +         pLE = LEDce.Flink;
 +         pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +         do
 +         {
 +            if (!(pDCE->DCXFlags & DCX_DCEBUSY))
 +            {  /* Free the unused cache DCEs. */
 +               pDCE = DceFreeDCE(pDCE, TRUE);
 +               if (!pDCE) break;
 +               continue;
 +            }
 +         }
 +         while (pLE != &LEDce );
 +      }
 +#endif      
 +   }
 +   return 1; // Released!
 +}
 +
 +static VOID FASTCALL
 +DceUpdateVisRgn(DCE *Dce, PWINDOW_OBJECT Window, ULONG Flags)
 +{
 +   HANDLE hRgnVisible = NULL;
 +   ULONG DcxFlags;
 +   PWINDOW_OBJECT DesktopWindow;
 +
 +   if (Flags & DCX_PARENTCLIP)
 +   {
 +      PWINDOW_OBJECT Parent;
 +      PWND ParentWnd;
 +
 +      Parent = Window->spwndParent;
 +      if(!Parent)
 +      {
 +         hRgnVisible = NULL;
 +         goto noparent;
 +      }
 +
 +      ParentWnd = Parent->Wnd;
 +
 +      if (ParentWnd->style & WS_CLIPSIBLINGS)
 +      {
 +         DcxFlags = DCX_CLIPSIBLINGS |
 +                    (Flags & ~(DCX_CLIPCHILDREN | DCX_WINDOW));
 +      }
 +      else
 +      {
 +         DcxFlags = Flags & ~(DCX_CLIPSIBLINGS | DCX_CLIPCHILDREN | DCX_WINDOW);
 +      }
 +      hRgnVisible = DceGetVisRgn(Parent, DcxFlags, Window->hSelf, Flags);
 +   }
 +   else if (Window == NULL)
 +   {
 +      DesktopWindow = UserGetWindowObject(IntGetDesktopWindow());
 +      if (NULL != DesktopWindow)
 +      {
 +         hRgnVisible = IntSysCreateRectRgnIndirect(&DesktopWindow->Wnd->rcWindow);
 +      }
 +      else
 +      {
 +         hRgnVisible = NULL;
 +      }
 +   }
 +   else
 +   {
 +      hRgnVisible = DceGetVisRgn(Window, Flags, 0, 0);
 +   }
 +
 +noparent:
 +   if (Flags & DCX_INTERSECTRGN)
 +   {
 +      if(Dce->hrgnClip != NULL)
 +      {
 +         NtGdiCombineRgn(hRgnVisible, hRgnVisible, Dce->hrgnClip, RGN_AND);
 +      }
 +      else
 +      {
 +         if(hRgnVisible != NULL)
 +         {
 +            REGION_FreeRgnByHandle(hRgnVisible);
 +         }
 +         hRgnVisible = IntSysCreateRectRgn(0, 0, 0, 0);
 +      }
 +   }
 +   else if (Flags & DCX_EXCLUDERGN && Dce->hrgnClip != NULL)
 +   {
 +      NtGdiCombineRgn(hRgnVisible, hRgnVisible, Dce->hrgnClip, RGN_DIFF);
 +   }
 +
 +   Dce->DCXFlags &= ~DCX_DCEDIRTY;
 +   GdiSelectVisRgn(Dce->hDC, hRgnVisible);
 +
 +   if (Window != NULL)
 +   {
 +      IntEngWindowChanged(Window, WOC_RGN_CLIENT);
 +   }
 +
 +   if (hRgnVisible != NULL)
 +   {
 +      REGION_FreeRgnByHandle(hRgnVisible);
 +   }
 +}
 +
 +HDC FASTCALL
 +UserGetDCEx(PWINDOW_OBJECT Window OPTIONAL, HANDLE ClipRegion, ULONG Flags)
 +{
 +   PWINDOW_OBJECT Parent;
 +   ULONG DcxFlags;
 +   DCE* Dce = NULL;
 +   BOOL UpdateClipOrigin = FALSE;
 +   PWND Wnd = NULL;
 +   HDC hDC = NULL;
 +   PPROCESSINFO ppi;
 +   PLIST_ENTRY pLE;
 +
 +   if (NULL == Window)
 +   {
 +      Flags &= ~DCX_USESTYLE;
 +      Flags |= DCX_CACHE;
 +   }
 +   else
 +       Wnd = Window->Wnd;
 +
 +   if (Flags & (DCX_WINDOW | DCX_PARENTCLIP)) Flags |= DCX_CACHE;
 +
 +   // When GetDC is called with hWnd nz, DCX_CACHE & _WINDOW are clear w _USESTYLE set.
 +   if (Flags & DCX_USESTYLE)
 +   {
 +      Flags &= ~(DCX_CLIPCHILDREN | DCX_CLIPSIBLINGS | DCX_PARENTCLIP);
 +      if (!(Flags & DCX_WINDOW)) // not window rectangle
 +      {
 +         if (Wnd->pcls->style & CS_PARENTDC)
 +         {
 +            Flags |= DCX_PARENTCLIP;
 +         }
 +
 +         if (!(Flags & DCX_CACHE) && // Not on the cheap wine list.
 +             !(Wnd->pcls->style & CS_OWNDC) )
 +         {
 +            if (!(Wnd->pcls->style & CS_CLASSDC))
 +            // The window is not POWNED or has any CLASS, so we are looking for cheap wine.
 +               Flags |= DCX_CACHE;
 +            else
 +            {
 +               if (Wnd->pcls->pdce) hDC = ((PDCE)Wnd->pcls->pdce)->hDC;
 +               DPRINT("We have CLASS!!\n");
 +            }
 +         }
 +/*         else // For Testing!
 +         {
 +            DPRINT1("We have POWNER!!\n");
 +            if (Window->Dce) DPRINT1("We have POWNER with DCE!!\n");
 +         }
 +*/
 +         if (Wnd->style & WS_CLIPSIBLINGS)
 +         {
 +            Flags |= DCX_CLIPSIBLINGS;
 +         }
 +
 +         if (Wnd->style & WS_CLIPCHILDREN &&
 +             !(Wnd->style & WS_MINIMIZE))
 +         {
 +            Flags |= DCX_CLIPCHILDREN;
 +         }
 +         /* If minized with icon in the set, we are forced to be cheap! */
 +         if (Wnd->style & WS_MINIMIZE &&
 +             Wnd->pcls->hIcon)
 +         {
 +            Flags |= DCX_CACHE;
 +         }
 +      }
 +      else
 +      {
 +         if (Wnd->style & WS_CLIPSIBLINGS) Flags |= DCX_CLIPSIBLINGS;
 +         Flags |= DCX_CACHE;
 +      }
 +   }
 +
 +   if (Flags & DCX_WINDOW) Flags &= ~DCX_CLIPCHILDREN;
 +
 +   if (Flags & DCX_NOCLIPCHILDREN)
 +   {
 +      Flags |= DCX_CACHE;
 +      Flags &= ~(DCX_PARENTCLIP | DCX_CLIPCHILDREN);
 +   }
 +
 +   Parent = (Window ? Window->spwndParent : NULL);
 +
 +   if (NULL == Window || !(Wnd->style & WS_CHILD) || NULL == Parent)
 +   {
 +      Flags &= ~DCX_PARENTCLIP;
 +      Flags |= DCX_CLIPSIBLINGS;
 +   }
 +
 +   /* it seems parent clip is ignored when clipping siblings or children */
 +   if (Flags & (DCX_CLIPSIBLINGS | DCX_CLIPCHILDREN)) Flags &= ~DCX_PARENTCLIP;
 +
 +   if (Flags & DCX_PARENTCLIP)
 +   {
 +      if ((Wnd->style & WS_VISIBLE) &&
 +          (Parent->Wnd->style & WS_VISIBLE))
 +      {
 +         Flags &= ~DCX_CLIPCHILDREN;
 +         if (Parent->Wnd->style & WS_CLIPSIBLINGS)
 +         {
 +            Flags |= DCX_CLIPSIBLINGS;
 +         }
 +      }
 +   }
 +
 +   // Window nz, check to see if we still own this or it is just cheap wine tonight.
 +   if (!(Flags & DCX_CACHE))
 +   {
 +      if ( Wnd->head.pti != GetW32ThreadInfo())
 +         Flags |= DCX_CACHE; // Ah~ Not Powned! Forced to be cheap~
 +   }
 +
 +   DcxFlags = Flags & DCX_CACHECOMPAREMASK;
 +
 +   if (Flags & DCX_CACHE)
 +   { // Scan the cheap wine list for our match.
 +      DCE* DceEmpty = NULL;
 +      DCE* DceUnused = NULL;
 +      KeEnterCriticalRegion();
 +      pLE = LEDce.Flink;
 +      Dce = CONTAINING_RECORD(pLE, DCE, List);
 +      do
 +      {
 +// The reason for this you may ask?
 +// Well, it seems ReactOS calls GetDC with out first creating a desktop DC window!
 +// Need to test for null here. Not sure if this is a bug or a feature.
 +// First time use hax, need to use DceAllocDCE during window display init.
 +         if (!Dce) break;
 +//
 +// The way I understand this, you can have more than one DC per window.
 +// Only one Owned if one was requested and saved and one Cached. 
 +//
 +         if ((Dce->DCXFlags & (DCX_CACHE | DCX_DCEBUSY)) == DCX_CACHE)
 +         {
 +            DceUnused = Dce;
 +            if (Dce->DCXFlags & DCX_DCEEMPTY)
 +            {
 +               DceEmpty = Dce;
 +            }
 +            else if (Dce->hwndCurrent == (Window ? Window->hSelf : NULL) &&
 +                     ((Dce->DCXFlags & DCX_CACHECOMPAREMASK) == DcxFlags))
 +            {
 +               UpdateClipOrigin = TRUE;
 +               break;
 +            }
 +         }
 +         pLE = Dce->List.Flink;
 +         Dce = CONTAINING_RECORD(pLE, DCE, List);
 +      }
 +      while (pLE != &LEDce);
 +      KeLeaveCriticalRegion();
 +
 +      Dce = (DceEmpty == NULL) ? DceUnused : DceEmpty;
 +
 +      if (Dce == NULL)
 +      {
 +         Dce = DceAllocDCE(NULL, DCE_CACHE_DC);
 +      }
 +      if (!Dce) return NULL;
 +
 +      Dce->hwndCurrent = (Window ? Window->hSelf : NULL);
 +   }
 +   else // If we are here, we are POWNED or having CLASS.
 +   {
 +      KeEnterCriticalRegion();
 +      pLE = LEDce.Flink;
 +      Dce = CONTAINING_RECORD(pLE, DCE, List);
 +      do
 +      {   // Check for Window handle than HDC match for CLASS.
 +          if ((Dce->hwndCurrent == Window->hSelf) ||
 +              (Dce->hDC == hDC))
 +             break;
 +          pLE = Dce->List.Flink;
 +          Dce = CONTAINING_RECORD(pLE, DCE, List);
 +      }
 +      while (pLE != &LEDce);
 +      KeLeaveCriticalRegion();
 +
 +      if ( (Flags & (DCX_INTERSECTRGN|DCX_EXCLUDERGN)) &&
 +           (Dce->DCXFlags & (DCX_INTERSECTRGN|DCX_EXCLUDERGN)) )          
 +      {
 +          DceDeleteClipRgn(Dce);
 +      }
 +   }
 +// First time use hax, need to use DceAllocDCE during window display init.
 +   if (NULL == Dce)
 +   {
 +      return(NULL);
 +   }
 +
 +   if (!GDIOBJ_ValidateHandle(Dce->hDC, GDI_OBJECT_TYPE_DC))
 +   {
 +      DPRINT1("FIXME: Got DCE with invalid hDC! 0x%x\n", Dce->hDC);
 +      Dce->hDC = DceCreateDisplayDC();
 +      /* FIXME: Handle error */
 +   }
 +
 +   Dce->DCXFlags = Flags | DCX_DCEBUSY;
 +
 +   /*
 +      Bump it up! This prevents the random errors in wine dce tests and with
 +      proper bits set in DCX_CACHECOMPAREMASK.
 +      Reference:
 +        http://www.reactos.org/archives/public/ros-dev/2008-July/010498.html
 +        http://www.reactos.org/archives/public/ros-dev/2008-July/010499.html
 +    */
 +   if (pLE != &LEDce)
 +   {
 +      RemoveEntryList(&Dce->List);
 +      InsertHeadList(&LEDce, &Dce->List);
 +   }
 +
 +   /* Introduced in rev 6691 and modified later. */
 +   if ( (Flags & DCX_INTERSECTUPDATE) && !ClipRegion )
 +   {
 +      Flags |= DCX_INTERSECTRGN | DCX_KEEPCLIPRGN;
 +      Dce->DCXFlags |= DCX_INTERSECTRGN | DCX_KEEPCLIPRGN;
 +      ClipRegion = Window->hrgnUpdate;
 +   }
 +
 +   if (ClipRegion == (HRGN) 1)
 +   {
 +      if (!(Flags & DCX_WINDOW))
 +      {
 +         Dce->hrgnClip = IntSysCreateRectRgnIndirect(&Window->Wnd->rcClient);
 +      }
 +      else
 +      {
 +         Dce->hrgnClip = IntSysCreateRectRgnIndirect(&Window->Wnd->rcWindow);
 +      }
 +      Dce->DCXFlags &= ~DCX_KEEPCLIPRGN;
 +   }
 +   else if (ClipRegion != NULL)
 +   {
 +      if (Dce->hrgnClip != NULL)
 +      {
 +         DPRINT1("Should not be called!!\n");
 +         GDIOBJ_FreeObjByHandle(Dce->hrgnClip, GDI_OBJECT_TYPE_REGION|GDI_OBJECT_TYPE_SILENT);
 +         Dce->hrgnClip = NULL;
 +      }
 +      Dce->hrgnClip = ClipRegion;
 +   }
 +
 +   DceSetDrawable(Window, Dce->hDC, Flags, UpdateClipOrigin);
 +
 +   DceUpdateVisRgn(Dce, Window, Flags);
 +
 +   if (Dce->DCXFlags & DCX_CACHE)
 +   {
 +      DPRINT("ENTER!!!!!! DCX_CACHE!!!!!!   hDC-> %x\n", Dce->hDC);
 +      // Need to set ownership so Sync dcattr will work.
 +      IntGdiSetDCOwnerEx( Dce->hDC, GDI_OBJ_HMGR_POWNED, FALSE);
 +      Dce->ptiOwner = GetW32ThreadInfo(); // Set the temp owning
 +   }
 +
 +   if ( Wnd &&
 +        Wnd->ExStyle & WS_EX_LAYOUTRTL &&
 +       !(Flags & DCX_KEEPLAYOUT) )
 +   {
 +      NtGdiSetLayout(Dce->hDC, -1, LAYOUT_RTL);
 +   }
 +
 +   if (Dce->DCXFlags & DCX_PROCESSOWNED) 
 +   {
 +      ppi = PsGetCurrentProcessWin32Process();
 +      ppi->W32PF_flags |= W32PF_OWNDCCLEANUP;
 +      Dce->ptiOwner = NULL;
 +      Dce->ppiOwner = ppi;
 +   }
 +
 +   return(Dce->hDC);
 +}
 +
 +/***********************************************************************
 + *           DceFreeDCE
 + */
 +PDCE FASTCALL
 +DceFreeDCE(PDCE pdce, BOOLEAN Force)
 +{
 +  DCE *ret;
 +  PLIST_ENTRY pLE;
 +  BOOL Hit = FALSE;
 +
 +  if (NULL == pdce) return NULL;
 +
 +  pLE = pdce->List.Flink;
 +  ret = CONTAINING_RECORD(pLE, DCE, List);
 +
 +  pdce->DCXFlags |= DCX_INDESTROY;
 +
 +  if (Force && !GDIOBJ_OwnedByCurrentProcess(pdce->hDC))
 +  {
 +     DPRINT("Change ownership for DCE! -> %x\n" , pdce);
 +     // Note: Windows sets W32PF_OWNDCCLEANUP and moves on.
 +     if (!IsObjectDead((HGDIOBJ) pdce->hDC))
 +     {
 +         DC_SetOwnership( pdce->hDC, PsGetCurrentProcess());
 +     }
 +     else
 +     {
 +         DPRINT1("Attempted to change ownership of an DCEhDC 0x%x currently being destroyed!!!\n",pdce->hDC);
 +         Hit = TRUE;
 +     }
 +  }
++  else
++  {
++     if (!GreGetObjectOwner(pdce->hDC, GDIObjType_DC_TYPE))
++        DC_SetOwnership( pdce->hDC, PsGetCurrentProcess());
++  }
 +
 +  if (!Hit) IntGdiDeleteDC(pdce->hDC, TRUE);
 +
 +  if (pdce->hrgnClip && !(pdce->DCXFlags & DCX_KEEPCLIPRGN))
 +  {
 +      GDIOBJ_FreeObjByHandle(pdce->hrgnClip, GDI_OBJECT_TYPE_REGION|GDI_OBJECT_TYPE_SILENT);
 +      pdce->hrgnClip = NULL;
 +  }
 +
 +  RemoveEntryList(&pdce->List);
 +
 +  if (IsListEmpty(&pdce->List))
 +  {
 +      DPRINT1("List is Empty! DCE! -> %x\n" , pdce);
 +      return NULL;
 +  }
 +
 +  ExFreePoolWithTag(pdce, TAG_PDCE);
 +
 +  DCECount--;
 +  DPRINT("Freed DCE's! %d \n", DCECount);
 +
 +  return ret;
 +}
 +
 +/***********************************************************************
 + *           DceFreeWindowDCE
 + *
 + * Remove owned DCE and reset unreleased cache DCEs.
 + */
 +void FASTCALL
 +DceFreeWindowDCE(PWINDOW_OBJECT Window)
 +{
 +  PDCE pDCE;
 +  PLIST_ENTRY pLE;
 +
 +  if (DCECount <= 0)
 +  {
 +     DPRINT1("FreeWindowDCE No Entry! %d\n",DCECount);
 +     return;
 +  }
 +
 +  pLE = LEDce.Flink;
 +  pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +  do
 +  {
 +     if (!pDCE)
 +     {
 +        DPRINT1("FreeWindowDCE No DCE Pointer!\n");
 +        break;
 +     }
 +     if (IsListEmpty(&pDCE->List))
 +     {
 +        DPRINT1("FreeWindowDCE List is Empty!!!!\n");
 +        break;
 +     }
 +     if ( pDCE->hwndCurrent == Window->hSelf &&
 +          !(pDCE->DCXFlags & DCX_DCEEMPTY) )
 +     {
 +        if (!(pDCE->DCXFlags & DCX_CACHE)) /* owned or Class DCE*/
 +        {
 +           if (Window->Wnd->pcls->style & CS_CLASSDC) /* Test Class first */
 +           {
 +              if (pDCE->DCXFlags & (DCX_INTERSECTRGN | DCX_EXCLUDERGN)) /* Class DCE*/
 +                 DceDeleteClipRgn(pDCE);
 +              // Update and reset Vis Rgn and clear the dirty bit.
 +              // Should release VisRgn than reset it to default.
 +              DceUpdateVisRgn(pDCE, Window, pDCE->DCXFlags);
 +              pDCE->DCXFlags = DCX_DCEEMPTY|DCX_CACHE;
 +              pDCE->hwndCurrent = 0;
 +
 +              DPRINT("POWNED DCE going Cheap!! DCX_CACHE!! hDC-> %x \n", pDCE->hDC);
 +              if (!IntGdiSetDCOwnerEx( pDCE->hDC, GDI_OBJ_HMGR_NONE, FALSE))
 +              {
 +                  DPRINT1("Fail Owner Switch hDC-> %x \n", pDCE->hDC);
 +                  break;
 +              }
 +              /* Do not change owner so thread can clean up! */
 +           }
 +           else if (Window->Wnd->pcls->style & CS_OWNDC) /* owned DCE*/
 +           {
 +              pDCE = DceFreeDCE(pDCE, FALSE);
 +              if (!pDCE) break;
 +              continue;
 +           }
 +           else
 +           {
 +              DPRINT1("Not POWNED or CLASSDC hwndCurrent -> %x \n", pDCE->hwndCurrent);
 +              ASSERT(FALSE);
 +           }
 +        }
 +        else
 +        {
 +           if (pDCE->DCXFlags & DCX_DCEBUSY) /* shared cache DCE */
 +           {
 +              /* FIXME: AFAICS we are doing the right thing here so
 +               * this should be a DPRINT. But this is best left as an ERR
 +               * because the 'application error' is likely to come from
 +               * another part of Wine (i.e. it's our fault after all).
 +               * We should change this to DPRINT when ReactOS is more stable
 +               * (for 1.0?).
 +               */
 +              DPRINT1("[%p] GetDC() without ReleaseDC()!\n", Window->hSelf);
 +              DceReleaseDC(pDCE, FALSE);
 +           }
 +           pDCE->DCXFlags |= DCX_DCEEMPTY;
 +           pDCE->hwndCurrent = 0;
 +        }
 +     }
 +     pLE = pDCE->List.Flink;
 +     pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +  }
 +  while (pLE != &LEDce);
 +}
 +
 +void FASTCALL
 +DceFreeClassDCE(HDC hDC)
 +{
 +   PDCE pDCE;
 +   PLIST_ENTRY pLE;
 +   pLE = LEDce.Flink;
 +   pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +
 +   do
 +   {
 +       if(!pDCE) break;
 +       if (pDCE->hDC == hDC)
 +       {
 +          pDCE = DceFreeDCE(pDCE, TRUE); // Might have gone cheap!
 +          if (!pDCE) break;
 +          continue;
 +       }
 +       pLE = pDCE->List.Flink;
 +       pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +   }
 +   while (pLE != &LEDce);
 +}
 +
 +void FASTCALL
 +DceFreeThreadDCE(PTHREADINFO pti)
 +{
 +   PDCE pDCE;
 +   PLIST_ENTRY pLE;
 +   pLE = LEDce.Flink;
 +   pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +
 +   do
 +   {
 +       if(!pDCE) break;
 +       if (pDCE->ptiOwner == pti)
 +       {
 +          if (pDCE->DCXFlags & DCX_CACHE)
 +          {
 +             pDCE = DceFreeDCE(pDCE, TRUE);
 +             if (!pDCE) break;
 +             continue;
 +          }
 +       }
 +       pLE = pDCE->List.Flink;
 +       pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +   }
 +   while (pLE != &LEDce);
 +}
 +
 +VOID FASTCALL
 +DceEmptyCache(VOID)
 +{
 +   PDCE pDCE;
 +   PLIST_ENTRY pLE;
 +   pLE = LEDce.Flink;
 +   pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +
 +   do
 +   {
 +      if(!pDCE) break;
 +      pDCE = DceFreeDCE(pDCE, TRUE);
 +      if(!pDCE) break;
 +   }
 +   while (pLE != &LEDce);
 +}
 +
 +VOID FASTCALL
 +DceResetActiveDCEs(PWINDOW_OBJECT Window)
 +{
 +   DCE *pDCE;
 +   PDC dc;
 +   PWINDOW_OBJECT CurrentWindow;
 +   INT DeltaX;
 +   INT DeltaY;
 +   PLIST_ENTRY pLE;
 +
 +   if (NULL == Window)
 +   {
 +      return;
 +   }
 +   pLE = LEDce.Flink;
 +   pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +   if(!pDCE) return; // Another null test!
 +   do
 +   {
 +      if(!pDCE) break;
 +      if(pLE == &LEDce) break;
 +      if (0 == (pDCE->DCXFlags & (DCX_DCEEMPTY|DCX_INDESTROY)))
 +      {
 +         if (Window->hSelf == pDCE->hwndCurrent)
 +         {
 +            CurrentWindow = Window;
 +         }
 +         else
 +         {
 +            CurrentWindow = UserGetWindowObject(pDCE->hwndCurrent);
 +            if (NULL == CurrentWindow)
 +            {
 +               pLE = pDCE->List.Flink;
 +               pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +               continue;
 +            }
 +         }
 +
 +         if (!GDIOBJ_ValidateHandle(pDCE->hDC, GDI_OBJECT_TYPE_DC) ||
 +             (dc = DC_LockDc(pDCE->hDC)) == NULL)
 +         {
 +            pLE = pDCE->List.Flink;
 +            pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +            continue;
 +         }
 +         if (Window == CurrentWindow || IntIsChildWindow(Window, CurrentWindow))
 +         {
 +            if (pDCE->DCXFlags & DCX_WINDOW)
 +            {
 +               DeltaX = CurrentWindow->Wnd->rcWindow.left - dc->ptlDCOrig.x;
 +               DeltaY = CurrentWindow->Wnd->rcWindow.top - dc->ptlDCOrig.y;
 +               dc->ptlDCOrig.x = CurrentWindow->Wnd->rcWindow.left;
 +               dc->ptlDCOrig.y = CurrentWindow->Wnd->rcWindow.top;
 +            }
 +            else
 +            {
 +               DeltaX = CurrentWindow->Wnd->rcClient.left - dc->ptlDCOrig.x;
 +               DeltaY = CurrentWindow->Wnd->rcClient.top - dc->ptlDCOrig.y;
 +               dc->ptlDCOrig.x = CurrentWindow->Wnd->rcClient.left;
 +               dc->ptlDCOrig.y = CurrentWindow->Wnd->rcClient.top;
 +            }
 +            if (NULL != dc->rosdc.hClipRgn)
 +            {
 +               NtGdiOffsetRgn(dc->rosdc.hClipRgn, DeltaX, DeltaY);
 +               CLIPPING_UpdateGCRegion(dc);
 +            }
 +            if (NULL != pDCE->hrgnClip)
 +            {
 +               NtGdiOffsetRgn(pDCE->hrgnClip, DeltaX, DeltaY);
 +            }
 +         }
 +         DC_UnlockDc(dc);
 +
 +         DceUpdateVisRgn(pDCE, CurrentWindow, pDCE->DCXFlags);
 +
 +         if (Window->hSelf != pDCE->hwndCurrent)
 +         {
 +//            IntEngWindowChanged(CurrentWindow, WOC_RGN_CLIENT);
 +//            UserDerefObject(CurrentWindow);
 +         }
 +      }
 +      pLE = pDCE->List.Flink;
 +      pDCE = CONTAINING_RECORD(pLE, DCE, List);
 +   }
 +   while (pLE != &LEDce);
 +}
 +
 +HWND FASTCALL
 +IntWindowFromDC(HDC hDc)
 +{
 +  DCE *Dce;
 +  PLIST_ENTRY pLE;
 +  HWND Ret = NULL;
 +
 +  pLE = LEDce.Flink;
 +  Dce = CONTAINING_RECORD(pLE, DCE, List);
 +  do
 +  {
 +      if (Dce->hDC == hDc)
 +      {
 +         if (Dce->DCXFlags & DCX_INDESTROY)
 +            Ret = NULL;
 +         else
 +            Ret = Dce->hwndCurrent;
 +         break;
 +      }
 +      pLE = Dce->List.Flink;
 +      Dce = CONTAINING_RECORD(pLE, DCE, List);
 +  }
 +  while (pLE != &LEDce);
 +  return Ret;
 +}
 +
 +INT FASTCALL
 +UserReleaseDC(PWINDOW_OBJECT Window, HDC hDc, BOOL EndPaint)
 +{
 +  PDCE dce;
 +  PLIST_ENTRY pLE;
 +  INT nRet = 0;
 +  BOOL Hit = FALSE;
 +
 +  DPRINT("%p %p\n", Window, hDc);
 +  pLE = LEDce.Flink;
 +  dce = CONTAINING_RECORD(pLE, DCE, List);
 +  do
 +  {
 +     if(!dce) break;
 +     if (dce->hDC == hDc)
 +     {
 +        Hit = TRUE;
 +        break;
 +     }
 +     pLE = dce->List.Flink;
 +     dce = CONTAINING_RECORD(pLE, DCE, List);
 +  }
 +  while (pLE != &LEDce );
 +
 +  if ( Hit && (dce->DCXFlags & DCX_DCEBUSY))
 +  {
 +     nRet = DceReleaseDC(dce, EndPaint);
 +  }
 +
 +  return nRet;
 +}
 +
 +HDC FASTCALL
 +UserGetWindowDC(PWINDOW_OBJECT Wnd)
 +{
 +  return UserGetDCEx(Wnd, 0, DCX_USESTYLE | DCX_WINDOW);
 +}
 +
 +HWND FASTCALL
 +UserGethWnd( HDC hdc, PWNDOBJ *pwndo)
 +{
 +  PWNDGDI pWndgdi;
 +  PWINDOW_OBJECT Wnd;
 +  HWND hWnd;
 +
 +  hWnd = IntWindowFromDC(hdc);
 +
 +  if (hWnd && !(Wnd = UserGetWindowObject(hWnd)))
 +  {
 +     pWndgdi = (WNDGDI *)IntGetProp(Wnd, AtomWndObj);
 +
 +     if ( pWndgdi && pWndgdi->Hwnd == hWnd )
 +     {
 +        if (pwndo) *pwndo = (PWNDOBJ)pWndgdi;
 +     }
 +  }
 +  return hWnd;
 +}
 +
 +HDC APIENTRY
 +NtUserGetDCEx(HWND hWnd OPTIONAL, HANDLE ClipRegion, ULONG Flags)
 +{
 +  PWINDOW_OBJECT Wnd=NULL;
 +  DECLARE_RETURN(HDC);
 +
 +  DPRINT("Enter NtUserGetDCEx\n");
 +  UserEnterExclusive();
 +
 +  if (hWnd && !(Wnd = UserGetWindowObject(hWnd)))
 +  {
 +      RETURN(NULL);
 +  }
 +  RETURN( UserGetDCEx(Wnd, ClipRegion, Flags));
 +
 +CLEANUP:
 +  DPRINT("Leave NtUserGetDCEx, ret=%i\n",_ret_);
 +  UserLeave();
 +  END_CLEANUP;
 +}
 +
 +/*
 + * NtUserGetWindowDC
 + *
 + * The NtUserGetWindowDC function retrieves the device context (DC) for the
 + * entire window, including title bar, menus, and scroll bars. A window device
 + * context permits painting anywhere in a window, because the origin of the
 + * device context is the upper-left corner of the window instead of the client
 + * area.
 + *
 + * Status
 + *    @implemented
 + */
 +HDC APIENTRY
 +NtUserGetWindowDC(HWND hWnd)
 +{
 +  return NtUserGetDCEx(hWnd, 0, DCX_USESTYLE | DCX_WINDOW);
 +}
 +
 +HDC APIENTRY
 +NtUserGetDC(HWND hWnd)
 +{
 + DPRINT("NtUGetDC -> %x:%x\n", hWnd, !hWnd ? DCX_CACHE | DCX_WINDOW : DCX_USESTYLE );
 +
 +  return NtUserGetDCEx(hWnd, NULL, NULL == hWnd ? DCX_CACHE | DCX_WINDOW : DCX_USESTYLE);
 +}
 +
 +/*!
 + * Select logical palette into device context.
 + * \param     hDC                             handle to the device context
 + * \param     hpal                            handle to the palette
 + * \param     ForceBackground         If this value is FALSE the logical palette will be copied to the device palette only when the applicatioon
 + *                                                            is in the foreground. If this value is TRUE then map the colors in the logical palette to the device
 + *                                                            palette colors in the best way.
 + * \return    old palette
 + *
 + * \todo      implement ForceBackground == TRUE
 +*/
 +HPALETTE
 +APIENTRY
 +NtUserSelectPalette(HDC  hDC,
 +              HPALETTE  hpal,
 +       BOOL  ForceBackground)
 +{
 +    HPALETTE oldPal;
 +    UserEnterExclusive();
 +    // Implement window checks
 +    oldPal = GdiSelectPalette( hDC, hpal, ForceBackground);
 +    UserLeave();
 +    return oldPal;
 +}
 +
 +
 +/* EOF */
index 6bb5685,0000000..c2b5434
mode 100644,000000..100644
--- /dev/null
@@@ -1,186 -1,0 +1,209 @@@
-     pdcattr = dc->pdcattr;
 +
 +#include <w32k.h>
 +
 +#define NDEBUG
 +#include <debug.h>
 +
 +
 +//
 +//
 +// Gdi Batch Flush support functions.
 +//
 +
 +//
 +// DoDeviceSync
 +//
 +// based on IntEngEnter from eng/engmisc.c
 +//
 +VOID
 +FASTCALL
 +DoDeviceSync( SURFOBJ *Surface, PRECTL Rect, FLONG fl)
 +{
 +  PPDEVOBJ Device = (PDEVOBJ*)Surface->hdev;
 +// No punting and "Handle to a surface, provided that the surface is device-managed. 
 +// Otherwise, dhsurf is zero".
 +  if (!(Device->flFlags & PDEV_DRIVER_PUNTED_CALL) && (Surface->dhsurf))
 +  {
 +     if (Device->DriverFunctions.SynchronizeSurface)
 +     {
 +       Device->DriverFunctions.SynchronizeSurface(Surface, Rect, fl);
 +     }
 +     else
 +     {
 +       if (Device->DriverFunctions.Synchronize)
 +       {
 +         Device->DriverFunctions.Synchronize(Surface->dhpdev, Rect);
 +       }
 +     }
 +  }
 +}
 +
 +VOID
 +FASTCALL
 +SynchonizeDriver(FLONG Flags)
 +{
 +  SURFOBJ *SurfObj; 
 +  PPDEVOBJ Device;
 +  
 +  if (Flags & GCAPS2_SYNCFLUSH)
 +      Flags = DSS_FLUSH_EVENT;
 +  if (Flags & GCAPS2_SYNCTIMER)
 +      Flags = DSS_TIMER_EVENT;
 +
 +  Device = IntEnumHDev();
 +//  UNIMPLEMENTED;
 +//ASSERT(FALSE);
 +  SurfObj = 0;// EngLockSurface( Device->pSurface );
 +  if(!SurfObj) return;
 +  DoDeviceSync( SurfObj, NULL, Flags);
 +  EngUnlockSurface(SurfObj);
 +  return;
 +}
 +
 +//
 +// Process the batch.
 +//
 +ULONG
 +FASTCALL
 +GdiFlushUserBatch(PDC dc, PGDIBATCHHDR pHdr)
 +{
++  BOOL Hit = FALSE;
++  ULONG Cmd = 0, Size = 0;
 +  PDC_ATTR pdcattr = NULL;
 +
 +  if (dc)
 +  {
-   // The thread is approaching the end of sunset.
-   switch(pHdr->Cmd)
++     pdcattr = dc->pdcattr;
 +  }
-   return pHdr->Size; // Return the full size of the structure.
++
++  _SEH2_TRY
++  {
++     Cmd = pHdr->Cmd;
++     Size = pHdr->Size; // Return the full size of the structure.
++  }
++  _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
++  {
++     Hit = TRUE;
++  }
++  _SEH2_END;
++
++  if (Hit)
++  {
++     DPRINT1("WARNING! GdiBatch Fault!\n");
++     return 0;
++  }
++
++  // FYI! The thread is approaching the end of sunset.
++  switch(Cmd)
 +  {
 +     case GdiBCPatBlt: // Highest pri first!
 +        break;
 +     case GdiBCPolyPatBlt:
 +        break;
 +     case GdiBCTextOut:
 +        break;
 +     case GdiBCExtTextOut:
 +        break;
 +     case GdiBCSetBrushOrg:
 +     {
 +        PGDIBSSETBRHORG pgSBO;
 +        if(!dc) break;
 +        pgSBO = (PGDIBSSETBRHORG) pHdr;
 +        pdcattr->ptlBrushOrigin = pgSBO->ptlBrushOrigin;
 +        break;
 +     }
 +     case GdiBCExtSelClipRgn:
 +        break;
 +     case GdiBCSelObj:
 +     {
 +        PGDIBSOBJECT pgO;
 +        if(!dc) break;
 +        pgO = (PGDIBSOBJECT) pHdr;
 +        TextIntRealizeFont((HFONT) pgO->hgdiobj, NULL);
 +        pdcattr->ulDirty_ &= ~(DIRTY_CHARSET);
 +     }
 +     case GdiBCDelRgn:
 +        DPRINT("Delete Region Object!\n");
 +     case GdiBCDelObj:
 +     {
 +        PGDIBSOBJECT pgO = (PGDIBSOBJECT) pHdr;
 +        GreDeleteObject( pgO->hgdiobj );
 +        break;
 +     }
 +     default:
 +        break;
 +  }
 +
-            pHdr += GdiFlushUserBatch(pDC, (PGDIBATCHHDR) pHdr);
++  return Size; 
 +}
 +
 +/*
 + * NtGdiFlush
 + *
 + * Flushes the calling thread's current batch.
 + */
 +VOID
 +APIENTRY
 +NtGdiFlush(VOID)
 +{
 +  SynchonizeDriver(GCAPS2_SYNCFLUSH);
 +}
 +
 +/*
 + * NtGdiFlushUserBatch
 + *
 + * Callback for thread batch flush routine.
 + *
 + * Think small & fast!
 + */
 +NTSTATUS
 +APIENTRY
 +NtGdiFlushUserBatch(VOID)
 +{
 +  PTEB pTeb = NtCurrentTeb();
 +  ULONG GdiBatchCount = pTeb->GdiBatchCount;
 +
 +  if( (GdiBatchCount > 0) && (GdiBatchCount <= (GDIBATCHBUFSIZE/4)))
 +  {
 +    HDC hDC = (HDC) pTeb->GdiTebBatch.HDC;
 +
 +    /*  If hDC is zero and the buffer fills up with delete objects we need
 +        to run anyway.
 +     */
 +    if (hDC || GdiBatchCount)
 +    {
 +      PCHAR pHdr = (PCHAR)&pTeb->GdiTebBatch.Buffer[0];
 +      PDC pDC = NULL;
 +
 +      if (hDC && !IsObjectDead(hDC))
 +      {
 +          pDC = DC_LockDc(hDC);
 +      }
 +
 +       // No need to init anything, just go!
 +       for (; GdiBatchCount > 0; GdiBatchCount--)
 +       {
++           ULONG Size;
 +           // Process Gdi Batch!
++           Size = GdiFlushUserBatch(pDC, (PGDIBATCHHDR) pHdr);
++           if (!Size) break;
++           pHdr += Size;
 +       }
 +
 +       if (pDC)
 +       {
 +           DC_UnlockDc(pDC);
 +       }
 +
 +       // Exit and clear out for the next round.
 +       pTeb->GdiTebBatch.Offset = 0;
 +       pTeb->GdiBatchCount = 0;
 +       pTeb->GdiTebBatch.HDC = 0;
 +    }
 +  }
 +
 +  // FIXME: on xp the function returns &pTeb->RealClientId, maybe VOID?
 +  return STATUS_SUCCESS;
 +}
 +
 +