# Courier V3.0.0

#### 3.0.0-1 Courier CMake Switches

<div class="contents" id="bkmrk-note%3A-for-detailed-i"><div class="contents"><div class="textblock"><dl class="note"><dt>**Note:**</dt><dd>For detailed information on [Courier](http://dev.doc.cgistudio.at/APILINK/namespace_courier.html) configuration please see <span style="color: rgb(230, 126, 35);">[Application Development &gt; Courier &gt; Tutorial 5 &gt; Build Process](https://doc316en.candera.eu/link/578#bkmrk-selecting-courier-fe)</span></dd></dl></div></div></div><dl class="note" id="bkmrk-"><dd><dl class="note"><dd></dd></dl></dd></dl><div class="contents" id="bkmrk-v2.10.0-v3.0.0-couri"><div class="contents"><div class="textblock"><table class="doxtable"><tbody><tr><th>**V2.10.0**</th><th>**V3.0.0**</th></tr><tr><td>COURIER\_ENABLE\_ENHANCED</td><td>COURIER\_ENHANCED\_ENABLED</td></tr><tr><td>COURIER\_ENABLE\_IPC</td><td>Has been unified with Featstd IPC switch.  
FEATSTD\_IPC\_ENABLED</td></tr><tr><td>COURIER\_ENABLE\_MESSAGING\_MONITOR</td><td>COURIER\_MESSAGING\_MONITOR\_ENABLED</td></tr><tr><td>COURIER\_ENABLE\_RENDERING\_MONITOR</td><td>COURIER\_RENDERING\_MONITOR\_ENABLED</td></tr><tr><td>COURIER\_ENABLE\_LOG</td><td>FEATSTD\_LOG\_ENABLED</td></tr></tbody></table>

<dl class="note"><dt>**Note:**</dt><dd>Refer to the <span style="color: rgb(230, 126, 35);">[Candera 3.0.0 CMake Changelog](https://doc316en.candera.eu/link/982#bkmrk-candera%2Ffeatstd-buil-0)</span> to learn about [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") V3.0.0 CMake switch modifications.</dd><dd>Refer to the <span style="color: rgb(230, 126, 35);">[FeatStd 3.0.0 CMake Changelog](https://doc316en.candera.eu/link/984#bkmrk-page-title)</span> to learn about FeatStd V3.0.0 CMake switch modifications.</dd></dl></div></div></div>#### 3.0.0-2 Data Binding Changes

The following changes have been made:

<div class="contents" id="bkmrk-bugfix%3A-bindable-pro"><div class="contents"><div class="textblock">- Bugfix: Bindable properties of widgets were wrong displayed in SceneComposer. The problem has been solved, by replacing the function bound global string variable with a function bound global map that maps the meta info property instance to the corresponding editor string.

- Bugfix: Data binding was no longer working correctly on target builds with O2 optimization enabled. For this, Courier::DataBindingPrivate::DataItemDescriptor structure was modified.

</div></div></div>#### 3.0.0-3 Visualization Changes

The following changes have been made:

<div class="contents" id="bkmrk-composite-group-supp"><div class="contents"><div class="textblock">- Composite Group support was added. For this, the following has been modified: 
    - [Courier::CompositePath](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_composite_path.html) class was added;
    - New *viewId* and *compositePath* parameters added for [Courier::IViewHandler::ExecuteAnimationAction](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_i_view_handler.html#af9ec4e304c94346440c425e2f5fbd18d), [Courier::IViewHandler::FindWidget](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_i_view_handler.html#a86495d1c67b6e221024957f1db1683c8), [Courier::IViewHandler::SetWidgetProperty](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_i_view_handler.html#afa0a8b6f29342d4e189768a0d269a5a7) and [Courier::IViewHandler::SetFocus](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_i_view_handler.html#a524b2780b77b901d5727cb2279157d67) methods;
    - New *compositePath* parameters added for [Courier::View::GetFrameworkWidget](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view.html#aebc645aa46917a28aa8ceb4a6bf28521), [Courier::View::GetAnimation](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view.html#a111cd4310127ccc55da7808c597ca429), [Courier::ViewContainer::GetFrameworkWidget](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_container.html#abbb6f0ffbd51f46ff46c7ff4a847029f), [Courier::ViewContainer::GetAnimation](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_container.html#ac967e3c56973f28e6dba5df81450da68) and [Courier::ViewScene::GetFrameworkWidget](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene.html#a003f924a328b8ec3019dc43b7c5cb7a9) methods;
    - New *viewId* and *compositePath* parameters added for [Courier::AnimationReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_animation_req_msg.html), [Courier::AnimationResMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_animation_res_msg.html) and [Courier::AnimationIndMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_animation_ind_msg.html);
    - New *compositePath* parameters added for [Courier::SetPropertyReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_set_property_req_msg.html), [Courier::SetPropertyResMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_set_property_res_msg.html), [Courier::SetFocusReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_set_focus_req_msg.html), [Courier::SetFocusResMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_set_focus_res_msg.html), [Courier::LostFocusIndMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_lost_focus_ind_msg.html) and [Courier::WidgetMsgBase](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_widget_msg_base.html) messages.

- Added support for automatic upload of Owner Render Targets. For this, the following has been modified: 
    - [Courier::FrameworkWidget::WakeUpAllRenderComponents](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_framework_widget.html#a387e4575bb686cb481375fdc22ffabe6 "Call this method to wake up all render component.") method added;
    - *layerIndex* parameter added to [Courier::Gdu](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_gdu.html) constructor;
    - New [Courier::Gdu::OwnerState](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_gdu.html#a952e14535a65a889d7c7416dd5dfddd1) enum added for 3D render targets;
    - [Courier::Gdu::GetLayerIndex](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_gdu.html#a054919ca431620230d09098a2c453aeb) public method added;
    - [Courier::Gdu::GetOwnerState](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_gdu.html#aa80732092e80a029c1bf673000a2ed81), [Courier::Gdu::OnTransformChange](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_gdu.html#a951f49b04497563d06a943beb9ae4c60) and [Courier::Gdu::OnNodeRemoved](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_gdu.html#aec8e4072487b4f11e9f30e78a0d41465) public methods were added for 3D render targets;
    - [Courier::Renderer::WakeUpAllRenderComponents](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_renderer.html#ae075e43acfcc81dcf8ac85fb7fc24546 "Wakes render component.") method was added.

- [Courier](http://dev.doc.cgistudio.at/APILINK/namespace_courier.html) adaptation needed for new [Candera](http://dev.doc.cgistudio.at/APILINK/namespace_candera.html "[DataBinding_RefTypeSample]") feature related to FreeType streaming . For this, [Courier::ViewHandler::SetFontStoreProviderCallback](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_handler.html#a7747f74f80b57fd376b13f942d927009) and [Courier::ViewHandler::GetDefaultFontStore](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_handler.html#a99a7c93fcae6feb74fa279b250181ab8) were added.

- Bugfix: Fix added for animation invalidate mechanism to correctly invalidate related scenes. For this, the following has been modified: 
    - The enum [Courier::AnimationInvalidator::Setter](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_animation_invalidator.html#af1757d61530f8617d19c127ebdb01a58) has been modified;
    - Scene3DPtrVector and Scene2DPtrVector typedefs were removed.

- Bugfix: interface changed for [Courier::ViewHandler::Init()](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_handler.html#aa48e5f58172e21058b426313076f068a) method to accept every kind of [Candera::AssetConfig](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_asset_config.html "Asset configuration that encapsulates various asset repositories Custom AssetConfig classes can be de..."). For this, the following has been modified: 
    - *assetConfiguration* parameter type changed from [Courier::AssetConfiguration](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_asset_configuration.html)\* to [Candera::AssetConfig](http://dev.doc.cgistudio.at/APILINK/class_candera_1_1_asset_config.html "Asset configuration that encapsulates various asset repositories Custom AssetConfig classes can be de...")\* for [Courier::AssetAccessor::Init](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_asset_accessor.html#a3a9167051a8e1f79cb788b202d9d2e5e) and IViewHandler::Init method.

- Bugfix: Fixed wrong touch input handling on overlay surfaces. For this, the following has been modified: 
    - *pointerId* and *sourceId* parameters have been added to [Courier::TouchInfo](http://dev.doc.cgistudio.at/APILINK/struct_courier_1_1_touch_info.html) constructor.

- Bugfix: Fixed issue related to wrong loading of scene's content for [Courier::LoadReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_load_req_msg.html). For this, the following has been modified: 
    - The [Courier::LoadReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_load_req_msg.html) will provide the same behavior as before to keep backward compatibility. A new [Courier::TryLoadReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_try_load_req_msg.html) and [Courier::TryAsyncLoadReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_try_async_load_req_msg.html) were introduces. [Courier::TryLoadReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_try_load_req_msg.html) creates the render target if the layer is not already used. Otherwise nothing is done for the render target. Also, [Courier::TryLoadReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_try_load_req_msg.html) tries to upload the scene (this may fail if there is currently no EGL context available - in this case a normal [Courier::LoadReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_load_req_msg.html) should be sent before activating the view). The new [Courier::TryAsyncLoadReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_try_async_load_req_msg.html) will have the same behavior as [Courier::TryLoadReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_try_load_req_msg.html) after the scene context if fully loaded;
    - A new *forceEnable* parameter has been added to [Courier::Renderer::EnableLayer](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_renderer.html#ac9666429200a0206d45a5bfac018ca72) method;
    - A new *forceUpload* parameter has been added to [Courier::View::LoadContent](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view.html#a85d92339f636384dd0de6304e1f12a2c), [Courier::ViewContainer::LoadContent](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_container.html#a5a441a6a19c3384f836402d7fce13dea), Courier::ViewHandler::SetCurrentLoadingViewScene, [Courier::ViewScene::PartialLoad](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene.html#aa5948a3074888d610b5fe49b4590fc03), [Courier::ViewScene::AsyncLoadContent](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene.html#aaa661133250c429fa5b72c2e4543c304), [Courier::ViewScene2D::LoadContent](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene2_d.html#aaa170676e8d0c104d8a936a43ede55ad), [Courier::ViewScene2D::PartialLoad](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene2_d.html#a9f6b89253e362eca3d5ff7c7b6222f77) and [Courier::ViewScene2D::AsyncLoadContent](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene2_d.html#a272dc00207c0d5ee2f5bac8e4ca86224), [Courier::ViewScene3D::LoadContent](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene3_d.html#ad0c1cdafc4452c9a8a8f10ec355cf503), [Courier::ViewScene3D::PartialLoad](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene3_d.html#a6814d08ab6613216df1cdce5f30a0145) and [Courier::ViewScene3D::AsyncLoadContent](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene3_d.html#aa06f66a32764a69a2827bc6268fbe5c4) methods.

- Bugfix: No proper clean was done when active transitions received [Courier::ShutdownMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_shutdown_msg.html) message. [Courier::TransitionHandler::Finalize](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_transition_handler.html#a26ea30a1d14df8102a2a0e14b9c50bb2) method has been added. This method will first finish active transitions and second destroy all created transitions to bring the transition handler into a finalized state. The [Courier::TransitionHandler::Finalize](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_transition_handler.html#a26ea30a1d14df8102a2a0e14b9c50bb2) method will finalize the [Courier::TransitionHandler](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_transition_handler.html) (if set), stop all animations and finalize the views. Handling of transition errors has also been added. For this, [Courier::Transition::TransitionError](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_transition.html#a4b9ea742e375e23d8be6f753a1563245) enum, [Courier::Transition::SetLastTransitionError](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_transition.html#ae9ecee210e99963887886906e17fd77f) method and [Courier::Transition::GetLastTransitionError](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_transition.html#a46b2bb1cf67ccd907ae76a7731d38ad1) method were introduced.

- Bugfix: Wrong dependent views' invalidation. The new interface allows to add dependency views to another view for one camera or for all cameras using [Courier::View::AddInvalidationDependency](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view.html#ada3ff0817050b58c1c39e6aa59cb06d1) method. To remove the dependency [Courier::View::RemoveInvalidationDependency](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view.html#a4e53f67e0b2a76d9ac3e498fc6fad1db) can be used for one camera dependency or for all camera dependencies (it always has to be called in a symmetric way to the Add call). Also, [Courier::View::GetFirstInvalidationDependency](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view.html#a3c70b12fbb995c827b9e0af523612163) was introduced.

- Bugfix: no means to retrieve an animation player for a given animation ID. For this [Courier::ViewHandler::GetAnimationPlayer](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_handler.html#a696c09d4550ced831f7b539ab1f9f936) was made public.

- Bugfix: Wrong sorting of widgets' vector. The default behavior can be changed by calling the new [Courier::ViewScene::SetWidgetSortingStrategy](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene.html#a190dd404e88488a942292286005ac982 "Set the strategy for the order in which widgets are processed. By default and for backward compatibil...") method. [Courier::ViewScene::GetWidgetSortingStrategy](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_scene.html#a9de03e5428b8d909435c0c8293ac5510) returns the current set strategy.

- Bugfix: Too long processing time for [Courier::ViewReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_req_msg.html). For this, *initContent* parameter was added to [Courier::ViewReqMsg](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_view_req_msg.html) message for Create and CreateAll actions. This member should be set to false to delay the initialization of the scene from the first loading of the scene.

</div></div></div>#### 3.0.0-4 AddOns Changes

The following changes have been made:

<div class="contents" id="bkmrk-bugfix%3A-fixed-render"><div class="textblock">- Bugfix: Fixed render block issue due to Wayland input handler. For this, Courier::InputHandling::WaylandContext::GetEventQueue method was added;
- Bugfix: [Courier::TouchHandling::TouchSession::GetFrameworkWidgets()](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_touch_handling_1_1_touch_session.html#a73c4ea0558f4523d55863cab99e0371e) not accessible for derived classes. To fix this, [Courier::TouchHandling::TouchSession::GetFrameworkWidgets()](http://dev.doc.cgistudio.at/APILINK/class_courier_1_1_touch_handling_1_1_touch_session.html#a73c4ea0558f4523d55863cab99e0371e) was moved in the protected area;
- Bugfix: TouchSession is not working. For this, the down state management was replaced with a more dynamic approach that also considers non-linear source Ids. cCOURIER\_DEFAULT\_MAX\_TOUCHPOINTER\_COUNT was set to 10 in Courier::TouchHandling class and Courier::TouchHandling::TouchSessionBase::InvalidSourceId const was declared to indicate a invalid surface Id.

</div></div>---