浏览代码

libobs,docs: Improve failed module loading logging

- Avoid putting libs (like CEF) in the plugins load failure message.
- Consider obsolete macOS obs-browser plugin fail as a hardcoded skip.
tytan652 3 年之前
父节点
当前提交
5490e4f44c
共有 3 个文件被更改,包括 25 次插入4 次删除
  1. 2 0
      docs/sphinx/reference-modules.rst
  2. 1 0
      libobs/obs-defs.h
  3. 22 4
      libobs/obs-module.c

+ 2 - 0
docs/sphinx/reference-modules.rst

@@ -176,6 +176,8 @@ plugin modules.
                       | MODULE_FILE_NOT_FOUND   - The module was not found
                       | MODULE_MISSING_EXPORTS  - Required exports are missing
                       | MODULE_INCOMPATIBLE_VER - Incompatible version
+                      | MODULE_HARDCODED_SKIP   - Skipped by harcoded rules
+                                                  (e.g. obsolete obs-browser macOS plugin)
 
 ---------------------
 

+ 1 - 0
libobs/obs-defs.h

@@ -31,6 +31,7 @@
 #define MODULE_FILE_NOT_FOUND -2
 #define MODULE_MISSING_EXPORTS -3
 #define MODULE_INCOMPATIBLE_VER -4
+#define MODULE_HARDCODED_SKIP -5
 
 #define OBS_OUTPUT_SUCCESS 0
 #define OBS_OUTPUT_BAD_PATH -1

+ 22 - 4
libobs/obs-module.c

@@ -113,7 +113,7 @@ int obs_open_module(obs_module_t **module, const char *path,
 	if (astrstri(path, "Library/Application Support/obs-studio") != NULL &&
 	    astrstri(path, "obs-browser") != NULL) {
 		blog(LOG_WARNING, "Ignoring old obs-browser.so version");
-		return MODULE_ERROR;
+		return MODULE_HARDCODED_SKIP;
 	}
 #endif
 
@@ -307,10 +307,28 @@ static void load_all_callback(void *param, const struct obs_module_info2 *info)
 	}
 
 	int code = obs_open_module(&module, info->bin_path, info->data_path);
-	if (code != MODULE_SUCCESS) {
-		blog(LOG_DEBUG, "Failed to load module file '%s': %d",
-		     info->bin_path, code);
+	switch (code) {
+	case MODULE_MISSING_EXPORTS:
+		blog(LOG_DEBUG,
+		     "Failed to load module file '%s', not an OBS plugin",
+		     info->bin_path);
+		return;
+	case MODULE_FILE_NOT_FOUND:
+		blog(LOG_DEBUG,
+		     "Failed to load module file '%s', file not found",
+		     info->bin_path);
+		return;
+	case MODULE_ERROR:
+		blog(LOG_DEBUG, "Failed to load module file '%s'",
+		     info->bin_path);
+		goto load_failure;
+	case MODULE_INCOMPATIBLE_VER:
+		blog(LOG_DEBUG,
+		     "Failed to load module file '%s', incompatible version",
+		     info->bin_path);
 		goto load_failure;
+	case MODULE_HARDCODED_SKIP:
+		return;
 	}
 
 	if (!obs_init_module(module))