Skip to content

Commit ba0ded5

Browse files
committed
reverted linux and fixed mac offsety for partial capture
1 parent 776823a commit ba0ded5

File tree

2 files changed

+12
-26
lines changed

2 files changed

+12
-26
lines changed

src/ios/CGFrameProcessor.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ namespace Screen_Capture {
5252
ret.right = Width(SelectedMonitor);
5353
auto rowstride = PixelStride * Width(SelectedMonitor);
5454
auto startbuf = buf + ((OffsetX(SelectedMonitor) - OffsetX(curentmonitorinfo) )*PixelStride);//advance to the start of this image
55-
55+
startbuf += (OffsetY(curentmonitorinfo) * bytesperrow);
56+
5657
if (Data->ScreenCaptureData.OnNewFrame && !Data->ScreenCaptureData.OnFrameChanged) {
5758
auto wholeimg = Create(ret, PixelStride, static_cast<int>(bytesperrow) - rowstride, startbuf);
5859
Data->ScreenCaptureData.OnNewFrame(wholeimg, SelectedMonitor);

src/linux/X11FrameProcessor.cpp

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,12 @@ namespace Screen_Capture
9090
}
9191

9292
DUPL_RETURN X11FrameProcessor::ProcessFrame(const Monitor& curentmonitorinfo)
93-
{
93+
{
9494
auto Ret = DUPL_RETURN_SUCCESS;
95-
95+
ImageRect ret;
96+
ret.left = ret.top = 0;
97+
ret.right = Width(SelectedMonitor);
98+
ret.bottom = Height(SelectedMonitor);
9699
if(!XShmGetImage(SelectedDisplay,
97100
RootWindow(SelectedDisplay, DefaultScreen(SelectedDisplay)),
98101
Image,
@@ -102,30 +105,12 @@ namespace Screen_Capture
102105
return DUPL_RETURN_ERROR_EXPECTED;
103106
}
104107

105-
ImageRect ret = {0};
106-
ret.left = 0;
107-
ret.top = 0;
108-
ret.bottom = Height(SelectedMonitor);
109-
ret.right = Width(SelectedMonitor);
110-
auto rowstride = PixelStride * Width(SelectedMonitor);
111-
auto buf = reinterpret_cast<unsigned char*>(Image->data);
112-
auto bytesperrow = PixelStride * ret.right * ret.bottom;
113-
auto startbuf = buf + ((OffsetX(SelectedMonitor) - OffsetX(curentmonitorinfo) )*PixelStride);//advance to the start of this image
114-
if (Data->ScreenCaptureData.OnNewFrame && !Data->ScreenCaptureData.OnFrameChanged) {
115-
116-
auto wholeimg = Create(ret, PixelStride, static_cast<int>(bytesperrow) - rowstride, startbuf);
108+
if(Data->ScreenCaptureData.OnNewFrame && !Data->ScreenCaptureData.OnFrameChanged) {
109+
110+
auto wholeimg = Create(ret, PixelStride, 0, reinterpret_cast<unsigned char*>(Image->data));
117111
Data->ScreenCaptureData.OnNewFrame(wholeimg, SelectedMonitor);
118-
}
119-
else {
120-
auto startdst = NewImageBuffer.get();
121-
if (rowstride == static_cast<int>(bytesperrow)) { // no need for multiple calls, there is no padding here
122-
memcpy(startdst, buf, rowstride * Height(SelectedMonitor));
123-
}
124-
else {
125-
for (auto i = 0; i < Height(SelectedMonitor); i++) {
126-
memcpy(startdst + (i * rowstride), (startbuf + (i * bytesperrow)) , rowstride);
127-
}
128-
}
112+
} else {
113+
memcpy(NewImageBuffer.get(), Image->data, PixelStride * ret.right * ret.bottom);
129114
ProcessCapture(Data->ScreenCaptureData, *this, SelectedMonitor, ret);
130115
}
131116
return Ret;

0 commit comments

Comments
 (0)