Tab5 camera + other stuff (#558)
* Tab5 camera + other stuff Tab5 camera driver - SC2356 Custom SliderBox widget - slider with plus and minus buttons + value label and snapping Rtc Time service + rtc api Sdk release - only include drivers built for that specific target, eg: sc2356 driver is mipi / p4 only. No more hardcoded manual sdk cmakelists New function to find device by compatible string match. no more static cast bool wildness when trying to match a single device (like M5Stack PaperS3 for example) * feedback + fixes Fixed external app user data path. fix(gui): block app teardown until onHide() completes, preventing ELF unload racing a still-running app added camera device type and api * drain the snake sssem --------- Co-authored-by: Ken Van Hoeylandt <git@kenvanhoeylandt.net>
This commit is contained in:
@@ -7,6 +7,8 @@
|
||||
#include <Tactility/service/Service.h>
|
||||
#include <Tactility/service/loader/Loader.h>
|
||||
|
||||
#include <Tactility/Semaphore.h>
|
||||
|
||||
#include <tactility/concurrent/dispatcher.h>
|
||||
|
||||
#include <cstdio>
|
||||
@@ -30,6 +32,16 @@ class GuiService final : public Service {
|
||||
RecursiveMutex mutex;
|
||||
PubSub<loader::LoaderService::Event>::SubscriptionHandle loader_pubsub_subscription = nullptr;
|
||||
|
||||
// Signaled by hideApp() once App::onHide() has actually finished running on the GUI
|
||||
// task. onLoaderEvent() blocks on this (still on the Loader thread, inside the
|
||||
// synchronous pubsub publish() call) before returning from the ApplicationHiding
|
||||
// branch, so LoaderService::transitionAppToState(Hiding) can't return - and therefore
|
||||
// the immediately-following Destroyed transition (which unloads an ELF app's code via
|
||||
// esp_elf_deinit) can't run - until onHide() has fully completed. Without this, the
|
||||
// ELF's code/data can be unmapped while onHide() (and anything it spawned, like a
|
||||
// camera capture task) is still executing it.
|
||||
Semaphore hideDoneSem { 1, 0 };
|
||||
|
||||
// Layers and Canvas
|
||||
lv_obj_t* appRootWidget = nullptr;
|
||||
lv_obj_t* statusbarWidget = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user