提交 1abf9157 编写于 作者: J jp9000

Add module callbacks for loading locale data

The module callback obs_module_set_locale will be called after loading
the module, and any time the locale is manually changed via core API.

When this function is called, the module is expected to load new text
lookup values for all the text it uses based upon the current locale.
上级 0b4a259e
......@@ -52,6 +52,7 @@ struct draw_callback {
struct obs_module {
char *name;
void *module;
void (*set_locale)(const char *locale);
};
extern void free_module(struct obs_module *mod);
......
......@@ -73,7 +73,12 @@ int obs_load_module(const char *path)
return errorcode;
}
mod.name = bstrdup(path);
mod.name = bstrdup(path);
mod.set_locale = os_dlsym(mod.module, "obs_module_set_locale");
if (mod.set_locale)
mod.set_locale(obs->locale);
da_push_back(obs->modules, &mod);
return MODULE_SUCCESS;
}
......
......@@ -50,6 +50,9 @@ MODULE_EXPORT bool obs_module_load(uint32_t libobs_version);
/** Optional: Called when the module is unloaded. */
MODULE_EXPORT void obs_module_unload(void);
/** Called to set the current locale data for the module. */
MODULE_EXPORT void obs_module_set_locale(const char *locale);
/**
* Optional: Declares the author(s) of the module
*
......@@ -59,9 +62,5 @@ MODULE_EXPORT void obs_module_unload(void);
MODULE_EXPORT const char *obs_module_author(void); \
const char *obs_module_author(void) {return name;}
/**
* Optional: Declares the author of the module
*
* @param locale Locale to look up the description for.
*/
MODULE_EXPORT const char *obs_module_description(const char *locale);
/** Optional: Returns a description of the module */
MODULE_EXPORT const char *obs_module_description(void);
......@@ -578,6 +578,13 @@ void obs_set_locale(const char *locale)
if (obs->locale)
bfree(obs->locale);
obs->locale = bstrdup(locale);
for (size_t i = 0; i < obs->modules.num; i++) {
struct obs_module *module = obs->modules.array+i;
if (module->set_locale)
module->set_locale(locale);
}
}
const char *obs_get_locale(void)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册