Skip to content

Commit 1695463

Browse files
authored
Merge pull request #2 from DreamRealityInteractive/feature/shutdown_from_script
Shutdown imgui from a script final() function
2 parents b564cfc + c6c87c6 commit 1695463

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

netimgui/api/netimgui.script_api

+5
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@
2828
- name: disconnect
2929
type: function
3030

31+
#*****************************************************************************************************
32+
33+
- name: shutdown
34+
type: function
35+
3136
#*****************************************************************************************************
3237

3338
- name: is_connected

netimgui/netimgui.script

+2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ function init(self)
2626
end
2727

2828
function final(self)
29+
netimgui.shutdown()
30+
2931
if self.acquire_input_focus then
3032
msg.post(".", "release_input_focus")
3133
end

netimgui/src/extension_netimgui.cpp

+11-3
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ static int netimgui_ConnectToApp(lua_State *L)
2424
static int netimgui_ConnectFromApp(lua_State *L)
2525
{
2626
DM_LUA_STACK_CHECK(L, 0);
27-
//imgui_NewFrame();
2827
const char* client_name = luaL_checkstring(L, 1);
2928
NetImgui::ConnectFromApp(client_name);
3029
return 0;
@@ -33,11 +32,17 @@ static int netimgui_ConnectFromApp(lua_State *L)
3332
static int netimgui_Disconnect(lua_State *L)
3433
{
3534
DM_LUA_STACK_CHECK(L, 0);
36-
//imgui_NewFrame();
3735
NetImgui::Disconnect();
3836
return 0;
3937
}
4038

39+
static int netimgui_Shutdown(lua_State *L)
40+
{
41+
DM_LUA_STACK_CHECK(L, 0);
42+
NetImgui::Shutdown();
43+
return 0;
44+
}
45+
4146
static int netimgui_IsConnected(lua_State *L)
4247
{
4348
DM_LUA_STACK_CHECK(L, 1);
@@ -55,6 +60,7 @@ static const luaL_reg Module_methods[] =
5560
{"connect_to_app", netimgui_ConnectToApp},
5661
{"disconnect", netimgui_Disconnect},
5762
{"is_connected", netimgui_IsConnected},
63+
{"shutdown", netimgui_Shutdown},
5864
{0, 0}
5965
};
6066

@@ -91,7 +97,9 @@ dmExtension::Result AppFinalizeDefoldNetImGui(dmExtension::AppParams* params)
9197
dmExtension::Result FinalizeDefoldNetImGui(dmExtension::Params* params)
9298
{
9399
dmLogInfo("FinalizeDefoldNetImGui");
94-
NetImgui::Shutdown();
100+
// Shutdown is now triggered from netimgui.script, to avoid a crash
101+
// from a presumed race condition with imgui shutdown
102+
//NetImgui::Shutdown();
95103
return dmExtension::RESULT_OK;
96104
}
97105

0 commit comments

Comments
 (0)