Невозможно установить режим видео для экрана SDL на встроенном устройстве - PullRequest
6 голосов
/ 18 декабря 2010

За последние несколько дней я взломал устройство на базе ARM (ADS Freescale i.MX27) со встроенным экраном. Устройство работает под управлением модифицированной минимальной системы GNU / Linux, без оконного управления или графического сервера. По умолчанию устройство должно запускать только одно приложение, которое поставляется с ним.

Я никогда раньше не занимался графическим программированием, поэтому для меня это опыт обучения. Я попытался написать простую SDL-программу для запуска на устройстве, которая считывала бы растровое изображение и отображала изображение на экране встроенного устройства.

У меня проблема в том, что независимо от того, какое разрешение, глубину или флаги я пытаюсь использовать, режим видео всегда не срабатывает, и я ничего не получаю.

Я знаю, что мой код не проблема, но я все равно опубликую его.

#include "SDL/SDL.h"

#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
#define SCREEN_DEPTH 24

int main(int argc, char *argv[])
{
    SDL_Surface *screen;

    if(!SDL_Init(SDL_INIT_VIDEO))
    {
            printf("Unable to initialize SDL.\n");
            return 1;
    }

    // It always fails right here
    screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_DEPTH, SDL_SWSURFACE);
    if(screen == NULL)
    {
            printf("Unable to set video mode.\n");
            return 1;
    }

    SDL_Surface* image;
    SDL_Surface* temp;

    temp = SDL_LoadBMP("hello.bmp");
    if(temp == NULL)
    {
            printf("Unable to load bitmap.\n");
            return 1;
    }

    image = SDL_DisplayFormat(temp);
    SDL_FreeSurface(temp);

    SDL_Rect src, dest;

    src.x = 0;
    src.y = 0;
    src.w = image->w;
    src.h = image->h;

    dest.x = 100;
    dest.y = 100;
    dest.w = image->w;
    dest.h = image->h;

    SDL_BlitSurface(image, &src, screen, &dest);

    printf("Program finished.\n\n");

    return 0;
}

Из того, что я могу сказать, приложение, которое должно работать на этом устройстве, использует Qtopia. Опять же, я новичок в графическом программировании, поэтому не знаю, как управлять графическим выводом во встроенной среде, подобной этой.

Есть идеи?

1 Ответ

3 голосов
/ 08 января 2011

Мой код скрывал тот факт, что проблема была в инициализации SDL, а не в настройке режима видео.SDL не инициализировался, потому что в моей встроенной системе нет X-сервера и мыши.После установки SDL_NOMOUSE проблема была решена.

...