X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/03647350fc7cd141953c72e0284e928847d30f44..ec2df34e27ba41f202ecbf096cdfed082a9ddb8f:/src/osx/carbon/dcscreen.cpp diff --git a/src/osx/carbon/dcscreen.cpp b/src/osx/carbon/dcscreen.cpp index 6bb57f78b3..c413eb1fe0 100644 --- a/src/osx/carbon/dcscreen.cpp +++ b/src/osx/carbon/dcscreen.cpp @@ -56,14 +56,18 @@ wxScreenDCImpl::wxScreenDCImpl( wxDC *owner ) : wxScreenDCImpl::~wxScreenDCImpl() { - delete m_graphicContext; - m_graphicContext = NULL; + wxDELETE(m_graphicContext); #if wxOSX_USE_COCOA_OR_IPHONE #else DisposeWindow((WindowRef) m_overlayWindow ); #endif } +#if wxOSX_USE_IPHONE +// Apple has allowed usage of this API as of 15th Dec 2009w +extern CGImageRef UIGetScreenImage(); +#endif + // TODO Switch to CGWindowListCreateImage for 10.5 and above wxBitmap wxScreenDCImpl::DoGetAsBitmap(const wxRect *subrect) const @@ -85,13 +89,28 @@ wxBitmap wxScreenDCImpl::DoGetAsBitmap(const wxRect *subrect) const if ( subrect ) srcRect = CGRectOffset( srcRect, -subrect->x, -subrect->y ) ; - CGImageRef image = grabViaOpenGL(kCGNullDirectDisplay, srcRect); + CGImageRef image = NULL; + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 + if ( UMAGetSystemVersion() >= 10.6) + { + image = CGDisplayCreateImage(kCGDirectMainDisplay); + } + else +#endif + { + image = grabViaOpenGL(kCGNullDirectDisplay, srcRect); + } wxASSERT_MSG(image, wxT("wxScreenDC::GetAsBitmap - unable to get screenshot.")); CGContextDrawImage(context, srcRect, image); + CGImageRelease(image); + CGContextRestoreGState(context); +#else + // TODO implement using UIGetScreenImage, CGImageCreateWithImageInRect, CGContextDrawImage #endif return bmp; }