Skip to content

Commit bcec0bc

Browse files
committed
Screen Capture Fix.
This should fix the issue on Windows and Linux.
1 parent 58ba084 commit bcec0bc

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

src/MMBitmap.c

+8
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,14 @@ void destroyMMBitmap(MMBitmapRef bitmap)
3434
free(bitmap);
3535
}
3636

37+
void destroyMMBitmapBuffer(char * bitmapBuffer, void * hint)
38+
{
39+
if (bitmapBuffer != NULL)
40+
{
41+
free(bitmapBuffer);
42+
}
43+
}
44+
3745
MMBitmapRef copyMMBitmap(MMBitmapRef bitmap)
3846
{
3947
uint8_t *copiedBuf = NULL;

src/MMBitmap.h

+3
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ MMBitmapRef createMMBitmap(uint8_t *buffer, size_t width, size_t height,
3434
/* Releases memory occupied by MMBitmap. */
3535
void destroyMMBitmap(MMBitmapRef bitmap);
3636

37+
/* Releases memory occupied by MMBitmap. Acts via CallBack method*/
38+
void destroyMMBitmapBuffer(char * bitmapBuffer, void * hint);
39+
3740
/* Returns copy of MMBitmap, to be destroy()'d by caller. */
3841
MMBitmapRef copyMMBitmap(MMBitmapRef bitmap);
3942

src/robotjs.cc

+1-3
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,7 @@ NAN_METHOD(captureScreen)
700700
MMBitmapRef bitmap = copyMMBitmapFromDisplayInRect(MMRectMake(0, 0, displaySize.width, displaySize.height));
701701

702702
uint32_t bufferSize = bitmap->bytesPerPixel * bitmap->width * bitmap->height;
703-
Local<Object> buffer = Nan::NewBuffer((char*)bitmap->imageBuffer, bufferSize).ToLocalChecked();
703+
Local<Object> buffer = Nan::NewBuffer((char*)bitmap->imageBuffer, bufferSize, destroyMMBitmapBuffer, NULL).ToLocalChecked();
704704

705705
Local<Object> obj = Nan::New<Object>();
706706
Nan::Set(obj, Nan::New("width").ToLocalChecked(), Nan::New<Number>(bitmap->width));
@@ -709,8 +709,6 @@ NAN_METHOD(captureScreen)
709709
Nan::Set(obj, Nan::New("bitsPerPixel").ToLocalChecked(), Nan::New<Number>(bitmap->bitsPerPixel));
710710
Nan::Set(obj, Nan::New("bytesPerPixel").ToLocalChecked(), Nan::New<Number>(bitmap->bytesPerPixel));
711711
Nan::Set(obj, Nan::New("image").ToLocalChecked(), buffer);
712-
713-
destroyMMBitmap(bitmap);
714712

715713
info.GetReturnValue().Set(obj);
716714
}

0 commit comments

Comments
 (0)