From ebfb89de00860bbdbb6e9a72ed18a358acc7c056 Mon Sep 17 00:00:00 2001 From: "SND\\MaddTheSane_cp" Date: Fri, 28 Mar 2014 22:51:46 +0000 Subject: [PATCH] OS X: Begin work on a QuickLook plug-in for freeze states. git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@89709 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- macosx/Pcsxr-QL/GeneratePreviewForURL.c | 21 +++ macosx/Pcsxr-QL/GenerateThumbnailForURL.c | 21 +++ macosx/Pcsxr-QL/MyQuickLook.h | 25 +++ macosx/Pcsxr-QL/Pcsxr-QL-Info.plist | 140 ++++++++++++++ macosx/Pcsxr-QL/Pcsxr-QL-Prefix.pch | 10 + macosx/Pcsxr-QL/en.lproj/InfoPlist.strings | 2 + macosx/Pcsxr-QL/main.c | 202 +++++++++++++++++++++ macosx/Pcsxr.xcodeproj/project.pbxproj | 201 +++++++++++++++++++- 8 files changed, 619 insertions(+), 3 deletions(-) create mode 100644 macosx/Pcsxr-QL/GeneratePreviewForURL.c create mode 100644 macosx/Pcsxr-QL/GenerateThumbnailForURL.c create mode 100644 macosx/Pcsxr-QL/MyQuickLook.h create mode 100644 macosx/Pcsxr-QL/Pcsxr-QL-Info.plist create mode 100644 macosx/Pcsxr-QL/Pcsxr-QL-Prefix.pch create mode 100644 macosx/Pcsxr-QL/en.lproj/InfoPlist.strings create mode 100644 macosx/Pcsxr-QL/main.c diff --git a/macosx/Pcsxr-QL/GeneratePreviewForURL.c b/macosx/Pcsxr-QL/GeneratePreviewForURL.c new file mode 100644 index 00000000..a57f116f --- /dev/null +++ b/macosx/Pcsxr-QL/GeneratePreviewForURL.c @@ -0,0 +1,21 @@ +#include +#include +#include +#include "MyQuickLook.h" + +/* ----------------------------------------------------------------------------- + Generate a preview for file + + This function's job is to create preview for designated file + ----------------------------------------------------------------------------- */ + +OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options) +{ + // To complete your generator please implement the function GeneratePreviewForURL in GeneratePreviewForURL.c + return noErr; +} + +void CancelPreviewGeneration(void *thisInterface, QLPreviewRequestRef preview) +{ + // Implement only if supported +} diff --git a/macosx/Pcsxr-QL/GenerateThumbnailForURL.c b/macosx/Pcsxr-QL/GenerateThumbnailForURL.c new file mode 100644 index 00000000..60211658 --- /dev/null +++ b/macosx/Pcsxr-QL/GenerateThumbnailForURL.c @@ -0,0 +1,21 @@ +#include +#include +#include +#include "MyQuickLook.h" + +/* ----------------------------------------------------------------------------- + Generate a thumbnail for file + + This function's job is to create thumbnail for designated file as fast as possible + ----------------------------------------------------------------------------- */ + +OSStatus GenerateThumbnailForURL(void *thisInterface, QLThumbnailRequestRef thumbnail, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options, CGSize maxSize) +{ + // To complete your generator please implement the function GenerateThumbnailForURL in GenerateThumbnailForURL.c + return noErr; +} + +void CancelThumbnailGeneration(void *thisInterface, QLThumbnailRequestRef thumbnail) +{ + // Implement only if supported +} diff --git a/macosx/Pcsxr-QL/MyQuickLook.h b/macosx/Pcsxr-QL/MyQuickLook.h new file mode 100644 index 00000000..9f1c6778 --- /dev/null +++ b/macosx/Pcsxr-QL/MyQuickLook.h @@ -0,0 +1,25 @@ +// +// MyQuickLook.h +// Pcsxr +// +// Created by C.W. Betts on 3/28/14. +// +// + +#ifndef Pcsxr_MyQuickLook_h +#define Pcsxr_MyQuickLook_h + +#include +#include +#include +#include + +// The thumbnail generation function to be implemented in GenerateThumbnailForURL.c +__private_extern__ OSStatus GenerateThumbnailForURL(void *thisInterface, QLThumbnailRequestRef thumbnail, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options, CGSize maxSize); +__private_extern__ void CancelThumbnailGeneration(void* thisInterface, QLThumbnailRequestRef thumbnail); + +// The preview generation function to be implemented in GeneratePreviewForURL.c +__private_extern__ OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options); +__private_extern__ void CancelPreviewGeneration(void *thisInterface, QLPreviewRequestRef preview); + +#endif diff --git a/macosx/Pcsxr-QL/Pcsxr-QL-Info.plist b/macosx/Pcsxr-QL/Pcsxr-QL-Info.plist new file mode 100644 index 00000000..3646ec14 --- /dev/null +++ b/macosx/Pcsxr-QL/Pcsxr-QL-Info.plist @@ -0,0 +1,140 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDocumentTypes + + + CFBundleTypeRole + QLGenerator + LSItemContentTypes + + com.codeplex.pcsxr.freeze + + + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + com.github.maddthesane.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundleShortVersionString + 1 + CFBundleVersion + 1.0 + CFPlugInDynamicRegisterFunction + + CFPlugInDynamicRegistration + NO + CFPlugInFactories + + 8C4B8FFE-72CC-436C-8D8A-034152616D03 + QuickLookGeneratorPluginFactory + + CFPlugInTypes + + 5E2D9680-5022-40FA-B806-43349622E5B9 + + 8C4B8FFE-72CC-436C-8D8A-034152616D03 + + + CFPlugInUnloadFunction + + QLNeedsToBeRunInMainThread + + QLPreviewHeight + 600 + QLPreviewWidth + 800 + QLSupportsConcurrentRequests + + QLThumbnailMinimumSize + 17 + UTImportedTypeDeclarations + + + UTTypeConformsTo + + public.data + public.content + + UTTypeDescription + PCSXR Memory Card + UTTypeIconFile + pcsxrmemcard + UTTypeIdentifier + com.codeplex.pcsxr.memcard + UTTypeReferenceURL + http://pcsxr.codeplex.com/ + UTTypeTagSpecification + + com.apple.ostype + + Pmcr + + public.filename-extension + + mcr + mc + mem + vgs + mcd + gme + ddf + + + + + UTTypeConformsTo + + public.data + public.content + + UTTypeDescription + PCSXR Freeze State + UTTypeIconFile + pcsxrfreeze + UTTypeIdentifier + com.codeplex.pcsxr.freeze + UTTypeReferenceURL + http://pcsxr.codeplex.com/ + UTTypeTagSpecification + + com.apple.ostype + + Pfrz + + public.filename-extension + + pcsxrstate + + + + + UTTypeConformsTo + + public.text + public.data + + UTTypeDescription + PCSXR Cheat + UTTypeIdentifier + com.codeplex.pcsxr.cheat + UTTypeTagSpecification + + public.filename-extension + + cht + + + + + + diff --git a/macosx/Pcsxr-QL/Pcsxr-QL-Prefix.pch b/macosx/Pcsxr-QL/Pcsxr-QL-Prefix.pch new file mode 100644 index 00000000..ccf35331 --- /dev/null +++ b/macosx/Pcsxr-QL/Pcsxr-QL-Prefix.pch @@ -0,0 +1,10 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#include +#include +#include +#include diff --git a/macosx/Pcsxr-QL/en.lproj/InfoPlist.strings b/macosx/Pcsxr-QL/en.lproj/InfoPlist.strings new file mode 100644 index 00000000..477b28ff --- /dev/null +++ b/macosx/Pcsxr-QL/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/macosx/Pcsxr-QL/main.c b/macosx/Pcsxr-QL/main.c new file mode 100644 index 00000000..1ca582ce --- /dev/null +++ b/macosx/Pcsxr-QL/main.c @@ -0,0 +1,202 @@ +//============================================================================== +// +// DO NO MODIFY THE CONTENT OF THIS FILE +// +// This file contains the generic CFPlug-in code necessary for your generator +// To complete your generator implement the function in GenerateThumbnailForURL/GeneratePreviewForURL.c +// +//============================================================================== + +#include +#include +#include +#include +#include "MyQuickLook.h" + +// ----------------------------------------------------------------------------- +// constants +// ----------------------------------------------------------------------------- + +// Don't modify this line +#define PLUGIN_ID "8C4B8FFE-72CC-436C-8D8A-034152616D03" + +// +// Below is the generic glue code for all plug-ins. +// +// You should not have to modify this code aside from changing +// names if you decide to change the names defined in the Info.plist +// + +// ----------------------------------------------------------------------------- +// typedefs +// ----------------------------------------------------------------------------- + +// The layout for an instance of QuickLookGeneratorPlugIn +typedef struct __QuickLookGeneratorPluginType +{ + void *conduitInterface; + CFUUIDRef factoryID; + UInt32 refCount; +} PcsxrQLPlug; + +// ----------------------------------------------------------------------------- +// prototypes +// ----------------------------------------------------------------------------- +// Forward declaration for the IUnknown implementation. +// + +static PcsxrQLPlug *AllocQuickLookGeneratorPluginType(CFUUIDRef inFactoryID); +static void DeallocQuickLookGeneratorPluginType(PcsxrQLPlug *thisInstance); +static HRESULT QuickLookGeneratorQueryInterface(void *thisInstance,REFIID iid,LPVOID *ppv); +extern void *QuickLookGeneratorPluginFactory(CFAllocatorRef allocator,CFUUIDRef typeID); +static ULONG QuickLookGeneratorPluginAddRef(void *thisInstance); +static ULONG QuickLookGeneratorPluginRelease(void *thisInstance); + +// ----------------------------------------------------------------------------- +// myInterfaceFtbl definition +// ----------------------------------------------------------------------------- +// The QLGeneratorInterfaceStruct function table. +// +static QLGeneratorInterfaceStruct myInterfaceFtbl = { + NULL, + QuickLookGeneratorQueryInterface, + QuickLookGeneratorPluginAddRef, + QuickLookGeneratorPluginRelease, + NULL, + NULL, + NULL, + NULL +}; + + +// ----------------------------------------------------------------------------- +// AllocQuickLookGeneratorPluginType +// ----------------------------------------------------------------------------- +// Utility function that allocates a new instance. +// You can do some initial setup for the generator here if you wish +// like allocating globals etc... +// +PcsxrQLPlug *AllocQuickLookGeneratorPluginType(CFUUIDRef inFactoryID) +{ + PcsxrQLPlug *theNewInstance; + + theNewInstance = (PcsxrQLPlug *)calloc(sizeof(PcsxrQLPlug), 1); + + /* Point to the function table Malloc enough to store the stuff and copy the filler from myInterfaceFtbl over */ + theNewInstance->conduitInterface = malloc(sizeof(QLGeneratorInterfaceStruct)); + memcpy(theNewInstance->conduitInterface, &myInterfaceFtbl, sizeof(QLGeneratorInterfaceStruct)); + + /* Retain and keep an open instance refcount for each factory. */ + theNewInstance->factoryID = CFRetain(inFactoryID); + CFPlugInAddInstanceForFactory(inFactoryID); + + /* This function returns the IUnknown interface so set the refCount to one. */ + theNewInstance->refCount = 1; + return theNewInstance; +} + +// ----------------------------------------------------------------------------- +// DeallocQuickLookGeneratorPluginType +// ----------------------------------------------------------------------------- +// Utility function that deallocates the instance when +// the refCount goes to zero. +// In the current implementation generator interfaces are never deallocated +// but implement this as this might change in the future +// +void DeallocQuickLookGeneratorPluginType(PcsxrQLPlug *thisInstance) +{ + CFUUIDRef theFactoryID; + + theFactoryID = thisInstance->factoryID; + /* Free the conduitInterface table up */ + free(thisInstance->conduitInterface); + + /* Free the instance structure */ + free(thisInstance); + if (theFactoryID){ + CFPlugInRemoveInstanceForFactory(theFactoryID); + CFRelease(theFactoryID); + } +} + +// ----------------------------------------------------------------------------- +// QuickLookGeneratorQueryInterface +// ----------------------------------------------------------------------------- +// Implementation of the IUnknown QueryInterface function. +// +HRESULT QuickLookGeneratorQueryInterface(void *thisInstance,REFIID iid,LPVOID *ppv) +{ + CFUUIDRef interfaceID = CFUUIDCreateFromUUIDBytes(kCFAllocatorDefault,iid); + + if (CFEqual(interfaceID,kQLGeneratorCallbacksInterfaceID)){ + /* If the Right interface was requested, bump the ref count, + * set the ppv parameter equal to the instance, and + * return good status. + */ + ((QLGeneratorInterfaceStruct *)((PcsxrQLPlug *)thisInstance)->conduitInterface)->GenerateThumbnailForURL = GenerateThumbnailForURL; + ((QLGeneratorInterfaceStruct *)((PcsxrQLPlug *)thisInstance)->conduitInterface)->CancelThumbnailGeneration = CancelThumbnailGeneration; + ((QLGeneratorInterfaceStruct *)((PcsxrQLPlug *)thisInstance)->conduitInterface)->GeneratePreviewForURL = GeneratePreviewForURL; + ((QLGeneratorInterfaceStruct *)((PcsxrQLPlug *)thisInstance)->conduitInterface)->CancelPreviewGeneration = CancelPreviewGeneration; + ((QLGeneratorInterfaceStruct *)((PcsxrQLPlug*)thisInstance)->conduitInterface)->AddRef(thisInstance); + *ppv = thisInstance; + CFRelease(interfaceID); + return S_OK; + } else { + /* Requested interface unknown, bail with error. */ + *ppv = NULL; + CFRelease(interfaceID); + return E_NOINTERFACE; + } +} + +// ----------------------------------------------------------------------------- +// QuickLookGeneratorPluginAddRef +// ----------------------------------------------------------------------------- +// Implementation of reference counting for this type. Whenever an interface +// is requested, bump the refCount for the instance. NOTE: returning the +// refcount is a convention but is not required so don't rely on it. +// +ULONG QuickLookGeneratorPluginAddRef(void *thisInstance) +{ + ((PcsxrQLPlug *)thisInstance )->refCount += 1; + return ((PcsxrQLPlug*) thisInstance)->refCount; +} + +// ----------------------------------------------------------------------------- +// QuickLookGeneratorPluginRelease +// ----------------------------------------------------------------------------- +// When an interface is released, decrement the refCount. +// If the refCount goes to zero, deallocate the instance. +// +ULONG QuickLookGeneratorPluginRelease(void *thisInstance) +{ + ((PcsxrQLPlug*)thisInstance)->refCount -= 1; + if (((PcsxrQLPlug*)thisInstance)->refCount == 0) { + DeallocQuickLookGeneratorPluginType((PcsxrQLPlug*)thisInstance); + return 0; + } else { + return ((PcsxrQLPlug*) thisInstance )->refCount; + } +} + +// ----------------------------------------------------------------------------- +// QuickLookGeneratorPluginFactory +// ----------------------------------------------------------------------------- +void *QuickLookGeneratorPluginFactory(CFAllocatorRef allocator,CFUUIDRef typeID) +{ + PcsxrQLPlug *result; + CFUUIDRef uuid; + + /* If correct type is being requested, allocate an + * instance of kQLGeneratorTypeID and return the IUnknown interface. + */ + if (CFEqual(typeID, kQLGeneratorTypeID)){ + uuid = CFUUIDCreateFromString(kCFAllocatorDefault, CFSTR(PLUGIN_ID)); + result = AllocQuickLookGeneratorPluginType(uuid); + CFRelease(uuid); + return result; + } + /* If the requested type is incorrect, return NULL. */ + return NULL; +} + diff --git a/macosx/Pcsxr.xcodeproj/project.pbxproj b/macosx/Pcsxr.xcodeproj/project.pbxproj index 9df7e947..91dfc2c9 100644 --- a/macosx/Pcsxr.xcodeproj/project.pbxproj +++ b/macosx/Pcsxr.xcodeproj/project.pbxproj @@ -17,6 +17,15 @@ 2BB3D6C205427FE200831ACB /* EmuThread.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BBB1792051E113B00B84448 /* EmuThread.m */; }; 2BB3D6C305427FE200831ACB /* Plugin.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BBB17DA051E4D0F00B84448 /* Plugin.c */; }; 2BB3D6C405427FE200831ACB /* PcsxrPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BA44361052DB2EA00E21DDD /* PcsxrPlugin.m */; }; + 550E343918E6293D00A1AD21 /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 550E343818E6293D00A1AD21 /* QuickLook.framework */; }; + 550E343A18E6293D00A1AD21 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A76AE178693D60052D185 /* ApplicationServices.framework */; }; + 550E343B18E6293D00A1AD21 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A76AF178693D60052D185 /* CoreServices.framework */; }; + 550E343C18E6293D00A1AD21 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A76B2178693EA0052D185 /* CoreFoundation.framework */; }; + 550E344218E6293D00A1AD21 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 550E344018E6293D00A1AD21 /* InfoPlist.strings */; }; + 550E344418E6293D00A1AD21 /* GenerateThumbnailForURL.c in Sources */ = {isa = PBXBuildFile; fileRef = 550E344318E6293D00A1AD21 /* GenerateThumbnailForURL.c */; }; + 550E344618E6293D00A1AD21 /* GeneratePreviewForURL.c in Sources */ = {isa = PBXBuildFile; fileRef = 550E344518E6293D00A1AD21 /* GeneratePreviewForURL.c */; }; + 550E344818E6293D00A1AD21 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 550E344718E6293D00A1AD21 /* main.c */; }; + 550E344F18E6332F00A1AD21 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A76D8178696810052D185 /* libz.dylib */; }; 550F023D17BFFD97002594DF /* PcsxrHexadecimalFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 550F023C17BFFD97002594DF /* PcsxrHexadecimalFormatter.m */; }; 550FFAEF17CEE37D0003A2F3 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A76B2178693EA0052D185 /* CoreFoundation.framework */; }; 550FFAF117CEEECA0003A2F3 /* cfgHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 550FFAF017CEEEC90003A2F3 /* cfgHelper.m */; }; @@ -406,6 +415,15 @@ 2BBB1791051E113B00B84448 /* EmuThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EmuThread.h; sourceTree = ""; }; 2BBB1792051E113B00B84448 /* EmuThread.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = EmuThread.m; sourceTree = ""; usesTabs = 1; }; 2BBB17DA051E4D0F00B84448 /* Plugin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Plugin.c; sourceTree = SOURCE_ROOT; usesTabs = 1; }; + 550E343718E6293D00A1AD21 /* Pcsxr-QL.qlgenerator */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Pcsxr-QL.qlgenerator"; sourceTree = BUILT_PRODUCTS_DIR; }; + 550E343818E6293D00A1AD21 /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = System/Library/Frameworks/QuickLook.framework; sourceTree = SDKROOT; }; + 550E343F18E6293D00A1AD21 /* Pcsxr-QL-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Pcsxr-QL-Info.plist"; sourceTree = ""; }; + 550E344118E6293D00A1AD21 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 550E344318E6293D00A1AD21 /* GenerateThumbnailForURL.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = GenerateThumbnailForURL.c; sourceTree = ""; }; + 550E344518E6293D00A1AD21 /* GeneratePreviewForURL.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = GeneratePreviewForURL.c; sourceTree = ""; }; + 550E344718E6293D00A1AD21 /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; + 550E344918E6293D00A1AD21 /* Pcsxr-QL-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Pcsxr-QL-Prefix.pch"; sourceTree = ""; }; + 550E344E18E629A300A1AD21 /* MyQuickLook.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyQuickLook.h; sourceTree = ""; }; 550F023B17BFFD97002594DF /* PcsxrHexadecimalFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PcsxrHexadecimalFormatter.h; sourceTree = ""; }; 550F023C17BFFD97002594DF /* PcsxrHexadecimalFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PcsxrHexadecimalFormatter.m; sourceTree = ""; }; 550FFAEE17CEB8780003A2F3 /* DFSound.exp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.exports; path = DFSound.exp; sourceTree = ""; }; @@ -827,6 +845,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 550E343218E6293D00A1AD21 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 550E343C18E6293D00A1AD21 /* CoreFoundation.framework in Frameworks */, + 550E343918E6293D00A1AD21 /* QuickLook.framework in Frameworks */, + 550E343B18E6293D00A1AD21 /* CoreServices.framework in Frameworks */, + 550E343A18E6293D00A1AD21 /* ApplicationServices.framework in Frameworks */, + 550E344F18E6332F00A1AD21 /* libz.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 551A75C817868C4E0052D185 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -931,6 +961,7 @@ 08FB7795FE84155DC02AAC07 /* PCSXR */, 551A74AF17868BE90052D185 /* plugins */, 55534AF318183BFA006D6BCB /* updateInfoPlist */, + 550E343D18E6293D00A1AD21 /* Pcsxr-QL */, 551A749D17868B110052D185 /* Frameworks */, 1AB674ADFE9D54B511CA2CBB /* Products */, ); @@ -962,6 +993,7 @@ 551A774F17869C280052D185 /* PeopsXGL.psxplugin */, 551A776D17869E430052D185 /* DFNet.psxplugin */, 55534AF018183BFA006D6BCB /* updateInfoPlist */, + 550E343718E6293D00A1AD21 /* Pcsxr-QL.qlgenerator */, ); name = Products; sourceTree = ""; @@ -1072,6 +1104,28 @@ path = ../libpcsxcore; sourceTree = ""; }; + 550E343D18E6293D00A1AD21 /* Pcsxr-QL */ = { + isa = PBXGroup; + children = ( + 550E344E18E629A300A1AD21 /* MyQuickLook.h */, + 550E344318E6293D00A1AD21 /* GenerateThumbnailForURL.c */, + 550E344518E6293D00A1AD21 /* GeneratePreviewForURL.c */, + 550E344718E6293D00A1AD21 /* main.c */, + 550E343E18E6293D00A1AD21 /* Supporting Files */, + ); + path = "Pcsxr-QL"; + sourceTree = ""; + }; + 550E343E18E6293D00A1AD21 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 550E343F18E6293D00A1AD21 /* Pcsxr-QL-Info.plist */, + 550E344018E6293D00A1AD21 /* InfoPlist.strings */, + 550E344918E6293D00A1AD21 /* Pcsxr-QL-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; 551A749D17868B110052D185 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -1092,6 +1146,7 @@ 551A74A217868B110052D185 /* CoreData.framework */, 551A74A317868B110052D185 /* Foundation.framework */, 551A76D8178696810052D185 /* libz.dylib */, + 550E343818E6293D00A1AD21 /* QuickLook.framework */, ); name = Frameworks; sourceTree = ""; @@ -1663,6 +1718,13 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 550E343318E6293D00A1AD21 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 551A76E51786971B0052D185 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1706,6 +1768,25 @@ productReference = 2BB3D6D105427FE200831ACB /* PCSXR.app */; productType = "com.apple.product-type.application"; }; + 550E343618E6293D00A1AD21 /* Pcsxr-QL */ = { + isa = PBXNativeTarget; + buildConfigurationList = 550E344D18E6293D00A1AD21 /* Build configuration list for PBXNativeTarget "Pcsxr-QL" */; + buildPhases = ( + 550E343118E6293D00A1AD21 /* Sources */, + 550E343218E6293D00A1AD21 /* Frameworks */, + 550E343318E6293D00A1AD21 /* Headers */, + 550E343418E6293D00A1AD21 /* Resources */, + 550E343518E6293D00A1AD21 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pcsxr-QL"; + productName = "Pcsxr-QL"; + productReference = 550E343718E6293D00A1AD21 /* Pcsxr-QL.qlgenerator */; + productType = "com.apple.product-type.bundle"; + }; 551A75C617868C4E0052D185 /* Bladesio1 */ = { isa = PBXNativeTarget; buildConfigurationList = 551A75CB17868C4E0052D185 /* Build configuration list for PBXNativeTarget "Bladesio1" */; @@ -1925,6 +2006,7 @@ 551A7706178698C60052D185 /* PeopsSpuAL */, 551A776517869E430052D185 /* DFNet */, 551A75C617868C4E0052D185 /* Bladesio1 */, + 550E343618E6293D00A1AD21 /* Pcsxr-QL */, 55534AEF18183BFA006D6BCB /* updateInfoPlist */, ); }; @@ -1948,6 +2030,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 550E343418E6293D00A1AD21 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 550E344218E6293D00A1AD21 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 551A75CA17868C4E0052D185 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2043,6 +2133,16 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXRezBuildPhase section */ + 550E343518E6293D00A1AD21 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + /* Begin PBXShellScriptBuildPhase section */ 55534AFE18183D86006D6BCB /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -2136,6 +2236,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 550E343118E6293D00A1AD21 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 550E344418E6293D00A1AD21 /* GenerateThumbnailForURL.c in Sources */, + 550E344618E6293D00A1AD21 /* GeneratePreviewForURL.c in Sources */, + 550E344818E6293D00A1AD21 /* main.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 551A75C717868C4E0052D185 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2343,6 +2453,14 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ + 550E344018E6293D00A1AD21 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 550E344118E6293D00A1AD21 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; 551A74B417868BEA0052D185 /* Bladesio1PluginConfig.xib */ = { isa = PBXVariantGroup; children = ( @@ -2741,6 +2859,74 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 550E344A18E6293D00A1AD21 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Pcsxr-QL/Pcsxr-QL-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + INFOPLIST_FILE = "Pcsxr-QL/Pcsxr-QL-Info.plist"; + INSTALL_PATH = /Library/QuickLook; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = qlgenerator; + }; + name = Debug; + }; + 550E344B18E6293D00A1AD21 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Pcsxr-QL/Pcsxr-QL-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + INFOPLIST_FILE = "Pcsxr-QL/Pcsxr-QL-Info.plist"; + INSTALL_PATH = /Library/QuickLook; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = qlgenerator; + }; + name = Release; + }; + 550E344C18E6293D00A1AD21 /* Instrument */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Pcsxr-QL/Pcsxr-QL-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)"; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + INFOPLIST_FILE = "Pcsxr-QL/Pcsxr-QL-Info.plist"; + INSTALL_PATH = /Library/QuickLook; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = qlgenerator; + }; + name = Instrument; + }; 551A75CC17868C4E0052D185 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3183,7 +3369,7 @@ GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( @@ -3457,7 +3643,7 @@ GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( @@ -3485,7 +3671,7 @@ GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ( @@ -3499,6 +3685,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 550E344D18E6293D00A1AD21 /* Build configuration list for PBXNativeTarget "Pcsxr-QL" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 550E344A18E6293D00A1AD21 /* Debug */, + 550E344B18E6293D00A1AD21 /* Release */, + 550E344C18E6293D00A1AD21 /* Instrument */, + ); + defaultConfigurationIsVisible = 0; + }; 551A75CB17868C4E0052D185 /* Build configuration list for PBXNativeTarget "Bladesio1" */ = { isa = XCConfigurationList; buildConfigurations = (