This file describes breaking changes between versions. 

2.1.1: Not released yet
- Display: CL_DisplayWindowMode is now considered obsolute. 
  On linux, this function does not do anything.
  It used to use the libxxf86vm library, but this caused various problems:
  it would only report the current mode on most system, and xf86vidmode is
  considered sort of deprecated by upstream xorg.
  So for now, the ClanLib developers have removed it, until a solution is found.
  (Note, since clanlib v2.x no longer changes the video resolution,
  CL_DisplayWindowMode has no use ).

- GL and GL1: Linux does not link with libxi
  There was no requirement to link with this library

- GL and GL1: Linux does not link with libgl
  Instead internally, ClanLib uses dlopen(). Your application now can use
  the libgl.so local on the machine it runs on (so it uses the configured
  driver on the machine, not the driver that the application was compiled with)

- General: The Microsoft windows themes have been removed from the Linux package.
  Instead, a free GUI theme (GUIThemeBasic) is included for use with the ClanLib
  examples (or your application).

- Core: CL_Mat2 had an incorrect typedef - 
  "CL_Mat2<float> CL_Mat2d;" was changed to "CL_Mat2<double> CL_Mat2d;"

2.1.0: Released 20 october 2009
- IMPORTANT: Display: CL_Sprite animation delay now uses milliseconds integers,
  instead of float seconds. There was a discrepancy between the documentation
  and what it actually did. Previously, using floats, we lost accuracy. 
  Now control of animation speed should now be 100% accurate. 
  - CL_Sprite::update(int time_elapsed_ms) now refers to milliseconds
  instead of seconds. If you previously did sprite.update(float), you now need
  to feed it a number 1000 as large (or stop dividing CL_System::get_time() 
  by 1000.0f when calculating delta time). If you don't use a time parameter
  to sprite.update() it is calculated automatically as before. 

- IMPORTANT: To solve some problems with co-hosting different versions of 
  ClanLib, and to better support breaking changes in the future, we've changed
  how ClanLib names its libraries under Unix. ClanLib now creates 
  libclan21Core.so, libclan21Display.so (and so on), instead of naming it 
  libclanCore.so and libclanDisplay.so. Every breaking release will increase
  the 2.x.0 number. Every backward compatible release will get a 2.1.x version.

- IMPORTANT: ClanSDL has moved out of the main package, as clanGDI is better 
  and faster. ClanSDL is still available in the Contrib repository - read more 
  about it on http://clanlib.org/development.html

- Core: CL_Line::clip() function has moved to CL_LineSegment::clip(). It was 
  placed in the wrong class in the last release. CL_Line is an line with an 
  infinite length, thus requires a different clipping method.
- GL and GL1: CL_GraphicContext get_pixeldata() has been fixed. The image is 
  now no longer upside-down.
