Mercurial > hg > Members > kono > Cerium
view TaskManager/Test/simple_pack/fb.cpp @ 78:3c6dec161ade
*** empty log message ***
author | chiaki |
---|---|
date | Tue, 19 Feb 2008 15:49:40 +0900 |
parents | |
children | 4d6bd3c0d90b |
line wrap: on
line source
#include <iostream> #include <SDL.h> #include <SDL_opengl.h> #include <math.h> #include <unistd.h> #include "polygon.h" #include "viewer.h" #include "sys.h" using namespace std; void cleanup_fbdev() { munmap(fbptr, screensize); close(fd_framebuffer); } void send_current_error_msg(char *ptr) { fprintf( stderr, "%s\n", ptr); } void send_current_information(char *ptr) { fprintf( stdout, "%s\n", ptr); } int get_fbdev_addr(void) { struct fb_var_screeninfo vinfo; struct fb_fix_screeninfo finfo; char tmp[DIV_BYTE*10]; int xres,yres, vbpp, line_len; /* open the file only for read */ fd_framebuffer = open( DEVICE_NAME, O_RDWR); if( !fd_framebuffer ) { send_current_error_msg("Framebuffer device open error\n"); exit(1); } send_current_information("The framebuffer device was opened\n"); /* Get the fixed screen info */ if( ioctl( fd_framebuffer, FBIOGET_FSCREENINFO, &finfo) ) { send_current_error_msg("Fixed information not gotton !"); exit(2); } /* Get the flucture screen info */ if( ioctl( fd_framebuffer, FBIOGET_VSCREENINFO, &vinfo) ) { send_current_error_msg("Variable information not gotton !"); exit(3); } xres = vinfo.xres; yres = vinfo.yres; vbpp = vinfo.bits_per_pixel; line_len = finfo.line_length; sprintf( tmp, "%d(pixel)x%d(line), %dbpp(bits per pixel)", xres, yres, vbpp); send_current_information( tmp ); /* calcurate screen size per byte */ screensize = xres * yres * vbpp / DIV_BYTE; /* mapping device to memory */ fbptr = (char *)mmap(0,screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fd_framebuffer, 0); if( (int)fbptr == -1) { send_current_error_msg("Don't get framebuffer device to memory !"); exit(4); } send_current_information("The framebuffer device was mapped !"); printf("fbptr:%x\n",(unsigned int)fbptr); //munmap(fbptr, screensize); //close(fd_framebuffer); return (unsigned int)fbptr; }