我正在尝试将gocr集成到rdesktop。 为此,我正在考虑将代码添加到ui_memblt例程中。我有两种方法:
a)使用gocr将屏幕更改(rects)复制到由“守护程序”处理的共享内存中。我的问题是,我不知道Pixmap的格式,将其字节复制到共享内存区域。
b)使用XShm例程:
if(ximage==NULL)
{
ximage=XShmCreateImage(g_display, visual, 1, /* g_depth, */ XYPixmap, NULL, &shminfo, g_width, g_height);
shminfo.shmid=shmget(IPC_PRIVATE,ximage->bytes_per_line*ximage->height, IPC_CREAT|0777);
shminfo.shmaddr=ximage->data=shmat(shminfo.shmid,0,0);
shminfo.readOnly=True;
XShmAttach(g_display,&shminfo);
printf("MIT-SHM: Shared memory KID=%d, at=%p\n",shminfo.shmid,shminfo.shmaddr);
}
XShmPutImage(g_display, g_wnd, g_gc, ximage, 0, 0, x, y, cx, cy, False);
当我执行此代码时,我收到了:
MIT-SHM: Shared memory KID=71827465, at=0xb6c25000
X Error of failed request: BadMatch (invalid parameter attributes)
Major opcode of failed request: 130 (MIT-SHM)
Minor opcode of failed request: 3 (X_ShmPutImage)
Serial number of failed request: 78
Current serial number in output stream: 78
有什么想法吗? 我正在尝试在rdesktop和gocr“守护进程”之间进行快速复制(或共享)。