diff --git a/src/arch/LowLevelWindow/LowLevelWindow_MacOSX.mm b/src/arch/LowLevelWindow/LowLevelWindow_MacOSX.mm index 26621bec0b..3fd0f3a1db 100644 --- a/src/arch/LowLevelWindow/LowLevelWindow_MacOSX.mm +++ b/src/arch/LowLevelWindow/LowLevelWindow_MacOSX.mm @@ -501,6 +501,25 @@ int LowLevelWindow_MacOSX::ChangeDisplayMode( const VideoModeParams& p ) return 0; } +// http://lukassen.wordpress.com/2010/01/18/taming-snow-leopard-cgdisplaybitsperpixel-deprication/ +static size_t GetDisplayBitsPerPixel( CGDirectDisplayID displayId ) +{ + + CGDisplayModeRef mode = CGDisplayCopyDisplayMode(displayId); + size_t depth = 0; + + CFStringRef pixEnc = CGDisplayModeCopyPixelEncoding(mode); + if(CFStringCompare(pixEnc, CFSTR(IO32BitDirectPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) + depth = 32; + else if(CFStringCompare(pixEnc, CFSTR(IO16BitDirectPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) + depth = 16; + else if(CFStringCompare(pixEnc, CFSTR(IO8BitIndexedPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo) + depth = 8; + + return depth; + +} + void LowLevelWindow_MacOSX::SetActualParamsFromMode( CFDictionaryRef mode ) { SInt32 rate; @@ -527,7 +546,7 @@ void LowLevelWindow_MacOSX::SetActualParamsFromMode( CFDictionaryRef mode ) m_CurrentParams.height = int(size.height); } - m_CurrentParams.bpp = CGDisplayBitsPerPixel( kCGDirectMainDisplay ); + m_CurrentParams.bpp = GetDisplayBitsPerPixel( kCGDirectMainDisplay ); } static int GetIntValue( CFTypeRef r )