ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

ReactOS Community > ReactOS Wiki

Arwinss

From ReactOS

Jump to: navigation, search

Arwinss is an alternative implementation of the core Win32 subsystem components. Technical information about implementation details is available at this page: Arwinss technical.

Contents

Usage

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

makex comctl32 user32 gdi32 win32k winent win32csr freetype kernel32 explorer winlogon

This will build all needed modules of a new subsystem, which you need to copy over to the installed ReactOS version (see Transfer files from the host OS to the virtual drive).

If you want to build winex11 module, you need to firstly copy lib/3rdparty/libX11/libX11.a file from your working copy to the obj-i386/lib/3rdparty/libX11 directory (creating it if it does not exist). This will fix the winex11.drv linking issues, and you can just type

makex winex11

to build this optional module.

Architecture

Arwinss uses parts of the Wine architecture and parts of Windows NT architecture in appropriate places and in a good way.The overall call flow / architecture of Arwinss looks like this:

Image:arwinss.png


It consists of the following modules, one of them being optional (winex11.drv):

  • dll/3rdparty/freetype - implements usermode font rendering (FreeType library, with small ReactOS 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, a Simple Window Manager (SWM) and a kernel mode USER server.
  • subsystems/win32/csrss/win32csr - implements needed parts of the CSR subsystem along with handling user input

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).

Convention for marking changes. C++ code comments (//) mean that the place has some special mark up for debugging. A typical use is for a

// FIXME: Something

Potential Benefits

These bugs would be fixed if Arwinss was ready (just a short list):

IDResolutionSummary (9 tasks)
1175comctl32: listbox does not hide scrollbars in listbox
1776Microsoft remote desktop client: computername can't be entered
2428Nonstop scrolling hangs entire GUI
3500charmap: redrawing bug
4612Tn5250: can't move window
5069Image (scaling) artifacts in MSI installers
933OpenOffice: v 1.x.x displays garbled text in setup and app itself
1239PATCH: winamp: main window partially drawn
4443FIXEDFirefox 3.0.5 - Can't scroll page with mouse wheel.

As one can see from these bug titles it mainly boils down to drastically improved user32 and gdi32 support.

TODO

IDPStatusSeverityVersionSummary (25 tasks)  
5206P3NEWnormalunspecifiedwindows titles are shown as inactive (gray) while being active 
5212P3NEWnormalunspecifiedPhotoshop 7.0's about window contains unnecessary border 
5231P3NEWnormalunspecifiedsystem tray icons are not visible but they work 
5232P3NEWnormalunspecifiedWinamp: playlist and eq are not hidden while minimizing to tray 
5295P3NEWmajorunspecifiedKey combinations with ALT-GR don't work 
5496P3NEWnormalunspecifiedwordpad: Desktop is not redrawn after closing app 
6859P3NEWnormalunspecifiedInactive buttons text is broken 
5235P3UNCONFIRMEDnormalunspecifiedArtweaver: cant find fonts 
5242P3UNCONFIRMEDnormalunspecifiedPidgin 2.6.5 Crash 
5250P3UNCONFIRMEDnormalunspecifieddouble-free after virtualbox guest additions installed 
5502P3UNCONFIRMEDnormalunspecifiedAbiword: v.2.8.x doesn't start in colordepth<32bit 
5508P3UNCONFIRMEDnormalunspecifiedMouse pointer hides behind UI elements 
5631P3UNCONFIRMEDnormalunspecifiedUninstallers crash 
5668P3UNCONFIRMEDnormalunspecifiedKeyboard doesn't work in DosBox 0.74 
5844P3UNCONFIRMEDnormalunspecifiedBlender 2.49b crashes during start 
5851P3UNCONFIRMEDnormalunspecifiedWordPad is hitting Assertion 'TempPte.u.Long != 0' 
5852P3UNCONFIRMEDnormalunspecifiedWordPad is crashing after pasting 
5853P3UNCONFIRMEDnormalunspecifiedPaint is not redrawn correctly after resizing 
5855P3UNCONFIRMEDnormalunspecifiedSome icons are not shown on desktop in 32bit colordepth 
5864P3UNCONFIRMEDnormalunspecifiedincorrect background on ROS sound recorder captions 
6857P3UNCONFIRMEDnormalunspecifiedREGRESSION: DesktopProperties->Appearance tab crashes OS 
6858P3UNCONFIRMEDnormalunspecifiedREGRESSION: apps are not shown in taskbar 
6860P3UNCONFIRMEDnormalunspecifiedREGRESSION: Timer doesn't work in the end of second stage 
6861P3UNCONFIRMEDnormalunspecifiedREGRESSION: random crash in win32k 
6881+P3UNCONFIRMEDnormalunspecifiedlog off cause screen freeze 

TODO list

1. Fix redrawing issues(bugs Bug 5225 and Bug 5218)

2. Fix crash that prevents booting in VirtualBox

3. Fix installer/uninstaller crash(see bug Bug 5631)

4. Fix garbage on desktop after closing some apps(see bug Bug 5496)

5. Fix zoom and tabs in Firefox(see bug Bug 5637)

6. Fix "Window titles are shown as inactive (gray) while being active" (see bug Bug 5206)

7. Fix arwinss related program crashes(see bug Bug 5627)

8. Fix font mapping (see bug Bug 5327)

9. Fix interaction of windows in apps with few windows(see bug Bug 5232)

10. Fix low level input hooks (used for example in DosBox)

Unimplemented/Fixme that appear during work

1. fixme:(dll\win32\arwinss\winent.drv\userdrv.c:665) RosDrv_SetWindowStyle is UNIMPLEMENTED!

2. fixme:(dll\win32\arwinss\winent.drv\userdrv.c:642) RosDrv_SetWindowIcon is UNIMPLEMENTED!

3. (subsystems\win32\win32k_arwinss\wine\queue.c:814) TODO: Check if anyone is waiting on queue is missing!

4. (subsystems\win32\win32k_arwinss\eng\device.c:927) FIXME: DeviceName is NULL, trying display nr. 1 (TuxRacer)

5. fixme:(dll\win32\arwinss\winent.drv\userdrv.c:636) RosDrv_SetWindowRgn is UNIMPLEMENTED! (Reget)

6. fixme:(dll\win32\arwinss\winent.drv\userdrv.c:626) RosDrv_SetLayeredWindowAttributes is UNIMPLEMENTED! (Qutim)

7. err:(dll\win32\arwinss\winent.drv\gdidrv.c:353) ExtEscape for escape 8 is unimplemented! (SuperTux 0.3.3; ROS text screensaver)

8. fixme:(dll\win32\arwinss\winent.drv\clipboard.c:2440) NTDRV_CLIPBOARD_IsSelectionOwner is UNIMPLEMENTED! (AbiWord. Notepad++)

9. fixme:(dll\win32\arwinss\winent.drv\gdidrv.c:451) RosDrv_GetTextExtentExPoint is UNIMPLEMENTED!

10. fixme:(dll\win32\arwinss\winent.drv\gdidrv.c:609) RosDrv_RealizePalette is UNIMPLEMENTED!

11. fixme:(dll\win32\arwinss\winent.drv\gdidrv.c:959) RosDrv_UnrealizePalette is UNIMPLEMENTED!

12. fixme:(dll\win32\arwinss\winent.drv\gdidrv.c:433) RosDrv_GetNearestColor is UNIMPLEMENTED!


Testing

You can get the latest ARWINSS ISO here.

See Also