Changeset 26464


Ignore:
Timestamp:
02/25/14 11:25:09 (9 years ago)
Author:
obi
Message:

mipsel optimize framebuffer blinking fix

Location:
titan/titan
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • titan/titan/fb.h

    r26434 r26464  
    4545                node = node->next;
    4646        }
    47 
     47       
    4848        return fix_screeninfo.smem_len - fbmemcount;
    4949}
     
    196196        if(checkbox("ATEMIO5000") == 1)
    197197        {
    198                 g_fbFd = open(g_fbDevice, O_RDWR);
    199                 if (g_fbFd < 0)
     198                if (fd < 0)
    200199                {
    201                         perror(g_fbDevice);
     200                        perror(fbdev);
    202201                        goto nolfb;
    203202                }
     
    211210        }
    212211        closeonexec(fd);
    213 
     212       
    214213        if(ioctl(fd, FBIOGET_VSCREENINFO, &var_screeninfo) == -1)
    215214        {
     
    251250// blinking work start
    252251nolfb:
    253         if (g_fbFd >= 0)
    254         {
    255                 close(g_fbFd);
    256                 g_fbFd = -1;
    257         }
     252        if (fd >= 0)
     253        {
     254                close(fd);
     255                fd = -1;
     256        }
     257
    258258        printf("framebuffer not available.\n");
    259259        return 0;
     
    263263void closefb()
    264264{
     265
     266        if(checkbox("ATEMIO5000") == 1)
     267        {
     268                if(lfb)
     269                {
     270                printf("33\n");
     271                        msync(lfb, fix_screeninfo.smem_len, MS_SYNC);
     272                        munmap(lfb, fix_screeninfo.smem_len);
     273                }
     274                if(fb->fd >= 0)
     275                {
     276                printf("44\n");
     277                        disablemanualblit();
     278                        close(fb->fd);
     279                        fb->fd = -1;
     280                }
     281        }
     282
    265283        if(fb != NULL)
    266284        {
  • titan/titan/mipselport.h

    r26442 r26464  
    88#endif
    99
    10 int g_fbFd = -1;
    11 unsigned char *g_lfb = NULL;
    12 char g_fbDevice[] = "/dev/fb0";
     10#ifndef FBIO_WAITFORVSYNC
     11#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
     12#endif
     13
     14unsigned char *lfb = NULL;
    1315int g_manual_blit = 0;
    14 struct fb_var_screeninfo g_screeninfo_var;
    15 struct fb_fix_screeninfo g_screeninfo_fix;
     16struct fb_fix_screeninfo fix_screeninfo;
    1617
    1718int setmixer(struct dvbdev* node, int left, int right)
     
    6768{
    6869        unsigned char tmp = 1;
    69         if (ioctl(g_fbFd, FBIO_SET_MANUAL_BLIT, &tmp)<0)
     70        if (ioctl(fb->fd, FBIO_SET_MANUAL_BLIT, &tmp)<0)
    7071                perror("FBIO_SET_MANUAL_BLIT");
    7172        else
     
    7677{
    7778        unsigned char tmp = 0;
    78         if (ioctl(g_fbFd, FBIO_SET_MANUAL_BLIT, &tmp)<0)
     79        if (ioctl(fb->fd, FBIO_SET_MANUAL_BLIT, &tmp)<0)
    7980                perror("FBIO_SET_MANUAL_BLIT");
    8081        else
    8182                g_manual_blit = 0;
     83}
     84
     85int waitvsync()
     86{
     87        int c = 0;
     88        return ioctl(fb->fd, FBIO_WAITFORVSYNC, &c);
    8289}
    8390
     
    99106void blitfb2(struct fb* fbnode, int flag)
    100107{
    101 /*
    102108        struct fb_var_screeninfo var_screeninfo;
    103109
     
    145151                }
    146152        }
    147 */
     153
    148154        if (g_manual_blit == 1) {
    149                 if (ioctl(g_fbFd, FBIO_BLIT) < 0)
     155                if (ioctl(fb->fd, FBIO_BLIT) < 0)
    150156                        perr("FBIO_BLIT");
    151157        }
  • titan/titan/titan.c

    r26433 r26464  
    722722        clearfball();
    723723        enablemanualblit();
     724        if(checkbox("ATEMIO5000") == 1)
     725                waitvsync();
    724726
    725727        tmpstr = getconfig("fb1dev", NULL);
Note: See TracChangeset for help on using the changeset viewer.