提交 d5a92de9 编写于 作者: 指向BIOS的野指针's avatar 指向BIOS的野指针

add comments

上级 6bbe7483
...@@ -41,10 +41,10 @@ namespace bwl ...@@ -41,10 +41,10 @@ namespace bwl
{ {
__display.fd = open((std::string("/dev/dri/card") + __card_dvc).c_str(), O_RDWR | O_CLOEXEC); //打开显卡设备文件 __display.fd = open((std::string("/dev/dri/card") + __card_dvc).c_str(), O_RDWR | O_CLOEXEC); //打开显卡设备文件
/*获取drm信息*/ /*获取drm信息*/
__display.res = drmModeGetResources(__display.fd); __display.res = drmModeGetResources(__display.fd); //获取设备资源
uint32_t crtc_id = __display.res->crtcs[0]; uint32_t crtc_id = __display.res->crtcs[0];
uint32_t conn_id = __display.res->connectors[0]; uint32_t conn_id = __display.res->connectors[0];
__display.conn = drmModeGetConnector(__display.fd, conn_id); __display.conn = drmModeGetConnector(__display.fd, conn_id); //获取连接器
setmonitor(__display.conn->modes[0].hdisplay, __display.conn->modes[0].vdisplay, 4); setmonitor(__display.conn->modes[0].hdisplay, __display.conn->modes[0].vdisplay, 4);
__display.create.width = __display.conn->modes[0].hdisplay; __display.create.width = __display.conn->modes[0].hdisplay;
__display.create.height = __display.conn->modes[0].vdisplay; __display.create.height = __display.conn->modes[0].vdisplay;
...@@ -54,6 +54,7 @@ namespace bwl ...@@ -54,6 +54,7 @@ namespace bwl
drm_mode_map_dumb map; drm_mode_map_dumb map;
map.handle = __display.create.handle; map.handle = __display.create.handle;
drmIoctl(__display.fd, DRM_IOCTL_MODE_MAP_DUMB, &map); drmIoctl(__display.fd, DRM_IOCTL_MODE_MAP_DUMB, &map);
//获取帧缓冲
__display.buffer = (char *)mmap(nullptr, __display.create.size, PROT_READ | PROT_WRITE, MAP_SHARED, __display.fd, map.offset); __display.buffer = (char *)mmap(nullptr, __display.create.size, PROT_READ | PROT_WRITE, MAP_SHARED, __display.fd, map.offset);
memset(__display.buffer, 0, __display.create.size); memset(__display.buffer, 0, __display.create.size);
drmModeSetCrtc(__display.fd, crtc_id, __display.fbid, 0, 0, &conn_id, 1, &__display.conn->modes[0]); drmModeSetCrtc(__display.fd, crtc_id, __display.fbid, 0, 0, &conn_id, 1, &__display.conn->modes[0]);
......
...@@ -22,11 +22,12 @@ namespace bwl ...@@ -22,11 +22,12 @@ namespace bwl
void update_bg() void update_bg()
{ {
if (__ud.__bg.pos[0] == -1) if (__ud.__bg.pos[0] == -1)//如果坐标是-1,则更新整个屏幕
{ {
memcpy(drm_buffer, pages[current_pgid]->server_bg_layer, bgbuffsize); memcpy(drm_buffer, pages[current_pgid]->server_bg_layer, bgbuffsize);
return; return;
} }
//否则区域更新
for (int i = 0; i < __ud.__bg.size[1]; i++) for (int i = 0; i < __ud.__bg.size[1]; i++)
{ {
memcpy(((uint32_t *)drm_buffer) + (__ud.__bg.pos[0] + (__ud.__bg.pos[1] + i) * getDisplayWidth()), memcpy(((uint32_t *)drm_buffer) + (__ud.__bg.pos[0] + (__ud.__bg.pos[1] + i) * getDisplayWidth()),
......
...@@ -4,18 +4,19 @@ ...@@ -4,18 +4,19 @@
#include <iostream> #include <iostream>
#include <vector> #include <vector>
#define BWL_VERSION "0.0.01" #define BWL_VERSION "0.01 beta" //整个BadWayland的版本号
#define BWLS_VERSION "0.0.01" #define BWLS_VERSION "0.01 beta" // BadWayland服务器版本号
#ifdef __bwl_server #ifdef __bwl_server //只有在服务器中这个变量有效
extern std::string monitor_device; extern std::string monitor_device;
#endif #endif
#define BWLAPI #define BWLAPI
#define SIGBWLREQ 38 //用于服务器与用户程序之间通信
#define SIGREQRECV 35 #define SIGBWLREQ 38 //用户向服务器发送信号的id
#define REQMAGIC 0xa68c5cce7be74433 #define SIGREQRECV 35 //本来用于服务器向用户发送信号,后来发现不需要
#define REQMAGIC 0xa68c5cce7be74433 //魔数,用于验证是否是正确的数据包
#define BWLDIR (std::string("/dev/bwl") + monitor_device + "") #define BWLDIR (std::string("/dev/bwl") + monitor_device + "")
#define PAGEDIR (std::string("/dev/bwl") + monitor_device + "/pages/") #define PAGEDIR (std::string("/dev/bwl") + monitor_device + "/pages/")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册