This page should be used by DLL maintainers to list the problems they still need to fix and also to jot down any ideas they have on improving them.
For a list of current tasks related to DirectX, see the separate DirectX-ToDo.
For more info, see GdiPlus.
For all drawing operations, create software implementations using alpha_blend_pixels.
All drawing operations should fall back to alpha_blend_pixels for Graphics objects without an HDC.
Smoothing mode (anti-aliasing), which again should also be doable using alpha_blend_pixels.
- Compositing mode (gamma correction).
RGB values are not directly related to intensities, and we must account for that when blending colors. We should be able to do this when the blending is done within gdiplus, but neither gdi32 nor Xrender give us control over gamma correction. We'll have to just assume Xrender does something sane.
Versions of all drawing operations that can handle recording metafiles. These will probably call a METAFILE_* function (defined in metafile.c) to write appropriate EMF/EMF+ records.
- Strings (most formatting options are currently ignored).
- Metafile handling (WMF, EMF, EMF+) is not really implemented.
- GIF files cannot be saved.
- Many drawing operations do not work properly on bitmaps with an alpha channel or reference a user buffer.
- Startup/shutdown functions are currently stubs (but are they even necessary? What is their purpose in Windows?)
Object locking (look into the ObjectBusy error code).
- There are numerous unimplemented objects and functions.
- Implement hhctrl.ocx
Use BindToStorage in IPersistMoniker::Load (done except http, https and ftp protocols)
- Use moniker to load elements of the page (done except http, https and ftp protocols)
Handle correctly IHlinkFrame service
Implement IPersistHistory interface
Implement missing Refresh and Stop functionalities.
Implement Show*HTMLDialog API
- ...and much more
Use IMoniker::BindToObject to create documents
- Fix the loading routine
- Merge all tests into GIT.
- Many of the functions still need to be implemented.
Implement URLDownload* functions on top of URLMoniker
Complete implementation of CoInternet* functions
CoInternetParseUrl (commonly used actions are implemented)
- Implement any other APIs
- Make all controls dpi aware
- Implement theming suport for all controls
- Implement these controls and dialogs:
- (Re)audit these controls:
- Implement conformance tests for the following source files in dlls/comctl32:
- rebar is pretty horribly broken, trashing some programs and causing problems with left-hand sidebars in IE.
Unicode version of Page Setup is not implemented correctly.
- Need more tests.
PrintDlgEx is just a stub.
- Add support for keyboard layout APIs.
IniFileMapping has not been implemented.
Split 16/32 function, finish moving stuff into ntdll (review FS & device support)
- Implement non-local named pipes and mailslots over SMB
- Implement SMB over Netbios
Find the full path of the INF in install_init.
Rewrite DelNodeW with tests.
Call cabinet.Extract in ExecuteCab if a cab file is provided.
- Implement Backup/Rollback API.
- Add initial tests for install API.
- Handle install flags.
- Add reboot handling.
Handle PreRollBack in ExecuteCab only.
- Determine proper platform to install on.
Factor out getting working_dir in install_init.
Check that the INF is advanced in install_init.
Determine the proper input structure for DoInfInstall (it's missing struct members as is).
In net, write a dummy service to respond to start and stop commands.
- Implement security APIs and make them use native OS security facilities.
- Implement the undocumented "NT Ports" API (aka "LPC") used by NT's rpcrt4
- Integrate ICreateTypeLib support with ITypeLib support
- User defined types (e.g. IRecordInfo)
- Custom marshalling functions for various data types
- SIO_GET_INTERFACE_LIST support for IPX
- IPv6 support
- More unit tests, e.g. for asynchronous IO.
- Make sure OOB data is handled properly.
- WS2: Implement service programming interface (SPI), use for supporting other services.
- Try to provide more services such as IrDA natively.
- Fix stubs left in ws2_32.spec
- Fill out the matrix of per-type /Oi marshalling API's.
- Some real RPC tests; although there are some tests of some peripheral rpcrt4 APIs, no actual RPCs are tested.
- Implement the OXID resolver and other ORPC peccadilloes
- Implement the audio compression codecs.
- Fix Sound Blaster emulation.
- Improve audio latency
- No longer use the hack in Wine sound drivers to map the DSound driver interface to an existing WinMM driver (impacts dsound.dll and winmm + all low level audio drivers; will likely require a real installation scheme for MM drivers)
ALSA multimedia driver:
- Check for 1.0 correctness
MCI (Media Control Interface) drivers:
- Missing the mcianim drivers.
- Handling of palettes
- Lots of messages still need to be handled
- Support more and less than one audio stream
- Stopping while playing should stop audio playback ASAP
- Opening must be possible without filename (use load later to)
- Make the whole library thread safe
- Interface for AVI files, the native version has problems with reading Wine's files
- API for clipboard, currently only stubs
- AVIFileProxy is missing.
- Implement IAVIStreaming (doesn't break functionality but limits performance significantly)
Support all flags in DrawDib
Add palette handling to DrawDib
- Semi-stub implementation for file dialogs with AVI preview.
- Need to use OFN_ENABLEHOOK flag.
- Stub implementation for codec-selection-dialog
- Resources are missing (also see the 2 above points)
StretchDib method is missing
- Many 16-bit methods are missing
- MCIWnd shouldn't open device with filename if one isn't given
- MCIWnd leaves Windows empty when opening a device fails.
avicap32 (video capture):
- Fully implement the capture graph-builder
- Implement infinite pin tee and smart tee filters
- Audio capture-filter and in-mixer prop still needed
- Still need vfw-capture and vfw-capture prop
- Need an avi compressor, muxer, and prop/prop1 for the muxer
- Implement a filewrite
CommonPropertySheetUI is a stub.
- All bitmap and string resources are absent.
We use obsolete functions here (should call listed functions in localui.dll)
pfnAddPort -> pfnAddPortUI; pfnConfigurePort -> pfnConfigurePortUI; pfnDeletePort -> pfnDeletePortUI
Implement pfnEndDocPort, pfnGetPrinterDataFromPort, pfnReadPort, pfnSetPortTimeOuts, pfnStartDocPort, pfnWritePort
pfnOpenPortEx should only be used for a language monitor
printui still needs some work and testing
We are still using the Win3.1 API so gdi32.dll still has to call winspool for all printer functions.
Upon loading winspool, every printing application enumerates the host printers.
We should only do this once per Wine session via the spooler service (spoolss.exe/dll)
EnumPrinterKeyW, DocumentPropertySheets, and DevicePropertySheets are unimplemented, and EnumForms is only a stub.
Implement FindClosePrinterChangeNotification, FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification.
OpenPrinter should use the Monitor for the Port.
Implement ReadPrinter, SetDefaultPrinter, and WritePrinter.
Coverity is reporting several defects in the code.
- It currently still uses some old 16-bit code and is also perhaps too Wine-specific.
It fixes us to PostScript; what about virtual PDF printing, or RAW printing?
Creating Property-Sheets from PPD-Informations would be nice (Forms, Quality).
Also, a Property-Sheet to select a specific PPD-File.
- Attribute certificates, which are part of the Cryptographic Message Standard (CMS). Windows may use these for attributes of catalog files.
- Message countersignatures, which are used for time-stamping digital signatures, among other things.
More "simplified message" functions (e.g. Crypt*Message*, compared to the lower level CryptMsg* functions).
Implement PFX functions (e.g. PFXImportCertStore and PFXExportCertStore).
Implement OCSP for certificate revocation.
- Lots more tests.
schannel (does support SSL3 and TLS connections, but not recommended for anything security-sensitive yet)
SCHANNEL_CRED passed to AcquireCredentialsHandle is ignored
The target name passed to InitializeSecurityContext is ignored (should be compared to the received certificate).
- Server connections aren't supported
Most attributes in QueryContextAttributes aren't supported
- Rely on crypt32 for certificate chain verification (have winhttp and wininet rely on schannel).
- Does not bring up GUI in certain cases that it should.
- Implement for all action IDs.
- Catalog functions are not completely implemented.
- The Printer folder has not been implemented yet.
- Printer, Document, and Jobs properties have not been implemented.
For more information, see the WindowsCodecs page.
- Image Decoding
- Image Encoding
- GIF files cannot be encoded.
- All existing encoders ignore palettes.
- WMP files cannot be encoded (requires wmphoto.dll).
- Metadata cannot be written.
- Metadata cannot be read from JPEG or PNG files.
IWICMetadataQueryReader is unimplemented.
- The IWICStream implementation needs to be done very carefully.
- Format Conversion
- Most formats can convert to 32bppBGR, 32bppBGRA, and 32bppPBGRA, but that's about it.
Maybe optimize some cases by implementing IWICBitmapSourceTransform on decoders (and other sources that transform the bits)
- Then invoke it from the builtin format conversion functions.
Handle multiple format converters in WICConvertBitmapSource better.
IWICPalette objects cannot be initialized from images.
- Lots of components are still not implemented at all.