for_each_endpoint_of_node函数怎么使用
时间: 2023-08-03 22:02:34 浏览: 195
在高通DRM显示框架中,for_each_endpoint_of_node是一个宏定义,使用时需要传入两个参数,分别是parent和node。具体使用方法如下:
1. 定义一个回调函数或函数对象,用来处理每个输出端点。
例如,我们定义一个函数来设置输出端点的分辨率:
```C++
int set_endpoint_resolution(struct endpoint *ep, void *data) {
int *resolution = (int *)data;
ep->width = resolution[0];
ep->height = resolution[1];
return 0;
}
```
2. 在需要遍历输出端点的地方,使用for_each_endpoint_of_node宏:
```C++
for_each_endpoint_of_node(parent, node) {
if (endpoint_is_valid(node)) {
set_endpoint_resolution(node, resolution);
}
}
```
其中,parent是节点的父节点,node是当前节点。for_each_endpoint_of_node会遍历当前节点的所有子节点,对于每个子节点,如果它是一个输出端点,就会执行set_endpoint_resolution函数,将分辨率设置为指定值。
需要注意的是,在使用for_each_endpoint_of_node遍历输出端点时,需要先判断节点是否是输出端点。在高通DRM显示框架中,输出端点通常有一个特殊的属性,可以通过它来判断节点是否是输出端点。
阅读全文