summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorWilliam Wilgus <me.theuser@yahoo.com>2019-08-11 23:56:24 -0500
committerWilliam Wilgus <me.theuser@yahoo.com>2019-08-12 07:28:24 +0200
commit3d06d35bf644a006c2de1c871b30e9c18888c8ec (patch)
treebc03c5652ed9d31e6c841e5b7e3f64479c1c4d1c /apps
parent3b75f98700c01266c1d3477767114e41325024c9 (diff)
downloadrockbox-3d06d35bf644a006c2de1c871b30e9c18888c8ec.tar.gz
rockbox-3d06d35bf644a006c2de1c871b30e9c18888c8ec.zip
lua rock events crash on error in main state
on errors thread stack overflows yielding before thread_exit() is a bad idea apparently Change-Id: Iac45d4321fac496738384fdbbeb480356ef2a1bb
Diffstat (limited to 'apps')
-rw-r--r--apps/plugins/lua/rocklib_events.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/apps/plugins/lua/rocklib_events.c b/apps/plugins/lua/rocklib_events.c
index 270c4ab393..09f1c2fd8a 100644
--- a/apps/plugins/lua/rocklib_events.c
+++ b/apps/plugins/lua/rocklib_events.c
@@ -72,6 +72,7 @@
72#define EVENT_METATABLE "event metatable" 72#define EVENT_METATABLE "event metatable"
73 73
74#define EVENT_THREAD LUA_ROCKEVENTSNAME ".thread" 74#define EVENT_THREAD LUA_ROCKEVENTSNAME ".thread"
75#define EV_STACKSZ DEFAULT_STACK_SIZE
75 76
76#define LUA_SUCCESS 0 77#define LUA_SUCCESS 0
77#define EV_TIMER_FREQ (TIMER_FREQ / HZ) 78#define EV_TIMER_FREQ (TIMER_FREQ / HZ)
@@ -323,7 +324,7 @@ event_error:
323 324
324 /* thread is exiting -- clean up */ 325 /* thread is exiting -- clean up */
325 rb->timer_unregister(); 326 rb->timer_unregister();
326 rb->yield(); 327 //rb->yield();
327 rb->thread_exit(); 328 rb->thread_exit();
328 329
329 return; 330 return;
@@ -360,7 +361,7 @@ static void create_event_thread_ref(struct event_data *ev_data)
360 361
361 lua_createtable(L, 2, 0); 362 lua_createtable(L, 2, 0);
362 363
363 ev_data->event_stack = (long *) lua_newuserdata (L, DEFAULT_STACK_SIZE); 364 ev_data->event_stack = (long *) lua_newuserdata (L, EV_STACKSZ);
364 365
365 /* attach EVENT_METATABLE to ud so we get notified on garbage collection */ 366 /* attach EVENT_METATABLE to ud so we get notified on garbage collection */
366 luaL_getmetatable (L, EVENT_METATABLE); 367 luaL_getmetatable (L, EVENT_METATABLE);
@@ -412,7 +413,7 @@ static void init_event_thread(bool init, struct event_data *ev_data)
412 413
413 ev_data->thread_id = rb->create_thread(&event_thread, 414 ev_data->thread_id = rb->create_thread(&event_thread,
414 ev_data->event_stack, 415 ev_data->event_stack,
415 DEFAULT_STACK_SIZE, 416 EV_STACKSZ,
416 0, 417 0,
417 EVENT_THREAD 418 EVENT_THREAD
418 IF_PRIO(, PRIORITY_SYSTEM) 419 IF_PRIO(, PRIORITY_SYSTEM)