...
而在weston光标转x11光标优化方案里,在pointer_set_cursor方法中我们可以得到weston光标图层weston_surface,根据weston_surface的宽高信息开辟一段临时内存空间用于存储weston光标图形数据,通过weston_surface_copy_content提取到weston光标的图形数据并保存到临时开辟的内存空间中。最后通过调用新增的函数set_custom_cursor创建并设置x11光标,同时调用pointer_unmap_sprite将weston光标隐藏。创建设置x11光标功能实现参照了libxcursor库,其中的一些关键方法有XcursorImageCreate、XcursorImageLoadCursor、XCreatePixmap、XCreateGC、XPutImage、XRenderCreatePicture、XRenderCreateCursor。sprite将weston光标隐藏。创建设置x11光标功能实现参照了libxcursor和libxrender库,其中的一些关键方法有
XcursorImageCreate: 创建XcursorImage,在创建好后接下来可将提取的weston光标图形数据赋给XcursorImage变量的XcursorPixel指针。
XcursorImageLoadCursor:此方法封装了Cursor的创建过程,将赋值好的XcursorImage作为参数传入。
XCreatePixmap:创建Pixmap
XCreateGC:创建GC图形上下文
XPutImage:在XcursorImage转换成XImage后,将XImage和Pixmap作为参数传入,将图形数据贴到Pixmap上。
XRenderCreatePicture:创建Picture,Pixmap作为参数传入将图形数据转到Picture上。
XRenderCreateCursor:创建Cursor,Picture作为参数传入。