{\r
\r
//check\r
- \r
mfInfo* mfi = mf_info_get_instance();\r
\r
mf_info_find_invalid_region(mfi);\r
\r
+ if (mf_info_have_invalid_region(mfi) == false) {\r
+ return;\r
+ }\r
+ \r
printf("\tinvalid -> (%d,%d), (%d,%d)\n",\r
mfi->invalid.x,\r
mfi->invalid.y,\r
mfi->invalid.x + mfi->invalid.width,\r
mfi->invalid.y + mfi->invalid.height);\r
- \r
- mf_info_clear_invalid_region(mfi);\r
- \r
+ \r
//capture entire screen\r
\r
int bytewidth;\r
\r
- CGImageRef image = CGDisplayCreateImage(kCGDirectMainDisplay); // Main screenshot capture call\r
+ CGRect invRect;\r
\r
- CGSize frameSize = CGSizeMake(CGImageGetWidth(image), CGImageGetHeight(image)); // Get screenshot bounds\r
+ invRect.origin.x = mfi->invalid.x;\r
+ invRect.origin.y = mfi->invalid.y;\r
+ invRect.size.height = mfi->invalid.height;\r
+ invRect.size.width = mfi->invalid.width;\r
\r
+ //CGImageRef image = CGDisplayCreateImage(kCGDirectMainDisplay); // Main screenshot capture call\r
+ CGImageRef image = CGDisplayCreateImageForRect(kCGDirectMainDisplay, invRect);\r
+ //CGSize frameSize = CGSizeMake(CGImageGetWidth(image), CGImageGetHeight(image)); // Get screenshot bounds\r
+ \r
+ CGSize frameSize;\r
+ frameSize.width = 2880;\r
+ frameSize.height = 1800;\r
\r
CFDictionaryRef opts;\r
\r
frameSize.height, 8, 4*frameSize.width, rgbColorSpace,\r
kCGImageAlphaNoneSkipLast);\r
\r
- CGContextDrawImage(context, CGRectMake(0, 0, CGImageGetWidth(image),\r
- CGImageGetHeight(image)), image);\r
+ CGContextDrawImage(context,\r
+ CGRectMake(0, 0, frameSize.width, frameSize.height),\r
+ image);\r
\r
bytewidth = frameSize.width * 4; // Assume 4 bytes/pixel for now\r
bytewidth = (bytewidth + 3) & ~3; // Align to 4 bytes\r
\r
rect.x = 0;\r
rect.y = 0;\r
- rect.width = frameSize.width;\r
- rect.height = frameSize.height;\r
+ rect.width = mfi->invalid.width;\r
+ rect.height = mfi->invalid.height;\r
\r
rfx_compose_message(mfp->rfx_context, s, &rect, 1,\r
- (BYTE*) pxdata, frameSize.width, frameSize.height, frameSize.width * 4);\r
+ (BYTE*) pxdata, rect.width, rect.height, frameSize.width * 4);\r
\r
- UINT32 x = 0;\r
- UINT32 y = 0;\r
+ UINT32 x = mfi->invalid.x;\r
+ UINT32 y = mfi->invalid.y;\r
\r
cmd->destLeft = x;\r
cmd->destTop = y;\r
- cmd->destRight = x + frameSize.width;\r
- cmd->destBottom = y + frameSize.height;\r
+ cmd->destRight = x + rect.width;\r
+ cmd->destBottom = y + rect.height;\r
\r
\r
cmd->bpp = 32;\r
cmd->codecID = 3;\r
- cmd->width = frameSize.width;\r
- cmd->height = frameSize.height;\r
+ cmd->width = rect.width;\r
+ cmd->height = rect.height;\r
cmd->bitmapDataLength = stream_get_length(s);\r
cmd->bitmapData = stream_get_head(s);\r
\r
\r
//clean up\r
\r
+ mf_info_clear_invalid_region(mfi);\r
+ // note: need to stop getting new dirty rects until here\r
\r
CGColorSpaceRelease(rgbColorSpace);\r
CGImageRelease(image);\r