Weston中的检测drm_backend_create在创建时,会创建一个循环获取热拔插事件。b->udev_drm_source = wl_event_loop_add_fd(loop, udev_monitor_get_fd(b->udev_monitor), WL_EVENT_READABLE, udev_drm_event, b);static intudev_drm_event(int fd, uint32
让我们来回顾一下panel surface的创建过程,panel本身是一个支持widget的window窗口类型。在使用window_create_custom创建窗口的时候,由于目前大部分设备上的cairo都是支持EGL的,因此panel surface 的buffer类型是WINDOW_BUFFER_TYPE_EGL_WINDOW,如果cairo不支持EGL绘制,那么panel surface的buffer类型就是WINDOW_BUFFER_TYPE_SHM。cr = widget_cairo_cre
此篇笔记主要介绍wetson shell的桌面任务栏(panel)的渲染过程。基于clients/desktop-shell.cparse_panel_position从配置文件中解析出panel-position,注意这里的want_panel,如果为0,则代表桌面不需要任务栏,那么weston启动之后就只有背景layer,没有panel layer。static voidparse_panel_position(struct desktop *desktop, struct weston_con
output对应屏幕;view对应窗口,多个view属于layer;plane对应底层plane。1.创建log流2.wl_display_create()创建wl_display对象3.wl_display_get_event_loop()获取server端的wl_event_loop 并且通过wl_event_loop_add_signal函数向刚才的wl_event_loop 添加信号量,以便终止主循环结束程序。4.wl_list_init(&child_process_list)初
clients\simple-dmabuf-egl.c的主函数逻辑uint32_t format = DRM_FORMAT_XRGB8888;char const *drm_render_node = "/dev/dri/renderD128";int window_size = 256; display = create_display(d
上一节最后提到过output_init时会将output以及surface传给server端的shell.cstruct weston_surface { struct wl_resource *resource; struct wl_signal destroy_signal; /* callback argument: this surface */ struct weston_compositor *compositor; struct wl_signal commit_signal;
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号