Преглед изворни кода

libobs: Fix errors for gs_effect_create

Exeldro пре 2 година
родитељ
комит
82864559f2
1 измењених фајлова са 11 додато и 4 уклоњено
  1. 11 4
      libobs/graphics/effect-parser.c

+ 11 - 4
libobs/graphics/effect-parser.c

@@ -1933,6 +1933,7 @@ static inline bool ep_compile_pass_shader(struct effect_parser *ep,
 	pass_shaderparam_array_t *pass_params = NULL;
 	gs_shader_t *shader = NULL;
 	bool success = true;
+	char *errors = NULL;
 
 	dstr_init(&shader_str);
 	da_init(used_params);
@@ -1954,8 +1955,8 @@ static inline bool ep_compile_pass_shader(struct effect_parser *ep,
 		ep_makeshaderstring(ep, &shader_str, &pass_in->vertex_program,
 				    &used_params);
 
-		pass->vertshader = gs_vertexshader_create(shader_str.array,
-							  location.array, NULL);
+		pass->vertshader = gs_vertexshader_create(
+			shader_str.array, location.array, &errors);
 
 		shader = pass->vertshader;
 		pass_params = &pass->vertshader_params;
@@ -1963,13 +1964,19 @@ static inline bool ep_compile_pass_shader(struct effect_parser *ep,
 		ep_makeshaderstring(ep, &shader_str, &pass_in->fragment_program,
 				    &used_params);
 
-		pass->pixelshader = gs_pixelshader_create(shader_str.array,
-							  location.array, NULL);
+		pass->pixelshader = gs_pixelshader_create(
+			shader_str.array, location.array, &errors);
 
 		shader = pass->pixelshader;
 		pass_params = &pass->pixelshader_params;
 	}
 
+	if (errors && strlen(errors)) {
+		cf_adderror(&ep->cfp, "Error creating shader: $1", LEX_ERROR,
+			    errors, NULL, NULL);
+	}
+	bfree(errors);
+
 #if defined(_DEBUG) && defined(_DEBUG_SHADERS)
 	blog(LOG_DEBUG, "\t\t\t%s Shader:",
 	     type == GS_SHADER_VERTEX ? "Vertex" : "Fragment");