- Sound: CL_SoundBuffer_Session::set_frequency() no longer returns a bool on 
  failure. (It's now always successful).
- Sound: CL_SoundFormat::sf_8bit_signed changed to sf_8bit_unsigned.
- Sound: CL_EchoFilter "shift factor" paramter changed from int to float.
- Sound: All sound filters now use floating point sounds (-1.0f to 1.0f) 
  instead of integer (-32768 to 32767).
- Core: CL_File no longer has a default access parameter in its constructor.
  Add CL_File::access_read, CL_File::access_write or CL_File::access_read_write.
- Core: CL_VirtualDirectory get_name() renamed to get_identifier().
- Core: CL_VirtualFileSystem get_name() renamed to get_identifier().
- Display: Changed tablet input device get_type() to return 
  CL_InputDevice::tablet instead of CL_InputDevice::pointer. 
- Display: Changed tablet buttons to use CL_KEY_TABLETN, (where N is 1-10) 
  instead of CL_MOUSE_LEFT etc.

2.0.4: Released 17 september 2009
- IMPORTANT: Display: CL_DisplayMessageQueue has been removed. Use CL_KeepAlive::process() instead
- Display: CL_FontDescription, "copy" renamed to "clone" (Like CL_Sprite)
- Display: CL_Texture's copy_xxx_from functions CL_GraphicContext parameter is now not optional, and it has moved to the front of the function parameter list. (It was a bug with it being optional)
- Display: CL_Font_Sprite incorrectly used the CL_FontMetrics (thus positions may be different)
- GUI: CL_Window::func_close was removed. Use func_close() (from CL_GUIComponent), but note, it returns a bool (true = message consumed)
  so you need to change your signature to bool on_close();
- GUI: Moved 'temporary' window cache parameter from CL_GUIComponent ctor to CL_DisplayWindowDescription.
- GUI: set_tab_order_controller and set_tab_order are gone, the order is now the component tree.
- GUI: CL_PopupMenu's func_item_selected() and func_keyboard_event() has been removed. Use CL_PopupMenuItem's func_clicked() instead (returned from CL_PopupMenu::insert_item())
- GUI: CL_Window::func_activation_lost and func_activation_gained was removed, use CL_GUIComponent::func_activated and func_deactivated instead
- GUI: CL_GUIManager::exec() no longer takes an acceleratortable parameter. Use set_accelerator_table(const CL_AcceleratorTable &table) instead if you use accelerators.

2.0.3: Released 15 july 2009
- Display: CL_Font_Texture has been renamed to CL_Font_System
- Display: CL_Font_Freetype has been changed to use CL_TextureGroup, therefore CL_GraphicContext is required by it's constructor
- Display: CL_Font_Native has been removed (The pixel buffer based font)
- Display: CL_Texture and CL_RenderBuffer now use the CL_TextureFormat enum's (they used to use OpenGL defines). Example before: CL_RGB8 Now: cl_rgb8
- Display: CL_Texture no longer has the bool make_texture_nearest_power_of_two parameter in constructor.
- Display: Numerous functions the pass CL_GraphicContext have been modified to pass by reference instead of by object.
- Display/Core: The CL_Timer implementation no longer require any knowledge of the windowing system message queue, and therefore no longer requires any CL_DisplayWindow for creation. As a consequence of this change, CL_Timer has been moved to <ClanLib/Core/System/timer.h> and now uses the CL_KeepAlive system to invoke the timer callback. Also, the CL_GUIComponent::create_timer() function no longer exists since it is no longer required. To create a timer object, simply construct the CL_Timer object and start using it.
- Sound: CL_SoundFilter's are now passed as objects, instead of passing by address.
- GUI: CL_GUIManager::set_named_font is now called register_font, get_named_font is named get_registered_font
- GUI: CL_GUIComponent now uses the CL_GUILayout as objects, instead of passing by address.
- GUI: CL_GUIManager and CL_Component now uses the CL_GUITheme and CL_GUIWindowManager as objects, instead of passing by address.
- GUI: CL_Window, CL_GUIComponent, CL_MainWindow no longer has a "CL_Rect geometry" parameter in constructor - use the CL_GUITopLevelDescription to set wanted geometry, either using set_position on it, or using the new convenience constructors including position.
- GUI: For toplevel-components, CL_GUIComponent::get_geometry() now returns CL_Rect(screenx,screeny,screenx+width,screeny+height) instead of earlier CL_Rect(0,0,width,height).
- GUI: CL_GUIComponent::invalidate_rect was renamed to request_repaint
- GUI: CL_GUIComponent::set_cliprect() now requires a gc parameter
- Core: API/Core/Math/math.h was renamed to cl_math.h
- Core: CL_Rect::shrink and expand now takes 4 parameters instead of a CL_Rect.

2.0.2 Released 18 may 2009
- No breaking changes

2.0.1 Released 28 april 2009
- Changes in Collision API if you use CL_Contour. CL_Contour no longer exposes internal variables - use getter functions instead.

2.0.0 Released 22 april 2009
- Huge rewrite from ClanLib 1.0
