3#define PRINTLINES_ALLOWED 0
7static const char *FNAME =
"kest_desktop.c";
16static lv_display_t *disp;
17static SDL_Window *window;
18static SDL_Renderer *renderer;
19static SDL_Texture *texture;
21static void flush_cb(lv_display_t *d,
22 const lv_area_t *area,
25 int32_t w = lv_area_get_width(area);
26 int32_t h = lv_area_get_height(area);
28 SDL_UpdateTexture(texture,
29 &(SDL_Rect){area->x1, area->y1, w, h},
33 lv_display_flush_ready(d);
35static void mouse_read(lv_indev_t *indev, lv_indev_data_t *data)
38 uint32_t buttons = SDL_GetMouseState(&x, &y);
43 data->state = (buttons & SDL_BUTTON_LMASK)
44 ? LV_INDEV_STATE_PRESSED
45 : LV_INDEV_STATE_RELEASED;
56 SDL_Init(SDL_INIT_VIDEO);
58 window = SDL_CreateWindow(
"M",
59 SDL_WINDOWPOS_CENTERED,
60 SDL_WINDOWPOS_CENTERED,
64 renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
65 texture = SDL_CreateTexture(renderer,
66 SDL_PIXELFORMAT_ARGB8888,
67 SDL_TEXTUREACCESS_STREAMING,
74 lv_display_set_buffers(disp,
78 LV_DISPLAY_RENDER_MODE_PARTIAL);
80 lv_display_set_flush_cb(disp, flush_cb);
82 lv_indev_t *mouse = lv_indev_create();
83 lv_indev_set_type(mouse, LV_INDEV_TYPE_POINTER);
84 lv_indev_set_read_cb(mouse, mouse_read);
86 init_representation_updater();
132 while (SDL_PollEvent(&e))
134 if (e.type == SDL_QUIT)
141 SDL_RenderClear(renderer);
142 SDL_RenderCopy(renderer, texture, NULL, NULL);
143 SDL_RenderPresent(renderer);
147 SDL_DestroyTexture(texture);
148 SDL_DestroyRenderer(renderer);
149 SDL_DestroyWindow(window);
165 vTaskStartScheduler();
177 printf(
"Stack overflow in %s\n", pcTaskName);
int kest_init_context(kest_context *cxt)
int kest_context_init_effect_list(kest_context *cxt)
int main(int argc, char **argv)
void vApplicationStackOverflowHook(TaskHandle_t xTask, char *pcTaskName)
void vApplicationTickHook(void)
void main_task(void *arg)
void vApplicationMallocFailedHook(void)
int init_effect_selector_eff(kest_ui_page *page)
const char * kest_error_code_to_string(int error_code)
int load_saved_sequences(kest_context *cxt)
int load_state_from_file(kest_state *state, const char *fname)
int kest_init_directories()
int load_saved_profiles(kest_context *cxt)
int load_effects(kest_context *cxt)
void kest_fpga_comms_task(void *param)
void kest_param_update_task(void *arg)
int kest_cxt_restore_state(kest_context *cxt, kest_state *state)
int kest_init_global_pages(kest_global_pages *pages)
void kest_create_ui(lv_disp_t *disp)