diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index e59e39c11..e895d9c29 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -371,6 +371,31 @@ void startSimulation(QWidget * parent, RadioData & radioData, int modelIdx) simuData->setCurrentModel(modelIdx); } +#ifdef __APPLE__ + SimulatorMainWindow * dialog = new SimulatorMainWindow(parent, simulatorId, flags); + dialog->setWindowModality(Qt::ApplicationModal); + dialog->setAttribute(Qt::WA_DeleteOnClose); + + QObject::connect(dialog, &SimulatorMainWindow::destroyed, [simuData] (void) { + simulatorRunning = false; + // TODO simuData and Horus tmp directory is deleted on simulator close OR we could use it to get back data from the simulation + delete simuData; + }); + + QString resultMsg; + if (dialog->getExitStatus(&resultMsg)) { + if (resultMsg.isEmpty()) + resultMsg = QCoreApplication::translate("Companion", "Uknown error during Simulator startup."); + QMessageBox::critical(NULL, QCoreApplication::translate("Companion", "Simulator Error"), resultMsg); + dialog->deleteLater(); + } else if (dialog->setRadioData(simuData)) { + simulatorRunning = true; + dialog->show(); + } else { + QMessageBox::critical(NULL, QCoreApplication::translate("Companion", "Data Load Error"), QCoreApplication::translate("Companion", "Error occurred while starting simulator.")); + dialog->deleteLater(); + } +#else // the directory will be automatically deleted when QTemporaryDir goes out of scope QTemporaryDir tmpDir(QDir::tempPath() + "/etx-XXXXXX"); if (tmpDir.isValid()) { @@ -427,7 +452,7 @@ void startSimulation(QWidget * parent, RadioData & radioData, int modelIdx) if (simuData) delete simuData; - +#endif } QPixmap makePixMap(const QImage & image) diff --git a/radio/src/gui/colorlcd/libui/bitmapbuffer_fileio.cpp b/radio/src/gui/colorlcd/libui/bitmapbuffer_fileio.cpp index 9f6e497cb..6df40ef95 100644 --- a/radio/src/gui/colorlcd/libui/bitmapbuffer_fileio.cpp +++ b/radio/src/gui/colorlcd/libui/bitmapbuffer_fileio.cpp @@ -61,6 +61,7 @@ void *stb_realloc(void *ptr, unsigned int oldsz, unsigned int newsz) #define STBI_NO_STDIO #define STBI_NO_LINEAR #define STB_IMAGE_IMPLEMENTATION +#define STBI_NO_THREAD_LOCALS #include "stb/stb_image.h" // fill 'data' with 'size' bytes. return number of bytes actually read