mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-07-13 16:55:02 -04:00
UI: Add preload callbacks to frontend API
Allows loading data before actually loading any scene data.
This commit is contained in:
@@ -49,6 +49,7 @@ struct OBSStudioAPI : obs_frontend_callbacks {
|
||||
OBSBasic *main;
|
||||
vector<OBSStudioCallback<obs_frontend_event_cb>> callbacks;
|
||||
vector<OBSStudioCallback<obs_frontend_save_cb>> saveCallbacks;
|
||||
vector<OBSStudioCallback<obs_frontend_save_cb>> preloadCallbacks;
|
||||
|
||||
inline OBSStudioAPI(OBSBasic *main_) : main(main_) {}
|
||||
|
||||
@@ -348,6 +349,26 @@ struct OBSStudioAPI : obs_frontend_callbacks {
|
||||
saveCallbacks.erase(saveCallbacks.begin() + idx);
|
||||
}
|
||||
|
||||
void obs_frontend_add_preload_callback(obs_frontend_save_cb callback,
|
||||
void *private_data) override
|
||||
{
|
||||
size_t idx = GetCallbackIdx(preloadCallbacks, callback,
|
||||
private_data);
|
||||
if (idx == (size_t)-1)
|
||||
preloadCallbacks.emplace_back(callback, private_data);
|
||||
}
|
||||
|
||||
void obs_frontend_remove_preload_callback(obs_frontend_save_cb callback,
|
||||
void *private_data) override
|
||||
{
|
||||
size_t idx = GetCallbackIdx(preloadCallbacks, callback,
|
||||
private_data);
|
||||
if (idx == (size_t)-1)
|
||||
return;
|
||||
|
||||
preloadCallbacks.erase(preloadCallbacks.begin() + idx);
|
||||
}
|
||||
|
||||
void obs_frontend_push_ui_translation(
|
||||
obs_frontend_translate_ui_cb translate) override
|
||||
{
|
||||
@@ -409,6 +430,15 @@ struct OBSStudioAPI : obs_frontend_callbacks {
|
||||
{
|
||||
for (auto cb : saveCallbacks)
|
||||
cb.callback(settings, false, cb.private_data);
|
||||
}
|
||||
}
|
||||
|
||||
void on_preload(obs_data_t *settings) override
|
||||
{
|
||||
for (size_t i = preloadCallbacks.size(); i > 0; i--) {
|
||||
auto cb = preloadCallbacks[i - 1];
|
||||
cb.callback(settings, false, cb.private_data);
|
||||
}
|
||||
}
|
||||
|
||||
void on_save(obs_data_t *settings) override
|
||||
|
||||
Reference in New Issue
Block a user