Странная вещь в Screencapture на QEMU (3.1.0, SDL), на котором работает anroid-x86 - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь получить данные о пикселях окна sdl2 QEMU (android-x86) с помощью SDL_RenderReadPixel () в функции gl_referesh (расположенной в qemu-source_root / ui / sdl2-gl.c).
Хорошо работает при настройке Android по умолчанию.
Но это не работает (возвращает черный экран), когда некоторые приложения работают (веб-браузер, приложение галереи по умолчанию) после изменения плотности Android ..
Конечно, это хорошо работает после того, как я перехожу на исходную плотность ...

На самом деле моя цель - захват данных с экрана гостевого android-x86.
Но в случае с Virt-GPU
hw composer гостевого андроида не работает (Logcat говорит мне, что hw composer не работает / я не знаю почему) ...
Таким образом, не только чтение / dev / graphics / fb0, но и screencap cmd не работает в случае virt-gpu android-x86.
Во всяком случае, я думал, что захват данных экрана из QEMU легче, чем со стороны гостевого Android.
Итак, я попытался написать приведенный ниже код в функции, связанной с SDL, потому что я не знаю, где конечные данные экрана находятся в исходном коде QEMU ... и я использую дисплей SDL2 для запуска Android-x86

QEMURoot/ui/sdl2-gl.c  line 112
void sdl2_gl_refresh(DisplayChangeListener *dcl)
{
    struct sdl2_console *scon = container_of(dcl, struct sdl2_console, dcl);
    //Start of my code
    SDL_Renderer        *renderer;
    Uint32              epixelformat;

    renderer = SDL_GetRenderer(scon->real_window);
    epixelformat = SDL_PIXELFORMAT_BGR24;
    SDL_RenderReadPixels(renderer, NULL, epixelformat, shmemAddr, scon->w * 3);  //shmemAddr is shared memory for video encoder
    //End of my code

    assert(scon->opengl);

    graphic_hw_update(dcl->con);
    if (scon->updates && scon->surface) {
        scon->updates = 0;
        sdl2_gl_render_surface(scon);
    }   
    sdl2_poll_events(scon);
}

Я хочу получить данные экрана, даже если плотность гостевого андроида изменилась ..

или

Если кто-то знает о том, где находятся окончательные данные экрана в QEMU, пожалуйста, дайте мне совет.

заранее спасибо.

...