直接访问linux framebuffer – copyarea
发布时间:2020-12-30 19:55:16 所属栏目:Linux 来源:互联网
导读:我想在嵌入式 Linux应用程序中快速移动一个矩形到帧缓冲区.我发现cfb_copyarea函数可能很有用.但我无法在/ dev / fb设备上找到任何ioctl来调用该函数.或者可以直接调用此函数吗? 这是一个初始化和关闭FrameBuffer的代码 class CFrameBuffer{void* m_FrameBuf
我想在嵌入式 Linux应用程序中快速移动一个矩形到帧缓冲区.我发现cfb_copyarea函数可能很有用.但我无法在/ dev / fb设备上找到任何ioctl来调用该函数.或者可以直接调用此函数吗? 解决方法这是一个初始化和关闭FrameBuffer的代码class CFrameBuffer { void* m_FrameBuffer; struct fb_fix_screeninfo m_FixInfo; struct fb_var_screeninfo m_VarInfo; int m_FBFD; int InitFB() { int iFrameBufferSize; /* Open the framebuffer device in read write */ m_FBFD = open(FB_NAME,O_RDWR); if (m_FBFD < 0) { printf("Unable to open %s.n",FB_NAME); return 1; } /* Do Ioctl. Retrieve fixed screen info. */ if (ioctl(m_FBFD,FBIOGET_FSCREENINFO,&m_FixInfo) < 0) { printf("get fixed screen info failed: %sn",strerror(errno)); close(m_FBFD); return 1; } /* Do Ioctl. Get the variable screen info. */ if (ioctl(m_FBFD,FBIOGET_VSCREENINFO,&m_VarInfo) < 0) { printf("Unable to retrieve variable screen info: %sn",strerror(errno)); close(m_FBFD); return 1; } /* Calculate the size to mmap */ iFrameBufferSize = m_FixInfo.line_length * m_VarInfo.yres; printf("Line length %dn",m_FixInfo.line_length); /* Now mmap the framebuffer. */ m_FrameBuffer = mmap(NULL,iFrameBufferSize,PROT_READ | PROT_WRITE,MAP_SHARED,m_FBFD,0); if (m_FrameBuffer == NULL) { printf("mmap failed:n"); close(m_FBFD); return 1; } return 0; } void CloseFB() { munmap(m_FrameBuffer,0); close(m_FBFD); } }; (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- LINUX教程:进程管理之wait和waitpid
- 什么时候需要curl_global_init()?
- LINUX教学:Ubuntu不支持rpm安装软件解决方法
- 用什么Linux / Unix软件将html或pdf转换为doc?
- LINUX教程:CentOS安装使用VNC进行远程桌面登录
- 【nginx】关于Nginx的一些优化(突破十万并发)
- 使用私钥将TeamCity VCS Root与GitHub存储库连接
- 解决两台centos虚拟机Telnet服务无法联机的问题
- Sed - An Introduction and Tutorial by Bruce B
- LINUX实战:Linux系统inode占满故障解决方法
热点阅读