@@ -172,26 +172,58 @@ void HalEsp32::init()
172172 .buff_spiram = true ,
173173 .sw_rotate = true ,
174174 }};
175- lvDisp = bsp_display_start_with_config (&cfg);
176- lv_display_set_rotation (lvDisp, LV_DISPLAY_ROTATION_90 );
175+ lvDisp = bsp_display_start_with_config (&cfg);
176+ bool display_locked = false ;
177+ if (lvDisp == nullptr )
178+ {
179+ mclog::tagError (_tag, " Failed to start LVGL display" );
180+ }
181+ else
182+ {
183+ display_locked = bsp_display_lock (0 );
184+ if (!display_locked)
185+ {
186+ mclog::tagError (_tag, " Failed to lock LVGL port during display init" );
187+ }
188+ else
189+ {
190+ lv_display_set_rotation (lvDisp, LV_DISPLAY_ROTATION_90 );
191+ mclog::tagInfo (_tag, " Display rotation set to 90 degrees" );
192+ }
193+ }
194+
177195 bsp_display_backlight_on ();
178196
179197 lvTouchpad = bsp_display_get_input_dev ();
180- if (lvTouchpad == nullptr )
198+ if (display_locked )
181199 {
182- mclog::tagWarn (_tag, " LVGL touch input not provided by BSP; creating fallback driver" );
183-
184- lvTouchpad = lv_indev_create ();
185- if (lvTouchpad == nullptr )
200+ if (lvTouchpad != nullptr )
186201 {
187- mclog::tagError (_tag, " Failed to allocate LVGL touch input device " );
202+ lv_indev_set_display (lvTouchpad, lvDisp );
188203 }
189204 else
190205 {
191- lv_indev_set_type (lvTouchpad, LV_INDEV_TYPE_POINTER );
192- lv_indev_set_read_cb (lvTouchpad, lvgl_read_cb);
193- lv_indev_set_display (lvTouchpad, lvDisp);
206+ mclog::tagWarn (_tag, " LVGL touch input not provided by BSP; creating fallback driver" );
207+
208+ lvTouchpad = lv_indev_create ();
209+ if (lvTouchpad == nullptr )
210+ {
211+ mclog::tagError (_tag, " Failed to allocate LVGL touch input device" );
212+ }
213+ else
214+ {
215+ lv_indev_set_type (lvTouchpad, LV_INDEV_TYPE_POINTER );
216+ lv_indev_set_read_cb (lvTouchpad, lvgl_read_cb);
217+ lv_indev_set_display (lvTouchpad, lvDisp);
218+ }
194219 }
220+
221+ bsp_display_unlock ();
222+ display_locked = false ;
223+ }
224+ else if (lvTouchpad == nullptr )
225+ {
226+ mclog::tagError (_tag, " Touch input unavailable and LVGL lock not taken" );
195227 }
196228
197229 mclog::tagInfo (_tag, " usb host init" );
@@ -205,8 +237,6 @@ void HalEsp32::init()
205237
206238 mclog::tagInfo (_tag, " set gpio output capability" );
207239 set_gpio_output_capability ();
208-
209- bsp_display_unlock ();
210240}
211241
212242void HalEsp32::set_gpio_output_capability ()
0 commit comments