• Maximilian Luz's avatar
    platform/surface: aggregator: Allow enabling of events without notifiers · 4b38a1dc
    Maximilian Luz authored
    We can already enable and disable SAM events via one of two ways: either
    via a (non-observer) notifier tied to a specific event group, or a
    generic event enable/disable request. In some instances, however,
    neither method may be desirable.
    
    The first method will tie the event enable request to a specific
    notifier, however, when we want to receive notifications for multiple
    event groups of the same target category and forward this to the same
    notifier callback, we may receive duplicate events, i.e. one event per
    registered notifier. The second method will bypass the internal
    reference counting mechanism, meaning that a disable request will
    disable the event regardless of any other client driver using it, which
    may break the functionality of that driver.
    
    To address this problem, add new functions that allow enabling and
    disabling of events via the event reference counting mechanism built
    into the controller, without needing to register a notifier.
    
    This can then be used in combination with observer notifiers to process
    multiple events of the same target category without duplication in the
    same callback function.
    Signed-off-by: default avatarMaximilian Luz <luzmaximilian@gmail.com>
    Link: https://lore.kernel.org/r/20210604134755.535590-3-luzmaximilian@gmail.comReviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
    Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
    4b38a1dc
controller.c 83.3 KB