mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-29 17:40:01 +02:00
minor readframefromrxr using unique ptrs
This commit is contained in:
parent
b421a73c3d
commit
3a3c5b0a6e
@ -465,8 +465,8 @@ void DetectorImpl::readFrameFromReceiver() {
|
|||||||
}
|
}
|
||||||
bool data = false;
|
bool data = false;
|
||||||
bool completeImage = false;
|
bool completeImage = false;
|
||||||
char *image = nullptr;
|
std::unique_ptr<char[]> image{nullptr};
|
||||||
char *multiframe = nullptr;
|
std::unique_ptr<char[]> multiframe{nullptr};
|
||||||
char *multigappixels = nullptr;
|
char *multigappixels = nullptr;
|
||||||
int multisize = 0;
|
int multisize = 0;
|
||||||
// only first message header
|
// only first message header
|
||||||
@ -484,9 +484,10 @@ void DetectorImpl::readFrameFromReceiver() {
|
|||||||
// reset data
|
// reset data
|
||||||
data = false;
|
data = false;
|
||||||
if (multiframe != nullptr) {
|
if (multiframe != nullptr) {
|
||||||
memset(multiframe, 0xFF, multisize);
|
memset(multiframe.get(), 0xFF, multisize);
|
||||||
}
|
}
|
||||||
completeImage = true;
|
|
||||||
|
completeImage = (numRunning == (int)zmqSocket.size());
|
||||||
|
|
||||||
// get each frame
|
// get each frame
|
||||||
for (unsigned int isocket = 0; isocket < zmqSocket.size(); ++isocket) {
|
for (unsigned int isocket = 0; isocket < zmqSocket.size(); ++isocket) {
|
||||||
@ -503,6 +504,7 @@ void DetectorImpl::readFrameFromReceiver() {
|
|||||||
// parse error, version error or end of acquisition for
|
// parse error, version error or end of acquisition for
|
||||||
// socket
|
// socket
|
||||||
runningList[isocket] = false;
|
runningList[isocket] = false;
|
||||||
|
completeImage = false;
|
||||||
--numRunning;
|
--numRunning;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -512,9 +514,9 @@ void DetectorImpl::readFrameFromReceiver() {
|
|||||||
// allocate
|
// allocate
|
||||||
size = zHeader.imageSize;
|
size = zHeader.imageSize;
|
||||||
multisize = size * zmqSocket.size();
|
multisize = size * zmqSocket.size();
|
||||||
image = new char[size];
|
image = sls::make_unique<char[]>(size);
|
||||||
multiframe = new char[multisize];
|
multiframe = sls::make_unique<char[]>(multisize);
|
||||||
memset(multiframe, 0xFF, multisize);
|
memset(multiframe.get(), 0xFF, multisize);
|
||||||
// dynamic range
|
// dynamic range
|
||||||
dynamicRange = zHeader.dynamicRange;
|
dynamicRange = zHeader.dynamicRange;
|
||||||
bytesPerPixel = (float)dynamicRange / 8;
|
bytesPerPixel = (float)dynamicRange / 8;
|
||||||
@ -576,7 +578,7 @@ void DetectorImpl::readFrameFromReceiver() {
|
|||||||
|
|
||||||
// DATA
|
// DATA
|
||||||
data = true;
|
data = true;
|
||||||
zmqSocket[isocket]->ReceiveData(isocket, image, size);
|
zmqSocket[isocket]->ReceiveData(isocket, image.get(), size);
|
||||||
|
|
||||||
// creating multi image
|
// creating multi image
|
||||||
{
|
{
|
||||||
@ -596,18 +598,18 @@ void DetectorImpl::readFrameFromReceiver() {
|
|||||||
|
|
||||||
if (eiger && (flippedDataX != 0U)) {
|
if (eiger && (flippedDataX != 0U)) {
|
||||||
for (uint32_t i = 0; i < nPixelsY; ++i) {
|
for (uint32_t i = 0; i < nPixelsY; ++i) {
|
||||||
memcpy((multiframe) +
|
memcpy((multiframe.get()) +
|
||||||
((yoffset + (nPixelsY - 1 - i)) *
|
((yoffset + (nPixelsY - 1 - i)) *
|
||||||
rowoffset) +
|
rowoffset) +
|
||||||
xoffset,
|
xoffset,
|
||||||
image + (i * singledetrowoffset),
|
image.get() + (i * singledetrowoffset),
|
||||||
singledetrowoffset);
|
singledetrowoffset);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (uint32_t i = 0; i < nPixelsY; ++i) {
|
for (uint32_t i = 0; i < nPixelsY; ++i) {
|
||||||
memcpy((multiframe) + ((yoffset + i) * rowoffset) +
|
memcpy((multiframe.get()) +
|
||||||
xoffset,
|
((yoffset + i) * rowoffset) + xoffset,
|
||||||
image + (i * singledetrowoffset),
|
image.get() + (i * singledetrowoffset),
|
||||||
singledetrowoffset);
|
singledetrowoffset);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -623,12 +625,13 @@ void DetectorImpl::readFrameFromReceiver() {
|
|||||||
|
|
||||||
// send data to callback
|
// send data to callback
|
||||||
if (data) {
|
if (data) {
|
||||||
char *callbackImage = multiframe;
|
char *callbackImage = multiframe.get();
|
||||||
int imagesize = multisize;
|
int imagesize = multisize;
|
||||||
|
|
||||||
if (gapPixels) {
|
if (gapPixels) {
|
||||||
int n = InsertGapPixels(multiframe, multigappixels, quadEnable,
|
int n = InsertGapPixels(multiframe.get(), multigappixels,
|
||||||
dynamicRange, nDetPixelsX, nDetPixelsY);
|
quadEnable, dynamicRange, nDetPixelsX,
|
||||||
|
nDetPixelsY);
|
||||||
callbackImage = multigappixels;
|
callbackImage = multigappixels;
|
||||||
imagesize = n;
|
imagesize = n;
|
||||||
}
|
}
|
||||||
@ -659,8 +662,6 @@ void DetectorImpl::readFrameFromReceiver() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// free resources
|
// free resources
|
||||||
delete[] image;
|
|
||||||
delete[] multiframe;
|
|
||||||
delete[] multigappixels;
|
delete[] multigappixels;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user