Skip to content

v6.0.0

Latest
Compare
Choose a tag to compare
@Sharparam Sharparam released this 01 Mar 19:58
v6.0.0
1aa47d0

This is very long overdue and it includes a lot of changes.

Much of the API has been completely re-organized and is not backwards compatible, users of the library will need to update their code. The new locations should hopefully feel more logical though.

Major changes

API restructuring

The organization of the API felt off in many places, and has been adjusted to feel more natural. Hopefully everything should feel logical to our users. If there are any questions about this after the changes, don't be afraid to voice your concerns! Another breaking change would be unlikely very soon, but we will take any feedback into consideration.

Removal of WPF and WinForms extensions

As part of upgrading the project to support the SDK REST API and be async, the old extensions to enable integration with WPF and WinForms data classes were dropped. We will likely update these in the future to support the new version of Colore, but for now we felt like focusing on the main library.

Support for the SDK REST API

Colore v6.0 brings support for Razer's REST API for the Chroma SDK.

Async support

All APIs in Colore have been reworked to support the async/await pattern. This was partly done in order to better support the REST API. If there is a need, we may look into adding back the synchronous versions of the APIs, mainly for use with the native SDK.

Et.c...

Apart from the major points above, we have of course done bug fixes in general and added support for new things that have appeared in the SDK.

Known issues

SDK initialization delay

After creating a new Chroma instance (ColoreProvider.Create...Async) or manually initializing one (IChroma.InitializeAsync), you have to delay the rest of the code interacting with Colore/Chroma by a second or two. This is due to internal undocumented delays in Razer's Chroma SDK that cannot be reliably predicted by Colore itself. This problem is detailed in issues #274 and #279.

An alternative, more reliable method, is to wait for the DeviceAccess event on IChroma to be raised with Granted set to true. This event being raised with Granted set to true means the SDK has finished initializing and you now have access to make calls to the hardware. For this to work you must have a Win32 event loop going, and register your window handle with IChroma.Register, then forward any messages to IChroma.HandleMessage.

Once the relevant message is dispatched and handled in Colore, the event will be raised.

We still recommend having a timer as a fallback in case the events fail to propagate fully.


This is a big change, but we know a fair amount of people have been using the release candidates of 6.0 for a while so hopefully most of our core users are familiar with the changes.

Again, if you have any concerns, all feedback is appreciated! You may create an issue if you have bugs or feature requests, or visit the discussions for more general questions and concerns.