1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| int anim_fb_init(void) { if (MTK_LOG_ENABLE == 1) { SLOGD("[libshowlogo: %s %d]\n",__FUNCTION__,__LINE__); }
fb_fd = open(FB_NODE_PATH, O_RDWR); if(fb_fd < 0) { if (MTK_LOG_ENABLE == 1) { SLOGE("[libshowlogo: %s %d]open dev file fail, errno = %d \n",__FUNCTION__,__LINE__ , errno); } close(fb_fd); error_flag = 1;
return -1; }
ioctl(fb_fd, FBIOGET_VSCREENINFO, &vinfo); ioctl(fb_fd, FBIOGET_FSCREENINFO, &finfo);
fb_size = finfo.line_length * vinfo.yres; dec_logo_addr = (unsigned int*) malloc(fb_size);
lk_fb_addr =(unsigned int*)mmap(0, fb_size*3, PROT_READ | PROT_WRITE, MAP_SHARED, fb_fd, 0);
charging_fb_addr = (unsigned int*)((unsigned int)lk_fb_addr + fb_size); kernel_fb_addr = (unsigned int*)((unsigned int)charging_fb_addr + fb_size); fb_addr = lk_fb_addr;
if (MTK_LOG_ENABLE == 1) { SLOGD("[libshowlogo: %s %d]vinfo:xres = %d, yres = %d, xres_virtual =%d, bits_per_pixel = %d,red.offset = %d,blue.offset = %d\n" ,__FUNCTION__, __LINE__, vinfo.xres,vinfo.yres, vinfo.xres_virtual, vinfo.bits_per_pixel,vinfo.red.offset,vinfo.blue.offset);
SLOGD("[libshowlogo: %s %d]fb_size =%d, fb_addr = %d,charging_fb_addr=%d\n" ,__FUNCTION__, __LINE__, fb_size,( int)fb_addr, (int)charging_fb_addr); }
if(fb_addr == NULL || charging_fb_addr == NULL) { if (MTK_LOG_ENABLE == 1) { SLOGE("ChargingAnimation mmap fail\n"); } munmap(lk_fb_addr, fb_size*2); close(fb_fd); error_flag = 1;
return -1; }
phical_screen.bits_per_pixel = vinfo.bits_per_pixel; phical_screen.fill_dst_bits = vinfo.bits_per_pixel; phical_screen.red_offset = vinfo.red.offset; phical_screen.blue_offset = vinfo.blue.offset;
phical_screen.width = vinfo.xres; phical_screen.height = vinfo.yres;
phical_screen.allignWidth = finfo.line_length/(vinfo.bits_per_pixel/8);
phical_screen.needAllign = 1; phical_screen.need180Adjust = 1; phical_screen.fb_size = fb_size; if (MTK_LOG_ENABLE == 1) { SLOGD("[libshowlogo: %s %d]MTK_LCM_PHYSICAL_ROTATION = %s\n",__FUNCTION__,__LINE__, MTK_LCM_PHYSICAL_ROTATION); }
int rotation = getRotation(); if (MTK_LOG_ENABLE == 1) { SLOGD("[libshowlogo: %s %d]rotation = %d\n",__FUNCTION__,__LINE__, rotation); }
if(ORIENTATION_270 == rotation){ phical_screen.rotation = 270; } else if(ORIENTATION_90 == rotation){ phical_screen.rotation = 90; } else if((ORIENTATION_180 == rotation) && (phical_screen.need180Adjust == 1)){ phical_screen.rotation = 180; } else { phical_screen.rotation = 0; } if (MTK_LOG_ENABLE == 1) { SLOGD("[libshowlogo]phical_screen: width= %d,height= %d,bits_per_pixel =%d,needAllign = %d,allignWidth=%d rotation =%d ,need180Adjust = %d\n", phical_screen.width, phical_screen.height, phical_screen.bits_per_pixel, phical_screen.needAllign, phical_screen.allignWidth, phical_screen.rotation, phical_screen.need180Adjust); SLOGD("[libshowlogo: %s %d]show old animtion= 1, running show_animationm_ver %d\n",__FUNCTION__,__LINE__, show_animationm_ver); SLOGD("[libshowlogo: %s %d]draw_anim_mode = 1, running mode %d\n",__FUNCTION__,__LINE__, draw_anim_mode); }
return 0; }
|