[simulation] Fix some potential crashes & 26 memory leaks, improve LCD redraws. (#4634)
* [simulation] Hardening: Fix some potential crashes & 26 memory leaks, improve LCD performance. * [simpgmspace] Init trims; Make sure `REa` is really defined (to match board files). * [simpgmspace][opentxsimulator] Verify current running state before start/stop; Move rotary enc. init. * [simpgmspace][LcdWidget] Improve performance by moving LCD content change check to lcdRefresh() & limiting LcdWidget refresh time to 60 fps max. * [simueeprom] Ensure thread could be started, set default running state to false. * [simufatfs] Fix paths report trace. * [eepromimportexport] Fix memory leaks resulting from import debugging scheme being used. * [customdebug] Introduce new scheme for custom debug output in compliance with Qt recommendations (see docs for QLoggingCategory). * [opentxeeprom] Fix extra conversion table cache elements being created and also not properly deleted (and hence leaking). * [opentxinterface] Unregister EEpromInterfaces in unregisterOpenTxFirmwares(); * [storage] Unregister storage factories on exit (fixes leak); create virtual StorageFormat/StorageFactory destructors (prevents warnings). * [helpers] GVarGroup now emits own signal, no need to pass ModelPanel pointer (removes dependency on modeledit.h) * [DebugOutput] Clear simulator trace hook before exiting (prevent possible issues); Fix leak and possible bad QString allocations when reading from buffer; Fix leak with combo box event filter. * [TelemetrySimulator] Fix leak by deleting LogPlaybackController object on exit; Only set up data fields once; convert timers to static. * [build] Consolidate all Companion/Simulator shared items in `common` library to reduce build time/etc (node & edge still remain awkward). * [simulatorwidget] Delete removed spacer object (previously-forgotten "26th" leak). * [DebugOutput] Fix stray trailing characters issue with new text buffer allocation (from previous commit); Increase maximum buffer sizes to better accommodate slower systems. * Cosmetics.
This commit is contained in:
committed by
Bertrand Songis
parent
52e65179a8
commit
4aa0c1bbe4
@@ -28,7 +28,7 @@ uint8_t * eeprom_buffer_data;
|
||||
volatile int32_t eeprom_buffer_size;
|
||||
bool eeprom_read_operation;
|
||||
|
||||
bool eeprom_thread_running = true;
|
||||
bool eeprom_thread_running = false;
|
||||
|
||||
#if defined(EEPROM_SIZE)
|
||||
uint8_t eeprom[EEPROM_SIZE];
|
||||
@@ -41,7 +41,7 @@ sem_t * eeprom_write_sem;
|
||||
void eepromReadBlock (uint8_t * buffer, size_t address, size_t size)
|
||||
{
|
||||
assert(size);
|
||||
|
||||
|
||||
if (fp) {
|
||||
// TRACE("EEPROM read (pos=%d, size=%d)", pointer_eeprom, size);
|
||||
if (fseek(fp, address, SEEK_SET) < 0)
|
||||
@@ -154,6 +154,7 @@ void StartEepromThread(const char * filename)
|
||||
if (!fp)
|
||||
perror("error in fopen");
|
||||
}
|
||||
|
||||
#ifdef __APPLE__
|
||||
eeprom_write_sem = sem_open("eepromsem", O_CREAT, S_IRUSR | S_IWUSR, 0);
|
||||
#else
|
||||
@@ -161,8 +162,10 @@ void StartEepromThread(const char * filename)
|
||||
sem_init(eeprom_write_sem, 0, 0);
|
||||
#endif
|
||||
|
||||
eeprom_thread_running = true;
|
||||
pthread_create(&eeprom_thread_pid, NULL, &eeprom_thread_function, NULL);
|
||||
if (!pthread_create(&eeprom_thread_pid, NULL, &eeprom_thread_function, NULL))
|
||||
eeprom_thread_running = true;
|
||||
else
|
||||
perror("Could not create eeprom thread.");
|
||||
}
|
||||
|
||||
void StopEepromThread()
|
||||
@@ -178,5 +181,6 @@ void StopEepromThread()
|
||||
free(eeprom_write_sem);
|
||||
#endif
|
||||
|
||||
if (fp) fclose(fp);
|
||||
if (fp)
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user