Changeset 925

Show
Ignore:
Timestamp:
08/20/08 20:37:23 (3 months ago)
Author:
gbooker
Message:

Used patch to determine when frame dropping should occur. CopyProcessName? can distinguish between "QuickTime Player" and "QTPlayerHelper".
Fixes #359

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/perian-1.1/CommonUtils.c

    r887 r925  
    1010#include "avcodec.h" 
    1111#include "CommonUtils.h" 
    12  
     12#import <Carbon/Carbon.h> 
    1313 
    1414typedef struct LanguageTriplet { 
     
    287287} 
    288288 
     289static const CFStringRef defaultFrameDroppingWhiteList[] = { 
     290        CFSTR("QuickTime Player"), 
     291        CFSTR("NicePlayer"), 
     292        CFSTR("Movie Time") 
     293}; 
     294 
     295static int findNameInList(CFStringRef loadingApp, const CFStringRef *names, int count) 
     296{ 
     297        int i; 
     298 
     299        for (i = 0; i < count; i++) { 
     300                if (CFStringCompare(loadingApp, names[i], 0) == kCFCompareEqualTo) return 1; 
     301        } 
     302 
     303        return 0; 
     304} 
     305 
    289306int IsFrameDroppingEnabled() 
    290307{ 
    291308        static int enabled = -1; 
    292309         
    293         if (enabled == -1) enabled = getenv("PerianNoFrameDropping") == NULL; 
     310        if (enabled == -1) { 
     311                ProcessSerialNumber myProcess; 
     312                GetCurrentProcess(&myProcess); 
     313                CFStringRef myProcessName; 
     314                CopyProcessName(&myProcess, &myProcessName); 
     315                 
     316                CFArrayRef list = CFPreferencesCopyAppValue(CFSTR("FrameDroppingWhiteList"), CFSTR("org.perian.Perian")); 
     317                 
     318                if (list) { 
     319                        int count = CFArrayGetCount(list); 
     320                        CFStringRef names[count]; 
     321                         
     322                        CFArrayGetValues(list, CFRangeMake(0, count), (void *)names); 
     323                        enabled = findNameInList(myProcessName, names, count); 
     324                        CFRelease(list); 
     325                } else { 
     326                        int count = sizeof(defaultFrameDroppingWhiteList)/sizeof(defaultFrameDroppingWhiteList[0]); 
     327                        enabled = findNameInList(myProcessName, defaultFrameDroppingWhiteList, count); 
     328                } 
     329                Codecprintf(NULL, "Frame Dropping enabled is %d for %s\n", enabled, CFStringGetCStringPtr(myProcessName, kCFStringEncodingMacRoman)); 
     330                CFRelease(myProcessName); 
     331        } 
    294332         
    295333        return enabled;