도와주세요!!
글 수 15,339
2003.08.27 13:56:35 (*.46.147.215)
6724
아래 마이크로윈도우와 연계한 질문입니다... 자꾸 질문드려 죄송.-_-;
제 생각에요..
ioctl(fb, FBIOGET_VSCREENINFO, &fb_var) == -1)
에서
두번째 request 인자인 FBIOGET_VSCREENINFO 대신에
FBIOPUT_VSCREENINFO 로 하여 ioctl을 호출하면 해상도 세팅을 할 수 있을
것 같은데요.. 문제는 세번째 인자인 fb_var에 세팅한 해상도 값을 넣어야
하는데 단지 xres와 yres를 800과 600으로 만 바꾸어서는 안될 것 같습니다..
psd->xres = psd->xvirtres = 800;
psd->yres = psd->yvirtres = 600;
처럼 다이렉트로 넣을 경우 에러가 나는 걸로 봐서..
그런데 fb_var의 구조가 아래와 같이 복잡하니.. 이 필드들을
어찌 채워야 하느냐가 문제로 보이네요..
접근해 가는 방법은 맞는 건지???? 답변 부탁드립니다.
struct fb_var_screeninfo {
int xres; /* visible resolution
*/
int yres;
int xres_virtual; /* virtual resolution
*/
int yres_virtual;
int xoffset; /* offset from virtual to
visible */
int yoffset; /* resolution
*/
int bits_per_pixel; /* guess what
*/
int grayscale; /* != 0 Graylevels instead
of colors */
struct fb_bitfield red; /* bitfield in fb mem if
true color, */
struct fb_bitfield green; /* else only length is significant
*/
struct fb_bitfield blue;
struct fb_bitfield transp; /* transparency
*/
int nonstd; /* != 0 Non standard pixel
format */
int activate; /* see FB_ACTIVATE_*
*/
int height; /* height of picture in
mm */
int width; /* width of picture in
mm */
int accel; /* see FB_ACCEL_*
*/
/* Timing: All values in pixclocks, except pixclock (of
course) */
unsigned long pixclock; /* pixel clock in ps (pico
seconds) */
unsigned long left_margin; /* time from sync to picture
*/
unsigned long right_margin; /* time from picture to sync
*/
unsigned long upper_margin; /* time from sync to picture
*/
unsigned long lower_margin;
unsigned long hsync_len; /* length of horizontal sync
*/
unsigned long vsync_len; /* length of vertical sync */
int sync; /* see FB_SYNC_* */
int vmode; /* see FB_VMODE_*
*/
int reserved[6]; /* Reserved for future
compatibility */
};
제 생각에요..
ioctl(fb, FBIOGET_VSCREENINFO, &fb_var) == -1)
에서
두번째 request 인자인 FBIOGET_VSCREENINFO 대신에
FBIOPUT_VSCREENINFO 로 하여 ioctl을 호출하면 해상도 세팅을 할 수 있을
것 같은데요.. 문제는 세번째 인자인 fb_var에 세팅한 해상도 값을 넣어야
하는데 단지 xres와 yres를 800과 600으로 만 바꾸어서는 안될 것 같습니다..
psd->xres = psd->xvirtres = 800;
psd->yres = psd->yvirtres = 600;
처럼 다이렉트로 넣을 경우 에러가 나는 걸로 봐서..
그런데 fb_var의 구조가 아래와 같이 복잡하니.. 이 필드들을
어찌 채워야 하느냐가 문제로 보이네요..
접근해 가는 방법은 맞는 건지???? 답변 부탁드립니다.
struct fb_var_screeninfo {
int xres; /* visible resolution
*/
int yres;
int xres_virtual; /* virtual resolution
*/
int yres_virtual;
int xoffset; /* offset from virtual to
visible */
int yoffset; /* resolution
*/
int bits_per_pixel; /* guess what
*/
int grayscale; /* != 0 Graylevels instead
of colors */
struct fb_bitfield red; /* bitfield in fb mem if
true color, */
struct fb_bitfield green; /* else only length is significant
*/
struct fb_bitfield blue;
struct fb_bitfield transp; /* transparency
*/
int nonstd; /* != 0 Non standard pixel
format */
int activate; /* see FB_ACTIVATE_*
*/
int height; /* height of picture in
mm */
int width; /* width of picture in
mm */
int accel; /* see FB_ACCEL_*
*/
/* Timing: All values in pixclocks, except pixclock (of
course) */
unsigned long pixclock; /* pixel clock in ps (pico
seconds) */
unsigned long left_margin; /* time from sync to picture
*/
unsigned long right_margin; /* time from picture to sync
*/
unsigned long upper_margin; /* time from sync to picture
*/
unsigned long lower_margin;
unsigned long hsync_len; /* length of horizontal sync
*/
unsigned long vsync_len; /* length of vertical sync */
int sync; /* see FB_SYNC_* */
int vmode; /* see FB_VMODE_*
*/
int reserved[6]; /* Reserved for future
compatibility */
};