DOC: detailed start-up sequence of the GUI (closes #1145)

This changeset documents the current known state of UI startup into the TiddlyWiki.
It summarises all information and notes from various places in my mindmap.

Fazit:
 * largely, the startup sequence is sane
 * there are some open gaps and possible races -> see #1192
 * these are rather hard to fix; maybe it's preferrable to rewrite the subsystem runner #1177
This commit is contained in:
Fischlurch 2020-02-23 22:45:20 +01:00
parent cf8c3c27d6
commit 7e015f9a7f
2 changed files with 167 additions and 56 deletions

View file

@ -3485,17 +3485,59 @@ The foundation of population and display of pop-up menues is provided by GTK --
{{red{OMG 11/2018 -- I have no idea where to start here...}}}</pre>
</div>
<div title="GuiStart" modifier="Ichthyostega" created="200812050525" modified="201808070201" tags="GuiIntegration GuiPattern" changecount="9">
<div title="GuiStart" modifier="Ichthyostega" created="200812050525" modified="202002232138" tags="GuiIntegration GuiPattern" changecount="19">
<pre>Starting up the GUI is optional and is considered part of the Application start/stop and lifecycle.
* main and {{{lumiera::AppState}}} activate the lifecyle methods on the ~GuiSubsysDescriptor, accessible via the GuiFacade
* loading a GuiStarterPlugin actually
** invocation of {{{GuiFacade::start}}}
** creates {{{unique_ptr&lt;GuiRunner&gt;}}}
** the ~GuiRunner holds a ~GuiHandle as member, which causes loading and activation of the plug-in
* loading the {{{gtk_gui.lum}}} plug-in...
** loads the GUI (shared lib)
** creates instances of all the GUI services available through LayerSeparationInterfaces
*** GuiNotificationFacade
*** DisplayFacade
** Finally, the ~GTK-main() is invoked.
* bring up a network of framework entities known als the GuiTopLevel
* establish a connection to allow the GUI to be [[populated with content|GuiContentPopulation]]
** after loading, the sole interface method {{{launchUI()}}} is triggered
* the GUI plug-in implementation in {{{gtk-lumiera.cpp}}}
** implements the GUI plug-in interface
** and the~launchUI-Function ''spawns the GUI thread''.
* the ~GuiThread ({{{runGUI()}}})...
** creates the {{{GtkLumiera}}} object, which is the &quot;GUI main&quot;
** invokes the {{{GtkLumiera::run()}}} function (guarded with appropriate error handlers) &amp;rarr; {{{sigTerm}}} at the end
*** this first creates the ''~GUI-Backbone''
**** {{red{TODO 2/2020: unexpected error in ctor might kill the GUI thread, possibly leading to deadlock #1192}}}
***;~UiBus
***:the UI-Bus is the communication backbone and hub
***;~UiManager
***:responsible for wiring a cohesive GuiTopLevel
***:*wired with the UI-Bus
***:*populates the Menu and binds the Actions
***:*populates the {{{GlobalCtx}}} with...
***:**{{{UiBus}}}
***:** {{{UiManager}}}
***:** {{{WindowLocator}}}
***:** {{{InteractionDirector}}}
***:** {{{interact::Wizard}}}
***;~InteractionDirector
***:the InteractionDirector acts as top-level controller within the UI -- corresponding to the root context in the session
***;Application Windows (GTK)
***:a hierarchy of GTK widgets to implement the actual user interface
***;Event Loop
***:this is what makes the UI &quot;live&quot; and responsive
** activating the Event Loop through {{{UiManager.performMainLoop()}}}
*** first installs and opens the primary LayerSeparationInterfaces
**** GuiNotificationFacade (for pushing messages via UI-Bus)
**** DisplayService (to display rendered content)
*** then activates the {{{Gio::Application}}} main loop (blocking event loop)
** establishing the UI-Bus
*** creates the ''Core Service'' as node attached to the bus&lt;br/&gt;this in turn holds...
***:the Nexus
***;this is the communication Hub, and actually every &quot;uplink&quot; into the Bus-term eventually ends here
***:State Manager
***;special service to handle &quot;state mark&quot; messages on the bus
***;this is what essentially creates persistent interface state
** the InteractionDirector immediately launches a ~Callback-Action into the ~Event-Loop
*** which, when performed, sends a &quot;population request&quot; command down to the session
*** the session will response asynchronously by pushing a &quot;population diff&quot; up into the UI-Bus (via Notification façade)
!!!questions of sanity and locking
The initial start-function of the subsystem is protected by a locking guard. Thus, everything up to and including the launch of the GUI thread is &quot;make it or break it&quot;. If the {{{facade}}} smart-ptr is not set, the GUI is considered as not started. Likewise, everything //within the GUI thread// is protected by a top-level error handler, which invokes the termination signal and thus causes application shutdown, whenever the thread exits. There is only one tiny gap in this reasoning: when the overall application shuts down //after// the GUI has been launched, but //before// the GUI was able to open the Notification façade, the GUI will miss the shutdown notification and thus the application will hang with defunct core, but with running and responsive UI. However, the Lumiera thread handling framework implements a dedicated barrier to ensure the started thread has picked up its arguments and is about to enter the thread operation function. This means, the tread launching the GUI thread will block for a short period, and when the thread launching function returns (successfully), we can sure the spawned thread is running and at the begin of its payload function. Now, since opening the facade interfaces happens early in this GUI function, and prior to building up all the GTK widgets, the chances for such a race actually happening are rather remote.
!public services
The GUI provides a small number of public services, callable through LayerSeparationInterfaces. Besides that, the main purpose of the GUI of course is user interaction. Effectively the behaviour of the whole system is driven by GUI events to a large extent. These events are executed within the event handling thread (~GTK-main-Thread) and may in turn invoke services of the lower layers, again through the respective LayerSeparationInterfaces.

View file

@ -1,7 +1,8 @@
<map version="1.0.1">
<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->
<node BACKGROUND_COLOR="#6666ff" CREATED="1434127882200" ID="ID_1452170048" MODIFIED="1563117959225" STYLE="fork" TEXT="Lumi">
<node BACKGROUND_COLOR="#6666ff" CREATED="1434127882200" ID="ID_1452170048" MODIFIED="1582493202609" STYLE="fork" TEXT="Lumi">
<font NAME="SansSerif" SIZE="25"/>
<hook NAME="accessories/plugins/CreationModificationPlugin_new.properties"/>
<node CREATED="1434128046296" ID="ID_1900827283" MODIFIED="1557498707213" POSITION="right" TEXT="GUI">
<font BOLD="true" NAME="SansSerif" SIZE="14"/>
<node CREATED="1434128054470" HGAP="7" ID="ID_1166611516" MODIFIED="1557498707213" TEXT="Workflow" VSHIFT="-15">
@ -59,24 +60,26 @@
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419217662" ID="ID_1622732481" MODIFIED="1557498707214" TEXT="#1147 establish UI start-up sequence">
<icon BUILTIN="pencil"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1538839140096" ID="ID_1491571377" MODIFIED="1557498707214" TEXT="#1145 define startup sequence">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1538839140096" ID="ID_1491571377" MODIFIED="1582486086563" TEXT="#1145 define startup sequence">
<icon BUILTIN="button_ok"/>
<node CREATED="1538839163477" ID="ID_840651927" MODIFIED="1557498707214" TEXT="&quot;eigentlich&quot; schon erledigt">
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
</node>
<node CREATED="1538839170700" ID="ID_172497653" MODIFIED="1557498707214" STYLE="fork">
<node CREATED="1538839170700" ID="ID_172497653" MODIFIED="1582486080773" STYLE="fork">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
<b><font color="#e01f1f">TODO</font></b>: Infos zusammentragen und dokumentieren
<b><font color="#288d6e">TODO</font></b>: Infos zusammentragen und dokumentieren
</p>
</body>
</html></richcontent>
</html>
</richcontent>
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1538839205056" ID="ID_1118716259" MODIFIED="1557498707215" TEXT="Lumiera Website -- Design-Sektion">
<node CREATED="1538839205056" ID="ID_1118716259" LINK="https://lumiera.org/documentation/design/architecture/Subsystems.html" MODIFIED="1582486123173" TEXT="Lumiera Website -- Design-Sektion">
<icon BUILTIN="info"/>
</node>
</node>
@ -403,7 +406,7 @@
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1484797253856" ID="ID_226245696" MODIFIED="1575131660805" TEXT="GUI start sauber">
<linktarget COLOR="#77c1c5" DESTINATION="ID_226245696" ENDARROW="Default" ENDINCLINATION="-1683;73;" ID="Arrow_ID_532646791" SOURCE="ID_1843835835" STARTARROW="None" STARTINCLINATION="3005;394;"/>
<icon BUILTIN="broken-line"/>
<node CREATED="1484797307376" ID="ID_842106541" MODIFIED="1557498707216" TEXT="Abfolge">
<node CREATED="1484797307376" FOLDED="true" ID="ID_842106541" MODIFIED="1582493802070" TEXT="Abfolge">
<icon BUILTIN="info"/>
<node CREATED="1484797311008" ID="ID_424744338" MODIFIED="1557498707216" TEXT="GuiFacade::start"/>
<node CREATED="1484797337516" ID="ID_750979034" MODIFIED="1557498707216" TEXT="erzeugt unique_ptr&lt;GuiRunner&gt;"/>
@ -418,12 +421,22 @@
<node CREATED="1484797483865" ID="ID_159090609" MODIFIED="1557498707216" TEXT="GuiThread (==runGUI())">
<node CREATED="1484797502462" ID="ID_21819368" MODIFIED="1557498707216" TEXT="erzeugt GtkLumiera"/>
<node CREATED="1484797512341" ID="ID_57994807" MODIFIED="1557498707216" TEXT="ruft darauf run()">
<node CREATED="1501854771820" FOLDED="true" ID="ID_1849270384" MODIFIED="1561827483823" TEXT="erzeugt UI-Backbone">
<node CREATED="1501854771820" FOLDED="true" ID="ID_1849270384" MODIFIED="1582493797614" TEXT="erzeugt UI-Backbone">
<arrowlink COLOR="#577ca7" DESTINATION="ID_1734603717" ENDARROW="Default" ENDINCLINATION="-18;-71;" ID="Arrow_ID_1972220174" STARTARROW="None" STARTINCLINATION="-130;2;"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1544238872425" HGAP="71" ID="ID_478753729" MODIFIED="1557498707216" TEXT="hier kann ein ungesch&#xfc;tzter Fehler passieren" VSHIFT="-58">
<linktarget COLOR="#e02825" DESTINATION="ID_478753729" ENDARROW="Default" ENDINCLINATION="-3550;0;" ID="Arrow_ID_840138296" SOURCE="ID_1795051800" STARTARROW="None" STARTINCLINATION="-69;-346;"/>
<linktarget COLOR="#e02825" DESTINATION="ID_478753729" ENDARROW="Default" ENDINCLINATION="-3550;0;" ID="Arrow_ID_390741072" SOURCE="ID_138383314" STARTARROW="None" STARTINCLINATION="-1804;756;"/>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544240822252" ID="ID_540724043" MODIFIED="1582493672224" TEXT="#1192 Lumiera hangs on failed GUI start">
<linktarget COLOR="#f12a42" DESTINATION="ID_540724043" ENDARROW="Default" ENDINCLINATION="-942;0;" ID="Arrow_ID_893876754" SOURCE="ID_14952077" STARTARROW="None" STARTINCLINATION="864;64;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1582493512018" ID="ID_1430216839" MODIFIED="1582493518909" TEXT="Problem definitiv noch nicht gel&#xf6;st"/>
<node CREATED="1582493520113" ID="ID_598389416" MODIFIED="1582493535283" TEXT="betrifft auch Fehler im ctor vom UI-Bus und UiManager">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582493537671" ID="ID_1292210413" MODIFIED="1582493550078" TEXT="out of Memory!">
<icon BUILTIN="clanbomber"/>
</node>
</node>
</node>
</node>
<node CREATED="1484797517052" ID="ID_840628023" MODIFIED="1557498707216" TEXT="l&#xf6;st das sigTerm aus"/>
@ -503,7 +516,7 @@
</node>
</node>
</node>
<node CREATED="1501857011825" ID="ID_1201296805" MODIFIED="1557498707216" TEXT="Synchronisation">
<node CREATED="1501857011825" FOLDED="true" ID="ID_1201296805" MODIFIED="1582493803650" TEXT="Synchronisation">
<icon BUILTIN="info"/>
<node CREATED="1501857019737" ID="ID_1981037750" MODIFIED="1557498707216" TEXT="GuiSubsysDescriptor">
<node CREATED="1501857031391" ID="ID_1576806105" MODIFIED="1557498707216" TEXT="start h&#xe4;lt Lock">
@ -581,7 +594,7 @@
</node>
</node>
<node CREATED="1501858109615" ID="ID_747885327" MODIFIED="1557498707217" TEXT="UI-Facaden">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1501858114023" ID="ID_749414376" MODIFIED="1557498707217">
<node COLOR="#435e98" CREATED="1501858114023" ID="ID_749414376" MODIFIED="1582487948670">
<richcontent TYPE="NODE"><html>
<head>
@ -628,6 +641,22 @@
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582493579819" ID="ID_387023352" MODIFIED="1582493593279" TEXT="Fazit: noch nicht ganz">
<icon BUILTIN="bell"/>
<node CREATED="1582493598679" ID="ID_14952077" MODIFIED="1582493672224" TEXT="es gibt einen Race im Start-up (#1192)">
<arrowlink COLOR="#f12a42" DESTINATION="ID_540724043" ENDARROW="Default" ENDINCLINATION="-942;0;" ID="Arrow_ID_893876754" STARTARROW="None" STARTINCLINATION="864;64;"/>
</node>
<node CREATED="1582493675037" ID="ID_974783388" MODIFIED="1582493696790" TEXT="zus&#xe4;tzlich gibt es die L&#xfc;cke mit der noch nicht ge&#xf6;ffneten Facade"/>
<node CREATED="1582493784351" ID="ID_548491726" MODIFIED="1582493794113" TEXT="sonst ist die Synchronisation sauber">
<icon BUILTIN="idea"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582493698042" ID="ID_306435149" MODIFIED="1582493720146" TEXT="trotzdem vertagt; sollte Subsystem-Runner &#xfc;berarbeiten">
<icon BUILTIN="hourglass"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582493761032" ID="ID_117656877" LINK="https://issues.lumiera.org/ticket/1177" MODIFIED="1582493774585" TEXT=" #1177 Subsytem-Runner design rework ">
<icon BUILTIN="flag-yellow"/>
</node>
</node>
</node>
</node>
<node COLOR="#338800" CREATED="1484871163902" ID="ID_274722396" MODIFIED="1557498707217" TEXT="closeGuiModule (PImpl) hat Lock">
<icon BUILTIN="button_ok"/>
@ -1071,9 +1100,9 @@
</node>
<node CREATED="1504203511199" ID="ID_1027795869" MODIFIED="1538263469664" TEXT="Nachricht per UI-Bus senden"/>
</node>
<node COLOR="#338800" CREATED="1484797822403" HGAP="37" ID="ID_364545191" MODIFIED="1561827464552" TEXT="Diff" VSHIFT="8">
<node COLOR="#338800" CREATED="1484797822403" FOLDED="true" HGAP="37" ID="ID_364545191" MODIFIED="1582487884518" TEXT="Diff" VSHIFT="8">
<icon BUILTIN="button_ok"/>
<node COLOR="#338800" CREATED="1502401930856" ID="ID_634125084" MODIFIED="1561827464554" TEXT="#1066 concept how to hand over diff messages">
<node COLOR="#338800" CREATED="1502401930856" FOLDED="true" ID="ID_634125084" MODIFIED="1582487870878" TEXT="#1066 concept how to hand over diff messages">
<icon BUILTIN="button_ok"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1502410099141" ID="ID_1388523431" MODIFIED="1538263469664" TEXT="unn&#xf6;tig: zwei Abstraktions-Typen">
<icon BUILTIN="stop-sign"/>
@ -4155,7 +4184,7 @@
<font BOLD="true" NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="info"/>
</node>
<node CREATED="1493754789137" ID="ID_1903744710" MODIFIED="1561827464670" TEXT="kommt mir komisch vor">
<node CREATED="1493754789137" FOLDED="true" ID="ID_1903744710" MODIFIED="1582487817557" TEXT="kommt mir komisch vor">
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1493754799439" ID="ID_288205807" MODIFIED="1518487921055" TEXT="das &quot;riecht&quot; nach Framework"/>
<node CREATED="1493754808373" ID="ID_998804989" MODIFIED="1533608413546" TEXT="&quot;wir machen bequem alles f&#xfc;r Sie&quot;">
@ -4266,8 +4295,8 @@
<node CREATED="1493768465482" ID="ID_1159523698" MODIFIED="1518487921056" TEXT="gtk_main aufrufen">
<icon BUILTIN="button_ok"/>
</node>
<node CREATED="1493768484007" ID="ID_384827553" MODIFIED="1534511297619" TEXT="von einem Gio::Application ableiten">
<arrowlink COLOR="#6d7495" DESTINATION="ID_1476863246" ENDARROW="Default" ENDINCLINATION="1126;-247;" ID="Arrow_ID_1941890495" STARTARROW="None" STARTINCLINATION="-231;14;"/>
<node CREATED="1493768484007" ID="ID_384827553" MODIFIED="1582487797600" TEXT="von einem Gio::Application ableiten">
<arrowlink COLOR="#6d7495" DESTINATION="ID_1476863246" ENDARROW="Default" ENDINCLINATION="1126;-247;" ID="Arrow_ID_1941890495" STARTARROW="None" STARTINCLINATION="-373;28;"/>
<icon BUILTIN="button_cancel"/>
</node>
</node>
@ -4388,7 +4417,7 @@
</html></richcontent>
</node>
</node>
<node CREATED="1481320847724" HGAP="42" ID="ID_545146501" MODIFIED="1561827464686" TEXT="wo ansiedeln" VSHIFT="-6">
<node CREATED="1481320847724" FOLDED="true" HGAP="42" ID="ID_545146501" MODIFIED="1582487700785" TEXT="wo ansiedeln" VSHIFT="-6">
<icon BUILTIN="help"/>
<node CREATED="1481509901926" ID="ID_1612540786" MODIFIED="1518487921056" TEXT="in proc::control"/>
<node CREATED="1481767522123" ID="ID_789146708" MODIFIED="1518487921056">
@ -4499,9 +4528,9 @@
</node>
</node>
</node>
<node CREATED="1481320850779" HGAP="45" ID="ID_1632600003" MODIFIED="1518487921057" TEXT="hochfahren" VSHIFT="-3">
<node CREATED="1481320850779" FOLDED="true" HGAP="45" ID="ID_1632600003" MODIFIED="1582487705118" TEXT="hochfahren" VSHIFT="-3">
<icon BUILTIN="button_ok"/>
<node CREATED="1481509921211" ID="ID_1515469097" MODIFIED="1561827464690">
<node CREATED="1481509921211" FOLDED="true" ID="ID_1515469097" MODIFIED="1582487687161">
<richcontent TYPE="NODE"><html>
<head>
@ -4584,7 +4613,7 @@
<node CREATED="1482464436919" ID="ID_64274402" MODIFIED="1482464442042" TEXT="f&#xfc;hrt Commands aus"/>
<node CREATED="1482464442438" ID="ID_1339868449" MODIFIED="1482464449049" TEXT="startet den Builder"/>
</node>
<node CREATED="1481599421021" ID="ID_461768132" MODIFIED="1561827464692" TEXT="Locking kl&#xe4;ren">
<node CREATED="1481599421021" FOLDED="true" ID="ID_461768132" MODIFIED="1582487678249" TEXT="Locking kl&#xe4;ren">
<icon BUILTIN="button_ok"/>
<node CREATED="1481684383530" ID="ID_236117" MODIFIED="1512926191672" TEXT="zwei unabh&#xe4;ngige Locks">
<icon BUILTIN="yes"/>
@ -4795,8 +4824,9 @@
<node CREATED="1483748231330" ID="ID_1962213649" MODIFIED="1518487921057" TEXT="soll hierzu sehen, da&#xdf; ein einfacher Aufruf wirklich klappt">
<icon BUILTIN="yes"/>
</node>
<node CREATED="1483748323014" ID="ID_1031176077" MODIFIED="1561827464697" TEXT="Nachrichten vom UI-Bus entnehmen">
<node COLOR="#338800" CREATED="1483748323014" FOLDED="true" ID="ID_1031176077" MODIFIED="1582487641495" TEXT="Nachrichten vom UI-Bus entnehmen">
<icon BUILTIN="button_ok"/>
<icon BUILTIN="help"/>
<node COLOR="#520262" CREATED="1483908814960" HGAP="34" ID="ID_430949603" MODIFIED="1561827464699" TEXT="Design sinnvoll?" VSHIFT="6">
<linktarget COLOR="#b694bf" DESTINATION="ID_430949603" ENDARROW="Default" ENDINCLINATION="178;425;" ID="Arrow_ID_1062305149" SOURCE="ID_329609486" STARTARROW="Default" STARTINCLINATION="-629;-2354;"/>
<font ITALIC="true" NAME="SansSerif" SIZE="12"/>
@ -4911,8 +4941,10 @@
<node CREATED="1483755360196" ID="ID_514688462" MODIFIED="1518487921058" TEXT="Nachrichten kommen ohne bestimmte Ordnung an"/>
</node>
</node>
<node CREATED="1483910254385" HGAP="88" ID="ID_267402281" MODIFIED="1561827464706" TEXT="Command-Instanz-Management" VSHIFT="-8">
<node CREATED="1483910254385" FOLDED="true" HGAP="88" ID="ID_267402281" MODIFIED="1582487629892" TEXT="Command-Instanz-Management" VSHIFT="-8">
<icon BUILTIN="messagebox_warning"/>
<icon BUILTIN="help"/>
<icon BUILTIN="button_cancel"/>
<node CREATED="1483910266799" ID="ID_86909318" MODIFIED="1518487921058" TEXT="wie funktioniert&apos;s?">
<icon BUILTIN="help"/>
</node>
@ -4948,7 +4980,7 @@
<node CREATED="1483921070115" ID="ID_398046799" MODIFIED="1518487921058" TEXT="Prototyp-Service"/>
<node CREATED="1483921132114" ID="ID_1652398711" MODIFIED="1518487921058" TEXT="liefert dekorierte Command-ID"/>
<node CREATED="1483921149368" ID="ID_1028150245" MODIFIED="1518487921058" TEXT="im GUI nur noch Command-IDs"/>
<node CREATED="1483924872930" ID="ID_242219866" MODIFIED="1575667686400">
<node CREATED="1483924872930" ID="ID_242219866" MODIFIED="1582487507380">
<richcontent TYPE="NODE"><html>
<head>
@ -4959,20 +4991,26 @@
</p>
</body>
</html></richcontent>
<linktarget COLOR="#e9ba2d" DESTINATION="ID_242219866" ENDARROW="Default" ENDINCLINATION="-944;1604;" ID="Arrow_ID_1617518648" SOURCE="ID_1479669922" STARTARROW="None" STARTINCLINATION="3617;-1097;"/>
<linktarget COLOR="#8ba05e" DESTINATION="ID_242219866" ENDARROW="Default" ENDINCLINATION="1170;1204;" ID="Arrow_ID_1617518648" SOURCE="ID_1479669922" STARTARROW="None" STARTINCLINATION="3617;-1097;"/>
<node CREATED="1582487470565" ID="ID_323975519" MODIFIED="1582487479759" TEXT="teilweise umgesetzt"/>
<node CREATED="1582487480467" ID="ID_1883804803" MODIFIED="1582487486597" TEXT="Deokrieren von Command-IDs"/>
<node CREATED="1582487487266" ID="ID_1888880877" MODIFIED="1582487494285" TEXT="weitergehende Ideen verworfen">
<icon BUILTIN="stop-sign"/>
</node>
<node CREATED="1483927472385" HGAP="30" ID="ID_774425061" MODIFIED="1518487921058" VSHIFT="13">
</node>
<node CREATED="1483927472385" HGAP="30" ID="ID_774425061" MODIFIED="1582487441000" VSHIFT="13">
<richcontent TYPE="NODE"><html>
<head>
</head>
<body>
<p>
vertagt; Ticket <font color="#c52a05">#1058</font>
letztlich verworfen; siehe Ticket <font color="#c52a05">#1058</font>
</p>
</body>
</html></richcontent>
<icon BUILTIN="bell"/>
</html>
</richcontent>
<icon BUILTIN="button_cancel"/>
</node>
</node>
</node>
@ -5045,7 +5083,7 @@
</node>
<node CREATED="1482464658193" HGAP="-14" ID="ID_726798260" MODIFIED="1561827464711" TEXT="Ausgestaltung" VSHIFT="29">
<icon BUILTIN="button_ok"/>
<node CREATED="1482465840843" ID="ID_818984499" MODIFIED="1518487921059" TEXT="Entwurf">
<node CREATED="1482465840843" FOLDED="true" ID="ID_818984499" MODIFIED="1582487750838" TEXT="Entwurf">
<icon BUILTIN="stop-sign"/>
<node CREATED="1482464676366" ID="ID_1064506750" MODIFIED="1518487921059" TEXT="bekommt Nachrichten vom UI-Bus">
<node CREATED="1482464755404" ID="ID_213932356" MODIFIED="1518487921059" TEXT="entnimmt Argument"/>
@ -5075,7 +5113,7 @@
<node CREATED="1482464719513" ID="ID_1003624750" MODIFIED="1518487921059" TEXT="aber synchron die Commands beziehen"/>
<node CREATED="1482464730783" ID="ID_1225624791" MODIFIED="1518487921059" TEXT="damit Exceptions sofort fliegen"/>
</node>
<node CREATED="1484377470133" HGAP="35" ID="ID_62981197" MODIFIED="1518487921059" TEXT="Weiterungen" VSHIFT="11">
<node CREATED="1484377470133" FOLDED="true" HGAP="35" ID="ID_62981197" MODIFIED="1582487752710" TEXT="Weiterungen" VSHIFT="11">
<icon BUILTIN="hourglass"/>
<node CREATED="1484377485339" ID="ID_414407137" MODIFIED="1518487921059" TEXT="Commands mit verschiedener Priorit&#xe4;t"/>
<node CREATED="1484377503465" ID="ID_72812588" MODIFIED="1518487921059" TEXT="Commands aggregieren"/>
@ -6101,8 +6139,8 @@
<font BOLD="true" NAME="SansSerif" SIZE="13"/>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485457021805" ID="ID_1476863246" MODIFIED="1557498707220" TEXT="Gtk::UiManager ist deprecated">
<linktarget COLOR="#6d7495" DESTINATION="ID_1476863246" ENDARROW="Default" ENDINCLINATION="1126;-247;" ID="Arrow_ID_1941890495" SOURCE="ID_384827553" STARTARROW="None" STARTINCLINATION="-231;14;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1485457021805" ID="ID_1476863246" MODIFIED="1582487797600" TEXT="Gtk::UiManager ist deprecated">
<linktarget COLOR="#6d7495" DESTINATION="ID_1476863246" ENDARROW="Default" ENDINCLINATION="1126;-247;" ID="Arrow_ID_1941890495" SOURCE="ID_384827553" STARTARROW="None" STARTINCLINATION="-373;28;"/>
<linktarget COLOR="#ae182e" DESTINATION="ID_1476863246" ENDARROW="Default" ENDINCLINATION="283;-164;" ID="Arrow_ID_1851148216" SOURCE="ID_206480879" STARTARROW="Default" STARTINCLINATION="481;0;"/>
<icon BUILTIN="messagebox_warning"/>
<node CREATED="1493768617653" ID="ID_292624709" MODIFIED="1557498707220" TEXT="f&#xe4;llt anscheinend ersatzlos weg"/>
@ -19104,9 +19142,13 @@
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1575057178202" ID="ID_1208770677" MODIFIED="1575580821515" TEXT="relatives Positionieren">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1575057178202" ID="ID_1208770677" MODIFIED="1582410320625" TEXT="relatives Positionieren">
<linktarget COLOR="#4f94d2" DESTINATION="ID_1208770677" ENDARROW="Default" ENDINCLINATION="207;339;" ID="Arrow_ID_1505912691" SOURCE="ID_802422598" STARTARROW="None" STARTINCLINATION="-349;-21;"/>
<linktarget COLOR="#f17745" DESTINATION="ID_1208770677" ENDARROW="Default" ENDINCLINATION="-696;74;" ID="Arrow_ID_1555581659" SOURCE="ID_969058360" STARTARROW="None" STARTINCLINATION="1109;48;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582410135584" ID="ID_460685639" MODIFIED="1582410225517" TEXT="#1207 relative attachment and (custom) drawing of sub-widgets">
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1575057198430" ID="ID_1171619130" MODIFIED="1575057213917" TEXT="neues ViewHooked relativ zu einem Bezugs-ViewHooked">
<node CREATED="1575057268873" ID="ID_827160586" MODIFIED="1575566385152" TEXT="das k&#xf6;nnte Quer-Beweglichkeit zwischen Typen implizieren">
<arrowlink COLOR="#146b9a" DESTINATION="ID_1565606328" ENDARROW="Default" ENDINCLINATION="-218;27;" ID="Arrow_ID_1877360800" STARTARROW="None" STARTINCLINATION="-76;-196;"/>
@ -21960,6 +22002,10 @@
<arrowlink COLOR="#15bcc9" DESTINATION="ID_1816490333" ENDARROW="Default" ENDINCLINATION="-785;86;" ID="Arrow_ID_408864676" STARTARROW="None" STARTINCLINATION="-225;17;"/>
<linktarget COLOR="#6780d3" DESTINATION="ID_1121301646" ENDARROW="Default" ENDINCLINATION="551;-498;" ID="Arrow_ID_229033893" SOURCE="ID_1642579599" STARTARROW="None" STARTINCLINATION="-477;21;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582410135584" ID="ID_969058360" MODIFIED="1582410320625" TEXT="#1207 relative attachment and (custom) drawing of sub-widgets">
<arrowlink COLOR="#f17745" DESTINATION="ID_1208770677" ENDARROW="Default" ENDINCLINATION="-696;74;" ID="Arrow_ID_1555581659" STARTARROW="None" STARTINCLINATION="1109;48;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1576974013309" ID="ID_662883026" MODIFIED="1576974034328" TEXT="mu&#xdf; der Overview-Canvas &#xfc;berhaupt ber&#xfc;cksichtigt werden?">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1576974036176" ID="ID_1084997647" MODIFIED="1576974088421" TEXT="wenn ja: dann haben wir ein Problem mit remove()">
@ -27302,9 +27348,9 @@
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544238994154" ID="ID_1878681615" MODIFIED="1557498707232" TEXT="Problem: Fehler-Handler sch&#xfc;tzt nur die Loop selber">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1544239461493" ID="ID_1795051800" MODIFIED="1557498707232" TEXT="catch-Block anders anordnen">
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1544239461493" ID="ID_1795051800" MODIFIED="1582493900730" TEXT="catch-Block anders anordnen">
<arrowlink COLOR="#e02825" DESTINATION="ID_478753729" ENDARROW="Default" ENDINCLINATION="-3550;0;" ID="Arrow_ID_840138296" STARTARROW="None" STARTINCLINATION="-69;-346;"/>
<linktarget COLOR="#e5221e" DESTINATION="ID_1795051800" ENDARROW="Default" ENDINCLINATION="-43;971;" ID="Arrow_ID_127697886" SOURCE="ID_110235945" STARTARROW="None" STARTINCLINATION="-235;72;"/>
<linktarget COLOR="#e5221e" DESTINATION="ID_1795051800" ENDARROW="Default" ENDINCLINATION="-1916;0;" ID="Arrow_ID_127697886" SOURCE="ID_110235945" STARTARROW="None" STARTINCLINATION="-716;43;"/>
<icon BUILTIN="messagebox_warning"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544239713424" ID="ID_632286012" MODIFIED="1557498707232" TEXT="m&#xf6;glichen Race mit Subsystem-Runner pr&#xfc;fen">
@ -27427,10 +27473,29 @@
<arrowlink COLOR="#f0eca5" DESTINATION="ID_1007296291" ENDARROW="Default" ENDINCLINATION="881;2029;" ID="Arrow_ID_1736540527" STARTARROW="None" STARTINCLINATION="418;-44;"/>
<icon BUILTIN="button_ok"/>
</node>
<node COLOR="#338800" CREATED="1538839326830" ID="ID_1942975878" MODIFIED="1538839342189" TEXT="jetzt retul&#xe4;r &#xfc;ber die Notification facade">
<node COLOR="#338800" CREATED="1538839326830" ID="ID_1942975878" MODIFIED="1582443399893" TEXT="jetzt regul&#xe4;r &#xfc;ber die Notification facade">
<icon BUILTIN="button_ok"/>
</node>
</node>
<node CREATED="1582443855728" ID="ID_1789967574" MODIFIED="1582443913545" TEXT="cmd::test_meta_activateContentDiff">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<ul>
<li>
InteractionDirector::populateContent_afterStart()
</li>
<li>
meta-cmd.cpp
</li>
</ul>
</body>
</html>
</richcontent>
<icon BUILTIN="info"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1533401303142" ID="ID_1338326263" MODIFIED="1533401327708" TEXT="hart gecodeten initialen Diff hochschicken">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#ff0000" CREATED="1533403016000" ID="ID_515841398" MODIFIED="1533403026256" TEXT="Diff-Nachrichten wieder verstehen">
@ -31618,8 +31683,7 @@
&#187;<b>Tangible</b>&#171; : Basis
</p>
</body>
</html>
</richcontent>
</html></richcontent>
<font NAME="SansSerif" SIZE="13"/>
<node CREATED="1582388710734" ID="ID_763140844" MODIFIED="1582388714337" TEXT="Komponenten"/>
<node CREATED="1582388714901" ID="ID_1965183860" MODIFIED="1582388717017" TEXT="Funktionen">
@ -32434,8 +32498,8 @@
<node CREATED="1492205732389" ID="ID_1080697951" MODIFIED="1518487921090" TEXT="wir k&#xf6;nnen stets gleich triggern"/>
</node>
<node CREATED="1492205741483" ID="ID_1132272888" MODIFIED="1518487921090" TEXT="Command wird sofort nach dem Binden getriggert"/>
<node COLOR="#338800" CREATED="1483925280108" HGAP="30" ID="ID_1479669922" MODIFIED="1575667686400" TEXT="Protokoll-Erweiterung" VSHIFT="8">
<arrowlink COLOR="#e9ba2d" DESTINATION="ID_242219866" ENDARROW="Default" ENDINCLINATION="-944;1604;" ID="Arrow_ID_1617518648" STARTARROW="None" STARTINCLINATION="3617;-1097;"/>
<node COLOR="#338800" CREATED="1483925280108" HGAP="30" ID="ID_1479669922" MODIFIED="1582487520669" TEXT="Protokoll-Erweiterung" VSHIFT="8">
<arrowlink COLOR="#8ba05e" DESTINATION="ID_242219866" ENDARROW="Default" ENDINCLINATION="1170;1204;" ID="Arrow_ID_1617518648" STARTARROW="None" STARTINCLINATION="3617;-1097;"/>
<icon BUILTIN="button_ok"/>
<node CREATED="1483925298713" ID="ID_347702585" MODIFIED="1518487921090" TEXT="Command-Prototyp forken"/>
<node CREATED="1483925307385" ID="ID_509982277" MODIFIED="1518487921090" TEXT="ID durch Kontext-ID dekorieren"/>
@ -33429,7 +33493,7 @@
</node>
<node CREATED="1491692398913" HGAP="27" ID="ID_1349137025" MODIFIED="1491753610374" TEXT="in UI-Bus" VSHIFT="6">
<icon BUILTIN="help"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1491692419958" ID="ID_411638678" MODIFIED="1492391112135" TEXT="#1058 consider expanding UI-Bus protocol for command cloning">
<node COLOR="#990000" CREATED="1491692419958" ID="ID_411638678" MODIFIED="1582487370244" TEXT="#1058 consider expanding UI-Bus protocol for command cloning">
<icon BUILTIN="button_cancel"/>
</node>
<node CREATED="1491692431021" ID="ID_1526880552" MODIFIED="1491692436375" TEXT="wollen wir das?"/>
@ -41445,8 +41509,7 @@
es ist wohl nicht ein spezieller Diff. Es tritt sogar auf, wenn man zweimal den gleichen Diff schickt
</p>
</body>
</html>
</richcontent>
</html></richcontent>
</node>
<node CREATED="1582393056148" ID="ID_229440778" MODIFIED="1582393060752" TEXT="Beobachtungen">
<node CREATED="1582393085696" ID="ID_1075791214" MODIFIED="1582393107401" TEXT="DiffApplicationStrategie::completeDiffApplication()">
@ -44620,8 +44683,8 @@
</node>
</node>
<node CREATED="1531419748046" ID="ID_1791265013" MODIFIED="1557498707236" TEXT="Lebenszyklus">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419790153" ID="ID_1605635763" MODIFIED="1557498707236" TEXT="#1145 define startup sequence">
<icon BUILTIN="flag-yellow"/>
<node COLOR="#338800" CREATED="1531419790153" ID="ID_1605635763" MODIFIED="1582443076662" TEXT="#1145 define startup sequence">
<icon BUILTIN="button_ok"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531419814485" ID="ID_373568821" MODIFIED="1557498707236" TEXT="#1146 complete application startup sequence">
<icon BUILTIN="flag-yellow"/>
@ -44631,6 +44694,9 @@
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1531420231598" ID="ID_1997153046" MODIFIED="1557498707236" TEXT="#1148 populate initial session">
<arrowlink COLOR="#665692" DESTINATION="ID_1392317817" ENDARROW="Default" ENDINCLINATION="-1993;202;" ID="Arrow_ID_609042013" STARTARROW="Default" STARTINCLINATION="1943;108;"/>
<icon BUILTIN="flag-yellow"/>
<node CREATED="1582443973100" HGAP="47" ID="ID_1989055863" MODIFIED="1582443988612" TEXT="getriggert von InteractionDirector::populateContent_afterStart()" VSHIFT="22">
<icon BUILTIN="idea"/>
</node>
</node>
</node>
</node>
@ -54277,7 +54343,7 @@
<node BACKGROUND_COLOR="#fdfdcf" COLOR="#990000" CREATED="1446356368070" HGAP="-38" ID="ID_768449868" MODIFIED="1582333957320" TEXT="Au Au" VSHIFT="196">
<edge COLOR="#c14b4b" STYLE="sharp_bezier"/>
<icon BUILTIN="broken-line"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544239377061" ID="ID_1224449803" MODIFIED="1557498707243" TEXT="GUI-Start not yet failsafe">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544239377061" FOLDED="true" ID="ID_1224449803" MODIFIED="1582494287885" TEXT="GUI-Start not yet failsafe">
<icon BUILTIN="broken-line"/>
<node COLOR="#435e98" CREATED="1544239394777" ID="ID_626803835" MODIFIED="1557498707243" TEXT="aufgedeckt durch fehlende UI-Resourcen">
<linktarget COLOR="#7f244b" DESTINATION="ID_626803835" ENDARROW="Default" ENDINCLINATION="193;-461;" ID="Arrow_ID_65546348" SOURCE="ID_1906746912" STARTARROW="None" STARTINCLINATION="421;19;"/>
@ -54291,8 +54357,11 @@
<arrowlink COLOR="#e02825" DESTINATION="ID_478753729" ENDARROW="Default" ENDINCLINATION="-3550;0;" ID="Arrow_ID_390741072" STARTARROW="None" STARTINCLINATION="-1804;756;"/>
<icon BUILTIN="clanbomber"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544240822252" ID="ID_110235945" MODIFIED="1557498707243" TEXT="#1192 Lumiera hangs on failed GUI start">
<arrowlink COLOR="#e5221e" DESTINATION="ID_1795051800" ENDARROW="Default" ENDINCLINATION="-43;971;" ID="Arrow_ID_127697886" STARTARROW="None" STARTINCLINATION="-235;72;"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1544240822252" ID="ID_110235945" MODIFIED="1582493900730" TEXT="#1192 Lumiera hangs on failed GUI start">
<arrowlink COLOR="#e5221e" DESTINATION="ID_1795051800" ENDARROW="Default" ENDINCLINATION="-1916;0;" ID="Arrow_ID_127697886" STARTARROW="None" STARTINCLINATION="-716;43;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1582493761032" ID="ID_1071108928" LINK="https://issues.lumiera.org/ticket/1177" MODIFIED="1582493774585" TEXT=" #1177 Subsytem-Runner design rework ">
<icon BUILTIN="flag-yellow"/>
</node>
</node>