MCPcopy Create free account
hub / github.com/TactilityProject/Tactility / redraw

Method redraw

Tactility/Source/service/gui/GuiService.cpp:131–177  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

129}
130
131void GuiService::redraw() {
132 // Lock GUI and LVGL
133 lock();
134
135 if (appRootWidget == nullptr) {
136 LOGGER.warn("No root widget");
137 unlock();
138 return;
139 }
140
141 if (lvgl::lock(1000)) {
142 lv_obj_clean(appRootWidget);
143
144 if (appToRender != nullptr) {
145
146 // Create a default group which adds all objects automatically,
147 // and assign all indevs to it.
148 // This enables navigation with limited input, such as encoder wheels.
149 lv_group_t* group = lv_group_create();
150 auto* indev = lv_indev_get_next(nullptr);
151 while (indev) {
152 lv_indev_set_group(indev, group);
153 indev = lv_indev_get_next(indev);
154 }
155 lv_group_set_default(group);
156
157 app::Flags flags = std::static_pointer_cast<app::AppInstance>(appToRender)->getFlags();
158 if (flags.hideStatusbar) {
159 lv_obj_add_flag(statusbarWidget, LV_OBJ_FLAG_HIDDEN);
160 } else {
161 lv_obj_remove_flag(statusbarWidget, LV_OBJ_FLAG_HIDDEN);
162 }
163
164 lv_obj_t* container = createAppViews(appRootWidget);
165 appToRender->getApp()->onShow(*appToRender, container);
166 } else {
167 LOGGER.warn("Nothing to draw");
168 }
169
170 // Unlock GUI and LVGL
171 lvgl::unlock();
172 } else {
173 LOGGER.error(LOG_MESSAGE_MUTEX_LOCK_FAILED_FMT, "LVGL");
174 }
175
176 unlock();
177}
178
179bool GuiService::onStart(ServiceContext& service) {
180 thread = new Thread(

Callers 1

guiMainMethod · 0.80

Calls 7

warnMethod · 0.80
getFlagsMethod · 0.80
getAppMethod · 0.80
errorMethod · 0.80
lockFunction · 0.50
unlockFunction · 0.50
onShowMethod · 0.45

Tested by

no test coverage detected