Задать вопрос
@Catmengi
Зачем я это делаю? Просто потому что

Что не так с этим кодом? Или у lvgl сломан SDL рендерер?

Есть вот этот код, он использует SDL2 рендерер в lvgl,
вместо темно-синего фона и hello world выводиться черное окно, проблема в коде или в lvgl?
#include "lvgl/lvgl.h"

#include <pthread.h>
#include <unistd.h>
#include <stdio.h>

static int should_stop = 0;

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

void* lv_timer_handler_thread_func(void* should_stop){
    while(*(int*)should_stop == 0){
        pthread_mutex_lock(&mutex);
        usleep(lv_timer_handler() * 1000);
        pthread_mutex_unlock(&mutex);
    }
    pthread_detach(pthread_self());
    return NULL;
}

int main(){

    lv_init();

    lv_disp_t* disp = lv_sdl_window_create(320,240);


    lv_indev_t* kb = lv_sdl_keyboard_create();
    lv_indev_t* mouse = lv_sdl_mouse_create();

    printf("%p\n",lv_scr_act());
    lv_display_set_default(disp);

    pthread_t lv_timer_handler_thread;

    pthread_create(&lv_timer_handler_thread,NULL,lv_timer_handler_thread_func,&should_stop);

    pthread_mutex_lock(&mutex);
// // // // // // // // // // // // // // // // // // // // // // // // // // // //
    lv_obj_set_style_bg_color(lv_screen_active(), lv_color_hex(0x003a57), LV_PART_MAIN);

    lv_obj_t * label = lv_label_create(lv_screen_active());
    lv_label_set_text(label, "Hello world");
    lv_obj_set_style_text_color(lv_screen_active(), lv_color_hex(0xffffff), LV_PART_MAIN);
    lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);

// // // // // // // // // // // // // // // // // // // // // // // // // // // //

    pthread_mutex_unlock(&mutex);

    while(1);
}
  • Вопрос задан
  • 93 просмотра
Подписаться 1 Простой 3 комментария
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
вместо темно-синего фона и hello world выводиться черное окно, проблема в коде или в lvgl?

Я вижу вот такое:
6777b62c0681b961507674.png
вроде всё на месте. Debian 12. Собирал так: gcc test.c -o test -L lvgl/build/lib -llvgl -lSDL2, в lvgl скопировал lv_conf.h из lv_conf_template.h и включил в нём LV_USE_SDL.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы