File moonshine-loader.patch of Package moonshine
diff --git a/plugin/mmp-plugin-proxy.c b/plugin/mmp-plugin-proxy.c
index 05a13d3..88a07c5 100644
--- a/plugin/mmp-plugin-proxy.c
+++ b/plugin/mmp-plugin-proxy.c
@@ -70,29 +70,38 @@ static gboolean
mmp_plugin_proxy_load_module (gchar *prefix)
{
MoonlightPlugin *plugin_host = MMP_HANDLE ();
+
+ // Moonlight's loader is named libmoonloader if it is installed as a
+ // package, and libmoonloaderxpi if it is installed as an XPI
gchar *path = g_module_build_path (prefix, "moonloader");
-
- if (g_file_test (path, G_FILE_TEST_EXISTS)) {
- plugin_host->module = g_module_open (path, G_MODULE_BIND_LOCAL | G_MODULE_BIND_LAZY);
-
- if (plugin_host->module != NULL
- && mmp_plugin_proxy_load_symbol ("NP_Initialize", (gpointer *)&plugin_host->np_initialize)
- && mmp_plugin_proxy_load_symbol ("NP_Shutdown", (gpointer *)&plugin_host->np_shutdown)
- && mmp_plugin_proxy_load_symbol ("NP_GetValue", (gpointer *)&plugin_host->np_getvalue)) {
- mp_debug ("Loaded Moonlight plugin: %s", path);
+ if (!g_file_test (path, G_FILE_TEST_EXISTS)) {
+ g_free (path);
+ path = g_module_build_path (prefix, "moonloaderxpi");
+ if (!g_file_test (path, G_FILE_TEST_EXISTS)) {
g_free (path);
- return TRUE;
- } else if (plugin_host->module != NULL) {
- if (!g_module_close (plugin_host->module)) {
- mp_error ("Could not unload library that was loaded but had invalid symbols: %s (%s)",
- path, g_module_error ());
- }
- plugin_host->module = NULL;
+ return FALSE;
}
-
- mp_error ("Could not load Moonlight plugin: %s (%s)", path, g_module_error ());
}
+ plugin_host->module = g_module_open (path, G_MODULE_BIND_LOCAL | G_MODULE_BIND_LAZY);
+
+ if (plugin_host->module != NULL
+ && mmp_plugin_proxy_load_symbol ("NP_Initialize", (gpointer *)&plugin_host->np_initialize)
+ && mmp_plugin_proxy_load_symbol ("NP_Shutdown", (gpointer *)&plugin_host->np_shutdown)
+ && mmp_plugin_proxy_load_symbol ("NP_GetValue", (gpointer *)&plugin_host->np_getvalue)) {
+ mp_debug ("Loaded Moonlight plugin: %s", path);
+ g_free (path);
+ return TRUE;
+ } else if (plugin_host->module != NULL) {
+ if (!g_module_close (plugin_host->module)) {
+ mp_error ("Could not unload library that was loaded but had invalid symbols: %s (%s)",
+ path, g_module_error ());
+ }
+ plugin_host->module = NULL;
+ }
+
+ mp_error ("Could not load Moonlight plugin: %s (%s)", path, g_module_error ());
+
g_free (path);
return FALSE;
}