Message ID | 1448357676-27837-5-git-send-email-maarten.lankhorst@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, 24 Nov 2015, Maarten Lankhorst <maarten.lankhorst@linux.intel.com> wrote: > +#define drm_for_each_encoder_mask(encoder, dev, encoder_mask) \ > + list_for_each_entry((encoder), &(dev)->mode_config.encoder_list, head) \ > + if ((encoder_mask) & (1 << drm_encoder_index(encoder))) How about if (!((encoder_mask) & (1 << drm_encoder_index(encoder)))); else to avoid dangling else problems? This inspired me to write [1]. BR, Jani. [1] http://patchwork.freedesktop.org/patch/msgid/1448386585-4144-1-git-send-email-jani.nikula@intel.com
Hi On Tue, Nov 24, 2015 at 7:00 PM, Jani Nikula <jani.nikula@linux.intel.com> wrote: > On Tue, 24 Nov 2015, Maarten Lankhorst <maarten.lankhorst@linux.intel.com> wrote: >> +#define drm_for_each_encoder_mask(encoder, dev, encoder_mask) \ >> + list_for_each_entry((encoder), &(dev)->mode_config.encoder_list, head) \ >> + if ((encoder_mask) & (1 << drm_encoder_index(encoder))) > > How about > > if (!((encoder_mask) & (1 << drm_encoder_index(encoder)))); else > > to avoid dangling else problems? YES! Please use inverted conditions in macros. Otherwise, looks good to me. But I think an empty block "{ }" is preferable over the empty statement. llvm tends to warn about empty statements. Thanks David
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index 29cfb4f8f99d..c54da2d297ec 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h @@ -1172,6 +1172,17 @@ struct drm_mode_config { list_for_each_entry((plane), &(dev)->mode_config.plane_list, head) \ if ((plane_mask) & (1 << drm_plane_index(plane))) +/** + * drm_for_each_encoder_mask - iterate over encoders specified by bitmask + * @encoder: the loop cursor + * @dev: the DRM device + * @encoder_mask: bitmask of encoder indices + * + * Iterate over all encoders specified by bitmask. + */ +#define drm_for_each_encoder_mask(encoder, dev, encoder_mask) \ + list_for_each_entry((encoder), &(dev)->mode_config.encoder_list, head) \ + if ((encoder_mask) & (1 << drm_encoder_index(encoder))) #define obj_to_crtc(x) container_of(x, struct drm_crtc, base) #define obj_to_connector(x) container_of(x, struct drm_connector, base)
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> --- include/drm/drm_crtc.h | 11 +++++++++++ 1 file changed, 11 insertions(+)