Skip to content
  • Daniel Vrátil's avatar
    Output::apply(): delay change signals emission until all changes are done · 0f90ad4c
    Daniel Vrátil authored
    This seems to be the key point for many of the unexplainable crashes
    that we've been seeing all over the place, especially in the KDED module.
    When the ConfigMonitor is updating the properties one by one, the
    change signals are being emitted immediatelly. So if someone is listening
    to these signals, and will try to access some property that we have not
    udpated yet, they will get inconsistent data (like empty mode list for
    instance), leading to crashes.
    
    With this patch we block signals emission on the output, collect all changes
    that happened, and then emit the signals all at once after we updated all
    the properties. This way applications can safely access any properties.
    0f90ad4c