Skip to content

Commit efeae8d

Browse files
committed
eventhandler: Disconnect signals from all public sources on shutdown
Fixes crash on shutdown when memory leaks lead to un-destroyed sources after plugin shutdown.
1 parent 4ff109b commit efeae8d

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/eventhandler/EventHandler.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,20 @@ EventHandler::~EventHandler()
5454
blog(LOG_ERROR, "[EventHandler::~EventHandler] Unable to get libobs signal handler!");
5555
}
5656

57+
// Revoke callbacks of all inputs and scenes, in case some still have our callbacks attached
58+
auto enumInputs = [](void *param, obs_source_t *source) {
59+
auto eventHandler = static_cast<EventHandler *>(param);
60+
eventHandler->DisconnectSourceSignals(source);
61+
return true;
62+
};
63+
obs_enum_sources(enumInputs, this);
64+
auto enumScenes = [](void *param, obs_source_t *source) {
65+
auto eventHandler = static_cast<EventHandler *>(param);
66+
eventHandler->DisconnectSourceSignals(source);
67+
return true;
68+
};
69+
obs_enum_scenes(enumScenes, this);
70+
5771
blog_debug("[EventHandler::~EventHandler] Finished.");
5872
}
5973

0 commit comments

Comments
 (0)