diff --git a/terminal.c b/terminal.c index 5c9c7b37..9aadd549 100644 --- a/terminal.c +++ b/terminal.c @@ -219,7 +219,6 @@ term_init(const struct config *conf, struct fdm *fdm, struct wayland *wayl, int delay_upper_fd = -1; struct terminal *term = NULL; - struct render_worker_context *worker_context[conf->render_worker_count]; if ((ptmx = posix_openpt(O_RDWR | O_NOCTTY)) == -1) { LOG_ERRNO("failed to open PTY"); @@ -341,12 +340,16 @@ term_init(const struct config *conf, struct fdm *fdm, struct wayland *wayl, mtx_init(&term->render.workers.lock, mtx_plain); cnd_init(&term->render.workers.cond); - term->render.workers.threads = calloc(term->render.workers.count, sizeof(term->render.workers.threads[0])); + term->render.workers.threads = calloc( + term->render.workers.count, sizeof(term->render.workers.threads[0])); + for (size_t i = 0; i < term->render.workers.count; i++) { - worker_context[i] = malloc(sizeof(*worker_context[i])); - worker_context[i]->term = term; - worker_context[i]->my_id = 1 + i; - thrd_create(&term->render.workers.threads[i], &render_worker_thread, worker_context[i]); + struct render_worker_context *ctx = malloc(sizeof(*ctx)); + *ctx = (struct render_worker_context) { + .term = term, + .my_id = 1 + i, + }; + thrd_create(&term->render.workers.threads[i], &render_worker_thread, ctx); } font_list_t font_names = tll_init();