
* = I'm particularly hoping someone else might contribute this. Please? :)


modules
-------

* Write blitters for 1bpp, 2bpp, 4bpp

* Implement the rest of the copy operations, which currently return -ENOSYS

- Use the palette parameter to 16/24/32bpp copies to indicate the source
  pixel format, eg #define DINX_32BPP_RGBX ((unsigned long *)-1) etc.

- Mouse pointer: implement in a layer between dinx.c and blitter
  Any drawing operation will check if the cursor is in the way.
  If so, it should hide it and send a DEVENT_CURSOR_HIDDEN to the server.

- Have find_blitter request the module appropriate to the framebuffer depth

- Expand or duplicate queued redraw events that overlap a DCOMMAND_MOVE_RECT

- For palettized copies, support a "transparent" colour index

- Font server: use kernel buffers to cache glyphs, user-space font server fulfils
  glyph rendering requests into buffers while win_write blocks.  Then use
  regular 1bpp copy to framebuffer.

- Get a real major number


lib
---

* Bindings for GDK, Microwindows, and anything else.  This really needs a
  userspace windowing system library to support child windows.

- Rectangle convenience geometry routines

- make headers compile with -ansi -pedantic


server
------

The current dinxd.c is really just some test code in disguise.  It needs to
be rewritten to actually be useful.

- Proper event delivery, keys, mouse and keyboard focus

- Protocol to get display properties

- Palette support: start with 8bpp 6x6x6 colour cube plus extra greyscales

- Handshake to check that client and server speak the same protocol version

- Define a window manager API, so a seperate process can draw borders etc.
  Read about ICCCM to get an idea of the issues involved first.


doc
---

- Document protocol, library API

- Document strategy for race conditions in dinx.c

