Arwinss

From ReactOS Wiki
Revision as of 19:33, 23 July 2009 by Fireball (talk | contribs) (TODO)
Jump to: navigation, search

Arwinss

An alternative implementation of core Win32 subsystem components.

Usage

Checkout the arwinss branch (svn://svn.reactos.org/reactos/branches/arwinss/reactos), and compile using following command:

makex user32 gdi32 win32k winent win32csr freetype

This will build you all needed modules of a new subsystem, which you need to copy over to the installed ReactOS version.

IMPORTANT: Set your display bit depth to 32bpp and resolution to 800x600.

Architecture

Arwinss uses parts of Wine architecture, and parts of Windows NT architecture in appropriate places and in a good way. It consists of the following five modules, one of them being optional (winex11.drv):

  • dll/win32/freetype - implements usermode font rendering (FreeType library, with small ros glue), used by gdi32.dll
  • dll/win32/user32 - implements USER API
  • dll/win32/gdi32 - implements GDI API
  • dll/win32/winent.drv - implements native graphics and user drivers
  • dll/win32/winex11.drv - implements X11 X-windows graphics and user drivers
  • subsystems/win32/win32k - implements kernel mode counter part of the native graphics driver and a kernel mode USER server.

Hacking

Most of the hacking happens in winent.drv and win32k.sys, with very rare fixes to the user32/gdi32 (mainly, because it's a tested Wine's code with only minor changes).

TODO

  • Check situation with desktop and top windows - need to ensure there is no auto "one desktop per application" creation happens!
  • Enable commented out places in the font output code (ET_OPAQUE, etc)
  • No desktop background (hacked away in win32csr)
  • Fix absence of a background color in windows, and general lacking of windows painting
  • Fix RosGdiSelectBitmap with an incorrect user bitmap handle (probably a stock bitmap?)
  • Make win32k/wine/queue.c (timer callback and timeout callback) multithread aware. Right now it doesn't lock its lists
  • Make user/kernel handles mapping multithread aware
  • Add some real locking to GDI_ObjGetPtr / GDI_ObjRelease
  • Implement disabled surface bits locking for concurrent accesses
  • Implement mouse cursor support in win32k
  • Implement user input in win32k and winent.drv
  • Implement a locking mechanism for GDI kernel mode objects
  • Add commented out CombinedClipping region back into all graphics operations
  • Fix all remaining bugs which prevent /CONSOLE booting from working perfectly