Library/Application: attempt to switch OutputDirector

...hitting a roadblock however:
The existing Threads in the Lumiera application were effectively "detached"
But the C++14 framework requires us to keep the Thread-object alive
This commit is contained in:
Fischlurch 2023-10-05 03:21:30 +02:00
parent cb15b43489
commit b00d435ab6
2 changed files with 58 additions and 7 deletions

View file

@ -29,9 +29,9 @@
#include "steam/play/play-service.hpp"
#include "steam/play/output-manager.hpp"
#include "steam/play/output-director.hpp"
#include "vault/thread-wrapper.hpp"
#include "lib/thread.hpp"
using vault::Thread;
using lib::Thread;
namespace steam {
@ -102,10 +102,11 @@ namespace play {
if (not shutdown_initiated_)
{
shutdown_initiated_ = true;
Thread ("Output shutdown supervisor",
[=]{
bringDown (completedSignal);
});
Thread{"Output shutdown supervisor"
,[=]{
bringDown (completedSignal);
}}
.detach();
}
}

View file

@ -80019,6 +80019,50 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
<icon BUILTIN="button_ok"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1696468379848" ID="ID_1146069423" MODIFIED="1696468675806" TEXT="Erg&#xe4;nzung: BackgroundThread">
<linktarget COLOR="#bc3562" DESTINATION="ID_1146069423" ENDARROW="Default" ENDINCLINATION="-134;397;" ID="Arrow_ID_516910789" SOURCE="ID_137837629" STARTARROW="None" STARTINCLINATION="-99;-4;"/>
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1696468398477" ID="ID_1775921981" MODIFIED="1696468422766" TEXT="neue Anforderung: komplett abgekoppelt">
<icon BUILTIN="yes"/>
<node CREATED="1696468424018" ID="ID_1127252428" MODIFIED="1696468584146" TEXT="ergibt sich aus dem Protokoll der C++14 - Threads">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
...diese erzwingen, da&#223; das Thread-Objekt w&#228;hrend der gesamten Ausf&#252;hrung der Thread-Funktion erhalten bleibt; dies Design erscheint auch sinnvoll
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1696468446119" ID="ID_328360890" MODIFIED="1696468533131" TEXT="unser bisheriger Thread-Wrapper konnte das (wegen dem Threadpool)">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
der bisherige Lumiera-Threadwrapper hat zwar ein Thread-Handle gehalten, das aber letztlich beim Threadpool registriert war. Daher war das Thread-Objekt selber im Grunde verzichtbar (es sei denn, man hat davon abgeleitet und dort weitere Felder untergebracht)
</p>
</body>
</html>
</richcontent>
</node>
<node CREATED="1696468721033" ID="ID_1633697433" MODIFIED="1696468747969" TEXT="alle bisher realisierten Subsystem-Threads verhalten sich so">
<icon BUILTIN="messagebox_warning"/>
</node>
</node>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1696468596155" ID="ID_1909710868" MODIFIED="1696468616300" TEXT="Design: auf den neuen Thread-Wrapper aufsetzen">
<icon BUILTIN="flag-yellow"/>
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1696468627430" ID="ID_1189676257" MODIFIED="1696468763145" TEXT="Anforderungen">
<icon BUILTIN="yes"/>
<node CREATED="1696468151894" ID="ID_1613034704" MODIFIED="1696468650111" TEXT="der Thread-Funktor mu&#xdf; das Thread-Objekt als selbst halten"/>
<node CREATED="1696468197640" ID="ID_1523718397" MODIFIED="1696468221818" TEXT="der Aufruf-context gibt jeden Bezug dazu auf"/>
</node>
</node>
</node>
<node BACKGROUND_COLOR="#eef0c5" COLOR="#990000" CREATED="1695394205547" ID="ID_1719816317" MODIFIED="1696015377362" TEXT="Tests umstellen und modernisieren">
<icon BUILTIN="pencil"/>
<node COLOR="#338800" CREATED="1695394270093" FOLDED="true" ID="ID_585437655" MODIFIED="1696007768225" TEXT="ThreadWrapper_test">
@ -81112,7 +81156,13 @@ Date:&#160;&#160;&#160;Thu Apr 20 18:53:17 2023 +0200<br/>
</node>
</node>
</node>
<node CREATED="1696029465121" ID="ID_786350998" MODIFIED="1696029583638" TEXT="gtk-lumiera.cpp"/>
<node CREATED="1696029465121" ID="ID_786350998" MODIFIED="1696029583638" TEXT="gtk-lumiera.cpp">
<node BACKGROUND_COLOR="#eee5c3" COLOR="#990000" CREATED="1696468041645" ID="ID_137837629" MODIFIED="1696468682025" TEXT="brauche einen Thread, den man in den Hintergrund schieben kann">
<arrowlink COLOR="#bc3562" DESTINATION="ID_1146069423" ENDARROW="Default" ENDINCLINATION="-134;397;" ID="Arrow_ID_516910789" STARTARROW="None" STARTINCLINATION="-99;-4;"/>
<icon BUILTIN="flag-yellow"/>
</node>
<node CREATED="1696468692302" ID="ID_1299573982" MODIFIED="1696468713991" TEXT="SteamDispatcher und OutputDirector brauchen das ebenso"/>
</node>
<node CREATED="1696029465122" ID="ID_871343805" MODIFIED="1696029593893" TEXT="output-director.cpp"/>
<node COLOR="#338800" CREATED="1696029465122" FOLDED="true" ID="ID_556208204" MODIFIED="1696358985114" TEXT="steam-dispatcher.cpp">
<linktarget COLOR="#71be6f" DESTINATION="ID_556208204" ENDARROW="Default" ENDINCLINATION="1038;-401;" ID="Arrow_ID_1257115855" SOURCE="ID_1718267866" STARTARROW="None" STARTINCLINATION="602;40;"/>