Skip to content

Commit 20c9a19

Browse files
committed
getPixelColor bug fix.
This should make this work.
1 parent a511724 commit 20c9a19

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

src/screengrab.c

+16-12
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ MMBitmapRef copyMMBitmapFromDisplayInRect(MMRect rect)
2525

2626
CGDirectDisplayID displayID = CGMainDisplayID();
2727

28-
//Replacement for CGDisplayBitsPerPixel.
28+
//Replacement for CGDisplayBitsPerPixel.
2929
CGDisplayModeRef mode = CGDisplayCopyDisplayMode(displayID);
3030
size_t depth = 0;
31-
31+
3232
CFStringRef pixEnc = CGDisplayModeCopyPixelEncoding(mode);
3333
if(CFStringCompare(pixEnc, CFSTR(IO32BitDirectPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo)
3434
depth = 32;
@@ -37,7 +37,7 @@ MMBitmapRef copyMMBitmapFromDisplayInRect(MMRect rect)
3737
else if(CFStringCompare(pixEnc, CFSTR(IO8BitIndexedPixels), kCFCompareCaseInsensitive) == kCFCompareEqualTo)
3838
depth = 8;
3939

40-
bitsPerPixel = (uint8_t) depth;
40+
bitsPerPixel = (uint8_t) depth;
4141
bytesPerPixel = bitsPerPixel / 8;
4242
/* Align width to padding. */
4343
//bytewidth = ADD_PADDING(rect.size.width * bytesPerPixel);
@@ -52,15 +52,15 @@ MMBitmapRef copyMMBitmapFromDisplayInRect(MMRect rect)
5252
CGDataProviderRef provider = CGImageGetDataProvider(image);
5353
CFDataRef data = CGDataProviderCopyData(provider);
5454

55-
size_t width, height;
55+
size_t width, height;
5656
width = CGImageGetWidth(image);
57-
height = CGImageGetHeight(image);
57+
height = CGImageGetHeight(image);
5858
size_t bpp = CGImageGetBitsPerPixel(image) / 8;
5959

6060
uint8 *pixels = malloc(width * height * bpp);
6161
memcpy(pixels, CFDataGetBytePtr(data), width * height * bpp);
62-
CFRelease(data);
63-
CGImageRelease(image);
62+
CFRelease(data);
63+
CGImageRelease(image);
6464

6565
return createMMBitmap(pixels, rect.size.width, rect.size.height, bytewidth,
6666
bitsPerPixel, bytesPerPixel);
@@ -118,11 +118,15 @@ MMBitmapRef copyMMBitmapFromDisplayInRect(MMRect rect)
118118
/* Copy the data into a bitmap struct. */
119119
if ((screenMem = CreateCompatibleDC(screen)) == NULL ||
120120
SelectObject(screenMem, dib) == NULL ||
121-
!BitBlt(screenMem,
122-
(int)rect.origin.x,
123-
(int)rect.origin.y,
121+
!BitBlt(screenMem,
122+
(int)0,
123+
(int)0,
124124
(int)rect.size.width,
125-
(int)rect.size.height, screen, 0, 0, SRCCOPY)) {
125+
(int)rect.size.height,
126+
screen,
127+
rect.origin.x,
128+
rect.origin.y,
129+
SRCCOPY)) {
126130
/* Error copying data. */
127131
ReleaseDC(NULL, screen);
128132
DeleteObject(dib);
@@ -135,7 +139,7 @@ MMBitmapRef copyMMBitmapFromDisplayInRect(MMRect rect)
135139
rect.size.width,
136140
rect.size.height,
137141
4 * rect.size.width,
138-
(uint8_t)bi.bmiHeader.biBitCount,
142+
(uint8_t)bi.bmiHeader.biBitCount,
139143
4);
140144

141145
/* Copy the data to our pixel buffer. */

0 commit comments

Comments
 (0)