View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0002690 | NoesisGUI | C++ SDK | public | 2023-09-14 20:56 | 2026-04-01 03:01 |
| Reporter | dsrour | Assigned To | sfernandez | ||
| Priority | normal | Severity | crash | ||
| Status | resolved | Resolution | fixed | ||
| Product Version | 3.2 | ||||
| Target Version | 3.2.13 | Fixed in Version | 4.0 | ||
| Summary | 0002690: No reliable to recreate views with their contents | ||||
| Description | More context on this forum post: https://www.noesisengine.com/forums/viewtopic.php?p=16044#p16044 We integrated Noesis into our engine. A bunch of systems make use of Noesis. At anytime, the engine's renderer could reset itself (due to modifying rendering settings or changing graphics API at runtime). When such a reset occurs, we would like to update all view's renderer. However this isn't possible. In Renderer::Shutdown(), there's a specific comment saying: To work around this, when the renderer resets, we do the following for all views:
This works ok for some views, but for some others (for ex. ones that have animation content), we get an assert in TimeManager::AddMasterClock(...) where the target pointer member is NULL. Ignoring this assert leads to an eventual crash in Attached are screenshots of the callstack when the assert occurs and when the crash occurs after ignoring the asserts. | ||||
| Steps To Reproduce | Create a view with some content and try to recreate it:
I'm unsure exactly why specific views are having issues with this specific logic. I assume it's related to the content having some animations since the assert occurs when transferring animations, which eventually leads to the assert in TimeManager::AddMasterClock(...). Please refer to the screenshots for callstacks. | ||||
| Attached Files | |||||
| Platform | Any | ||||
|
Revisions r13182 and r13185 implemented (experimental) support for grabbing RenderDoc captures. This requires hot-swapping the render context, the same scenario that you are trying to solve here. We are doing something similar, creating a new view with the same root content. The code for recreating the view is this one (Window::RecreateView)
In my tests, animations are working fine. Could you please try this when 3.2.3 is released and in case you are still getting an assert attach a XAML here) ? |
|
|
This was finally fixed in
This will be part of Noesis 4.0 |
|
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2023-09-14 20:56 | dsrour | New Issue | |
| 2023-09-14 20:56 | dsrour | Tag Attached: C++ | |
| 2023-09-14 20:56 | dsrour | File Added: noesis_crash_assert.png | |
| 2023-09-14 20:56 | dsrour | File Added: noesis_assert_callstack.png | |
| 2023-09-15 20:16 | jsantos | Assigned To | => sfernandez |
| 2023-09-15 20:16 | jsantos | Status | new => assigned |
| 2024-01-12 12:22 | jsantos | Note Added: 0009081 | |
| 2024-01-12 12:22 | jsantos | Target Version | => 3.2.3 |
| 2024-01-12 12:22 | jsantos | Status | assigned => feedback |
| 2024-01-12 12:22 | jsantos | Note Edited: 0009081 | |
| 2024-01-22 11:47 | sfernandez | Target Version | 3.2.3 => 3.2.4 |
| 2024-06-10 11:02 | sfernandez | Target Version | 3.2.4 => 3.2.5 |
| 2024-10-24 16:43 | sfernandez | Target Version | 3.2.5 => 3.2.6 |
| 2024-11-22 18:19 | jsantos | Target Version | 3.2.6 => 3.2.7 |
| 2025-01-20 17:42 | jsantos | Target Version | 3.2.7 => 3.2.8 |
| 2025-06-06 12:52 | jsantos | Target Version | 3.2.8 => 3.2.9 |
| 2025-10-02 00:49 | jsantos | Target Version | 3.2.9 => 3.2.10 |
| 2025-10-20 18:25 | jsantos | Target Version | 3.2.10 => 3.2.11 |
| 2026-01-20 19:32 | jsantos | Target Version | 3.2.11 => 3.2.12 |
| 2026-03-03 16:34 | jsantos | Note Edited: 0009081 | |
| 2026-03-03 16:34 | jsantos | Note Edited: 0009081 | |
| 2026-03-04 00:39 | jsantos | Target Version | 3.2.12 => 3.2.13 |
| 2026-04-01 03:01 | jsantos | Note Added: 0012136 | |
| 2026-04-01 03:01 | jsantos | Status | feedback => resolved |
| 2026-04-01 03:01 | jsantos | Resolution | open => fixed |
| 2026-04-01 03:01 | jsantos | Fixed in Version | => 4.0 |