Fix file descriptor leaks, obs plugin settings

This commit is contained in:
Jarcode
2019-09-01 06:25:07 -07:00
parent 6d74062cb3
commit 129d4d8c91
4 changed files with 23 additions and 10 deletions

View File

@@ -76,7 +76,7 @@ struct mod_state {
gs_texture_t* gs_tex;
unsigned int old_tex;
struct {
const char* opts;
char* opts;
int w, h;
} cfg;
};
@@ -182,8 +182,12 @@ static void update(void* data, obs_data_t* settings) {
s->cfg.w = (int) obs_data_get_int(settings, "width");
s->cfg.h = (int) obs_data_get_int(settings, "height");
const char* opts = obs_data_get_string(settings, "options");
bool opts_changed = s->cfg.opts == NULL || strcmp(opts, s->cfg.opts) != 0;
s->cfg.opts = opts;
printf("debug: input str '%s', set '%s'\n", opts, s->cfg.opts);
bool opts_changed = s->cfg.opts == NULL || strcmp(opts, s->cfg.opts);
if (s->cfg.opts != NULL) {
free(s->cfg.opts);
}
s->cfg.opts = strdup(opts);
if (opts_changed) {
blog(LOG_INFO, "Updating GLava state");

View File

@@ -212,6 +212,7 @@ static struct schar directive(struct glsl_ext* ext, char** args,
ext_process(&next, target);
inherit(ext, &next);
munmap(map, st.st_size);
close(fd);
ext->ss_lookup = next.ss_lookup;

View File

@@ -91,8 +91,6 @@ static void init(struct audio_data* audio) {
}
pa_mainloop_run(m_pulseaudio_mainloop, &ret);
}
/* Sample format for native 'float' type */

View File

@@ -888,13 +888,21 @@ struct glava_renderer* rd_new(const char** paths, const char* entry,
const char* backend = force_backend;
/* Window creation backend interfaces */
if (wcbs_idx == 0) {
#ifdef GLAVA_GLFW
DECL_WCB(wcb_glfw);
#endif
#ifdef GLAVA_GLX
DECL_WCB(wcb_glx);
#endif
}
#ifdef GLAVA_GLFW
DECL_WCB(wcb_glfw);
if (!forced) backend = "glfw";
#endif
#ifdef GLAVA_GLX
DECL_WCB(wcb_glx);
if (!forced && getenv("DISPLAY")) {
backend = "glx";
}
@@ -1269,6 +1277,7 @@ struct glava_renderer* rd_new(const char** paths, const char* entry,
ext_free(&ext);
munmap((void*) map, st.st_size);
close(fd);
if (auto_desktop) {
if (env) {
@@ -1305,6 +1314,7 @@ struct glava_renderer* rd_new(const char** paths, const char* entry,
loading_presets = false;
munmap((void*) map, st.st_size);
close(fd);
} else {
fprintf(stderr, "Failed to detect the desktop environment! "
"Is the window manager EWMH compliant?");