Procházet zdrojové kódy

libobs: Add UI-independent plugin search paths

Adds an additional search path for UI-independent and
installation-independent plugins for windows/mac.

Windows:
%appdata%/obs-plugins/

Mac:
~/Library/Application Support/obs-plugins/

Plugin directory format is [module]/bin and [module]/data.

On windows, for 32bit binaries:
[module]/bin/32bit

and 64bit binaries:
[module]/bin/64bit
jp9000 před 10 roky
rodič
revize
99c674e41f
2 změnil soubory, kde provedl 30 přidání a 0 odebrání
  1. 15 0
      libobs/obs-cocoa.c
  2. 15 0
      libobs/obs-windows.c

+ 15 - 0
libobs/obs-cocoa.c

@@ -46,8 +46,23 @@ static const int module_patterns_size =
 
 void add_default_module_paths(void)
 {
+	char bin[512];
+	char data[512];
+	int ret;
+
 	for (int i = 0; i < module_patterns_size; i++)
 		obs_add_module_path(module_bin[i], module_data[i]);
+
+	ret = os_get_config_path(bin, sizeof(bin), "obs-plugins/%module%");
+	if (ret <= 0)
+		return;
+
+	strcpy(data, bin);
+	strcat(data, "/data");
+
+	strcat(bin, "/bin");
+
+	obs_add_module_path(bin, data);
 }
 
 char *find_libobs_data_file(const char *file)

+ 15 - 0
libobs/obs-windows.c

@@ -48,8 +48,23 @@ static const int module_patterns_size =
 
 void add_default_module_paths(void)
 {
+	char bin[512];
+	char data[512];
+	int ret;
+
 	for (int i = 0; i < module_patterns_size; i++)
 		obs_add_module_path(module_bin[i], module_data[i]);
+
+	ret = os_get_config_path(bin, sizeof(bin), "obs-plugins/%module%");
+	if (ret <= 0)
+		return;
+
+	strcpy(data, bin);
+	strcat(data, "/data");
+
+	strcat(bin, "/bin/" BIT_STRING);
+
+	obs_add_module_path(bin, data);
 }
 
 /* on windows, points to [base directory]/data/libobs */