Esempio n. 1
0
void obs_module_unload(void)
{
	if (libvlc)
		libvlc_release_(libvlc);
	if (libvlc_module)
		os_dlclose(libvlc_module);
}
Esempio n. 2
0
int obs_load_module(const char *path)
{
	struct obs_module mod;
	bool (*module_load)(void) = NULL;

	mod.module = os_dlopen(path);
	if (!mod.module)
		return MODULE_FILENOTFOUND;

	module_load = os_dlsym(mod.module, "module_load");
	if (module_load) {
		if (!module_load()) {
			os_dlclose(mod.module);
			return MODULE_ERROR;
		}
	}

	mod.name = bstrdup(path);
	module_load_exports(&mod, &obs->input_types.da, "inputs",
			sizeof(struct source_info), get_source_info);
	module_load_exports(&mod, &obs->filter_types.da, "filters",
			sizeof(struct source_info), get_source_info);
	module_load_exports(&mod, &obs->transition_types.da, "transitions",
			sizeof(struct source_info), get_source_info);
	module_load_exports(&mod, &obs->output_types.da, "outputs",
			sizeof(struct output_info), get_output_info);

	da_push_back(obs->modules, &mod);
	return MODULE_SUCCESS;
}
Esempio n. 3
0
void

obs_module_unload()
{
	if (obs_so) {
		obs_actual_unload();
		os_dlclose(obs_so);
		obs_so = NULL;
	}


}
Esempio n. 4
0
void free_module(struct obs_module *mod)
{
	if (!mod)
		return;

	if (mod->module) {
		void (*module_unload)(void);

		module_unload = os_dlsym(mod->module, "module_unload");
		if (module_unload)
			module_unload();

		os_dlclose(mod->module);
	}

	bfree(mod->name);
}
Esempio n. 5
0
void free_module(struct obs_module *mod)
{
    if (!mod)
        return;

    if (mod->module) {
        if (mod->free_locale)
            mod->free_locale();

        if (mod->loaded && mod->unload)
            mod->unload();

        os_dlclose(mod->module);
    }

    bfree(mod->bin_path);
    bfree(mod->data_path);
    bfree(mod);
}
Esempio n. 6
0
void gs_destroy(graphics_t graphics)
{
	if (!graphics)
		return;

	while (thread_graphics)
		gs_leavecontext();

	if (graphics->device) {
		graphics->exports.device_entercontext(graphics->device);
		graphics->exports.vertexbuffer_destroy(graphics->sprite_buffer);
		graphics->exports.vertexbuffer_destroy(
				graphics->immediate_vertbuffer);
		graphics->exports.device_destroy(graphics->device);
	}

	pthread_mutex_destroy(&graphics->mutex);
	da_free(graphics->matrix_stack);
	da_free(graphics->viewport_stack);
	os_dlclose(graphics->module);
	bfree(graphics);
}
Esempio n. 7
0
bool
obs_module_load(void)
{
	obs_so = NULL;
	
	bool success;
	char *obs_browser_path = obs_module_file("obs-browser");
	if (obs_browser_path) {
		obs_so = os_dlopen(obs_browser_path);
		if (obs_so) {
			obs_actual_load = os_dlsym(obs_so, "obs_module_load");
			obs_actual_unload = os_dlsym(obs_so, 
				"obs_module_unload");
			obs_actual_module_set_pointer = os_dlsym(obs_so,
				"obs_actual_module_so");

			if (obs_actual_load && obs_actual_unload 
				&& obs_actual_module_set_pointer) 
			{
				obs_actual_module_set_pointer(
					obs_module_pointer);
				if (obs_actual_load()) {
					goto success;
				}
			}

		}
	}

error:
	success = false;
	if (obs_so)
		os_dlclose(obs_so);
success:
	if (obs_browser_path)
		bfree(obs_browser_path);
	return success;
}
Esempio n. 8
0
int obs_load_module(const char *path)
{
	struct obs_module mod;
	char *plugin_path = find_plugin(path);
	int errorcode;

	mod.module = os_dlopen(plugin_path);
	bfree(plugin_path);
	if (!mod.module) {
		blog(LOG_DEBUG, "Module '%s' not found", path);
		return MODULE_FILE_NOT_FOUND;
	}

	errorcode = call_module_load(mod.module, path);
	if (errorcode != MODULE_SUCCESS) {
		os_dlclose(mod.module);
		return errorcode;
	}

	mod.name = bstrdup(path);
	da_push_back(obs->modules, &mod);
	return MODULE_SUCCESS;
}