X-Git-Url: https://eleni.mutantstargoat.com/git/?p=winnie;a=blobdiff_plain;f=src%2Ffbdev%2Fgfx.cc;h=742b6c687b48611461bfa537934e635dee65cb57;hp=e4527b0c04998b2198c294ecec0d48e3261d6812;hb=695cf39b73ecc76cbbc39e54f844ae55f4a9f938;hpb=52044efd7717f4b02bd463c9a26f83c9a41953ea diff --git a/src/fbdev/gfx.cc b/src/fbdev/gfx.cc index e4527b0..742b6c6 100644 --- a/src/fbdev/gfx.cc +++ b/src/fbdev/gfx.cc @@ -22,6 +22,8 @@ static int dev_fd = -1; static Rect screen_rect; static int color_depth; // bits per pixel +static Pixmap *pixmap; + bool init_gfx() { if((dev_fd = open("/dev/fb0", O_RDWR)) == -1) { @@ -56,19 +58,23 @@ bool init_gfx() } // TODO: uncomment when I find how to use intelfb instead of i915 GRRRR.- - -/* fb_vblank vblank; if(ioctl(dev_fd, FBIOGET_VBLANK, &vblank) == -1) { - fprintf(stderr, "FBIOGET_VBLANK error: %s\n", strerror(errno)); +// fprintf(stderr, "FBIOGET_VBLANK error: %s\n", strerror(errno)); } - else { +/* + else { printf("flags: %x\n", vblank.flags); printf("count: %d\n", vblank.count); printf("beam position: %d, %d\n", vblank.hcount, vblank.vcount); } */ + pixmap = new Pixmap; + pixmap->width = screen_rect.width; + pixmap->height = screen_rect.height; + pixmap->pixels = framebuffer; + return true; } @@ -84,6 +90,8 @@ void destroy_gfx() munmap(framebuffer, FRAMEBUFFER_SIZE(screen_rect.width, screen_rect.height, color_depth)); framebuffer = 0; + + pixmap->pixels = 0; } unsigned char *get_framebuffer() @@ -91,6 +99,11 @@ unsigned char *get_framebuffer() return framebuffer; } +Pixmap *get_framebuffer_pixmap() +{ + return pixmap; +} + Rect get_screen_size() { return screen_rect;