fix plugin dir on osx
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2443 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
491e24792a
commit
0b8f7439cb
|
@ -33,6 +33,9 @@ libs = [
|
|||
'm',
|
||||
]
|
||||
|
||||
env_wiiuse.SharedLibrary(env['libs_dir']+"wiiuse", files, LIBS=libs)
|
||||
if sys.platform == 'darwin':
|
||||
env_wiiuse.StaticLibrary(env['libs_dir']+"wiiuse", files, LIBS=libs)
|
||||
else:
|
||||
env_wiiuse.SharedLibrary(env['libs_dir']+"wiiuse", files, LIBS=libs)
|
||||
|
||||
env['HAVE_WIIUSE'] = 1
|
||||
|
|
|
@ -32,6 +32,15 @@
|
|||
#include <stdlib.h>
|
||||
#endif
|
||||
|
||||
#if defined(__APPLE__)
|
||||
|
||||
#include <CoreFoundation/CFString.h>
|
||||
#include <CoreFoundation/CFUrl.h>
|
||||
#include <CoreFoundation/CFBundle.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
#endif
|
||||
|
||||
#include <fstream>
|
||||
#include <sys/stat.h>
|
||||
|
||||
|
@ -287,6 +296,54 @@ std::string GetUserDirectory()
|
|||
return std::string(path);
|
||||
}
|
||||
|
||||
|
||||
//osx specific functions
|
||||
#if defined(__APPLE__)
|
||||
|
||||
std::string GetBundleDirectory()
|
||||
{
|
||||
|
||||
// Plugin path will be Dolphin.app/Contents/PlugIns
|
||||
CFURLRef BundleRef;
|
||||
char AppBundlePath[MAXPATHLEN];
|
||||
|
||||
// Get the main bundle for the app
|
||||
BundleRef = CFBundleCopyBundleURL(CFBundleGetMainBundle());
|
||||
|
||||
CFStringRef BundlePath = CFURLCopyFileSystemPath(BundleRef, kCFURLPOSIXPathStyle);
|
||||
CFStringGetFileSystemRepresentation(BundlePath, AppBundlePath, sizeof(AppBundlePath));
|
||||
|
||||
CFRelease(BundleRef);
|
||||
CFRelease(BundlePath);
|
||||
|
||||
return AppBundlePath;
|
||||
|
||||
|
||||
}
|
||||
std::string GetPluginsDirectory()
|
||||
{
|
||||
|
||||
CFURLRef PluginDirRef;
|
||||
char PluginPath[MAXPATHLEN];
|
||||
|
||||
PluginDirRef = CFBundleCopyBuiltInPlugInsURL(CFBundleGetMainBundle());
|
||||
|
||||
CFStringRef PluginDirPath = CFURLCopyFileSystemPath(PluginDirRef, kCFURLPOSIXPathStyle);
|
||||
CFStringGetFileSystemRepresentation(PluginDirPath, PluginPath, sizeof(PluginPath));
|
||||
|
||||
CFRelease(PluginDirRef);
|
||||
CFRelease(PluginDirPath);
|
||||
|
||||
std::string PluginsDir = GetBundleDirectory();
|
||||
PluginsDir += DIR_SEP;
|
||||
PluginsDir += PluginPath;
|
||||
|
||||
return PluginsDir;
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
u64 GetSize(const char *filename)
|
||||
{
|
||||
if (!Exists(filename))
|
||||
|
|
|
@ -55,6 +55,10 @@ bool DeleteDirRecursively(const std::string& _Directory);
|
|||
void GetCurrentDirectory(std::string& _rDirectory);
|
||||
bool SetCurrentDirectory(const std::string& _rDirectory);
|
||||
|
||||
#if defined(__APPLE__)
|
||||
std::string GetPluginsDirectory();
|
||||
#endif
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif
|
||||
|
|
|
@ -20,14 +20,10 @@
|
|||
#include "Common.h"
|
||||
#include "IniFile.h"
|
||||
#include "ConfigManager.h"
|
||||
#ifdef __APPLE__
|
||||
#include <CoreFoundation/CFString.h>
|
||||
#include <CoreFoundation/CFUrl.h>
|
||||
#include <CoreFoundation/CFBundle.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
#if defined(__APPLE__)
|
||||
#include "FileUtil.h"
|
||||
#endif
|
||||
|
||||
SConfig SConfig::m_Instance;
|
||||
|
||||
|
||||
|
@ -123,26 +119,8 @@ void SConfig::LoadSettings()
|
|||
{
|
||||
IniFile ini;
|
||||
ini.Load(CONFIG_FILE);
|
||||
#ifdef __APPLE__
|
||||
// Plugin path will be Dolphin.app/Contents/PlugIns
|
||||
CFURLRef BundleRef, PluginDirRef;
|
||||
// Get the main bundle for the app
|
||||
BundleRef = CFBundleCopyBundleURL(CFBundleGetMainBundle());
|
||||
PluginDirRef = CFBundleCopyBuiltInPlugInsURL(CFBundleGetMainBundle());
|
||||
CFStringRef BundlePath = CFURLCopyFileSystemPath(BundleRef, kCFURLPOSIXPathStyle);
|
||||
CFStringRef PluginDirPath = CFURLCopyFileSystemPath(PluginDirRef, kCFURLPOSIXPathStyle);
|
||||
char AppBundlePath[MAXPATHLEN], PluginPath[MAXPATHLEN];
|
||||
CFStringGetFileSystemRepresentation(BundlePath, AppBundlePath, sizeof(AppBundlePath));
|
||||
CFStringGetFileSystemRepresentation(PluginDirPath, PluginPath, sizeof(PluginPath));
|
||||
// printf("bundle path = %s %s\n", AppBundlePath, PluginPath);
|
||||
CFRelease(BundleRef);
|
||||
CFRelease(BundlePath);
|
||||
CFRelease(PluginDirRef);
|
||||
CFRelease(PluginDirPath);
|
||||
std::string PluginsDir = AppBundlePath;
|
||||
PluginsDir += DIR_SEP;
|
||||
PluginsDir += PluginPath;
|
||||
PluginsDir += DIR_SEP;
|
||||
#if defined(__APPLE__)
|
||||
std::string PluginsDir = File::GetPluginsDirectory();
|
||||
|
||||
m_DefaultGFXPlugin = PluginsDir + DEFAULT_GFX_PLUGIN;
|
||||
m_DefaultDSPPlugin = PluginsDir + DEFAULT_DSP_PLUGIN;
|
||||
|
|
|
@ -365,7 +365,12 @@ void CPluginManager::ScanForPlugins()
|
|||
m_PluginInfos.clear();
|
||||
// Get plugins dir
|
||||
CFileSearch::XStringVector Directories;
|
||||
Directories.push_back(std::string(PLUGINS_DIR));
|
||||
|
||||
#if defined(__APPLE__)
|
||||
Directories.push_back(File::GetPluginsDirectory());
|
||||
#else
|
||||
Directories.push_back(std::string(PLUGINS_DIR));
|
||||
#endif
|
||||
|
||||
CFileSearch::XStringVector Extensions;
|
||||
Extensions.push_back("*" PLUGIN_SUFFIX);
|
||||
|
|
Loading…
Reference in New Issue