@ -19,6 +19,11 @@
# include "core/UBSetting.h"
# include "core/UBApplication.h"
# include "board/UBBoardController.h"
# if defined(Q_WS_MAC)
# include <ApplicationServices/ApplicationServices.h>
# endif
# include "core/memcheck.h"
@ -65,7 +70,6 @@ void UBScreenMirror::timerEvent(QTimerEvent *event)
update ( ) ;
}
void UBScreenMirror : : grabPixmap ( )
{
if ( mSourceWidget )
@ -77,9 +81,26 @@ void UBScreenMirror::grabPixmap()
mRect . setBottomRight ( bottomRight ) ;
}
mLastPixmap = QPixmap : : grabWindow ( qApp - > desktop ( ) - > screen ( mScreenIndex ) - > winId ( ) ,
mRect . x ( ) , mRect . y ( ) , mRect . width ( ) , mRect . height ( ) ) ;
// get image of desktop
WId windowID = qApp - > desktop ( ) - > screen ( mScreenIndex ) - > winId ( ) ;
# if defined(Q_WS_MAC)
// Available in Mac OS X v10.6 and later.
CGRect grabRect ;
grabRect . origin . x = mRect . x ( ) ;
grabRect . origin . y = mRect . y ( ) ;
grabRect . size . width = mRect . width ( ) ;
grabRect . size . height = mRect . height ( ) ;
CGImageRef windowImage = CGWindowListCreateImage ( grabRect
, kCGWindowListOptionOnScreenOnly
, windowID
, kCGWindowImageDefault ) ;
mLastPixmap = QPixmap : : fromMacCGImageRef ( windowImage ) ;
# else
mLastPixmap = QPixmap : : grabWindow ( windowID , mRect . x ( ) , mRect . y ( ) , mRect . width ( ) , mRect . height ( ) ) ;
# endif
mLastPixmap = mLastPixmap . scaled ( width ( ) , height ( ) , Qt : : KeepAspectRatio , Qt : : SmoothTransformation ) ;
}