diff --git a/src/gfx.c b/src/gfx.c index d13d173c..e35bcd3d 100644 --- a/src/gfx.c +++ b/src/gfx.c @@ -79,7 +79,7 @@ extern void _gosDeinit(void); extern void _gtransDeinit(void); #endif #if GFX_OS_CALL_UGFXMAIN - extern threadreturn_t uGFXMain(void *param); + extern void uGFXMain(void); #endif void gfxInit(void) diff --git a/src/gos/gos_freertos.c b/src/gos/gos_freertos.c index 1f0d8dac..93696581 100644 --- a/src/gos/gos_freertos.c +++ b/src/gos/gos_freertos.c @@ -38,14 +38,19 @@ void _gosInit(void) } #if !GFX_OS_NO_INIT && GFX_OS_CALL_UGFXMAIN - extern threadreturn_t uGFXMain(void *param); + extern void uGFXMain(void); + + static DECLARE_THREAD_FUNCTION(startUGFX_FreeRTOS, p) { + (void) p; + uGFXMain(); + } #endif void _gosPostInit(void) { #if !GFX_OS_NO_INIT && GFX_OS_CALL_UGFXMAIN if (xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED) { - gfxThreadCreate(0, GFX_OS_UGFXMAIN_STACKSIZE, NORMAL_PRIORITY, uGFXMain, 0); + gfxThreadCreate(0, GFX_OS_UGFXMAIN_STACKSIZE, NORMAL_PRIORITY, startUGFX_FreeRTOS, 0); vTaskStartScheduler(); gfxHalt("Unable to start FreeRTOS scheduler. Out of memory?"); } diff --git a/src/gos/gos_options.h b/src/gos/gos_options.h index c78d25ca..e8ce12e7 100644 --- a/src/gos/gos_options.h +++ b/src/gos/gos_options.h @@ -189,8 +189,7 @@ * operating systems whose main thread never returns after starting the * scheduler.
* Its prototype is:
- * threadreturn_t uGFXMain(void *param);
- * @note uGFXMain() will always be called with a NULL paramter. + * void uGFXMain(void);
*/ #ifndef GFX_OS_CALL_UGFXMAIN #define GFX_OS_CALL_UGFXMAIN FALSE