fixed ser write segfault

master
Steffen Pohle 1 year ago
parent c01339b7b9
commit eb98013780

@ -194,19 +194,19 @@ void Output::Thread() {
}
outputser = new SER();
outputser->setWidth(outputserw);
outputser->setHeight(outputserh);
outputser->setColorID(serformat);
outputser->setPixelDepth(pixsize);
if (outputser) outputser->setWidth(outputserw);
if (outputser) outputser->setHeight(outputserh);
if (outputser) outputser->setColorID(serformat);
if (outputser) outputser->setPixelDepth(pixsize);
if (outputser->setFile((char *)outputfilename.c_str()) == -1) {
errormessage_display((char*)"windows-main", (char*)"Error", (char*)"Could not set output file [%s]. Error: %s", outputfilename.c_str(), strerror(errno));
SERStop();
}
outputser->setObserver((char *)"FIXME:read username from OS");
outputser->setTelescope((char *)"FIXME:not implemented yet");
outputser->setInstrument((char *)"FIXME:just read device from dirver");
outputser->setNumberOfFrames(0);
outputser->writeHeader();
if (outputser) outputser->setObserver((char *)"FIXME:read username from OS");
if (outputser) outputser->setTelescope((char *)"FIXME:not implemented yet");
if (outputser) outputser->setInstrument((char *)"FIXME:just read device from dirver");
if (outputser) outputser->setNumberOfFrames(0);
if (outputser) outputser->writeHeader();
}
else {
@ -220,7 +220,7 @@ void Output::Thread() {
}
}
if (outputser != NULL) { // we need to check in case outputser got deleted.
if (outputser) { // we need to check in case outputser got deleted.
//
// write frame
outputser->appendFrame(inFrame.data);

@ -40,6 +40,7 @@ VideoDev_Dumpfile::VideoDev_Dumpfile() {
inframe_size = 0;
inframe_maxsize = 0;
inframe_nexttime = 0;
fixedframesize = 0;
};
@ -359,14 +360,19 @@ int VideoDev_Dumpfile::ReadFrame() {
*/
int VideoDev_Dumpfile::SetDevCtrl(unsigned int id, int value) {
std::list<VideoDevCtrl>::iterator ctrl;
printf ("%s:%d VideoDev_Dumpfile::SetDevCtrl Set Offset to %d id:%d\n", __FILE__, __LINE__, value, id);
printf ("%s:%d VideoDev_Dumpfile::SetDevCtrl Set Offset to %d id:%d fixedframesize:%d\n", __FILE__, __LINE__, value, id, fixedframesize);
if (id == 1) {
ctrl = vidctrls.begin();
if (value != ctrl->value && value < ctrl->max) {
filepos = SIZE_DUMPHEADER + (value * (SIZE_FRAMEHEADER + fixedframesize));
ctrl->value = value;
lseek (fd, SEEK_SET, SIZE_DUMPHEADER + (value * (SIZE_FRAMEHEADER + fixedframesize)));
if (lseek (fd, filepos, SEEK_SET) < 0) {
printf ("%s:%d ******* lseek error:%s\n", __FILE__, __LINE__, strerror(errno));
}
}
else printf ("%s:%d could not set video position (ctrl->value:%d value:%d max:%d)\n",
__FILE__, __LINE__, ctrl->value, value, ctrl->max);
}
return VDEV_STATUS_OK;
};

Loading…
Cancel
Save