Skip to content

Commit 7433e98

Browse files
fix segfault of appstore on unix/desktop
1 parent 68dd24d commit 7433e98

File tree

1 file changed

+22
-7
lines changed
  • internal_filesystem/builtin/apps/com.example.appstore/assets

1 file changed

+22
-7
lines changed

internal_filesystem/builtin/apps/com.example.appstore/assets/appstore.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ def download_icons():
251251
image_dsc = download_icon(app.icon_url)
252252
app.image_dsc = image_dsc # save it for the app detail page
253253
lv.async_call(lambda l: app.image.set_src(image_dsc), None)
254-
time.sleep_ms(50) # not waiting here will result in some async_calls() not being executed
254+
time.sleep_ms(100) # not waiting here will result in some async_calls() not being executed
255255
print("Finished downloading icons...")
256256

257257

@@ -264,14 +264,18 @@ def load_icon(icon_path):
264264
})
265265
return image_dsc
266266

267-
def create_apps_list():
268-
global apps, main_screen
267+
def create_ui():
268+
global main_screen, please_wait_label
269269
main_screen = lv.obj()
270270
please_wait_label = lv.label(main_screen)
271271
please_wait_label.set_text("Downloading app index...")
272272
please_wait_label.center()
273-
default_icon_dsc = load_icon("builtin/res/mipmap-mdpi/default_icon_64x64.png")
273+
mpos.ui.load_screen(main_screen)
274+
275+
def create_apps_list():
274276
print("create_apps_list")
277+
global apps, main_screen
278+
default_icon_dsc = load_icon("builtin/res/mipmap-mdpi/default_icon_64x64.png")
275279
apps_list = lv.list(main_screen)
276280
apps_list.set_style_pad_all(0, 0)
277281
apps_list.set_size(lv.pct(100), lv.pct(100))
@@ -305,15 +309,19 @@ def create_apps_list():
305309
desc_label.set_style_text_font(lv.font_montserrat_12, 0)
306310
desc_label.add_event_cb(lambda e, a=app: show_app_detail(a), lv.EVENT.CLICKED, None)
307311
print("create_apps_list app done")
308-
mpos.ui.load_screen(main_screen)
309312
try:
310-
_thread.stack_size(16*1024)
313+
stacksize = 24*1024
314+
import sys
315+
if sys.platform == "esp32":
316+
stacksize = 16*1024
317+
_thread.stack_size(stacksize)
311318
_thread.start_new_thread(download_icons,())
312319
except Exception as e:
313320
print("Could not start thread to download icons: ", e)
314321

315322

316323
def show_app_detail(app):
324+
print("Creating app detail screen...")
317325
global app_detail_screen, install_button, progress_bar, install_label
318326
#app_detail_screen = lv.obj()
319327
#app_detail_screen.set_size(lv.pct(100), lv.pct(100))
@@ -389,6 +397,7 @@ def show_app_detail(app):
389397
long_desc_label.set_text(app.long_description)
390398
long_desc_label.set_style_text_font(lv.font_montserrat_12, 0)
391399
long_desc_label.set_width(lv.pct(100))
400+
print("Loading app detail screen...")
392401
mpos.ui.load_screen(app_detail_screen)
393402

394403

@@ -431,6 +440,8 @@ def janitor_cb(timer):
431440
mpos.apps.restart_launcher() # refresh the launcher
432441
print("appstore.py ending")
433442

443+
create_ui()
444+
434445
janitor = lv.timer_create(janitor_cb, 400, None)
435446

436447
can_check_network = True
@@ -442,6 +453,10 @@ def janitor_cb(timer):
442453
if can_check_network and not network.WLAN(network.STA_IF).isconnected():
443454
please_wait_label.set_text("Error: WiFi is not connected.")
444455
else:
445-
_thread.stack_size(16*1024)
456+
stacksize = 24*1024
457+
import sys
458+
if sys.platform == "esp32":
459+
stacksize = 16*1024
460+
_thread.stack_size(stacksize)
446461
_thread.start_new_thread(download_apps, ("http://demo.lnpiggy.com:2121/apps.json",))
447462

0 commit comments

Comments
 (0)